Sync up with r21-2-19. r21-2-19-tomo-1
authortomo <tomo>
Fri, 13 Aug 1999 09:28:36 +0000 (09:28 +0000)
committertomo <tomo>
Fri, 13 Aug 1999 09:28:36 +0000 (09:28 +0000)
71 files changed:
CHANGES-beta
ChangeLog
Makefile.in.in
configure
configure.in
configure.usage
etc/NEWS
etc/package-index.LATEST.pgp
lib-src/ChangeLog
lib-src/Makefile.in.in
lib-src/config.values.in
lisp/ChangeLog
lisp/buffer.el
lisp/code-files.el
lisp/config.el
lisp/cus-edit.el
lisp/cus-face.el
lisp/custom.el
lisp/dumped-lisp.el
lisp/files.el
lisp/fill.el
lisp/gui.el
lisp/menubar-items.el
lisp/mule/japanese.el
lisp/rect.el
lisp/simple.el
lisp/toolbar.el
lwlib/ChangeLog
man/ChangeLog
man/custom.texi
man/emodules.texi
man/texinfo.texi
man/widget.texi
man/xemacs/packages.texi
nt/ChangeLog
nt/xemacs.mak
src/ChangeLog
src/Makefile.in.in
src/buffer.h
src/console.h
src/depend
src/device.h
src/emacs.c
src/event-Xt.c
src/event-msw.c
src/frame.c
src/frame.h
src/gdbinit
src/general.c
src/glyphs-msw.c
src/glyphs-widget.c
src/glyphs-x.c
src/gui.c
src/indent.c
src/keymap.c
src/mule-ccl.h
src/mule-charset.c
src/redisplay-msw.c
src/redisplay-output.c
src/redisplay-x.c
src/redisplay.c
src/redisplay.h
src/scrollbar.c
src/search.c
src/symsinit.h
src/window.c
src/window.h
src/winslots.h
tests/ChangeLog
tests/glyph-test.el
version.sh

index 7dcd968..5f58f45 100644 (file)
@@ -1,4 +1,24 @@
                                                        -*- indented-text -*-
+to 21.2.19 "Shinjuku"
+-- various fixes from Gunnar Evermann
+-- XIM fixes from Kazuyuki IENAGA
+-- keymap fix from Katsumi Yamaoka
+-- Microsoft build fixes from Adrian Aichner
+-- documentation update from Adrian Aichner
+-- rect.el rewrite from Didier Verna
+-- custom comment fields from Didier Verna
+-- various fixes from Karl Hegbloom
+-- filling fix from Yoshiki Hayashi
+-- miscellaneous changes from Jeff Miller and Didier Verna
+-- configure hacking from Steve Baur
+-- various fixes from Bob Weiner
+-- Mule synching from MORIOKA Tomohiko
+-- various fixes from Steve Baur
+-- LDAP configure changes from Gregory Neil Shapiro
+-- gutter implementation from Andy Piper
+-- tab widgets in gutter from Andy Piper
+-- Custom themes, API part. See etc/custom/theme-examples from Jan Vroonhof
+
 to 21.2.18 "Toshima"
 -- miscellaneous fixes from Steve Baur
 -- miscellaneous fixes from Didier Verna
index 019798c..883c60b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-28  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
+
+       * configure.in: Removed superfluous call to AC_FUNC_MMAP.
+
+1999-03-07  Gregory Neil Shapiro  <gshapiro@sendmail.org>
+
+       * configure.in: Check for Kerberos and the need for the DES
+       library before checking for LDAP in case LDAP requires these
+       libraries.
+
+1999-07-26  SL Baur  <steve@miho>
+
+       * configure.in: Rename --with-shlib to --with-modules for
+       consistency with the other two options that use that name.
+
+       * configure.usage (--with-modules): Document it.
+
+1999-07-23  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * etc/custom/example-themes/example-theme.el: 
+       * etc/custom/example-themes/europe-theme.el: 
+       * etc/custom/example-themes/ex-custom-file: Some simple examples
+       illustrating the custom theme support. 
+
 1999-07-17  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * etc/HELLO (Thai): Modify for new font.
@@ -6,6 +34,39 @@
 
        * etc/TUTORIAL.th: Change code to tis-620.
 
+1999-07-22  SL Baur  <steve@beopen.com>
+
+       * configure.in: add sco7 support
+       From Bob Weiner  <weiner@beopen.com>
+
+1999-07-22  SL Baur  <steve@miho>
+
+       * Makefile.in.in (install-arch-dep): Install config.values into
+       docdir.
+       From Karl M. Hegbloom  <karlheg@cathcart.sysc.pdx.edu>
+
+1999-07-21  SL Baur  <steve@miho>
+
+       * Makefile.in.in (inststaticdir): New variable.
+       (instvardir): Ditto.
+       (install-arch-dep): Use them.
+
+       * configure.in (sitelispdir): Need to use ${PROGNAME}.
+       (sitemoduledir): Ditto.
+       (inststaticdir): New variable.
+       (instvardir): Ditto.
+       (infodir): Use them.
+       (lispdir): Ditto.
+       (moduledir): Ditto.
+       (pkgdir): Ditto.
+       (etcdir): Ditto.
+       (lockdir): Ditto.
+       (archlibdir): Ditto.
+
+1999-07-14  SL Baur  <steve@beopen.com>
+
+       * InfoDock 4.0.8 is released
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index 5a7a74d..e8205ae 100644 (file)
@@ -93,6 +93,14 @@ PROGNAME=@PROGNAME@
 ## not need to change them.  This defaults to /usr/local.
 prefix=@prefix@
 
+## Variable data (as per each program update) goes here
+## The default is ${PROGNAME}
+inststaticdir=@inststaticdir@
+
+## Static data (constant across program updates) goes here
+## The default is ${PROGNAME}-${version}
+instvardir=@instvardir@
+
 ## Like `prefix', but used for architecture-specific files.
 exec_prefix=@exec_prefix@
 
@@ -396,7 +404,7 @@ install-arch-dep: mkdir
           if test -f ../Installation; then \
                ${INSTALL_DATA} ../Installation ${archlibdir}/Installation; \
           fi; \
-          ${INSTALL_DATA} lib-src/config.values ${archlibdir}/config.values; \
+          ${INSTALL_DATA} lib-src/config.values ${docdir}/config.values; \
           ${INSTALL_DATA} lib-src/DOC ${docdir}/DOC; \
           for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \
             do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \
@@ -406,10 +414,10 @@ install-arch-dep: mkdir
        cd ${bindir} && $(RM) ./${PROGNAME} && ${LN_S} ${PROGNAME}-${version} ./${PROGNAME}
        if test "${prefix}" != "${exec_prefix}"; then \
          for dir in \
-               lib/${PROGNAME} \
-               lib/${PROGNAME}-${version}/etc \
-               lib/${PROGNAME}-${version}/info \
-               lib/${PROGNAME}-${version}/lisp; do \
+               lib/${inststaticdir} \
+               lib/${instvardir}/etc \
+               lib/${instvardir}/info \
+               lib/${instvardir}/lisp; do \
            if test ! -d ${exec_prefix}/$${dir}; then \
              $(LN_S) ${prefix}/$${dir} ${exec_prefix}/$${dir}; fi; \
          done; \
@@ -451,7 +459,6 @@ install-arch-indep: mkdir info
            chmod 0644 ${infodir}/$${file}; \
          done ; \
        fi
-       ## Note it's `xemacs' not ${PROGNAME}
        cd ${srcdir}/etc && \
          for page in xemacs etags ctags gnuserv gnuclient gnuattach gnudoit; do \
            ${INSTALL_DATA} ${srcdir}/etc/$${page}.1 ${mandir}/$${page}${manext} ; \
index 701fc49..be3c8d0 100755 (executable)
--- a/configure
+++ b/configure
@@ -227,18 +227,20 @@ datadir='${prefix}/lib'
 statedir='${prefix}/lib'
 libdir='${exec_prefix}/lib'
 mandir='${prefix}/man/man1'
-infodir='${datadir}/${PROGNAME}-${version}/info'
+inststaticdir='${PROGNAME}'
+instvardir='${PROGNAME}-${version}'
+infodir='${datadir}/${instvardir}/info'
 infopath=''
 install_pp=''
-lispdir='${datadir}/${PROGNAME}-${version}/lisp'
-moduledir='${datadir}/${PROGNAME}-${version}/${configuration}/modules'
-sitelispdir='${datadir}/xemacs/site-lisp'
-sitemoduledir='${datadir}/xemacs/site-modules'
-pkgdir='${datadir}/${PROGNAME}-${version}/lisp'
+lispdir='${datadir}/${instvardir}/lisp'
+moduledir='${datadir}/${instvardir}/${configuration}/modules'
+sitelispdir='${datadir}/${inststaticdir}/site-lisp'
+sitemoduledir='${datadir}/${inststaticdir}/site-modules'
+pkgdir='${datadir}/${instvardir}/lisp'
 package_path=''
-etcdir='${datadir}/${PROGNAME}-${version}/etc'
-lockdir='${statedir}/${PROGNAME}/lock'
-archlibdir='${datadir}/${PROGNAME}-${version}/${configuration}'
+etcdir='${datadir}/${instvardir}/etc'
+lockdir='${statedir}/${inststaticdir}/lock'
+archlibdir='${datadir}/${instvardir}/${configuration}'
 docdir='${archlibdir}'
 with_prefix='yes'
 with_site_lisp='no'
@@ -361,7 +363,7 @@ while test $# != 0; do
        use_assertions  | \
        memory_usage_stats | \
        with_clash_detection | \
-       with_shlib | \
+       with_modules | \
        no_doc_file )
                  case "$val" in
            y | ye | yes )      val=yes ;;
@@ -790,7 +792,7 @@ echo "  Use \`$progname --help' to show usage.") >&2 && exit 1
 fi
 
 echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:794: checking whether ln -s works" >&5
+echo "configure:796: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -1035,7 +1037,7 @@ EOF
 
 
 echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1039: checking "host system type"" >&5
+echo "configure:1041: checking "host system type"" >&5
 internal_configuration=`echo $configuration | sed 's/-\(workshop\)//'`
 canonical=`${CONFIG_SHELL-/bin/sh} $srcdir/config.sub "$internal_configuration"`
 configuration=`echo "$configuration" | sed 's/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/'`
@@ -1418,6 +1420,7 @@ EOF
        else
                NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
        fi ;;
+      *-sysv5* )               opsys=sco7 ;;
       *-386bsd* )              opsys=386bsd ;;
       *-freebsd* )             opsys=freebsd ;;
       *-nextstep* )            opsys=nextstep ;;
@@ -1527,7 +1530,7 @@ xe_save_CFLAGS="$CFLAGS"
 # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1531: checking for $ac_word" >&5
+echo "configure:1534: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1554,7 +1557,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1558: checking for $ac_word" >&5
+echo "configure:1561: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1602,7 +1605,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1606: checking for $ac_word" >&5
+echo "configure:1609: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1631,7 +1634,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1635: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1638: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1644,12 +1647,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1648 "configure"
+#line 1651 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1656: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1677,19 +1680,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1681: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1684: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1686: checking whether we are using GNU C" >&5
+echo "configure:1689: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1693: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1696: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1707,7 +1710,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1711: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1714: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1740,7 +1743,7 @@ if   test "$with_gcc" = "no"  -a "$GCC" = "yes"; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1744: checking for $ac_word" >&5
+echo "configure:1747: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1767,7 +1770,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1771: checking for $ac_word" >&5
+echo "configure:1774: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1815,7 +1818,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1819: checking for $ac_word" >&5
+echo "configure:1822: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1844,7 +1847,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1848: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1851: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -1857,12 +1860,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1861 "configure"
+#line 1864 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1866: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1869: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -1890,19 +1893,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1894: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1897: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1899: checking whether we are using GNU C" >&5
+echo "configure:1902: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -1920,7 +1923,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1924: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1927: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1953,7 +1956,7 @@ elif test "$with_gcc" = "yes" -a "$GCC" != "yes" ; then
   # Extract the first word of "gcc", so it can be a program name with args.
 set dummy gcc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1957: checking for $ac_word" >&5
+echo "configure:1960: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1980,7 +1983,7 @@ if test -z "$CC"; then
   # Extract the first word of "cc", so it can be a program name with args.
 set dummy cc; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1984: checking for $ac_word" >&5
+echo "configure:1987: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2028,7 +2031,7 @@ fi
       # Extract the first word of "cl", so it can be a program name with args.
 set dummy cl; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2032: checking for $ac_word" >&5
+echo "configure:2035: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2057,7 +2060,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2061: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2064: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
 
 ac_ext=c
 xe_cppflags='$CPPFLAGS $c_switch_site $c_switch_machine $c_switch_system $c_switch_x_site $X_CFLAGS'
@@ -2070,12 +2073,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2074 "configure"
+#line 2077 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2082: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   ac_cv_prog_cc_works=yes
   # If we can't run a trivial program, we are probably using a cross compiler.
   if (./conftest; exit) 2>/dev/null; then
@@ -2103,19 +2106,19 @@ if test $ac_cv_prog_cc_works = no; then
   { echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
 fi
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2107: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2110: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
 echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
 cross_compiling=$ac_cv_prog_cc_cross
 
 echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2112: checking whether we are using GNU C" >&5
+echo "configure:2115: checking whether we are using GNU C" >&5
 
 cat > conftest.c <<EOF
 #ifdef __GNUC__
   yes;
 #endif
 EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2119: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2122: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
   ac_cv_prog_gcc=yes
 else
   ac_cv_prog_gcc=no
@@ -2133,7 +2136,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
 ac_save_CFLAGS="$CFLAGS"
 CFLAGS=
 echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2137: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2140: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2170,7 +2173,7 @@ test -n "$CPP" -a -d "$CPP" && CPP=
 test -n "$NON_GNU_CPP" -a "$GCC" != "yes" -a -z "$CPP" && CPP="$NON_GNU_CPP"
 
 echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:2174: checking how to run the C preprocessor" >&5
+echo "configure:2177: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2183,13 +2186,13 @@ if test -z "$CPP"; then
   # On the NeXT, cc -E runs the code through the compiler's parser,
   # not just through cpp.
   cat > conftest.$ac_ext <<EOF
-#line 2187 "configure"
+#line 2190 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2193: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2200,13 +2203,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2204 "configure"
+#line 2207 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2210: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2213: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2217,13 +2220,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2221 "configure"
+#line 2224 "configure"
 #include "confdefs.h"
 #include <assert.h>
 Syntax Error
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:2227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2230: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2248,9 +2251,9 @@ echo "$ac_t""$CPP" 1>&6
 
 
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2252: checking for AIX" >&5
+echo "configure:2255: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2254 "configure"
+#line 2257 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
@@ -2277,9 +2280,9 @@ rm -f conftest*
 
 
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2281: checking for GNU libc" >&5
+echo "configure:2284: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2283 "configure"
+#line 2286 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2291,7 +2294,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2295: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2298: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2313,7 +2316,7 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 2317 "configure"
+#line 2320 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2325,7 +2328,7 @@ return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2329: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2599,7 +2602,7 @@ test -n "$unexec"          && extra_objs="$extra_objs $unexec" &&  if test "$ext
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2603: checking for dynodump" >&5
+echo "configure:2606: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2637,12 +2640,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2641: checking for terminateAndUnload in -lC" >&5
+echo "configure:2644: 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 2646 "configure"
+#line 2649 "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
@@ -2653,7 +2656,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2660: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2757,7 +2760,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2761: checking "for runtime libraries flag"" >&5
+echo "configure:2764: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -2779,14 +2782,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 2783 "configure"
+#line 2786 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2793: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -2888,10 +2891,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:2892: checking for malloc_get_state" >&5
+echo "configure:2895: checking for malloc_get_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 2895 "configure"
+#line 2898 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -2914,7 +2917,7 @@ malloc_get_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2918: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_malloc_get_state=yes"
 else
@@ -2934,10 +2937,10 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:2938: checking for malloc_set_state" >&5
+echo "configure:2941: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 2941 "configure"
+#line 2944 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -2960,7 +2963,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:2964: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2967: \"$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
@@ -2980,16 +2983,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:2984: checking whether __after_morecore_hook exists" >&5
+echo "configure:2987: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2986 "configure"
+#line 2989 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:2993: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2996: \"$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
@@ -3048,7 +3051,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:3052: checking for $ac_word" >&5
+echo "configure:3055: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3103,7 +3106,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:3107: checking for a BSD compatible install" >&5
+echo "configure:3110: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3157,7 +3160,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:3161: checking for $ac_word" >&5
+echo "configure:3164: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3189,15 +3192,15 @@ for ac_hdr in mach/mach.h sys/stropts.h sys/timeb.h sys/time.h unistd.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3193: checking for $ac_hdr" >&5
+echo "configure:3196: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3196 "configure"
+#line 3199 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3201: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3230,15 +3233,15 @@ for ac_hdr in utime.h locale.h libgen.h fcntl.h ulimit.h cygwin/version.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3234: checking for $ac_hdr" >&5
+echo "configure:3237: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3237 "configure"
+#line 3240 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3245: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3271,15 +3274,15 @@ for ac_hdr in kstat.h sys/pstat.h inttypes.h sys/un.h a.out.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3275: checking for $ac_hdr" >&5
+echo "configure:3278: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3278 "configure"
+#line 3281 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3283: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3309,10 +3312,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3313: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3316: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3316 "configure"
+#line 3319 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3328,7 +3331,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3332: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3335: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3352,10 +3355,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3356: checking for ANSI C header files" >&5
+echo "configure:3359: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3359 "configure"
+#line 3362 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3363,7 +3366,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:3367: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3370: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3380,7 +3383,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 3384 "configure"
+#line 3387 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3398,7 +3401,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 3402 "configure"
+#line 3405 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3416,7 +3419,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 3420 "configure"
+#line 3423 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3427,7 +3430,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3431: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3453,10 +3456,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3457: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3460: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3460 "configure"
+#line 3463 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3465,7 +3468,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3469: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3472: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3489,10 +3492,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3493: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3496: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3496 "configure"
+#line 3499 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3504,7 +3507,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3508: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3511: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3529,9 +3532,9 @@ fi
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3533: checking for struct utimbuf" >&5
+echo "configure:3536: checking for struct utimbuf" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3535 "configure"
+#line 3538 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3550,7 +3553,7 @@ int main() {
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3554: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3557: \"$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
@@ -3570,10 +3573,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3574: checking return type of signal handlers" >&5
+echo "configure:3577: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3577 "configure"
+#line 3580 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3590,7 +3593,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3594: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3597: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3612,10 +3615,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3616: checking for size_t" >&5
+echo "configure:3619: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3619 "configure"
+#line 3622 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3646,10 +3649,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3650: checking for pid_t" >&5
+echo "configure:3653: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3653 "configure"
+#line 3656 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3680,10 +3683,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3684: checking for uid_t in sys/types.h" >&5
+echo "configure:3687: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3687 "configure"
+#line 3690 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3719,10 +3722,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3723: checking for mode_t" >&5
+echo "configure:3726: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3726 "configure"
+#line 3729 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3753,10 +3756,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3757: checking for off_t" >&5
+echo "configure:3760: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3760 "configure"
+#line 3763 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3788,9 +3791,9 @@ fi
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3792: checking for struct timeval" >&5
+echo "configure:3795: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3794 "configure"
+#line 3797 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3806,7 +3809,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3810: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3813: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3828,10 +3831,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:3832: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:3835: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3835 "configure"
+#line 3838 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3839,7 +3842,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3843: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3846: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -3863,10 +3866,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:3867: checking for tm_zone in struct tm" >&5
+echo "configure:3870: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3870 "configure"
+#line 3873 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -3874,7 +3877,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:3878: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3881: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -3897,10 +3900,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:3901: checking for tzname" >&5
+echo "configure:3904: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3904 "configure"
+#line 3907 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -3910,7 +3913,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:3914: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3917: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -3936,10 +3939,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:3940: checking for working const" >&5
+echo "configure:3943: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3943 "configure"
+#line 3946 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -3988,7 +3991,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:3992: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3995: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4013,7 +4016,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4017: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4020: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4038,12 +4041,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4042: checking whether byte ordering is bigendian" >&5
+echo "configure:4045: 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 4047 "configure"
+#line 4050 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4054,11 +4057,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4058: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4061: \"$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 4062 "configure"
+#line 4065 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4069,7 +4072,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4073: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4076: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4086,7 +4089,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4090 "configure"
+#line 4093 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4099,7 +4102,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4126,10 +4129,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4130: checking size of short" >&5
+echo "configure:4133: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4133 "configure"
+#line 4136 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4140,7 +4143,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4144: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4147: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4168,10 +4171,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:4172: checking size of int" >&5
+echo "configure:4175: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4175 "configure"
+#line 4178 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4182,7 +4185,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4204,10 +4207,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4208: checking size of long" >&5
+echo "configure:4211: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4211 "configure"
+#line 4214 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4218,7 +4221,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4222: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4225: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4240,10 +4243,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4244: checking size of long long" >&5
+echo "configure:4247: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4247 "configure"
+#line 4250 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4254,7 +4257,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4258: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4261: \"$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
@@ -4276,10 +4279,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4280: checking size of void *" >&5
+echo "configure:4283: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4283 "configure"
+#line 4286 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4290,7 +4293,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4294: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4297: \"$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
@@ -4313,7 +4316,7 @@ EOF
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4317: checking for long file names" >&5
+echo "configure:4320: 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:
@@ -4359,10 +4362,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4363: checking for sin" >&5
+echo "configure:4366: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4366 "configure"
+#line 4369 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4385,7 +4388,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4389: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4392: \"$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
@@ -4403,12 +4406,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4407: checking for sin in -lm" >&5
+echo "configure:4410: 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 4412 "configure"
+#line 4415 "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
@@ -4419,7 +4422,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4463,14 +4466,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4467 "configure"
+#line 4470 "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:4474: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4477: \"$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
@@ -4487,7 +4490,7 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4491: checking type of mail spool file locking" >&5
+echo "configure:4494: checking type of mail spool file locking" >&5
 test -z "$mail_locking" -a "$mail_use_flock" = "yes" && mail_locking=flock
 test -z "$mail_locking" -a "$mail_use_lockf" = "yes" && mail_locking=lockf
 if   test "$mail_locking" = "lockf"; then { test "$extra_verbose" = "yes" && cat << \EOF
@@ -4512,12 +4515,12 @@ fi
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4516: checking for cma_open in -lpthreads" >&5
+echo "configure:4519: 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 4521 "configure"
+#line 4524 "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
@@ -4528,7 +4531,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4532: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4564,7 +4567,7 @@ fi
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4568: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4571: 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;
@@ -4575,7 +4578,7 @@ fi
 
 if test "$opsys" = "sol2" && test "$OS_RELEASE" -ge 56; then
   echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4579: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4582: 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 ;;
@@ -4585,7 +4588,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4589: checking "for specified window system"" >&5
+echo "configure:4592: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4618,7 +4621,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:4622: checking for X" >&5
+echo "configure:4625: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4678,12 +4681,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4682 "configure"
+#line 4685 "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:4687: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:4690: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4752,14 +4755,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 4756 "configure"
+#line 4759 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4766: \"$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.
@@ -4868,17 +4871,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:4872: checking whether -R must be followed by a space" >&5
+echo "configure:4875: 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 4875 "configure"
+#line 4878 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; 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:4885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -4894,14 +4897,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 4898 "configure"
+#line 4901 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:4905: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -4937,12 +4940,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:4941: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:4944: 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 4946 "configure"
+#line 4949 "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
@@ -4953,7 +4956,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:4957: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4960: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4977,12 +4980,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:4981: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:4984: 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 4986 "configure"
+#line 4989 "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
@@ -4993,7 +4996,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:4997: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5022,10 +5025,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:5026: checking for gethostbyname" >&5
+echo "configure:5029: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5029 "configure"
+#line 5032 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5048,7 +5051,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5055: \"$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
@@ -5069,12 +5072,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5073: checking for gethostbyname in -lnsl" >&5
+echo "configure:5076: 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 5078 "configure"
+#line 5081 "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
@@ -5085,7 +5088,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5092: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5115,10 +5118,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:5119: checking for connect" >&5
+echo "configure:5122: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5122 "configure"
+#line 5125 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5141,7 +5144,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5148: \"$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
@@ -5164,12 +5167,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:5168: checking "$xe_msg_checking"" >&5
+echo "configure:5171: 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 5173 "configure"
+#line 5176 "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
@@ -5180,7 +5183,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5184: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5187: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5204,10 +5207,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:5208: checking for remove" >&5
+echo "configure:5211: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5211 "configure"
+#line 5214 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5230,7 +5233,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5237: \"$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
@@ -5251,12 +5254,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5255: checking for remove in -lposix" >&5
+echo "configure:5258: 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 5260 "configure"
+#line 5263 "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
@@ -5267,7 +5270,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5271: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5274: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5291,10 +5294,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5295: checking for shmat" >&5
+echo "configure:5298: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5298 "configure"
+#line 5301 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5317,7 +5320,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5324: \"$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
@@ -5338,12 +5341,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5342: checking for shmat in -lipc" >&5
+echo "configure:5345: 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 5347 "configure"
+#line 5350 "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
@@ -5354,7 +5357,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5358: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5390,12 +5393,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:5394: checking "$xe_msg_checking"" >&5
+echo "configure:5397: 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 5399 "configure"
+#line 5402 "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
@@ -5406,7 +5409,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5413: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5575,7 +5578,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5579: checking for X defines extracted by xmkmf" >&5
+echo "configure:5582: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5607,15 +5610,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:5611: checking for X11/Intrinsic.h" >&5
+echo "configure:5614: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5614 "configure"
+#line 5617 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5619: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5622: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5639,12 +5642,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5643: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5646: 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 5648 "configure"
+#line 5651 "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
@@ -5655,7 +5658,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5659: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5662: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5680,12 +5683,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:5684: checking "$xe_msg_checking"" >&5
+echo "configure:5687: 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 5689 "configure"
+#line 5692 "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
@@ -5696,7 +5699,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5703: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5723,12 +5726,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5727: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:5730: 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 5732 "configure"
+#line 5735 "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
@@ -5739,7 +5742,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5743: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5746: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5762,12 +5765,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5766: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:5769: 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 5771 "configure"
+#line 5774 "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
@@ -5778,7 +5781,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5782: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5785: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5801,14 +5804,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:5805: checking the version of X11 being used" >&5
+echo "configure:5808: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 5807 "configure"
+#line 5810 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:5812: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:5815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -5833,15 +5836,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:5837: checking for $ac_hdr" >&5
+echo "configure:5840: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5840 "configure"
+#line 5843 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5848: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5872,7 +5875,7 @@ done
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:5876: checking for XFree86" >&5
+echo "configure:5879: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
          -f "/etc/X11/XF86Config" -o \
@@ -5892,12 +5895,12 @@ EOF
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:5896: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:5899: 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 5901 "configure"
+#line 5904 "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
@@ -5908,7 +5911,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:5912: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5947,19 +5950,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:5951: checking for main in -lXbsd" >&5
+echo "configure:5954: 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 5956 "configure"
+#line 5959 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:5963: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5966: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5996,22 +5999,22 @@ fi
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6000: checking for MS-Windows" >&5
+echo "configure:6003: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6003: checking for main in -lgdi32" >&5
+echo "configure:6006: 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 6008 "configure"
+#line 6011 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6015: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6018: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6061,6 +6064,7 @@ EOF
            && extra_objs="$extra_objs dialog-msw.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"dialog-msw.o\""
  fi
+       test "$with_widgets"   != "no" && with_widgets=msw
     else
        test "$with_scrollbars" != "no" && extra_objs="$extra_objs scrollbar-msw.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"scrollbar-msw.o\""
@@ -6076,12 +6080,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6080 "configure"
+#line 6084 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_MSG_SELECT
@@ -6157,7 +6161,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6161: checking for WM_COMMAND option" >&5;
+echo "configure:6165: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6172,15 +6176,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:6176: checking for X11/Xauth.h" >&5
+echo "configure:6180: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6179 "configure"
+#line 6183 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6188: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6203,12 +6207,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6207: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6211: 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 6212 "configure"
+#line 6216 "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
@@ -6219,7 +6223,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6227: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6264,15 +6268,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:6268: checking for ${dir}tt_c.h" >&5
+echo "configure:6272: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6271 "configure"
+#line 6275 "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:6276: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6280: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6308,12 +6312,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:6312: checking "$xe_msg_checking"" >&5
+echo "configure:6316: 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 6317 "configure"
+#line 6321 "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
@@ -6324,7 +6328,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6332: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6381,15 +6385,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:6385: checking for Dt/Dt.h" >&5
+echo "configure:6389: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6388 "configure"
+#line 6392 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6397: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6412,12 +6416,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6416: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6420: 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 6421 "configure"
+#line 6425 "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
@@ -6428,7 +6432,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:6432: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6497,7 +6501,7 @@ EOF
 fi
 
 echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6501: checking if drag and drop API is needed" >&5
+echo "configure:6505: checking if drag and drop API is needed" >&5
 if test "$with_dragndrop" != "no" ; then
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
@@ -6518,18 +6522,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:6522: checking for LDAP" >&5
+echo "configure:6526: 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:6525: checking for ldap.h" >&5
+echo "configure:6529: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6528 "configure"
+#line 6532 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6533: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6537: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6552,15 +6556,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:6556: checking for lber.h" >&5
+echo "configure:6560: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6559 "configure"
+#line 6563 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6564: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6568: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6584,12 +6588,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6588: checking for ldap_search in -lldap" >&5
+echo "configure:6592: checking for ldap_search in -lldap" >&5
 ac_lib_var=`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap "
 cat > conftest.$ac_ext <<EOF
-#line 6593 "configure"
+#line 6597 "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
@@ -6600,7 +6604,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:6604: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6608: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6625,12 +6629,12 @@ fi
 xe_msg_checking="for ldap_open in -lldap"
 test -n "-llber" && xe_msg_checking="$xe_msg_checking using extra libs -llber"
 echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
-echo "configure:6629: checking "$xe_msg_checking"" >&5
+echo "configure:6633: checking "$xe_msg_checking"" >&5
 ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lldap -llber"
 cat > conftest.$ac_ext <<EOF
-#line 6634 "configure"
+#line 6638 "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
@@ -6641,7 +6645,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6662,7 +6666,89 @@ with_ldap_lber=no
 fi
 
  }
-  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" \) && with_ldap=yes
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { 
+xe_msg_checking="for ldap_open in -lldap"
+test -n "-llber -lkrb" && xe_msg_checking="$xe_msg_checking using extra libs -llber -lkrb"
+echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
+echo "configure:6674: checking "$xe_msg_checking"" >&5
+ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lldap -llber -lkrb"
+cat > conftest.$ac_ext <<EOF
+#line 6679 "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_open();
+
+int main() {
+ldap_open()
+; return 0; }
+EOF
+if { (eval echo configure:6690: \"$ac_link\") 1>&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 "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  with_ldap_krb=yes
+else
+  echo "$ac_t""no" 1>&6
+with_ldap_krb=no
+fi
+
+ }
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { 
+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"
+echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6
+echo "configure:6715: checking "$xe_msg_checking"" >&5
+ac_lib_var=`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'`
+
+xe_check_libs=" -lldap -llber -lkrb -ldes"
+cat > conftest.$ac_ext <<EOF
+#line 6720 "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_open();
+
+int main() {
+ldap_open()
+; return 0; }
+EOF
+if { (eval echo configure:6731: \"$ac_link\") 1>&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 "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  eval "ac_cv_lib_$ac_lib_var=no"
+fi
+rm -f conftest*
+xe_check_libs=""
+
+if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
+  echo "$ac_t""yes" 1>&6
+  with_ldap_krbdes=yes
+else
+  echo "$ac_t""no" 1>&6
+with_ldap_krbdes=no
+fi
+
+ }
+  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
 fi
 if test "$with_ldap" = "yes"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
@@ -6679,16 +6765,23 @@ EOF
   if test "$with_ldap_nolber" = "yes" ; then
     LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
   else
+    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_krbdes" = "yes" ; then
+      LIBS="-ldes $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-ldes\" to \$LIBS"; fi
+      LIBS="-lkrb $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lkrb\" to \$LIBS"; fi
+    fi
     LIBS="-llber $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-llber\" to \$LIBS"; fi
     LIBS="-lldap $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lldap\" to \$LIBS"; fi
   fi
   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:6689: checking for $ac_func" >&5
+echo "configure:6782: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6692 "configure"
+#line 6785 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6711,7 +6804,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6715: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6808: \"$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
@@ -6743,15 +6836,15 @@ fi
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:6747: checking for graphics libraries" >&5
+echo "configure:6840: checking for graphics libraries" >&5
 
     xpm_problem=""
   if test -z "$with_xpm"; then
     echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6
-echo "configure:6752: checking for Xpm - no older than 3.4f" >&5
+echo "configure:6845: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6755 "configure"
+#line 6848 "configure"
 #include "confdefs.h"
 #include <X11/xpm.h>
     int main(int c, char **v) {
@@ -6759,7 +6852,7 @@ echo "configure:6752: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:6763: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6856: \"$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
@@ -6801,17 +6894,17 @@ EOF
 
     libs_x="-lXpm $libs_x" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"-lXpm\" to \$libs_x"; fi
     echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6
-echo "configure:6805: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:6898: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 6808 "configure"
+#line 6901 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:6815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6908: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -6837,15 +6930,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:6841: checking for compface.h" >&5
+echo "configure:6934: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6844 "configure"
+#line 6937 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6942: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6868,12 +6961,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:6872: checking for UnGenFace in -lcompface" >&5
+echo "configure:6965: 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 6877 "configure"
+#line 6970 "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
@@ -6884,7 +6977,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:6888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6981: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6936,12 +7029,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:6940: checking for inflate in -lc" >&5
+echo "configure:7033: 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 6945 "configure"
+#line 7038 "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
@@ -6952,7 +7045,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:6956: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7049: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6971,12 +7064,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:6975: checking for inflate in -lz" >&5
+echo "configure:7068: 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 6980 "configure"
+#line 7073 "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
@@ -6987,7 +7080,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:6991: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7084: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7006,12 +7099,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7010: checking for inflate in -lgz" >&5
+echo "configure:7103: 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 7015 "configure"
+#line 7108 "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
@@ -7022,7 +7115,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7026: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7119: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7052,15 +7145,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:7056: checking for jpeglib.h" >&5
+echo "configure:7149: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7059 "configure"
+#line 7152 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7064: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7157: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7083,12 +7176,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7087: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7180: 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 7092 "configure"
+#line 7185 "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
@@ -7099,7 +7192,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7103: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7196: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7135,10 +7228,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7139: checking for pow" >&5
+echo "configure:7232: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7142 "configure"
+#line 7235 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -7161,7 +7254,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7165: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7258: \"$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
@@ -7182,15 +7275,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:7186: checking for png.h" >&5
+echo "configure:7279: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7189 "configure"
+#line 7282 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7194: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7287: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7213,12 +7306,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7217: checking for png_read_image in -lpng" >&5
+echo "configure:7310: 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 7222 "configure"
+#line 7315 "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
@@ -7229,7 +7322,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:7233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7326: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7252,10 +7345,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7256: checking for workable png version information" >&5
+echo "configure:7349: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 7259 "configure"
+#line 7352 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -7263,7 +7356,7 @@ echo "configure:7256: 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:7267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7360: \"$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
@@ -7306,15 +7399,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:7310: checking for tiffio.h" >&5
+echo "configure:7403: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7313 "configure"
+#line 7406 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7318: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7411: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7337,12 +7430,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7341: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:7434: 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 7346 "configure"
+#line 7439 "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
@@ -7353,7 +7446,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7357: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7450: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7392,16 +7485,16 @@ fi
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7396: checking for X11 graphics libraries" >&5
+echo "configure:7489: checking for X11 graphics libraries" >&5
 
     
 echo $ac_n "checking for XawScrollbarSetThumb in -lXaw""... $ac_c" 1>&6
-echo "configure:7400: checking for XawScrollbarSetThumb in -lXaw" >&5
+echo "configure:7493: checking for XawScrollbarSetThumb in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 7405 "configure"
+#line 7498 "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
@@ -7412,7 +7505,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:7416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7509: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7436,15 +7529,15 @@ fi
                     
     ac_safe=`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6
-echo "configure:7440: checking for Xm/Xm.h" >&5
+echo "configure:7533: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7443 "configure"
+#line 7536 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7448: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7541: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7461,12 +7554,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:7465: checking for XmStringFree in -lXm" >&5
+echo "configure:7558: 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 7470 "configure"
+#line 7563 "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
@@ -7477,7 +7570,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:7481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7506,9 +7599,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:7510: checking for Lesstif" >&5
+echo "configure:7603: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 7512 "configure"
+#line 7605 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -7776,7 +7869,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:7780: checking for Mule-related features" >&5
+echo "configure:7873: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -7801,15 +7894,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:7805: checking for $ac_hdr" >&5
+echo "configure:7898: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7808 "configure"
+#line 7901 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 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:7906: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7840,12 +7933,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:7844: checking for strerror in -lintl" >&5
+echo "configure:7937: 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 7849 "configure"
+#line 7942 "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
@@ -7856,7 +7949,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:7860: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7889,18 +7982,18 @@ fi
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:7893: checking for Mule input methods" >&5
+echo "configure:7986: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:7896: checking for XIM" >&5
+echo "configure:7989: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:7899: checking for XOpenIM in -lX11" >&5
+echo "configure:7992: 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 7904 "configure"
+#line 7997 "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
@@ -7911,7 +8004,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:7915: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7935,12 +8028,12 @@ fi
         if test "$have_motif $have_lesstif" = "yes no"; then
       
 echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6
-echo "configure:7939: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:8032: 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 7944 "configure"
+#line 8037 "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
@@ -7951,7 +8044,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:7955: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8048: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8016,15 +8109,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:8020: checking for XFontSet" >&5
+echo "configure:8113: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:8023: checking for XmbDrawString in -lX11" >&5
+echo "configure:8116: 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 8028 "configure"
+#line 8121 "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
@@ -8035,7 +8128,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:8039: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8132: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8075,15 +8168,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:8079: checking for wnn/jllib.h" >&5
+echo "configure:8172: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8082 "configure"
+#line 8175 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8180: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8108,10 +8201,10 @@ fi
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8112: checking for $ac_func" >&5
+echo "configure:8205: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8115 "configure"
+#line 8208 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8134,7 +8227,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8231: \"$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
@@ -8163,12 +8256,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:8167: checking for crypt in -lcrypt" >&5
+echo "configure:8260: 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 8172 "configure"
+#line 8265 "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
@@ -8179,7 +8272,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:8183: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8214,12 +8307,12 @@ fi
     if test -z "$with_wnn" -o "$with_wnn" = "yes"; then
     
 echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6
-echo "configure:8218: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:8311: 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 8223 "configure"
+#line 8316 "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
@@ -8230,7 +8323,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8234: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8327: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8248,12 +8341,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:8252: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:8345: 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 8257 "configure"
+#line 8350 "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
@@ -8264,7 +8357,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8268: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8361: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8282,12 +8375,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:8286: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:8379: 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 8291 "configure"
+#line 8384 "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
@@ -8298,7 +8391,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8302: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8395: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8316,12 +8409,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:8320: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:8413: 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 8325 "configure"
+#line 8418 "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
@@ -8332,7 +8425,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:8336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8380,12 +8473,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:8384: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:8477: 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 8389 "configure"
+#line 8482 "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
@@ -8396,7 +8489,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:8400: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8493: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8431,15 +8524,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:8435: checking for canna/jrkanji.h" >&5
+echo "configure:8528: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8438 "configure"
+#line 8531 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8443: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8536: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8466,15 +8559,15 @@ fi
     c_switch_site="$c_switch_site -I/usr/local/canna/include"
     ac_safe=`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6
-echo "configure:8470: checking for canna/jrkanji.h" >&5
+echo "configure:8563: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8473 "configure"
+#line 8566 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8478: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8571: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8502,15 +8595,15 @@ fi
 
   test -z "$with_canna" && { ac_safe=`echo "canna/RK.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6
-echo "configure:8506: checking for canna/RK.h" >&5
+echo "configure:8599: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8509 "configure"
+#line 8602 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8514: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8607: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8533,12 +8626,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:8537: checking for RkBgnBun in -lRKC" >&5
+echo "configure:8630: 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 8542 "configure"
+#line 8635 "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
@@ -8549,7 +8642,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:8553: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8646: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8572,12 +8665,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:8576: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:8669: 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 8581 "configure"
+#line 8674 "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
@@ -8588,7 +8681,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:8592: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8685: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8637,12 +8730,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:8641: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:8734: 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 8646 "configure"
+#line 8739 "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
@@ -8653,7 +8746,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:8657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8750: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8739,10 +8832,10 @@ fi
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime gethostname 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 strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8743: checking for $ac_func" >&5
+echo "configure:8836: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8746 "configure"
+#line 8839 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8765,7 +8858,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8769: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8862: \"$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
@@ -8806,10 +8899,10 @@ case "$opsys" in
       * ) for ac_func in realpath
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8810: checking for $ac_func" >&5
+echo "configure:8903: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8813 "configure"
+#line 8906 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8832,7 +8925,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:8836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8929: \"$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
@@ -8868,10 +8961,10 @@ esac
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:8872: checking for $ac_func" >&5
+echo "configure:8965: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8875 "configure"
+#line 8968 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -8894,7 +8987,7 @@ $ac_func();
 
 ; 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:8991: \"$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
@@ -8930,12 +9023,12 @@ then
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:8934: checking for kstat_open in -lkstat" >&5
+echo "configure:9027: 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 8939 "configure"
+#line 9032 "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
@@ -8946,7 +9039,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:8950: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8980,12 +9073,12 @@ fi
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:8984: checking for kvm_read in -lkvm" >&5
+echo "configure:9077: 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 8989 "configure"
+#line 9082 "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
@@ -8996,7 +9089,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:9000: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9093: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9030,16 +9123,16 @@ fi
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:9034: checking whether netdb declares h_errno" >&5
+echo "configure:9127: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9036 "configure"
+#line 9129 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:9043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9136: \"$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
@@ -9059,16 +9152,16 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:9063: checking for sigsetjmp" >&5
+echo "configure:9156: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9065 "configure"
+#line 9158 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:9072: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9165: \"$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
@@ -9088,11 +9181,11 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:9092: checking whether localtime caches TZ" >&5
+echo "configure:9185: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 9096 "configure"
+#line 9189 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -9127,7 +9220,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:9131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9224: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -9157,9 +9250,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:9161: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:9254: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 9163 "configure"
+#line 9256 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -9181,7 +9274,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:9185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9278: \"$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
@@ -9203,19 +9296,19 @@ fi
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:9207: checking for inline" >&5
+echo "configure:9300: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 9212 "configure"
+#line 9305 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:9219: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:9312: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -9265,17 +9358,17 @@ fi
 # 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:9269: checking for working alloca.h" >&5
+echo "configure:9362: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9272 "configure"
+#line 9365 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:9279: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9372: \"$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
@@ -9299,10 +9392,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:9303: checking for alloca" >&5
+echo "configure:9396: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9306 "configure"
+#line 9399 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -9330,7 +9423,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:9334: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9427: \"$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
@@ -9369,10 +9462,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:9373: checking whether alloca needs Cray hooks" >&5
+echo "configure:9466: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9376 "configure"
+#line 9469 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -9396,10 +9489,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:9400: checking for $ac_func" >&5
+echo "configure:9493: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9403 "configure"
+#line 9496 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9422,7 +9515,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9426: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9519: \"$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
@@ -9452,10 +9545,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:9456: checking stack direction for C alloca" >&5
+echo "configure:9549: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9459 "configure"
+#line 9552 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -9474,7 +9567,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:9478: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9571: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -9503,15 +9596,15 @@ test -n "$ALLOCA" && extra_objs="$extra_objs $ALLOCA" &&  if test "$extra_verbos
 
 ac_safe=`echo "vfork.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for vfork.h""... $ac_c" 1>&6
-echo "configure:9507: checking for vfork.h" >&5
+echo "configure:9600: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9510 "configure"
+#line 9603 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9515: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9608: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9539,10 +9632,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:9543: checking for working vfork" >&5
+echo "configure:9636: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9546 "configure"
+#line 9639 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -9637,7 +9730,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:9641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
@@ -9663,10 +9756,10 @@ fi
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:9667: checking for working strcoll" >&5
+echo "configure:9760: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9670 "configure"
+#line 9763 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -9676,7 +9769,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:9680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9773: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
@@ -9704,10 +9797,10 @@ fi
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9708: checking for $ac_func" >&5
+echo "configure:9801: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9711 "configure"
+#line 9804 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9730,7 +9823,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9734: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9827: \"$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
@@ -9758,10 +9851,10 @@ fi
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:9762: checking whether getpgrp takes no argument" >&5
+echo "configure:9855: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9765 "configure"
+#line 9858 "configure"
 #include "confdefs.h"
 
 /*
@@ -9816,7 +9909,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:9820: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
@@ -9843,10 +9936,10 @@ fi
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:9847: checking for working mmap" >&5
+echo "configure:9940: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 9850 "configure"
+#line 9943 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -9879,7 +9972,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:9883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:9976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -9900,271 +9993,6 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-for ac_hdr in unistd.h
-do
-ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
-echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:9908: checking for $ac_hdr" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9911 "configure"
-#include "confdefs.h"
-#include <$ac_hdr>
-EOF
-ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9916: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
-ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
-if test -z "$ac_err"; then
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=yes"
-else
-  echo "$ac_err" >&5
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_header_$ac_safe=no"
-fi
-rm -f conftest*
-if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_hdr=HAVE_`echo $ac_hdr | sed 'y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%'`
-  { test "$extra_verbose" = "yes" && cat << EOF
-    Defining $ac_tr_hdr
-EOF
-cat >> confdefs.h <<EOF
-#define $ac_tr_hdr 1
-EOF
-}
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-for ac_func in getpagesize
-do
-echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9948: checking for $ac_func" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 9951 "configure"
-#include "confdefs.h"
-/* System header to define __stub macros and hopefully few prototypes,
-    which can conflict with char $ac_func(); 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 $ac_func();
-
-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_$ac_func) || defined (__stub___$ac_func)
-choke me
-#else
-$ac_func();
-#endif
-
-; return 0; }
-EOF
-if { (eval echo configure:9974: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=yes"
-else
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -rf conftest*
-  eval "ac_cv_func_$ac_func=no"
-fi
-rm -f conftest*
-
-if eval "test \"`echo '$ac_cv_func_'$ac_func`\" = yes"; then
-  echo "$ac_t""yes" 1>&6
-    ac_tr_func=HAVE_`echo $ac_func | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  { test "$extra_verbose" = "yes" && cat << EOF
-    Defining $ac_tr_func
-EOF
-cat >> confdefs.h <<EOF
-#define $ac_tr_func 1
-EOF
-}
-else
-  echo "$ac_t""no" 1>&6
-fi
-done
-
-echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10002: checking for working mmap" >&5
-
-cat > conftest.$ac_ext <<EOF
-#line 10005 "configure"
-#include "confdefs.h"
-
-/* Thanks to Mike Haertel and Jim Avera for this test.
-   Here is a matrix of mmap possibilities:
-       mmap private not fixed
-       mmap private fixed at somewhere currently unmapped
-       mmap private fixed at somewhere already mapped
-       mmap shared not fixed
-       mmap shared fixed at somewhere currently unmapped
-       mmap shared fixed at somewhere already mapped
-   For private mappings, we should verify that changes cannot be read()
-   back from the file, nor mmap's back from the file at a different
-   address.  (There have been systems where private was not correctly
-   implemented like the infamous i386 svr4.0, and systems where the
-   VM page cache was not coherent with the filesystem buffer cache
-   like early versions of FreeBSD and possibly contemporary NetBSD.)
-   For shared mappings, we should conversely verify that changes get
-   propogated back to all the places they're supposed to be.
-
-   Grep wants private fixed already mapped.
-   The main things grep needs to know about mmap are:
-   * does it exist and is it safe to write into the mmap'd area
-   * how to use it (BSD variants)  */
-#include <sys/types.h>
-#include <fcntl.h>
-#include <sys/mman.h>
-
-/* This mess was copied from the GNU getpagesize.h.  */
-#ifndef HAVE_GETPAGESIZE
-# ifdef HAVE_UNISTD_H
-#  include <unistd.h>
-# endif
-
-/* Assume that all systems that can run configure have sys/param.h.  */
-# ifndef HAVE_SYS_PARAM_H
-#  define HAVE_SYS_PARAM_H 1
-# endif
-
-# ifdef _SC_PAGESIZE
-#  define getpagesize() sysconf(_SC_PAGESIZE)
-# else /* no _SC_PAGESIZE */
-#  ifdef HAVE_SYS_PARAM_H
-#   include <sys/param.h>
-#   ifdef EXEC_PAGESIZE
-#    define getpagesize() EXEC_PAGESIZE
-#   else /* no EXEC_PAGESIZE */
-#    ifdef NBPG
-#     define getpagesize() NBPG * CLSIZE
-#     ifndef CLSIZE
-#      define CLSIZE 1
-#     endif /* no CLSIZE */
-#    else /* no NBPG */
-#     ifdef NBPC
-#      define getpagesize() NBPC
-#     else /* no NBPC */
-#      ifdef PAGESIZE
-#       define getpagesize() PAGESIZE
-#      endif /* PAGESIZE */
-#     endif /* no NBPC */
-#    endif /* no NBPG */
-#   endif /* no EXEC_PAGESIZE */
-#  else /* no HAVE_SYS_PARAM_H */
-#   define getpagesize() 8192  /* punt totally */
-#  endif /* no HAVE_SYS_PARAM_H */
-# endif /* no _SC_PAGESIZE */
-
-#endif /* no HAVE_GETPAGESIZE */
-
-#ifdef __cplusplus
-extern "C" { void *malloc(unsigned); }
-#else
-char *malloc();
-#endif
-
-int
-main()
-{
-       char *data, *data2, *data3;
-       int i, pagesize;
-       int fd;
-
-       pagesize = getpagesize();
-
-       /*
-        * First, make a file with some known garbage in it.
-        */
-       data = malloc(pagesize);
-       if (!data)
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               *(data + i) = rand();
-       umask(0);
-       fd = creat("conftestmmap", 0600);
-       if (fd < 0)
-               exit(1);
-       if (write(fd, data, pagesize) != pagesize)
-               exit(1);
-       close(fd);
-
-       /*
-        * Next, try to mmap the file at a fixed address which
-        * already has something else allocated at it.  If we can,
-        * also make sure that we see the same garbage.
-        */
-       fd = open("conftestmmap", O_RDWR);
-       if (fd < 0)
-               exit(1);
-       data2 = malloc(2 * pagesize);
-       if (!data2)
-               exit(1);
-       data2 += (pagesize - ((int) data2 & (pagesize - 1))) & (pagesize - 1);
-       if (data2 != mmap(data2, pagesize, PROT_READ | PROT_WRITE,
-           MAP_PRIVATE | MAP_FIXED, fd, 0L))
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               if (*(data + i) != *(data2 + i))
-                       exit(1);
-
-       /*
-        * Finally, make sure that changes to the mapped area
-        * do not percolate back to the file as seen by read().
-        * (This is a bug on some variants of i386 svr4.0.)
-        */
-       for (i = 0; i < pagesize; ++i)
-               *(data2 + i) = *(data2 + i) + 1;
-       data3 = malloc(pagesize);
-       if (!data3)
-               exit(1);
-       if (read(fd, data3, pagesize) != pagesize)
-               exit(1);
-       for (i = 0; i < pagesize; ++i)
-               if (*(data + i) != *(data3 + i))
-                       exit(1);
-       close(fd);
-       unlink("conftestmmap");
-       exit(0);
-}
-
-EOF
-if { (eval echo configure:10145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
-then
-  ac_cv_func_mmap_fixed_mapped=yes
-else
-  conftest_rc="$?"
-  echo "configure: failed program was:" >&5
-  cat conftest.$ac_ext >&5
-  rm -fr conftest*
-  ac_cv_func_mmap_fixed_mapped=no
-fi
-rm -fr conftest*
-
-echo "$ac_t""$ac_cv_func_mmap_fixed_mapped" 1>&6
-if test $ac_cv_func_mmap_fixed_mapped = yes; then
-  { test "$extra_verbose" = "yes" && cat << \EOF
-    Defining HAVE_MMAP
-EOF
-cat >> confdefs.h <<\EOF
-#define HAVE_MMAP 1
-EOF
-}
-
-fi
-
 
 test "$GNU_MALLOC" != "yes"   -a "$have_mmap" != "yes" && rel_alloc=no
 test "$rel_alloc" = "default" -a "$have_mmap"  = "yes" && rel_alloc=yes
@@ -10179,15 +10007,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:10183: checking for termios.h" >&5
+echo "configure:10011: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10186 "configure"
+#line 10014 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10191: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10230,15 +10058,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:10234: checking for termio.h" >&5
+echo "configure:10062: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10237 "configure"
+#line 10065 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10242: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10070: \"$ac_try\") 1>&5; (eval $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:10274: checking for socket" >&5
+echo "configure:10102: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10277 "configure"
+#line 10105 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -10296,7 +10124,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10128: \"$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
@@ -10311,15 +10139,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:10315: checking for netinet/in.h" >&5
+echo "configure:10143: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10318 "configure"
+#line 10146 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10323: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10151: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10336,15 +10164,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:10340: checking for arpa/inet.h" >&5
+echo "configure:10168: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10343 "configure"
+#line 10171 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10348: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10176: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10369,9 +10197,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:10373: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:10201: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10375 "configure"
+#line 10203 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10382,7 +10210,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; return 0; }
 EOF
-if { (eval echo configure:10386: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10214: \"$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
@@ -10400,9 +10228,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:10404: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:10232: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 10406 "configure"
+#line 10234 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -10412,7 +10240,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:10416: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10244: \"$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:10447: checking for msgget" >&5
+echo "configure:10275: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10450 "configure"
+#line 10278 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -10469,7 +10297,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10301: \"$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
@@ -10484,15 +10312,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:10488: checking for sys/ipc.h" >&5
+echo "configure:10316: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10491 "configure"
+#line 10319 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10496: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10324: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10509,15 +10337,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:10513: checking for sys/msg.h" >&5
+echo "configure:10341: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10516 "configure"
+#line 10344 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10349: \"$ac_try\") 1>&5; (eval $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:10559: checking for dirent.h" >&5
+echo "configure:10387: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10562 "configure"
+#line 10390 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10395: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10590,15 +10418,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:10594: checking for sys/dir.h" >&5
+echo "configure:10422: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10597 "configure"
+#line 10425 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10602: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10430: \"$ac_try\") 1>&5; (eval $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:10635: checking for nlist.h" >&5
+echo "configure:10463: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10638 "configure"
+#line 10466 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10471: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10669,7 +10497,7 @@ fi
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:10673: checking "for sound support"" >&5
+echo "configure:10501: checking "for sound support"" >&5
 case "$with_sound" in
   native | both ) with_native_sound=yes;;
   nas    | no   ) with_native_sound=no;;
@@ -10680,15 +10508,15 @@ 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:10684: checking for multimedia/audio_device.h" >&5
+echo "configure:10512: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10687 "configure"
+#line 10515 "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:10692: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10520: \"$ac_try\") 1>&5; (eval $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:10740: checking for ALopenport in -laudio" >&5
+echo "configure:10568: 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 10745 "configure"
+#line 10573 "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
@@ -10752,7 +10580,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:10756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10584: \"$ac_link\") 1>&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:10787: checking for AOpenAudio in -lAlib" >&5
+echo "configure:10615: 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 10792 "configure"
+#line 10620 "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
@@ -10799,7 +10627,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:10803: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10631: \"$ac_link\") 1>&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:10841: checking for ${dir}/soundcard.h" >&5
+echo "configure:10669: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10844 "configure"
+#line 10672 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10849: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10677: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10915,7 +10743,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 10919 "configure"
+#line 10747 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -10942,7 +10770,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:10946: checking for TTY-related features" >&5
+echo "configure:10774: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -10958,12 +10786,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:10962: checking for tgetent in -lncurses" >&5
+echo "configure:10790: 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 10967 "configure"
+#line 10795 "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
@@ -10974,7 +10802,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:10978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10806: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11007,15 +10835,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:11011: checking for ncurses/curses.h" >&5
+echo "configure:10839: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11014 "configure"
+#line 10842 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11019: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10847: \"$ac_try\") 1>&5; (eval $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:11041: checking for ncurses/term.h" >&5
+echo "configure:10869: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11044 "configure"
+#line 10872 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11049: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10877: \"$ac_try\") 1>&5; (eval $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:11079: checking for ncurses/curses.h" >&5
+echo "configure:10907: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11082 "configure"
+#line 10910 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11087: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10915: \"$ac_try\") 1>&5; (eval $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:11122: checking for tgetent in -l$lib" >&5
+echo "configure:10950: 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 11127 "configure"
+#line 10955 "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
@@ -11134,7 +10962,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10966: \"$ac_link\") 1>&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:11169: checking for tgetent in -lcurses" >&5
+echo "configure:10997: 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 11174 "configure"
+#line 11002 "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
@@ -11181,7 +11009,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11199,12 +11027,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
 else
   echo "$ac_t""no" 1>&6
 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6
-echo "configure:11203: checking for tgetent in -ltermcap" >&5
+echo "configure:11031: 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 11208 "configure"
+#line 11036 "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
@@ -11215,7 +11043,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11219: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11047: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11263,15 +11091,15 @@ EOF
 
     test -z "$with_gpm" && { ac_safe=`echo "gpm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for gpm.h""... $ac_c" 1>&6
-echo "configure:11267: checking for gpm.h" >&5
+echo "configure:11095: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11270 "configure"
+#line 11098 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11275: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11103: \"$ac_try\") 1>&5; (eval $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_gpm" && { 
 echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6
-echo "configure:11298: checking for Gpm_Open in -lgpm" >&5
+echo "configure:11126: 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 11303 "configure"
+#line 11131 "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
@@ -11310,7 +11138,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:11314: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11360,20 +11188,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event
 
 test "$with_database_gnudbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:11364: checking for database support" >&5
+echo "configure:11192: checking for database support" >&5
 
 if test "$with_database_gnudbm $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:11369: checking for ndbm.h" >&5
+echo "configure:11197: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11372 "configure"
+#line 11200 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11377: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11205: \"$ac_try\") 1>&5; (eval $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_gnudbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:11407: checking for dbm_open in -lgdbm" >&5
+echo "configure:11235: 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 11412 "configure"
+#line 11240 "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
@@ -11419,7 +11247,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11423: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11251: \"$ac_link\") 1>&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:11451: checking for dbm_open" >&5
+echo "configure:11279: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11454 "configure"
+#line 11282 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -11473,7 +11301,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11477: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11305: \"$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
@@ -11492,12 +11320,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:11496: checking for dbm_open in -ldbm" >&5
+echo "configure:11324: 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 11501 "configure"
+#line 11329 "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
@@ -11508,7 +11336,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:11512: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11549,10 +11377,10 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:11553: checking for Berkeley db.h" >&5
+echo "configure:11381: checking for Berkeley db.h" >&5
   for path in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 11556 "configure"
+#line 11384 "configure"
 #include "confdefs.h"
 #ifdef HAVE_INTTYPES_H
 #define __BIT_TYPES_DEFINED__
@@ -11570,7 +11398,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:11574: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11402: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   db_h_path="$path"; break
 else
@@ -11586,9 +11414,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:11590: checking for Berkeley DB version" >&5
+echo "configure:11418: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 11592 "configure"
+#line 11420 "configure"
 #include "confdefs.h"
 #include <$db_h_path>
 #if DB_VERSION_MAJOR > 1
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:11611: checking for $dbfunc" >&5
+echo "configure:11439: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11614 "configure"
+#line 11442 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -11633,7 +11461,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11637: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11465: \"$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
@@ -11652,12 +11480,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:11656: checking for $dbfunc in -ldb" >&5
+echo "configure:11484: 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 11661 "configure"
+#line 11489 "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
@@ -11668,7 +11496,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:11672: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11500: \"$ac_link\") 1>&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:11736: checking for SOCKSinit in -lsocks" >&5
+echo "configure:11564: 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 11741 "configure"
+#line 11569 "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
@@ -11748,7 +11576,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:11752: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11805,15 +11633,15 @@ for ac_hdr in dlfcn.h
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:11809: checking for $ac_hdr" >&5
+echo "configure:11637: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11812 "configure"
+#line 11640 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11817: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11645: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11850,14 +11678,14 @@ else
 fi
 done
 
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:11856: checking for dlopen in -ldl" >&5
+echo "configure:11684: checking for dlopen in -ldl" >&5
 ac_lib_var=`echo dl'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -ldl "
 cat > conftest.$ac_ext <<EOF
-#line 11861 "configure"
+#line 11689 "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
@@ -11868,7 +11696,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:11872: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11889,20 +11717,20 @@ cat >> confdefs.h <<\EOF
 #define HAVE_DLOPEN 1
 EOF
 }
- DLL_LIB=dl;  with_shlib=yes
+ DLL_LIB=dl;  with_modules=yes
 else
   echo "$ac_t""no" 1>&6
 fi
 
  }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for _dlopen in -lc""... $ac_c" 1>&6
-echo "configure:11901: checking for _dlopen in -lc" >&5
+echo "configure:11729: checking for _dlopen in -lc" >&5
 ac_lib_var=`echo c'_'_dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 11906 "configure"
+#line 11734 "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
@@ -11913,7 +11741,7 @@ int main() {
 _dlopen()
 ; 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:11745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11934,20 +11762,20 @@ cat >> confdefs.h <<\EOF
 #define HAVE_DLOPEN 1
 EOF
 }
- DLL_LIB=;   with_shlib=yes
+ DLL_LIB=;   with_modules=yes
 else
   echo "$ac_t""no" 1>&6
 fi
 
  }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { 
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:11946: checking for dlopen in -lc" >&5
+echo "configure:11774: checking for dlopen in -lc" >&5
 ac_lib_var=`echo c'_'dlopen | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lc "
 cat > conftest.$ac_ext <<EOF
-#line 11951 "configure"
+#line 11779 "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
@@ -11958,7 +11786,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:11962: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11790: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11979,20 +11807,20 @@ cat >> confdefs.h <<\EOF
 #define HAVE_DLOPEN 1
 EOF
 }
- DLL_LIB=;   with_shlib=yes
+ DLL_LIB=;   with_modules=yes
 else
   echo "$ac_t""no" 1>&6
 fi
 
  }
-test -z "$with_shlib" && { 
+test -z "$with_modules" && { 
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:11991: checking for shl_load in -ldld" >&5
+echo "configure:11819: 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 11996 "configure"
+#line 11824 "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
@@ -12003,7 +11831,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:12007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11835: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12024,20 +11852,20 @@ cat >> confdefs.h <<\EOF
 #define HAVE_SHL_LOAD 1
 EOF
 }
- DLL_LIB=dld; with_shlib=yes
+ DLL_LIB=dld; with_modules=yes
 else
   echo "$ac_t""no" 1>&6
 fi
 
  }
-test -z "$with_shlib" && { 
+test -z "$with_modules" && { 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12036: checking for dld_init in -ldld" >&5
+echo "configure:11864: 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 12041 "configure"
+#line 11869 "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
@@ -12048,7 +11876,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:12052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11880: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12069,13 +11897,13 @@ cat >> confdefs.h <<\EOF
 #define HAVE_DLD_INIT 1
 EOF
 }
- DLL_LIB=dld; with_shlib=yes
+ DLL_LIB=dld; with_modules=yes
 else
   echo "$ac_t""no" 1>&6
 fi
 
  }
-if test "$with_shlib" = "yes"; then
+if test "$with_modules" = "yes"; then
   
 dll_ld=
 dll_ldflags=
@@ -12087,7 +11915,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:12091: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:11919: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -12115,9 +11943,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:12119: checking checking whether we are using GNU C" >&5
+echo "configure:11947: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 12121 "configure"
+#line 11949 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -12139,7 +11967,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:12143: checking how to produce PIC code" >&5
+echo "configure:11971: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -12232,18 +12060,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:12236: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:12064: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 12240 "configure"
+#line 12068 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12247: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12075: \"$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
@@ -12274,7 +12102,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:12278: checking if C compiler can produce shared libraries" >&5
+echo "configure:12106: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -12325,14 +12153,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 12329 "configure"
+#line 12157 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:12336: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12164: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -12357,7 +12185,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:12361: checking for ld used by GCC" >&5
+echo "configure:12189: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -12382,7 +12210,7 @@ echo "configure:12361: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:12386: checking for GNU ld" >&5
+echo "configure:12214: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -12420,7 +12248,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:12424: checking if the linker is GNU ld" >&5
+echo "configure:12252: 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
@@ -12447,7 +12275,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:12451: checking whether the linker supports shared libraries" >&5
+echo "configure:12279: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -12663,10 +12491,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:12667: checking for $ac_func" >&5
+echo "configure:12495: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12670 "configure"
+#line 12498 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -12689,7 +12517,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12693: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12521: \"$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
@@ -12718,16 +12546,16 @@ done
 
   else
     echo "configure: warning: disabling shared library support" 1>&2
-    with_shlib=no
+    with_modules=no
   fi
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 12727 "configure"
+#line 12555 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:12731: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:12559: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -12899,6 +12727,8 @@ rm -f core
 
 
 
+
+
 PREFIX=$prefix
 while true; do
   case "$PREFIX" in
@@ -13431,6 +13261,9 @@ case "$with_scrollbars" in
   athena   ) echo "  Using Athena scrollbars."    ;;
   athena3d ) echo "  Using Athena-3d scrollbars." ;;
 esac
+case "$with_widgets" in
+  motif    ) echo "  Using Motif native widgets."     ;;
+esac
 case "$with_dialogs" in
   motif    )
     echo "  Using Motif dialog boxes."
@@ -13444,7 +13277,7 @@ case "$with_dialogs" in
   athena   ) echo "  Using Athena dialog boxes."    ;;
   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
 esac
-test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
+test "$with_modules" = "yes" && echo "  Compiling in DSO module support."
 test "$with_clash_detection" = yes && \
   echo "  Clash detection will use \"$lockdir\" for locking files."
 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
@@ -13480,7 +13313,7 @@ for file in $internal_makefile_list; do
   ac_output_files="${ac_output_files+$ac_output_files }$file"
 done
 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
-if test "$with_shlib" = "yes"; then
+if test "$with_modules" = "yes"; then
   ac_output_files="$ac_output_files lib-src/ellcc.h"
 fi
 
@@ -13609,6 +13442,8 @@ s%@PROGNAME@%$PROGNAME%g
 s%@version@%$version%g
 s%@configuration@%$configuration%g
 s%@canonical@%$canonical%g
+s%@inststaticdir@%$inststaticdir%g
+s%@instvardir@%$instvardir%g
 s%@srcdir@%$srcdir%g
 s%@pkgdir@%$pkgdir%g
 s%@statedir@%$statedir%g
index b5d7e89..f285e78 100644 (file)
@@ -345,18 +345,20 @@ datadir='${prefix}/lib'
 statedir='${prefix}/lib'
 libdir='${exec_prefix}/lib'
 mandir='${prefix}/man/man1'
-infodir='${datadir}/${PROGNAME}-${version}/info'
+inststaticdir='${PROGNAME}'
+instvardir='${PROGNAME}-${version}'
+infodir='${datadir}/${instvardir}/info'
 infopath=''
 install_pp=''
-lispdir='${datadir}/${PROGNAME}-${version}/lisp'
-moduledir='${datadir}/${PROGNAME}-${version}/${configuration}/modules'
-sitelispdir='${datadir}/xemacs/site-lisp'
-sitemoduledir='${datadir}/xemacs/site-modules'
-pkgdir='${datadir}/${PROGNAME}-${version}/lisp'
+lispdir='${datadir}/${instvardir}/lisp'
+moduledir='${datadir}/${instvardir}/${configuration}/modules'
+sitelispdir='${datadir}/${inststaticdir}/site-lisp'
+sitemoduledir='${datadir}/${inststaticdir}/site-modules'
+pkgdir='${datadir}/${instvardir}/lisp'
 package_path=''
-etcdir='${datadir}/${PROGNAME}-${version}/etc'
-lockdir='${statedir}/${PROGNAME}/lock'
-archlibdir='${datadir}/${PROGNAME}-${version}/${configuration}'
+etcdir='${datadir}/${instvardir}/etc'
+lockdir='${statedir}/${inststaticdir}/lock'
+archlibdir='${datadir}/${instvardir}/${configuration}'
 docdir='${archlibdir}'
 with_prefix='yes'
 with_site_lisp='no'
@@ -518,7 +520,7 @@ while test $# != 0; do
        use_assertions  | \
        memory_usage_stats | \
        with_clash_detection | \
-       with_shlib | \
+       with_modules | \
        no_doc_file )
          dnl Make sure the value given was either "yes" or "no".
          case "$val" in
@@ -1481,6 +1483,7 @@ case "$canonical" in
        else
                NON_GNU_CPP="/lib/cpp -D_XOPEN_SOURCE"  ;
        fi ;;
+      *-sysv5* )               opsys=sco7 ;;
       *-386bsd* )              opsys=386bsd ;;
       *-freebsd* )             opsys=freebsd ;;
       *-nextstep* )            opsys=nextstep ;;
@@ -2483,6 +2486,7 @@ if test "$with_msw" != "no"; then
            && XE_ADD_OBJS(toolbar-msw.o)
        test "$with_dialogs"   != "no" && with_dialogs=msw \
            && XE_ADD_OBJS(dialog-msw.o)
+       test "$with_widgets"   != "no" && with_widgets=msw
     else
        test "$with_scrollbars" != "no" && XE_ADD_OBJS(scrollbar-msw.o)
        test "$with_menubars"   != "no" && XE_ADD_OBJS(menubar-msw.o)
@@ -2680,7 +2684,9 @@ 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_nolber=yes, with_ldap_nolber=no)
   test "$with_ldap_nolber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_lber=yes, with_ldap_lber=no, -llber) }
-  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" \) && with_ldap=yes
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krb=yes, with_ldap_krb=no, -llber -lkrb) }
+  test "$with_ldap_nolber" = "no" -a "$with_ldap_lber" = "no" -a "$with_ldap_krb" = "no" && { AC_CHECK_LIB(ldap, ldap_open, with_ldap_krbdes=yes, with_ldap_krbdes=no, -llber -lkrb -ldes) }
+  test -z "$with_ldap" -a \( "$with_ldap_lber" = "yes" -o "$with_ldap_nolber" = "yes" -o "$with_ldap_krb" = "yes" -o "$with_ldap_krbdes" = "yes" \) && with_ldap=yes
 fi
 if test "$with_ldap" = "yes"; then
   AC_DEFINE(HAVE_LDAP)
@@ -2688,6 +2694,13 @@ if test "$with_ldap" = "yes"; then
   if test "$with_ldap_nolber" = "yes" ; then
     XE_PREPEND(-lldap, LIBS)
   else
+    if test "$with_ldap_krb" = "yes" ; then
+      XE_PREPEND(-lkrb, LIBS)
+    fi
+    if test "$with_ldap_krbdes" = "yes" ; then
+      XE_PREPEND(-ldes, LIBS)
+      XE_PREPEND(-lkrb, LIBS)
+    fi
     XE_PREPEND(-llber, LIBS)
     XE_PREPEND(-lldap, LIBS)
   fi
@@ -3276,7 +3289,6 @@ int main (int argc, char *argv[])
 esac
 AC_MSG_RESULT($have_mmap)
 test "$have_mmap" = "yes" && AC_DEFINE(HAVE_MMAP)
-AC_FUNC_MMAP
 
 dnl rel_alloc requires either GNU malloc or system malloc with mmap
 dnl We only turn rel_alloc on by default if mmap is available.
@@ -3612,12 +3624,12 @@ fi
 dnl autodetect dll support
 AC_CHECK_HEADERS(dlfcn.h, [have_dlfcn=yes
   AC_DEFINE(HAVE_DLFCN_H)])
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_shlib=yes]) }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
-test -z "$with_shlib" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_shlib=yes]) }
-test -z "$with_shlib" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_shlib=yes]) }
-test -z "$with_shlib" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_shlib=yes]) }
-if test "$with_shlib" = "yes"; then
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(dl,  dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=dl;  with_modules=yes]) }
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   _dlopen,  [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
+test -z "$with_modules" && test ! -z "$have_dlfcn" && { AC_CHECK_LIB(c,   dlopen,   [ AC_DEFINE(HAVE_DLOPEN) DLL_LIB=;   with_modules=yes]) }
+test -z "$with_modules" && { AC_CHECK_LIB(dld, shl_load, [ AC_DEFINE(HAVE_SHL_LOAD) DLL_LIB=dld; with_modules=yes]) }
+test -z "$with_modules" && { AC_CHECK_LIB(dld, dld_init, [ AC_DEFINE(HAVE_DLD_INIT) DLL_LIB=dld; with_modules=yes]) }
+if test "$with_modules" = "yes"; then
   XE_SHLIB_STUFF
   if test "$can_build_shared" = "yes"; then
     AC_DEFINE(HAVE_SHLIB)
@@ -3628,7 +3640,7 @@ if test "$with_shlib" = "yes"; then
     AC_CHECK_FUNCS(dlerror _dlerror)
   else
     AC_MSG_WARN(disabling shared library support)
-    with_shlib=no
+    with_modules=no
   fi
 fi
 
@@ -3745,6 +3757,8 @@ AC_SUBST(PROGNAME)
 AC_SUBST(version)
 AC_SUBST(configuration)
 AC_SUBST(canonical)
+AC_SUBST(inststaticdir)
+AC_SUBST(instvardir)
 AC_SUBST(srcdir)
 AC_SUBST(bindir)
 AC_SUBST(datadir)
@@ -4125,6 +4139,9 @@ case "$with_scrollbars" in
   athena   ) echo "  Using Athena scrollbars."    ;;
   athena3d ) echo "  Using Athena-3d scrollbars." ;;
 esac
+case "$with_widgets" in
+  motif    ) echo "  Using Motif native widgets."     ;;
+esac
 case "$with_dialogs" in
   motif    )
     echo "  Using Motif dialog boxes."
@@ -4138,7 +4155,7 @@ case "$with_dialogs" in
   athena   ) echo "  Using Athena dialog boxes."    ;;
   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
 esac
-test "$with_shlib" = "yes" && echo "  Compiling in DLL support."
+test "$with_modules" = "yes" && echo "  Compiling in DSO module support."
 test "$with_clash_detection" = yes && \
   echo "  Clash detection will use \"$lockdir\" for locking files."
 echo "  movemail will use \"$mail_locking\" for locking mail spool files."
@@ -4181,7 +4198,7 @@ for file in $internal_makefile_list; do
   ac_output_files="${ac_output_files+$ac_output_files }$file"
 done
 ac_output_files="$ac_output_files src/paths.h lib-src/config.values"
-if test "$with_shlib" = "yes"; then
+if test "$with_modules" = "yes"; then
   ac_output_files="$ac_output_files lib-src/ellcc.h"
 fi
 
index e104857..dbeeb9a 100644 (file)
@@ -136,6 +136,8 @@ Additional features:
 --mail-locking=TYPE (*) Specify the locking to be used by movemail to prevent
                         concurrent updates of mail spool files. Valid types
                         are `lockf', `flock', and `file'.
+--with-modules         Compile in experimental support for dynamically
+                       loaded libraries (Dynamic Shared Objects).
 --with-site-lisp=yes    Allow for a site-lisp directory in the XEmacs hierarchy
                         searched before the installation packages.
 --with-site-modules=no  Disable site-modules directory in the XEmacs hierarchy,
index ce047cd..29238ae 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -33,6 +33,26 @@ file.
 * Changes in XEmacs 21.2
 ========================
 
+** The functions in rect.el have been almost completely rewritten...
+to avoid inserting undesirable spaces, notably at the end of lines.
+Two typical examples of this old behavior are `string-rectangle', which filled
+all lines up to the right side of the rectangle, and `clear-rectangle', which
+filled even empty lines up to the left side.
+
+This is not the case any more. All these functions have been rewritten to
+avoid inserting unwanted spaces, and an optional prefix now allows them to
+behave the old way.
+
+As a side effect, `move-to-column' now also accepts 'coerce as its second
+argument, meaning that the line shouldn't be filled if its too short to reach
+the desired column.
+
+** You can now customize and save comments for faces and variables.
+
+In Custom buffers, a new menu entry allows you to add and edit a comment.
+Comments for variables can also be assigned by calling
+`customize-set-(value|variable)' with a prefix argument.
+
 ** XEmacs now locates the early package hierarchy at ~/.xemacs/packages.
 
 This has changed from simply ~/.xemacs.
@@ -45,11 +65,11 @@ and a delete key.  If set to nil, the key labeled "Delete" will delete
 backward.  If set to non-nil, the "Delete" key will delete forward,
 except on keyboards where a "Backspace" key is not provided.
 
-Unless our implementation has bugs, the only reason why you would want 
+Unless our implementation has bugs, the only reason why you would want
 to set `delete-key-deletes-forward' to nil is if you want to use the
 Delete key to delete backwards, despite the presence (according to
 Xlib) of a BackSpace key on the keyboard.
+
 ** Interactive searching and matching case improvements.
 
 Case sensitiveness in searching operations is normally controlled by
@@ -57,7 +77,7 @@ the variable `case-fold-search' (if non-nil, case is ignored while
 searching).  This mechanism has now been slightly improved for
 interactive searches: if the search string (or regexp) contains
 uppercase characters, the searching is forced to be case-sensitive,
-`case-fold-search'.   
+`case-fold-search'.
 
 The new behavior affects all functions performing interactive
 searches, like `zap-to-char', `list-matching-lines', `tags-search'
index a980601..6feef5a 100644 (file)
@@ -1,21 +1,68 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
 ;; Package Index file -- Do not edit manually.
 ;;;@@@
 (package-get-update-base-entry (quote
+(lookup
+  (standards-version 1.1
+   version "1.03"
+   author-version "1.0"
+   date "1999-05-05"
+   build-date "1999-07-30"
+   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   distribution mule
+   priority high
+   category "mule"
+   dump nil
+   description "Dictionary support"
+   filename "lookup-1.03-pkg.tar.gz"
+   md5sum "d99759b042f8bf401d487e4ea140450d"
+   size 212861
+   provides (lookup)
+   requires (cookie lookup)
+   type regular
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
+(os-utils
+  (standards-version 1.1
+   version "1.18"
+   author-version "21.1"
+   date "1999-07-20"
+   build-date "1999-07-30"
+   maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
+   distribution xemacs
+   priority medium
+   category "os"
+   dump nil
+   description "Miscellaneous O/S utilities."
+   filename "os-utils-1.18-pkg.tar.gz"
+   md5sum "bafbe5e2628fc678daad46b07ba7fef6"
+   size 179680
+   provides (archive-mode background crypt crypt++ inf-lisp jka-compr lpr mchat tar-mode telnet terminal uncompress)
+   requires (xemacs-base)
+   type single
+))
+))
+;;;@@@
+(package-get-update-base-entry (quote
 (ediff
-  (standards-version 1.0
-   version "1.19"
+  (standards-version 1.1
+   version "1.22"
    author-version "2.72"
-   date "1999-04-06"
-   build-date "1999-05-13"
+   date "1999-05-27"
+   build-date "1999-07-30"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "prog"
    dump nil
    description "Interface over GNU patch."
-   filename "ediff-1.19-pkg.tar.gz"
-   md5sum "d6e0edc88c5d09279df71ce9aff41b25"
-   size 281804
+   filename "ediff-1.22-pkg.tar.gz"
+   md5sum "a9ece02fc03ac74ee4501845dec88710"
+   size 282084
    provides (ediff)
    requires (pcl-cvs elib dired xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (skk
-  (standards-version 1.0
-   version "1.12"
+  (standards-version 1.1
+   version "1.14"
    author-version "10.38"
-   date "1998-10-01"
-   build-date "1999-02-02"
+   date "1999-05-18"
+   build-date "1999-07-30"
    maintainer "SL Baur <steve@altair.xemacs.org>"
    distribution mule
    priority medium
    category "mule"
-   dump t
+   dump nil
    description "Japanese Language Input Method."
-   filename "skk-1.12-pkg.tar.gz"
-   md5sum "f690c518a0da65c4dc9fe2a867026c26"
-   size 1514106
+   filename "skk-1.14-pkg.tar.gz"
+   md5sum "b8c89832f314570cb251147ced107c49"
+   size 1514095
    provides (skk skk-tut)
    requires (viper mule-base elib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (egg-its
-  (standards-version 1.0
-   version "1.16"
-   author-version "21.0b65"
-   date "1999-03-05"
-   build-date "1999-03-11"
+  (standards-version 1.1
+   version "1.19"
+   author-version "21.1"
+   date "1999-07-26"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
-   dump t
+   dump nil
    description "Wnn (4.2 and 6) support.  SJ3 support."
-   filename "egg-its-1.16-pkg.tar.gz"
-   md5sum "5a3b23dbe609feeabfc108ae142715c3"
-   size 257562
+   filename "egg-its-1.19-pkg.tar.gz"
+   md5sum "121037363bae6925fd4933f861cbdabb"
+   size 261537
    provides (egg-cnpinyin egg-cnzhuyin egg-cwnn-leim egg-jisx0201 egg-jsymbol egg-kwnn-leim egg-leim egg-sj3-client egg-sj3-leim egg-sj3 egg-wnn egg)
    requires (leim mule-base fsf-compat xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (edict
-  (standards-version 1.0
-   version "1.07"
+  (standards-version 1.1
+   version "1.08"
    author-version "0.9.8"
    date "1998-07-23"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Stephen J. Turnbull <turnbull@sk.tsukuba.ac.jp>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "Lisp Interface to EDICT, Kanji Dictionary"
-   filename "edict-1.07-pkg.tar.gz"
-   md5sum "493ef0ec6f2760e5c94423c23c9d124e"
-   size 71661
+   filename "edict-1.08-pkg.tar.gz"
+   md5sum "f339e93a2cb02d9224e4bf9f313b0b62"
+   size 71621
    provides (dui-registry dui edict-edit edict-english edict-japanese edict-morphology edict-test edict ts-mode)
    requires (mule-base xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (leim
-  (standards-version 1.0
-   version "1.12"
-   author-version "21.0b62"
-   date "1998-07-23"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "1.13"
+   author-version "21.1"
+   date "1999-06-29"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority medium
    category "mule"
    dump nil
    description "Quail.  All non-English and non-Japanese language support."
-   filename "leim-1.12-pkg.tar.gz"
-   md5sum "07cc5be34a0d9d312b883b430349a882"
-   size 1671757
+   filename "leim-1.13-pkg.tar.gz"
+   md5sum "9cd059afefa3aff94fd1802c8db6c39a"
+   size 1702922
    provides ()
    requires (mule-base fsf-compat xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (locale
-  (standards-version 1.0
-   version "1.13"
-   author-version "21.0"
+  (standards-version 1.1
+   version "1.14"
+   author-version "21.1"
    date "1999-05-11"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "Localized menubars and localized splash screens."
-   filename "locale-1.13-pkg.tar.gz"
-   md5sum "4735b4005dfce55cf3581885add18836"
-   size 33964
+   filename "locale-1.14-pkg.tar.gz"
+   md5sum "5a5c7e878596a1009e97a8c4f491826c"
+   size 35744
    provides ()
    requires (mule-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (mule-base
-  (standards-version 1.0
-   version "1.29"
-   author-version "21.0"
-   date "1999-05-13"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.32"
+   author-version "21.1"
+   date "1999-06-30"
+   build-date "1999-07-30"
    maintainer "SL Baur <steve@altair.xemacs.org>"
    distribution mule
    priority high
    category "mule"
-   dump t
+   dump nil
    description "Basic Mule support, required for building with Mule."
-   filename "mule-base-1.29-pkg.tar.gz"
-   md5sum "9b713b6f95c4016dc29d7b584c78f7d1"
-   size 420205
+   filename "mule-base-1.32-pkg.tar.gz"
+   md5sum "40950af24540e6cfc6875a9ddc7bab5d"
+   size 453902
    provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help)
-   requires (fsf-compat xemacs-base)
+   requires (fsf-compat xemacs-base apel)
    type regular
 ))
 ))
 ;;;@@@
 (package-get-update-base-entry (quote
 (strokes
-  (standards-version 1.0
-   version "1.04"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.05"
+   author-version "21.1"
    date "1998-01-25"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "oa"
    dump nil
    description "Mouse enhancement utility."
-   filename "strokes-1.04-pkg.tar.gz"
-   md5sum "9a83020e888d140da2360dcac83c7c86"
-   size 43481
+   filename "strokes-1.05-pkg.tar.gz"
+   md5sum "42b991c28dc393a78f9da792f15e53d3"
+   size 43480
    provides (strokes)
    requires (text-modes edit-utils mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (time
-  (standards-version 1.0
-   version "1.07"
+  (standards-version 1.1
+   version "1.08"
    author-version "1.17"
    date "1998-04-24"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "oa"
    dump nil
    description "Display time & date on the modeline."
-   filename "time-1.07-pkg.tar.gz"
-   md5sum "4cc97d84357412fb7d737a88b6f05cbe"
-   size 20006
+   filename "time-1.08-pkg.tar.gz"
+   md5sum "c67d7143de5694ec4a7e17023ceab902"
+   size 19994
    provides (time)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (text-modes
-  (standards-version 1.0
-   version "1.19"
-   author-version "21.0"
-   date "1999-04-22"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.21"
+   author-version "21.1"
+   date "1999-07-06"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "oa"
    dump nil
    description "Miscellaneous support for editing text files."
-   filename "text-modes-1.19-pkg.tar.gz"
-   md5sum "9031e37912506b87a9a4fc4aa8107c13"
-   size 207865
+   filename "text-modes-1.21-pkg.tar.gz"
+   md5sum "d9d9505dfbe52854b3337eddfce093d1"
+   size 207873
    provides (autoinsert crontab-edit filladapt fold-isearch folding image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode)
    requires (ispell fsf-compat xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (slider
-  (standards-version 1.0
-   version "1.09"
+  (standards-version 1.1
+   version "1.10"
    author-version "0.3x1"
    date "1998-08-13"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution experimental
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "User interface tool."
-   filename "slider-1.09-pkg.tar.gz"
-   md5sum "b211a950179fee88712fc5c38e395069"
-   size 12004
+   filename "slider-1.10-pkg.tar.gz"
+   md5sum "a67e165592a2921ff0978a69befa0d6d"
+   size 12000
    provides (slider color-selector)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (sgml
-  (standards-version 1.0
-   version "1.04"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.05"
+   author-version "21.1"
    date "1998-01-25"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "SGML/Linuxdoc-SGML editing."
-   filename "sgml-1.04-pkg.tar.gz"
-   md5sum "2b762a0fbdda616916624dc2fa53e647"
-   size 26938
+   filename "sgml-1.05-pkg.tar.gz"
+   md5sum "ead5d1671dfebf394be76166c786b0c2"
+   size 26937
    provides (sgml linuxdoc-sgml)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (psgml
-  (standards-version 1.0
-   version "1.12"
+  (standards-version 1.1
+   version "1.14"
    author-version "1.01"
-   date "1999-03-05"
-   build-date "1999-03-05"
+   date "1999-06-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "oa"
    dump nil
    description "Validated HTML/SGML editing."
-   filename "psgml-1.12-pkg.tar.gz"
-   md5sum "7303b3a604659b64f24b0847b3a686d5"
-   size 425458
+   filename "psgml-1.14-pkg.tar.gz"
+   md5sum "44102484c3e5588bab21005cec1a46e1"
+   size 425227
    provides (psgml sgml)
    requires (edit-utils)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (pc
-  (standards-version 1.0
-   version "1.15"
-   author-version "21.0"
+  (standards-version 1.1
+   version "1.16"
+   author-version "21.1"
    date "1999-04-13"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "PC style interface emulation."
-   filename "pc-1.15-pkg.tar.gz"
-   md5sum "99ad6b816d02360a4a9ccb5425974818"
-   size 16315
+   filename "pc-1.16-pkg.tar.gz"
+   md5sum "d721157770274b9fee0b16933764c636"
+   size 16324
    provides (delbs fusion pc-select pending-del s-region)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (ispell
-  (standards-version 1.0
-   version "1.15"
+  (standards-version 1.1
+   version "1.16"
    author-version "3.2"
-   date "1999-05-13"
-   build-date "1999-05-13"
+   date "1999-07-22"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Spell-checking with GNU ispell."
-   filename "ispell-1.15-pkg.tar.gz"
-   md5sum "23632bd9fc2f7e4c0303865c35c5f4a5"
-   size 68118
+   filename "ispell-1.16-pkg.tar.gz"
+   md5sum "a3140984afc8a9d5aa0d0116625b2d07"
+   size 68157
    provides (ispell)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (frame-icon
-  (standards-version 1.0
-   version "1.06"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.07"
+   author-version "21.1"
    date "1998-07-14"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Set up mode-specific icons for each frame under XEmacs"
-   filename "frame-icon-1.06-pkg.tar.gz"
-   md5sum "bc4f6e838a4fa12d7f3b8b1996b3a9ac"
-   size 33483
+   filename "frame-icon-1.07-pkg.tar.gz"
+   md5sum "320909b8d8caa9754c08963878acbb8b"
+   size 33434
    provides (forms forms-mode)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (forms
-  (standards-version 1.0
-   version "1.10"
+  (standards-version 1.1
+   version "1.11"
    author-version "2.37"
    date "1999-05-11"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Forms editing support (obsolete, use Widget instead)."
-   filename "forms-1.10-pkg.tar.gz"
-   md5sum "a8ad3a114859c0981a1f884072bf4b1b"
-   size 48264
+   filename "forms-1.11-pkg.tar.gz"
+   md5sum "36604485f4a1031d28968fe2c8534a6d"
+   size 48263
    provides (forms forms-mode)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (calendar
-  (standards-version 1.0
-   version "1.10"
-   author-version "21.0b63"
-   date "1999-02-08"
-   build-date "1999-03-01"
+  (standards-version 1.1
+   version "1.12"
+   author-version "21.1"
+   date "1999-06-24"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Calendar and diary support."
-   filename "calendar-1.10-pkg.tar.gz"
-   md5sum "09e93d157d2853a35e735a6a04f54055"
-   size 248580
+   filename "calendar-1.12-pkg.tar.gz"
+   md5sum "d6ad2b3a3477d04ca3b669a67eecc8bc"
+   size 250669
    provides (appt cal-dst cal-french cal-mayan cal-x cal-xemacs calendar diary-ins diary-lib holidays lunar solar)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (calc
-  (standards-version 1.0
-   version "1.10"
+  (standards-version 1.1
+   version "1.11"
    author-version "2.02fX3"
    date "1998-07-25"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Emacs calculator"
-   filename "calc-1.10-pkg.tar.gz"
-   md5sum "148c82bf6f213d6e2fb234e1f21e4699"
-   size 1616821
+   filename "calc-1.11-pkg.tar.gz"
+   md5sum "7a0cce9d75b5c70f02db67f18eb6a97d"
+   size 1616700
    provides (calc)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (speedbar
-  (standards-version 1.0
-   version "1.12"
+  (standards-version 1.1
+   version "1.13"
    author-version "0.6.2x"
-   date "1999-03-05"
-   build-date "1999-03-12"
+   date "1999-07-15"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "oa"
    dump nil
    description "Provides a seperate frame with convenient references."
-   filename "speedbar-1.12-pkg.tar.gz"
-   md5sum "3b578d06426921193ac2b8337a669bfa"
-   size 64892
+   filename "speedbar-1.13-pkg.tar.gz"
+   md5sum "0a2352aa6866888fc8ecdc7ec8d86516"
+   size 64955
    provides (speedbar)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (edit-utils
-  (standards-version 1.0
-   version "1.39"
-   author-version "21.0"
-   date "1999-05-11"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.41"
+   author-version "21.1"
+   date "1999-07-07"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "oa"
    dump nil
    description "Miscellaneous editor extensions, you probably need this."
-   filename "edit-utils-1.39-pkg.tar.gz"
-   md5sum "f129277008f56e86ec8630a299df7408"
-   size 577970
+   filename "edit-utils-1.41-pkg.tar.gz"
+   md5sum "a3d5116811348bde6d56976ce94a991a"
+   size 579673
    provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren popper mode-motion+ outl-mouse page-ext blink-paren paren permanent-buffers recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place tempo toolbar-utils tree-menu uniquify where-was-i-db)
    requires (xemacs-base)
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (view-process
-  (standards-version 1.0
-   version "1.06"
+  (standards-version 1.1
+   version "1.07"
    author-version "2.4"
    date "1998-01-24"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "os"
    dump nil
    description "A Unix process browsing tool."
-   filename "view-process-1.06-pkg.tar.gz"
-   md5sum "61c4c7175f23cb4cfd314e10303b238c"
-   size 59958
+   filename "view-process-1.07-pkg.tar.gz"
+   md5sum "47a82bb6569dd9d9bed03a57c9391538"
+   size 59953
    provides (view-process-mode)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (ilisp
-  (standards-version 1.0
-   version "1.07"
+  (standards-version 1.1
+   version "1.08"
    author-version "5.8"
    date "1998-01-24"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "os"
    dump nil
    description "Front-end for Inferior Lisp."
-   filename "ilisp-1.07-pkg.tar.gz"
-   md5sum "38cb2d94926e310a6e71ec1be854d636"
-   size 262173
+   filename "ilisp-1.08-pkg.tar.gz"
+   md5sum "12041533cb292d9d58a55278c8882c70"
+   size 262171
    provides (ilisp completer)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (igrep
-  (standards-version 1.0
-   version "1.05"
+  (standards-version 1.1
+   version "1.06"
    author-version "2.83"
    date "1998-08-11"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "os"
    dump nil
    description "Enhanced front-end for Grep."
-   filename "igrep-1.05-pkg.tar.gz"
-   md5sum "e70d4973a2af4dbd6222f5943bfa1a50"
-   size 14935
+   filename "igrep-1.06-pkg.tar.gz"
+   md5sum "9a61dc2c81e909993e14254f30df3ee7"
+   size 14927
    provides (igrep)
    requires (dired xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (eterm
-  (standards-version 1.0
-   version "1.08"
-   author-version "21.0b62"
-   date "1998-06-28"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "1.09"
+   author-version "21.1"
+   date "1999-07-07"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "os"
    dump nil
    description "Terminal emulation."
-   filename "eterm-1.08-pkg.tar.gz"
-   md5sum "77e56529b5de6a0a0dd46c5d1634eebf"
-   size 108905
+   filename "eterm-1.09-pkg.tar.gz"
+   md5sum "9cdab77e28dc87a79db4c503c961b37a"
+   size 109066
    provides (eterm)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (viper
-  (standards-version 1.0
-   version "1.14"
+  (standards-version 1.1
+   version "1.17"
    author-version "3.061"
-   date "1999-03-03"
-   build-date "1999-03-05"
+   date "1999-05-27"
+   build-date "1999-07-30"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
-   distribution stable
+   distribution xemacs
    priority low
    category "wp"
    dump nil
    description "VI emulation support."
-   filename "viper-1.14-pkg.tar.gz"
-   md5sum "0e118822906e195dc352f28c8efc01e0"
-   size 317899
+   filename "viper-1.17-pkg.tar.gz"
+   md5sum "89285f1297d73552d43602cf1288aefd"
+   size 317943
    provides (viper)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (tpu
-  (standards-version 1.0
-   version "1.08"
+  (standards-version 1.1
+   version "1.09"
    author-version "4.2X"
    date "1998-07-23"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Kevin Oberman <oberman@es.net>"
-   distribution normal
+   distribution xemacs
    priority medium
    category "wp"
    dump nil
    description "DEC EDIT/TPU support."
-   filename "tpu-1.08-pkg.tar.gz"
-   md5sum "2306ac55a0a1ed23da02a85c91f881bb"
-   size 58804
+   filename "tpu-1.09-pkg.tar.gz"
+   md5sum "9a467bd306599d97f0f5be0266850d79"
+   size 58814
    provides (tpu)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (textools
-  (standards-version 1.0
-   version "1.08"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.09"
+   author-version "21.1"
    date "1998-04-29"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stabl
+   distribution xemacs
    priority medium
    category "wp"
    dump nil
    description "Miscellaneous TeX support."
-   filename "textools-1.08-pkg.tar.gz"
-   md5sum "22dd0e16433a96547fde5757c6793388"
-   size 79176
+   filename "textools-1.09-pkg.tar.gz"
+   md5sum "d0e16392dfdcd9ec8eab4ebc8da9948e"
+   size 79187
    provides (bib-mode bibtex refer-to-bibtex)
    requires (xemacs-base)
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (texinfo
-  (standards-version 1.0
-   version "1.14"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.15"
+   author-version "21.1"
    date "1998-07-20"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "wp"
    dump nil
    description "XEmacs TeXinfo support."
-   filename "texinfo-1.14-pkg.tar.gz"
-   md5sum "b1b6a7f4c1ff10be38d3e27d1213f1c8"
-   size 127830
+   filename "texinfo-1.15-pkg.tar.gz"
+   md5sum "3c0ba97404953b4383d06f0a88a3a6cd"
+   size 127873
    provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (reftex
-  (standards-version 1.0
-   version "1.13"
+  (standards-version 1.1
+   version "1.14"
    author-version "3.43"
    date "1999-04-06"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "Carsten Dominik <dominik@strw.LeidenUniv.nl>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "wp"
    dump nil
    description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.13-pkg.tar.gz"
-   md5sum "5e9196a6fdda2587bec1aff19d6322ec"
-   size 216008
+   filename "reftex-1.14-pkg.tar.gz"
+   md5sum "e56e631f54e895ed95377be6e882bed5"
+   size 215968
    provides (reftex)
    requires (fsf-compat xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (edt
-  (standards-version 1.0
-   version "1.07"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.08"
+   author-version "21.1"
    date "1998-04-07"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "wp"
    dump nil
    description "DEC EDIT/EDT emulation."
-   filename "edt-1.07-pkg.tar.gz"
-   md5sum "6c48ceb9686c50058be3938288940bc5"
-   size 46131
+   filename "edt-1.08-pkg.tar.gz"
+   md5sum "bade43d3b5c90a4b9c969a1f85ef606e"
+   size 46128
    provides (edt)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (crisp
-  (standards-version 1.0
-   version "1.09"
+  (standards-version 1.1
+   version "1.10"
    author-version "1.34"
    date "1998-08-18"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "wp"
    dump nil
    description "Crisp/Brief emulation."
-   filename "crisp-1.09-pkg.tar.gz"
-   md5sum "faa9b6f2868a7e5b212d1094039cf526"
-   size 10067
+   filename "crisp-1.10-pkg.tar.gz"
+   md5sum "82fcef8e2a2c6e0d40c68f6142c6a780"
+   size 10065
    provides (crisp scroll-lock)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (auctex
-  (standards-version 1.0
-   version "1.16"
+  (standards-version 1.1
+   version "1.17"
    author-version "9.7p"
    date "1998-09-30"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "wp"
    dump nil
    description "Basic TeX/LaTeX support."
-   filename "auctex-1.16-pkg.tar.gz"
-   md5sum "56e3454a1162c25db93fc84bdab61d0f"
-   size 365136
+   filename "auctex-1.17-pkg.tar.gz"
+   md5sum "be1dc85bba341dba02ec13ce06bf9609"
+   size 365053
    provides (auc-old bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-site tex)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (vhdl
-  (standards-version 1.0
-   version "1.07"
+  (standards-version 1.1
+   version "1.08"
    author-version "2.74"
    date "1998-01-24"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Support for VHDL."
-   filename "vhdl-1.07-pkg.tar.gz"
-   md5sum "0eae8d15cff7d7b6dd7e1d00029c0e3a"
-   size 65961
+   filename "vhdl-1.08-pkg.tar.gz"
+   md5sum "8d3422f8b6ba5584dbf89d3ef6759594"
+   size 65948
    provides (vhdl-mode)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (vc
-  (standards-version 1.0
-   version "1.17"
-   author-version "21.0b63"
-   date "1999-02-25"
-   build-date "1999-03-01"
+  (standards-version 1.1
+   version "1.19"
+   author-version "21.1"
+   date "1999-06-07"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Version Control for Free systems."
-   filename "vc-1.17-pkg.tar.gz"
-   md5sum "4e80458c0e6d4cf2805ed6a46135e1c6"
-   size 84499
+   filename "vc-1.19-pkg.tar.gz"
+   md5sum "2794428c1167de3f1db8e9928041b065"
+   size 84689
    provides (vc)
    requires (dired xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (vc-cc
-  (standards-version 1.0
-   version "1.11"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.12"
+   author-version "21.1"
    date "1998-12-09"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Version Control for ClearCase (UnFree) systems."
-   filename "vc-cc-1.11-pkg.tar.gz"
-   md5sum "561ab60400e3fa6bfef8ad8567a3702d"
-   size 96544
+   filename "vc-cc-1.12-pkg.tar.gz"
+   md5sum "db978159bf5d1d194782b79961d003d1"
+   size 96520
    provides (vc)
    requires (dired xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (sh-script
-  (standards-version 1.0
-   version "1.08"
+  (standards-version 1.1
+   version "1.10"
    author-version "2.0e"
-   date "1998-05-12"
-   build-date "1999-02-02"
+   date "1999-05-31"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Support for editing shell scripts."
-   filename "sh-script-1.08-pkg.tar.gz"
-   md5sum "f2f584ab19761b1db14160d9d3cbc6f3"
-   size 33900
+   filename "sh-script-1.10-pkg.tar.gz"
+   md5sum "003e39a5e97acce6f9b751a1fec5e398"
+   size 33987
    provides (sh-script executable)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (scheme
-  (standards-version 1.0
-   version "1.07"
-   author-version "21.0b62"
-   date "1998-09-08"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "1.09"
+   author-version "21.1"
+   date "1999-06-15"
+   build-date "1999-07-30"
    maintainer "Karl M. Hegbloom <karlheg@bittersweet.inetarena.com>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Front-end support for Inferior Scheme."
-   filename "scheme-1.07-pkg.tar.gz"
-   md5sum "998d46aee749b32493cae61cac3888d2"
-   size 36292
+   filename "scheme-1.09-pkg.tar.gz"
+   md5sum "a4542795594e46af3b803d44ed3d7c8d"
+   size 36505
    provides (scheme xscheme cmuscheme cmuscheme48)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (prog-modes
-  (standards-version 1.0
-   version "1.19"
-   author-version "21.0"
-   date "1999-05-12"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.21"
+   author-version "21.1"
+   date "1999-07-15"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "prog"
    dump nil
    description "Support for various programming languages."
-   filename "prog-modes-1.19-pkg.tar.gz"
-   md5sum "11da842b17ee65837bc56c13d76f49af"
-   size 596965
+   filename "prog-modes-1.21-pkg.tar.gz"
+   md5sum "e83aff3ead4ab018d07b9b22e9ba301d"
+   size 601321
    provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod)
    requires (mail-lib xemacs-devel xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (emerge
-  (standards-version 1.0
-   version "1.05"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.06"
+   author-version "21.1"
    date "1998-04-07"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Another interface over GNU patch."
-   filename "emerge-1.05-pkg.tar.gz"
-   md5sum "1f4d70d7f4e73290837b2dbd2189be99"
-   size 61009
+   filename "emerge-1.06-pkg.tar.gz"
+   md5sum "1f4c3003975e8c540742c37cd398dd4b"
+   size 61012
    provides (emerge)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (debug
-  (standards-version 1.0
-   version "1.09"
-   author-version "21.0"
+  (standards-version 1.1
+   version "1.10"
+   author-version "21.1"
    date "1999-05-12"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "GUD, gdb, dbx debugging support."
-   filename "debug-1.09-pkg.tar.gz"
-   md5sum "24442a34f07cdd97ed52aa2c88c3de0b"
-   size 103161
+   filename "debug-1.10-pkg.tar.gz"
+   md5sum "81fab3bf4b08036d122f1e6abb7ffc74"
+   size 103093
    provides (dbx gdb-highlight gdb gdbsrc gud history)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (c-support
-  (standards-version 1.0
-   version "1.12"
-   author-version "21.0b64"
+  (standards-version 1.1
+   version "1.13"
+   author-version "21.1"
    date "1999-03-02"
-   build-date "1999-03-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.12-pkg.tar.gz"
-   md5sum "a793cd83bb595d34771332a46d2abfd4"
-   size 69913
+   filename "c-support-1.13-pkg.tar.gz"
+   md5sum "d4568a0fd8c0ea31917ad37e190e443b"
+   size 69931
    provides (c-comment-edit cmacexp ctypes hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (ada
-  (standards-version 1.0
-   version "1.06"
+  (standards-version 1.1
+   version "1.07"
    author-version "2.27"
    date "1998-01-24"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "Ada language support."
-   filename "ada-1.06-pkg.tar.gz"
-   md5sum "0f3d2dc2ff33d40092b324a7a5a363d6"
-   size 54364
+   filename "ada-1.07-pkg.tar.gz"
+   md5sum "f12fe7c6ac8ed3bcfeb761ffd9e60661"
+   size 54369
    provides (ada-mode ada-stmt)
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (pcl-cvs
-  (standards-version 1.0
-   version "1.38"
+  (standards-version 1.1
+   version "1.40"
    author-version "R-2_0-Beta_2"
-   date "1998-11-17"
-   build-date "1999-02-02"
+   date "1999-06-16"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "prog"
    dump nil
    description "CVS frontend."
-   filename "pcl-cvs-1.38-pkg.tar.gz"
-   md5sum "a5ff4e61dffe3985c20385eb741d4783"
-   size 163524
+   filename "pcl-cvs-1.40-pkg.tar.gz"
+   md5sum "2ad22b28bb14a7bade0b2fad0723d35f"
+   size 163639
    provides (pcl-cvs generic-sc)
    requires (xemacs-base elib dired)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (cc-mode
-  (standards-version 1.0
-   version "1.15"
+  (standards-version 1.1
+   version "1.16"
    author-version "5.25"
    date "1998-12-30"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Barry Warsaw <bug-cc-mode@gnu.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "prog"
    dump nil
    description "C, C++ and Java language support."
-   filename "cc-mode-1.15-pkg.tar.gz"
-   md5sum "ca73b190e79f96ab928eecd12af94222"
-   size 212611
+   filename "cc-mode-1.16-pkg.tar.gz"
+   md5sum "9f8c53d9abca09982e739344c733c7c3"
+   size 212664
    provides (cc-mode)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (misc-games
-  (standards-version 1.0
-   version "1.11"
-   author-version "21.0b65"
+  (standards-version 1.1
+   version "1.12"
+   author-version "21.1"
    date "1999-03-05"
-   build-date "1999-03-11"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "games"
    dump nil
    description "Other amusements and diversions."
-   filename "misc-games-1.11-pkg.tar.gz"
-   md5sum "80149e00e5698d0a48945c918bd2d0ba"
-   size 166197
+   filename "misc-games-1.12-pkg.tar.gz"
+   md5sum "74c3421bdfdfe77989741389f0e1330a"
+   size 166163
    provides (decipher gomoku hanoi life morse rot13)
    requires (xemacs-base)
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (mine
-  (standards-version 1.0
-   version "1.10"
+  (standards-version 1.1
+   version "1.11"
    author-version "1.9"
    date "1998-05-09"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "games"
    dump nil
    description "Minehunt Game."
-   filename "mine-1.10-pkg.tar.gz"
-   md5sum "a2d4f93830fe86e4d4e2f081ec0517fb"
-   size 66679
+   filename "mine-1.11-pkg.tar.gz"
+   md5sum "fad5f9d385ac22c2cf446db18e57300e"
+   size 66703
    provides (xmine)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (games
-  (standards-version 1.0
-   version "1.09"
+  (standards-version 1.1
+   version "1.10"
    author-version "1.04"
    date "1998-06-04"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Glynn Clements <glynn@sensei.co.uk>"
-   distribution stable
+   distribution xemacs
    priority low
    category "games"
    dump nil
    description "Tetris, Sokoban, and Snake."
-   filename "games-1.09-pkg.tar.gz"
-   md5sum "76a327a228745576538711180a9e444e"
-   size 32146
+   filename "games-1.10-pkg.tar.gz"
+   md5sum "e43de212a7ceb56cbaad7e40eb775dd2"
+   size 32184
    provides (gamegrid snake tetris sokoban)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (cookie
-  (standards-version 1.0
-   version "1.10"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.11"
+   author-version "21.1"
    date "1998-04-07"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "games"
    dump nil
    description "Spook and Yow (Zippy quotes)."
-   filename "cookie-1.10-pkg.tar.gz"
-   md5sum "1c5599fa30e346af452c126d872121be"
-   size 34198
+   filename "cookie-1.11-pkg.tar.gz"
+   md5sum "291ea47a1e71de661de365aea0addb60"
+   size 34221
    provides (cookie1 yow)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (bbdb
-  (standards-version 1.0
-   version "1.07"
-   author-version "2.00.02"
-   date "1998-10-08"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "1.08"
+   author-version "2.00.06"
+   date "1999-01-24"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "comm"
    dump nil
    description "The Big Brother Data Base"
-   filename "bbdb-1.07-pkg.tar.gz"
-   md5sum "e28c4aed70df000812d34cb3795c2f72"
-   size 282200
+   filename "bbdb-1.08-pkg.tar.gz"
+   md5sum "c95ed737fab5b59e88d9acc33703697b"
+   size 282061
    provides (bbdb)
    requires (bbdb edit-utils gnus mh-e rmail supercite vm tm apel mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (zenirc
-  (standards-version 1.0
-   version "1.05"
+  (standards-version 1.1
+   version "1.06"
    author-version "2.112"
    date "1998-08-15"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "comm"
    dump nil
    description "ZENIRC IRC Client."
-   filename "zenirc-1.05-pkg.tar.gz"
-   md5sum "df432e4987ddd0dd65e0124d7d910967"
-   size 276054
+   filename "zenirc-1.06-pkg.tar.gz"
+   md5sum "7b701d195193ad6b0bf8e2067e17e372"
+   size 276012
    provides (zenirc)
    requires (zenirc)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (mew
-  (standards-version 1.0
-   version "1.07"
+  (standards-version 1.1
+   version "1.08"
    author-version "1.93b38x1"
    date "1998-12-09"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Messaging in an Emacs World."
-   filename "mew-1.07-pkg.tar.gz"
-   md5sum "04ed302d5a3735169835e52dadc9e84d"
-   size 518432
+   filename "mew-1.08-pkg.tar.gz"
+   md5sum "47ff3e8966c6a198cbae3a413139f4b7"
+   size 518502
    provides (mew)
    requires (mew)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (tm
-  (standards-version 1.0
-   version "1.18"
-   author-version "21.0"
+  (standards-version 1.1
+   version "1.20"
+   author-version "21.1"
    date "1999-02-06"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Emacs MIME support."
-   filename "tm-1.18-pkg.tar.gz"
-   md5sum "3d7641bd11adb085686384ffee80bf04"
-   size 330163
+   filename "tm-1.20-pkg.tar.gz"
+   md5sum "d602235f7efdcdd37e7758101e3c162d"
+   size 329547
    provides (tm tm-edit tm-view mime-setup)
    requires (gnus mh-e rmail vm mailcrypt mail-lib apel xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (gnus
-  (standards-version 1.0
-   version "1.40"
+  (standards-version 1.1
+   version "1.42"
    author-version "5.6.45x1"
    date "1999-03-12"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "comm"
    dump nil
    description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.40-pkg.tar.gz"
-   md5sum "df916949c14fc6a1dcd5b3f3158a5497"
-   size 1873480
+   filename "gnus-1.42-pkg.tar.gz"
+   md5sum "f076c9ae4ca6ab468454d8036a178501"
+   size 1872714
    provides (gnus message)
    requires (gnus tm apel w3 mh-e mailcrypt rmail mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (rmail
-  (standards-version 1.0
-   version "1.08"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.10"
+   author-version "21.1"
    date "1998-06-28"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "An obsolete Emacs mailer."
-   filename "rmail-1.08-pkg.tar.gz"
-   md5sum "90f98f9043e0c6f2180ffec9c6904eca"
-   size 96450
+   filename "rmail-1.10-pkg.tar.gz"
+   md5sum "4a8b8e1d7b68957ab357d8f86f232fac"
+   size 96442
    provides (rmail rmailsum)
    requires (tm apel mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (mailcrypt
-  (standards-version 1.0
-   version "1.07"
-   author-version "3.4"
-   date "1998-01-24"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "2.01"
+   author-version "3.5.3"
+   date "1999-03-12"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Support for messaging encryption with PGP."
-   filename "mailcrypt-1.07-pkg.tar.gz"
-   md5sum "350dccab50ef0800b95d44ef62cca359"
-   size 86362
+   filename "mailcrypt-2.01-pkg.tar.gz"
+   md5sum "1225a54298f26e6a06749dfb0665b658"
+   size 134061
    provides (mailcrypt)
-   requires (gnus vm mail-lib xemacs-base)
+   requires (mail-lib fsf-compat xemacs-base)
    type regular
 ))
 ))
 ;;;@@@
 (package-get-update-base-entry (quote
 (supercite
-  (standards-version 1.0
-   version "1.12"
+  (standards-version 1.1
+   version "1.13"
    author-version "3.55x3"
    date "1999-04-06"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "An Emacs citation tool for News & Mail messages."
-   filename "supercite-1.12-pkg.tar.gz"
-   md5sum "7188738f17ec05c1561fe054fdf120dd"
-   size 99564
+   filename "supercite-1.13-pkg.tar.gz"
+   md5sum "7f599f29f111dca3e62c3baeec2b2d91"
+   size 99547
    provides (supercite)
    requires (mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (mh-e
-  (standards-version 1.0
-   version "1.09"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.10"
+   author-version "21.1"
    date "1998-07-12"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Front end support for MH."
-   filename "mh-e-1.09-pkg.tar.gz"
-   md5sum "89e6f44e8dca03f6be10068391831262"
-   size 176469
+   filename "mh-e-1.10-pkg.tar.gz"
+   md5sum "e04e85a9ff62282a18a06872c840e22f"
+   size 176436
    provides (mh-e)
    requires (mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (gnats
-  (standards-version 1.0
-   version "1.08"
+  (standards-version 1.1
+   version "1.09"
    author-version "3.101"
    date "1998-08-01"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "comm"
    dump nil
    description "XEmacs bug reports."
-   filename "gnats-1.08-pkg.tar.gz"
-   md5sum "8c1e3100399aac86c63683b1836d4a61"
-   size 189265
+   filename "gnats-1.09-pkg.tar.gz"
+   md5sum "0893c6cad7179a2be79744bdfc0c6932"
+   size 189250
    provides (gnats gnats-admin send-pr)
    requires (mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (footnote
-  (standards-version 1.0
-   version "1.10"
+  (standards-version 1.1
+   version "1.11"
    author-version "0.18x"
    date "1999-03-11"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "SL Baur <steve@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Footnoting in mail message editing modes."
-   filename "footnote-1.10-pkg.tar.gz"
-   md5sum "124d7e58ba9905db7488ee142470249f"
-   size 18356
+   filename "footnote-1.11-pkg.tar.gz"
+   md5sum "7aa931c602913134e5e716de752439db"
+   size 18364
    provides (footnote)
    requires (mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (eudc
-  (standards-version 1.0
-   version "1.28"
-   author-version "1.28"
-   date "1999-02-13"
-   build-date "1999-03-01"
-   maintainer "Oscar Figueiredo <Oscar.Figueiredo@epfl.ch>"
-   distribution stable
+  (standards-version 1.1
+   version "1.29"
+   author-version "1.29"
+   date "1999-07-21"
+   build-date "1999-07-30"
+   maintainer "Oscar Figueiredo <oscar@xemacs.org>"
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Emacs Unified Directory Client (LDAP, PH)."
-   filename "eudc-1.28-pkg.tar.gz"
-   md5sum "e88e7ed791d16105824812edcd743bc6"
-   size 62476
-   provides (eudc eudc-ldap eudc-ph)
+   filename "eudc-1.29-pkg.tar.gz"
+   md5sum "23f490bd6771d873c1869fa1ac56a3a8"
+   size 71390
+   provides (eudc eudc-ldap eudc-ph eudc-bbdb)
    requires (fsf-compat xemacs-base bbdb)
    type regular
 ))
 ;;;@@@
 (package-get-update-base-entry (quote
 (net-utils
-  (standards-version 1.0
-   version "1.11"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.12"
+   author-version "21.1"
    date "1998-07-01"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "comm"
    dump nil
    description "Miscellaneous Networking Utilities."
-   filename "net-utils-1.11-pkg.tar.gz"
-   md5sum "f9d52e6e6b4f53ccf5cdd3521403e276"
-   size 107193
+   filename "net-utils-1.12-pkg.tar.gz"
+   md5sum "49b7e1d0f2f97519eca07d3562f6a00d"
+   size 107202
    provides (ilisp-browse-cltl2 emacsbug feedmail metamail net-utils rcompile shadowfile webjump webster-www)
    requires (w3 efs mail-lib xemacs-base)
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (w3
-  (standards-version 1.0
-   version "1.13"
+  (standards-version 1.1
+   version "1.14"
    author-version "4.0pre39x1"
    date "1999-03-02"
-   build-date "1999-03-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution experimental
+   distribution xemacs
    priority high
    category "comm"
    dump nil
    description "A Web browser."
-   filename "w3-1.13-pkg.tar.gz"
-   md5sum "8e9f70ef2c4b43090cfbf86974517c66"
-   size 682040
+   filename "w3-1.14-pkg.tar.gz"
+   md5sum "693692928758ea53e9fa76527893a483"
+   size 680740
    provides (w3 url)
    requires (w3 mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (vm
-  (standards-version 1.0
-   version "1.20"
-   author-version "6.71"
+  (standards-version 1.1
+   version "1.21"
+   author-version "6.72"
    date "1999-05-13"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "comm"
    dump nil
    description "An Emacs mailer."
-   filename "vm-1.20-pkg.tar.gz"
-   md5sum "120d25d3541fc7ef4bb34659a4aba89c"
-   size 614987
+   filename "vm-1.21-pkg.tar.gz"
+   md5sum "1110173b0759dbed61e9b1690d32d984"
+   size 619207
    provides (vm)
    requires (mail-lib xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (sounds-wav
-  (standards-version 1.0
-   version "1.07"
-   author-version "21.0b64"
+  (standards-version 1.1
+   version "1.08"
+   author-version "21.1"
    date "1999-02-02"
-   build-date "1999-03-05"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "XEmacs Microsoft sound files."
-   filename "sounds-wav-1.07-pkg.tar.gz"
-   md5sum "60a70b85e8711fb1c9a1c7d0f4bf8ee0"
-   size 149045
+   filename "sounds-wav-1.08-pkg.tar.gz"
+   md5sum "8d34b4f2a6cb90f3d86c94d018cc3912"
+   size 149046
    provides ()
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (sounds-au
-  (standards-version 1.0
-   version "1.07"
-   author-version "21.0b64"
+  (standards-version 1.1
+   version "1.08"
+   author-version "21.1"
    date "1999-02-02"
-   build-date "1999-03-05"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "XEmacs Sun sound files."
-   filename "sounds-au-1.07-pkg.tar.gz"
-   md5sum "4b5acd296b50102e50565650d9d7ec0b"
-   size 126184
+   filename "sounds-au-1.08-pkg.tar.gz"
+   md5sum "8344fa28ad13a14e67accf72168ac91a"
+   size 126196
    provides ()
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (xemacs-devel
-  (standards-version 1.0
-   version "1.21"
-   author-version "21.0b62"
-   date "1998-10-20"
-   build-date "1999-02-02"
+  (standards-version 1.1
+   version "1.23"
+   author-version "21.1"
+   date "1999-05-28"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "libs"
    dump nil
    description "Emacs Lisp developer support."
-   filename "xemacs-devel-1.21-pkg.tar.gz"
-   md5sum "aa472f2d412382c2fdd3150105ca7d1c"
-   size 83543
+   filename "xemacs-devel-1.23-pkg.tar.gz"
+   md5sum "f0f629aed67569b793347ca9713fc836"
+   size 83642
    provides (docref eldoc elp find-func hide-copyleft ielm regexp-opt trace)
    requires (xemacs-base)
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (tooltalk
-  (standards-version 1.0
-   version "1.09"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.10"
+   author-version "21.1"
    date "1998-07-25"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution contrib
+   distribution xemacs
    priority low
    category "libs"
    dump nil
    description "Support for building with Tooltalk."
-   filename "tooltalk-1.09-pkg.tar.gz"
-   md5sum "368d6407bf82711bee9a01fa6908b576"
-   size 9271
+   filename "tooltalk-1.10-pkg.tar.gz"
+   md5sum "6e73fe7a0ef9d9511e885999b806f914"
+   size 9279
    provides ()
    requires ()
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (elib
-  (standards-version 1.0
-   version "1.04"
+  (standards-version 1.1
+   version "1.05"
    author-version "1.0"
    date "1998-10-01"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "Portable Emacs Lisp utilities library."
-   filename "elib-1.04-pkg.tar.gz"
-   md5sum "d17596beb9b03292e322f8460c36eb81"
-   size 72834
+   filename "elib-1.05-pkg.tar.gz"
+   md5sum "b9f0d18ae78f70a65a341c515aae2095"
+   size 72809
    provides (avltree bintree cookie dll elib-node queue-f queue-m read stack-f stack-m string)
    requires ()
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (edebug
-  (standards-version 1.0
-   version "1.07"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.08"
+   author-version "21.1"
    date "1998-03-12"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority low
    category "libs"
    dump nil
    description "An Emacs Lisp debugger."
-   filename "edebug-1.07-pkg.tar.gz"
-   md5sum "62d3e581feac2c3a73917ad0d81151b0"
-   size 112408
+   filename "edebug-1.08-pkg.tar.gz"
+   md5sum "366450f91a308c84471f7cdb98fd907c"
+   size 112428
    provides (edebug cl-read cust-print eval-reg cl-specs)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (Sun
-  (standards-version 1.0
-   version "1.10"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.11"
+   author-version "21.1"
    date "1998-07-25"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution sun
+   distribution xemacs
    priority low
    category "libs"
    dump nil
    description "Support for Sparcworks."
-   filename "Sun-1.10-pkg.tar.gz"
-   md5sum "54cce5cbb182d99de5562a586714e50c"
-   size 63693
+   filename "Sun-1.11-pkg.tar.gz"
+   md5sum "8920cd925c5bff8b9d4a353d08c1f7ff"
+   size 63685
    provides (sccs eos-browser eos-common eos-debugger eos-debugger eos-editor eos-init eos-load eos-menubar eos-toolbar sunpro)
    requires (cc-mode xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (apel
-  (standards-version 1.0
-   version "1.11"
-   author-version "9.18"
-   date "1999-05-08"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.15"
+   author-version "9.20"
+   date "1999-07-26"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "A Portable Emacs Library.  Used by XEmacs MIME support."
-   filename "apel-1.11-pkg.tar.gz"
-   md5sum "4c53047e1f0964b24626c29ee40a04c5"
-   size 73997
+   filename "apel-1.15-pkg.tar.gz"
+   md5sum "503832a7c28fe700afc35dbaf7fdeb01"
+   size 79178
    provides (atype emu-20 emu-e19 emu-x20 emu-xemacs emu file-detect filename install mule-caesar path-util richtext std11-parse std11 tinyrich)
    requires (fsf-compat xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (efs
-  (standards-version 1.0
-   version "1.14"
+  (standards-version 1.1
+   version "1.15"
    author-version "1.18"
    date "1999-01-03"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "libs"
    dump nil
    description "Treat files on remote systems the same as local files."
-   filename "efs-1.14-pkg.tar.gz"
-   md5sum "2b4128fec0dcb31834f404ef962f10ab"
-   size 369742
+   filename "efs-1.15-pkg.tar.gz"
+   md5sum "4c88a1915bace153310c681f24deb14d"
+   size 369713
    provides (efs)
    requires (xemacs-base vm dired)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (dired
-  (standards-version 1.0
-   version "1.05"
+  (standards-version 1.1
+   version "1.06"
    author-version "7.9"
    date "1998-12-09"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "Mike Sperber <sperber@informatik.uni-tuebingen.de>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "libs"
    dump nil
    description "Manage file systems."
-   filename "dired-1.05-pkg.tar.gz"
-   md5sum "392440b1472a2415b0b9b6779df93619"
-   size 187654
+   filename "dired-1.06-pkg.tar.gz"
+   md5sum "9c857aa147bf53d972ad6ac30ce34bd4"
+   size 187691
    provides (diff dired)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (mail-lib
-  (standards-version 1.0
-   version "1.23"
-   author-version "21.0"
+  (standards-version 1.1
+   version "1.24"
+   author-version "21.1"
    date "1999-04-13"
-   build-date "1999-05-13"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution stable
+   distribution xemacs
    priority medium
    category "libs"
    dump nil
    description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.23-pkg.tar.gz"
-   md5sum "4293acbed286a63581f55b7a16e4a489"
-   size 131968
+   filename "mail-lib-1.24-pkg.tar.gz"
+   md5sum "9428816ccc49d99be80dcbfc34d7917f"
+   size 131977
    provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini rmailout sendmail smtpmail)
    requires (xemacs-base)
    type regular
 ;;;@@@
 (package-get-update-base-entry (quote
 (fsf-compat
-  (standards-version 1.0
-   version "1.05"
-   author-version "21.0b62"
+  (standards-version 1.1
+   version "1.06"
+   author-version "21.1"
    date "1998-09-12"
-   build-date "1999-02-02"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "FSF Emacs compatibility files."
-   filename "fsf-compat-1.05-pkg.tar.gz"
-   md5sum "64cb1984a71974f3f40c0be1a971f441"
-   size 17347
+   filename "fsf-compat-1.06-pkg.tar.gz"
+   md5sum "b167c9b6e4b6ff464d34143782d6c633"
+   size 17356
    provides (overlay thingatpt timer x-popup-menu)
    requires ()
    type single
 ;;;@@@
 (package-get-update-base-entry (quote
 (xemacs-base
-  (standards-version 1.0
-   version "1.30"
-   author-version "21.0"
-   date "1998-11-30"
-   build-date "1999-05-13"
+  (standards-version 1.1
+   version "1.32"
+   author-version "21.1"
+   date "1999-07-22"
+   build-date "1999-07-30"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
-   distribution mule
+   distribution xemacs
    priority high
    category "libs"
    dump nil
    description "Fundamental XEmacs support, you almost certainly need this."
-   filename "xemacs-base-1.30-pkg.tar.gz"
-   md5sum "d9e95850fe8e13a04166d59d62fb38ab"
-   size 430640
+   filename "xemacs-base-1.32-pkg.tar.gz"
+   md5sum "ae699a67f9922ad330fc1e5d45d3ff87"
+   size 430787
    provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile debug ebuff-menu echistory edmacro ehelp electric enriched env facemenu ffap helper imenu iso-syntax macros novice outline overlay passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button)
    requires ()
    type regular
 ))
 ;;;@@@
 ;; Package Index file ends here
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v0.9.8 (SunOS)
+Comment: For info see http://www.gnupg.org
+
+iEYEARECAAYFAjehBIcACgkQEng2Tdz4C2tvvQCbBYGskNM16GwRfw/DjTS4byZN
+6CIAnRGmsWGM/07NNA6mEyejc3SDD7/3
+=NjSE
+-----END PGP SIGNATURE-----
index ea3e9a0..b466a85 100644 (file)
@@ -1,3 +1,12 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-22  SL Baur  <steve@miho>
+
+       * Makefile.in.in (datadir): Add.
+       From Jeff Miller <jmiller@smart.net>
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index 87116be..9fa565b 100644 (file)
@@ -53,6 +53,7 @@ exec_prefix=@exec_prefix@
 bindir=@bindir@
 libdir=@libdir@
 srcdir=@srcdir@
+datadir=@datadir@
 top_srcdir=@top_srcdir@
 archlibdir=@archlibdir@
 configuration=@configuration@
index b182bab..3a1cdc1 100644 (file)
@@ -97,6 +97,8 @@ includedir "@includedir@"
 infodir "@infodir@"
 infopath "@infopath@"
 install_pp "@install_pp@"
+inststaticdir "@inststaticdir@"
+instvardir "@instvardir@"
 internal_makefile_list "@internal_makefile_list@"
 ld "@ld@"
 ld_dynamic_link_flags "@ld_dynamic_link_flags@"
index 0a6ad94..2b2be6a 100644 (file)
@@ -2,6 +2,45 @@
 
        * code-files.el (insert-file-contents): fixed.
 
+1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+       * files.el (insert-file-contents-literally): Treat file as binary;
+       call file-name-handlers. [sync with Emacs 20.3.10]
+
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-28  SL Baur  <steve@miho>
+
+       * code-files.el (insert-file-contents): Fix docstring.
+       revert previous change.
+
+1999-07-26  Yoshiki Hayashi  <t90553@mail.ecc.u-tokyo.ac.jp>
+
+       * fill.el (fill-region-as-paragraph): Change re-break-point to
+       contain word-across-newline plus one character so that filling
+       Japanese and Chinese works as desired.
+       * simple.el (do-auto-fill): Ditto.
+
+1999-07-26  SL Baur  <steve@miho>
+
+       * mule/japanese.el ("Japanese"): Do not specify a default input
+       method.
+       Suggested by MORIOKA Tomohiko  <tomo@etl.go.jp>
+
+1999-07-23  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * custom.el ((not (fboundp 'defun*))): Insert autoload crap to be
+       able to use cl-macs macro in early lisp.
+
+1999-07-23  Jan Vroonhof  <jan@xemacs.org>
+
+       * custom.el: 
+       * cus-face.el: 
+       * cus-edit.el:
+               Massive custom Theme API changes.
+
 1999-07-22  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * code-files.el (insert-file-contents): Regard
        * mule/thai-xtis.el: Add coding: local variable, to avoid
        bootstrapping problem with C locale.
 
+1999-07-22  Andy Piper  <andy@xemacs.org>
+
+       * dumped-lisp.el (preloaded-file-list): guard against putting
+       gutter-items in a less than functional XEmacs.
+       * gutter-items.el: put call to `add-tab-to-gutter' back in.
+
+1999-07-18  Bob Weiner  <weiner@beopen.com>
+
+       * fill.el (fill-context-prefix): Fixed bug that prevented the
+       setting of an adaptive fill prefix when the `dont-skip-first' was
+       t.
+
+1999-07-22  SL Baur  <steve@miho>
+
+       * gutter-items.el: remove unguarded call to `add-tab-to-gutter'.
+
+1999-06-25  Karl M. Hegbloom  <karlheg@debian.org>
+
+       * files.el (interpreter-mode-alist): add `make', `guile', and 
+       `emacs' entries. (#!/usr/bin/make -f ought to send a file into
+       makefile-mode, guile is a scheme, and someday XEmacs will be
+       modular enough to use as an efficient scripting tool.)
+
 1999-07-06  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * mule/mule-cmds.el (reset-language-environment): Regard
        (ccl-dump-ex-cmd, ccl-dump-read-multibyte-character,
        ccl-dump-write-multibyte-character): New functions.
 
-1999-06-04  MORIOKA Tomohiko  <tomo@etl.go.jp>
-
-       * files.el (insert-file-contents-literally): Treat file as binary;
-       call file-name-handlers. [sync with Emacs 20.3.10]
+1999-07-22  SL Baur  <steve@miho>
+
+       * config.el (config-value-file): config.values is installed into
+       doc-directory.
+       From Karl M. Hegbloom  <karlheg@cathcart.sysc.pdx.edu>
+
+1999-07-19  Didier Verna  <verna@inf.enst.fr>
+
+       * rect.el: all functions rewritten, except when noted. Below is a
+       list of interface changes.
+       (apply-on-rectangle): new function. Obsoletes
+       `operate-on-rectangle'. All functions that used to call this
+       function now call the new one.
+       (kill-rectangle): added optional prefix arg to fill lines.
+       (delete-rectangle): ditto.
+       (delete-extract-rectangle): ditto.
+       (open-rectangle): ditto.
+       (clear-rectangle): ditto.
+       (delete-rectangle-line): added third arg FILL.
+       (delete-extract-rectangle-line): ditto.
+       (open-rectangle-line): ditto.
+       (clear-rectangle-line): ditto.
+
+1999-07-18  Andy Piper  <andy@xemacs.org>
+
+       * menubar-items.el (default-menubar): add gutter options.
+
+       * gutter-items.el: new file.
+       (gutter): new group for custom.
+       (gutter-visible-p): new variable.
+       (default-gutter-position): ditto.
+       (buffers-tab): new group for the buffers tab.
+       (gutter-buffers-tab): widget to put in the gutter.
+       (buffers-tab-max-size): max number of tabs.
+       (buffers-tab-switch-to-buffer-function): function to call when a
+       tab is pressed.
+       (buffers-tab-omit-function): filter buffers with this function.
+       (buffers-tab-format-buffer-line-function): format buffer names for
+       inclusion in tabs.
+       (buffers-tab-switch-to-buffer): like switch-to-buffer but without
+       the record.
+       (build-buffers-tab-internal): build a list of tab items.
+       (buffers-tab-items): ditto.
+       (add-tab-to-gutter): put a tab in the gutter area.
+       (update-tab-in-gutter): reset the buffers in the tab.
+
+       * dumped-lisp.el (preloaded-file-list): dump gutter-items.
+
+       * buffer.el (switch-to-buffer): run switch-to-buffer-hooks.
+       (switch-to-buffer-hooks): new hook.
+
+       * toolbar.el (default-toolbar-position): fix typo.
+
+1999-07-16  Andy Piper  <andy@xemacs.org>
+
+       * gui.el (make-dialog-frame): turn off gutters for dialogs.
+
+1999-07-15  Didier Verna  <verna@inf.enst.fr>
+
+       * cus-edit.el (custom-prompt-variable): optional third arg makes
+       prompt for a comment string.
+       (customize-set-value): optional prefix makes this function handle
+       variable comments.
+       (customize-set-variable): ditto.
+       (customize-save-variable): ditto.
+       (customize-customized): handle custom comments.
+       (customize-save-customized): ditto.
+       (custom-variable-state-set): ditto.
+       (custom-face-state-set): ditto.
+       (customize-saved): ditto.
+       (custom-variable-set): ditto.
+       (custom-face-set): ditto.
+       (custom-variable-save): ditto.
+       (custom-face-save): ditto.
+       (custom-variable-reset-saved): ditto.
+       (custom-face-reset-saved): ditto.
+       (custom-variable-reset-standard): ditto.
+       (custom-face-reset-standard): ditto.
+       (custom-comment-face): new face.
+       (custom-comment-tag-face): ditto.
+       (custom-comment): new widget.
+       (custom-comment-create): new function.
+       (custom-comment-delete): ditto.
+       (custom-comment-value-set): ditto.
+       (custom-comment-show): ditto.
+       (custom-comment-invisible-p): ditto.
+       (custom-variable-value-create): create a comment field widget.
+       (custom-face-value-create): ditto.
+       (custom-variable-menu): new entry for adding a custom comment.
+       (custom-face-menu): ditto.
+       (custom-save-variables): possibly save custom comments.
+       (custom-save-faces): ditto.
+
+       * cus-face.el (custom-set-faces): the arguments can now have a
+       custom comment as fourth argument.
+
+       * custom.el (custom-set-variables): the arguments can now have a
+       custom comment as fifth element.
 
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
 
        * mule/mule-misc.el (char-octet): Make function match docstring.
        From Katsumi Yamaoka <yamaoka@jpl.org>
-       
+
 1999-06-15  Karl M. Hegbloom  <karlheg@debian.org>
 
        * wid-edit.el (widget-documentation): corrected spelling error.
 
 1999-06-24  Bob Weiner  <weiner@beopen.com>
 
-       * lib-complete.el (find-library): 
-       (find-library-other-window): 
+       * lib-complete.el (find-library):
+       (find-library-other-window):
        (find-library-other-frame): Completely rewrote
-       so that these functions actually work when called non-interactively.  
+       so that these functions actually work when called non-interactively.
        Also made them handle LIBRARY arguments which end with .el or .elc.
 
 1999-06-24  Bob Weiner  <weiner@beopen.com>
 
 1999-06-23  Bob Weiner  <weiner@beopen.com>
 
-       * list-mode.el (mouse-choose-completion): 
-       (choose-completion): 
+       * list-mode.el (mouse-choose-completion):
+       (choose-completion):
        (completion-switch-to-minibuffer): Added.
        ([Tab]): [Tab] previously switched to the minibuffer
        but since [space] does that and since most applications in the
 
 1999-06-20  Bob Weiner  <weiner@beopen.com>
 
-       * list-mode.el (completion-list-mode-quit): Added and bound to {q} 
+       * list-mode.el (completion-list-mode-quit): Added and bound to {q}
        in the completion-list-mode-map to bury the completions buffer
        even when the minibuffer is no longer active.
 
        * menubar-items.el (default-menubar): Conditionalize the bug
        report menu item (which may not be possible in this XEmacs).
        Reported by: Ken'ichi Handa <handa@etl.go.jp>
-       
+
 1999-06-30  SL Baur  <steve@miho.m17n.org>
 
        * subr.el (with-current-buffer): DOC string fix.
 1999-06-25  Charles G Waldman <cgw@fnal.gov>
 
         * cus-face.el (custom-face-italic): insert missing args
-        
+
 1999-06-24  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
        * packages.el (package-locations): Changed default early package
 
 1999-06-10  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
-       * cus-face.el: 
-       * cus-edit.el: 
-       * faces.el: 
-       (custom): 
-       (face-spec-set): 
-       * faces.el (frob-face-property): 
-       * font-menu.el (font-menu-set-font): 
+       * cus-face.el:
+       * cus-edit.el:
+       * faces.el:
+       (custom):
+       (face-spec-set):
+       * faces.el (frob-face-property):
+       * font-menu.el (font-menu-set-font):
                  Actually apply changes from 1999-03-17
 
 1999-06-10  Andy Piper  <andy@xemacs.org>
        (mswindows-font-menu-font-data): ditto.
        (mswindows-font-menu-load-font): ditto.
 
-       * x-font-menu.el (x-reset-device-font-menus): made device specific. 
+       * x-font-menu.el (x-reset-device-font-menus): made device specific.
        (x-font-menu-font-data): ditto.
        (x-font-menu-load-font): ditto.
 
 
 1999-02-19  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
-       * x-faces.el (x-init-global-faces): Add default tag to specifiers, 
+       * x-faces.el (x-init-global-faces): Add default tag to specifiers,
        so they can be overridden by x-init-face-from-resources.
        Additionally specify the font name also with an x tag.
 
 1999-03-08  Andy Piper  <andy@xemacs.org>
-       
+
        * package-get.el (package-get-base): autoload.
 
        * menubar-items.el (default-menubar): add update menu item. Fix
 
 1999-03-03  Martin Buchholz  <martin@xemacs.org>
 
-       * menubar-items.el (default-menubar): 
+       * menubar-items.el (default-menubar):
        Implement the ``Mule->Set coding system of process'' menu item.
 
 1999-02-18  Martin Buchholz  <martin@xemacs.org>
 
-       * files.el (auto-mode-alist): Use c-mode for *.i pre-processed cpp 
+       * files.el (auto-mode-alist): Use c-mode for *.i pre-processed cpp
        files
        - Change some `if's to `when's
 
 
 1999-02-15  Martin Buchholz  <martin@xemacs.org>
 
-       * paths.el: 
+       * paths.el:
        - improved automounter tmp directory support.
        - support 4 (!) empirically discovered automounter conventions
 
 
 1998-12-30  Martin Buchholz  <martin@xemacs.org>
 
-       * font.el (font-default-object-for-device): 
+       * font.el (font-default-object-for-device):
        Oops! This `or' can't be replaced by `unless'.
        Fixed inability to run w3, among other things.
 
 
 1998-12-23  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * mouse.el (default-mouse-motion-handler): Disable help echo while 
+       * mouse.el (default-mouse-motion-handler): Disable help echo while
        in the minibuffer.
 
 1998-12-28  Martin Buchholz <martin@xemacs.org>
 
 1998-11-30  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * cus-dep.el (Custom-make-dependencies): Be smarter about trapping 
+       * cus-dep.el (Custom-make-dependencies): Be smarter about trapping
        errors.
 
 1998-12-04  Hrvoje Niksic  <hniksic@srce.hr>
        bytecompile time.
 
 1998-11-30  Martin Buchholz  <martin@xemacs.org>
-       
+
        * x-win-xfree86.el:
        * x-win-sun.el (x-win-init-sun):
        * x-win-sun.el:
 
 1998-11-26  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
-       * faces.el (get-custom-frame-properties): Revert Hrvoje Niksic change 
+       * faces.el (get-custom-frame-properties): Revert Hrvoje Niksic change
        of Dec 4, 1997.
 
 1998-11-25  Hrvoje Niksic  <hniksic@srce.hr>
 
        (package-get-remove-copy): Default to 't' we no longer need this
        kludge as we do not currently use depenencies.
-       
+
        (package-get-was-current): New variable.
        (package-get-require-base): New 'force-current' argument.
        (package-get-update-base): idem
        (package-get-package-provider):  idem
        (package-get-locate-index-file): New 'no-remote' argument.
        (package-get-locate-file): idem.
-       
+
        (package-get-maybe-save-index): New function.
        (package-get-update-base): Use it.
 
 1998-10-28 Greg Klanderman <greg@alphatech.com>
 
-       * package-get.el (package-get-remote): default to nil; by default, 
+       * package-get.el (package-get-remote): default to nil; by default,
        don't go out to the net via EFS.  They must select a download site.
        (package-get-download-sites): new variable.
        (package-get-download-menu): new function.
        * package-get.el (package-get): bugfix code checking installed version
        for case where package is not currently installed.
        (package-get-require-signed-base-updates): new variable.
-       (package-get-update-base-from-buffer): remove REMOTE-SOURCE arg, it was 
+       (package-get-update-base-from-buffer): remove REMOTE-SOURCE arg, it was
        deemed not a goot thing.  Use the variable
        package-get-allow-unsigned-base-updates instead.
 
 1998-10-16 Greg Klanderman <greg@alphatech.com>
 
-       * package-get.el (package-get): Don't install an older version than 
+       * package-get.el (package-get): Don't install an older version than
        we already have unless explicitly told to.  Issue a warning.
 
        * package-ui.el (pui-add-required-packages): when adding
        dependencies, don't add packages that are up to date.
-       (pui-package-symbol-char):  Don't consider a package out of date 
+       (pui-package-symbol-char):  Don't consider a package out of date
        if you have a newer version installed than the latest version in
        package-get-base.
 
-       * package-get.el (package-get-base-filename): document that it may 
+       * package-get.el (package-get-base-filename): document that it may
        be a path relative to package-get-remote;  new default value.
        (package-get-locate-file): new function.
        (package-get-update-base): use it to expand package-get-base-filename.
        * cus-face.el (custom-set-face-update-spec): Add autoload cookie
 
 1998-10-20  Malcolm Box  <malcolm@brownale.demon.co.uk>
-        
+
        * etags.el (find-tag-default): Run find-tag-hook using
        run-hooks rather than funcall
 
 1998-10-14  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
        * auto-save.el: expand-file 'auto-save-*-dir' at runtime not at
-       dump time. 
+       dump time.
 
 1998-10-15  Greg Klanderman  <greg@alphatech.com>
 
 
 1998-10-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
-       * menubar-items.el (default-menubar): pui-list-package has nothing 
+       * menubar-items.el (default-menubar): pui-list-package has nothing
        to with Customize. Move all the package stuff to a new Item in Options.
 
        * package-ui.el (pui-menu): Add menu and Popup menu.
 
        * package-admin.el (package-admin-delete-binary-package):
                General cleanup. Remove unnessary use of progn and
-       save-excursion. 
+       save-excursion.
        (package-admin-delete-binary-package): Do NOT mess with file
-       modes. That is evil. 
+       modes. That is evil.
        (package-admin-delete-binary-package): Wrap all deleting in
        condition-case. The data in MANIFEST is untrustworthy.
        (package-admin-delete-binary-package): Let the OS worry about non
 
 1998-09-29  Colin Rafferty   <colin@xemacs.org>
 
-       * sound.el (default-sound-directory-list): Initialize with all the 
-       "sounds" directories in `data-directory-list'.  It used to just be 
+       * sound.el (default-sound-directory-list): Initialize with all the
+       "sounds" directories in `data-directory-list'.  It used to just be
        the first one.
 
        * packages.el (locate-data-directory-list): Created.  This gives
 
        * minibuf.el (read-from-minibuffer): No longer bind help-form but
        make a binding in the local keymap until help-char handling is
-       improved. 
+       improved.
 
        * help.el (help-keymap-with-help-key): Provide keymap with help
        binding.
 
 1998-09-21  Martin Buchholz  <martin@xemacs.org>
 
-       * bytecomp.el (byte-compile-buffer-substring): 
+       * bytecomp.el (byte-compile-buffer-substring):
        Fix for: (byte-compile (defun f () (buffer-substring)))
        ==>   ** buffer-substring called with 3 args, but requires 0-3
        - new code not only works, but is more readable, too.
 1998-08-27  Jan Vroonhof  <vroonhof@math.ethz.ch>
 
        * x-font-menu.el (font-menu-set-font):  Add "pt" units to size
-       argument.       
+       argument.
 
 1998-09-03  Darryl Okahata  <darrylo@sr.hp.com>
 
          keyword `:completion-string', which allows the programmer to
          change the "Possible completions are:" prompt.
 
-       * menubar-items.el: Added new pulldown menu-pick to start up the 
+       * menubar-items.el: Added new pulldown menu-pick to start up the
          visual package browser/installer:
 
                Options->Customize->List Packages
 
        * package-admin.el: Added hooks for installing under both Unix
          and MS Windows.  Does additional error checking.  No longer
-         calls "add-big-package.sh" to install packages under Unix; now 
+         calls "add-big-package.sh" to install packages under Unix; now
          calls gunzip & tar directly.
 
        * package-get.el: Added ability to install packages from files
          Changed all occurences of `concat' to use `expand-file-name'.
 
        * package-ui.el: New file which implements the main visual
-         package browser/installer, which is started via a menu pick or 
+         package browser/installer, which is started via a menu pick or
          M-x pui-list packages.
 
 1998-09-03  Hrvoje Niksic  <hniksic@srce.hr>
 
 1998-08-19  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
-       * loadup.el: 
-       * make-docfile.el: 
+       * loadup.el:
+       * make-docfile.el:
        * update-elc.el: Don't set `source-directory' (now defunct as a
        global variable) no more.
 
        * faces.el (set-face-property):
        (set-face-dim-p):
        (face-dim-p): updated the doc strings now that the dim property isn't
-       tty-specific. 
+       tty-specific.
        (face-equal): the dim property is now a common one.
 
        * cus-face.el (custom-face-attributes): New face attribute: `dim'
 
 1998-08-01  Kai Haberzettl  <khaberz@synnet.de>
 
-       * startup.el(startup-splash-frame-body): 
-       Update Copyright notice in splash screen 
+       * startup.el(startup-splash-frame-body):
+       Update Copyright notice in splash screen
 
 1998-07-20  Greg Klanderman  <greg@alphatech.com>
 
 1998-07-16  Colin Rafferty   <colin@xemacs.org>
 
        * menubar-items.el (default-menubar): Removed references to
-       `data-directory', and use `locate-data-file' instead, and made 
+       `data-directory', and use `locate-data-file' instead, and made
        then greyed out if they don't exist.
 
 1998-07-14  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
 
        * Symbols that have been obsolete for at least 3 years removed.
 
-       * cl-macs.el (cl-parse-loop-clause): Delete obsolete references to 
+       * cl-macs.el (cl-parse-loop-clause): Delete obsolete references to
        screen- functions.
        (toplevel): remove setf methods for screen functions.
        * cl-macs.el (extent-data): defsetf removed.
 
        * faces.el (xpm-color-symbols): remove hardcoded defaults these
        are handled by the gui-element face fallbacks now.
-       
+
        * x-faces.el: default gui-element face to "background" as well as
        the default face.
 
        corresponding to `page-delim' goes first and the hack in
        `forward-paragraph' will work.
        With bug analysis from Bob Weiner <weiner@altrasoft.com>
-       
+
 1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
 
        * subr.el (remove-hook): When checking the hook value
 
 1998-06-29  Kyle Jones  <kyle_jones@wonderworks.com>
 
-       * subr.el (remove-hook): Don't treat the hook value as a 
+       * subr.el (remove-hook): Don't treat the hook value as a
          list unless it is both consp and not functionp.
 
 1998-06-29  SL Baur  <steve@altair.xemacs.org>
 
 1998-06-15  Jonathan Harris  <jhar@tardis.ed.ac.uk>
 
-       * minibuf.el: make read-color-completion-table call 
+       * minibuf.el: make read-color-completion-table call
          (mswindows-color-list for mswindows devices.
 
 1998-06-18  Sam Mikes  <smikes@alumni.hmc.edu>
        (Info-save-auto-generated-dir): New variable
        (Info-maybe-update-dir): Use `Info-auto-generate-directory'
        (Info-build-dir-anew): Second parameter removed.  Use
-       `Info-save-auto-generated-dir' 
+       `Info-save-auto-generated-dir'
        (Info-rebuild-dir): Ditto
 
 1998-06-02  Christoph Wedler  <wedler@fmi.uni-passau.de>
 1998-06-02  Didier Verna  <verna@inf.enst.fr>
 
        * cus-face.el (custom-face-attributes): generalized the use of
-       toggle buttons for boolean attributes. 
+       toggle buttons for boolean attributes.
        Re-ordered the items a bit.
 
 1998-06-01  SL Baur  <steve@altair.xemacs.org>
@@ -3059,7 +3215,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
        * x-select.el: selection cleanup. (x-cut-copy-clear-internal)
        moved to (cut-copy-clear-internal) in select.el. Ditto for
        (x-delete-primary-selection) (x-kill-primary-selection)
-       (x-copy-primary-selection). 
+       (x-copy-primary-selection).
        (own-clipboard): new function.
 
        * msw-select.el: use the new kill/delete/copy/cut-copy-clear
@@ -3167,7 +3323,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
        comint-process-echoes setting to t.
 
 1998-05-17  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
-       
+
        * packages.el (packages-no-package-hierarchy-regexp): Introduced
        and used following the interface change of
        `paths-find-recursive-path'.
@@ -3181,7 +3337,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 
 1998-05-16  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * simple.el (delete-forward-p): Make it a defun; do X garbage only 
+       * simple.el (delete-forward-p): Make it a defun; do X garbage only
        on X devices, rather than on all non-TTY devices.
 
 1998-05-16  Kirill M. Katsnelson  <kkm@kis.ru>
@@ -3261,11 +3417,11 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 
 1998-05-15  Kirill M. Katsnelson  <kkm@kis.ru>
 
-       * device.el (device-pixel-width): 
-       (device-pixel-height): 
-       (device-mm-width): 
-       (device-mm-height): 
-       (device-bitplanes): 
+       * device.el (device-pixel-width):
+       (device-pixel-height):
+       (device-mm-width):
+       (device-mm-height):
+       (device-bitplanes):
        (device-color-cells): Swapped parameters to device-system-metric
        according to the interface change.
 
@@ -3476,8 +3632,8 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 1998-05-10  Kirill M. Katsnelson  <kkm@kis.ru>
 
        * device.el: (device-pixel-width): Reflected name/parameters
-       change to device-system-metric. 
-       (device-pixel-height): Ditto. 
+       change to device-system-metric.
+       (device-pixel-height): Ditto.
        (device-mm-width): Ditto.
        (device-mm-height): Ditto.
        (device-bitplanes): Ditto.
@@ -3549,11 +3705,11 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 
 1998-04-18  Kirill M. Katsnelson  <kkm@kis.ru>
 
-       * device.el (device-pixel-height): 
-       (device-pixel-width): 
-       (device-mm-width): 
-       (device-mm-height): 
-       (device-bitplanes): 
+       * device.el (device-pixel-height):
+       (device-pixel-width):
+       (device-mm-width):
+       (device-mm-height):
+       (device-bitplanes):
        (device-color-cells): Moved these 6 functions from device.c; they
        all use single (device-system-metrics) call.
 
@@ -3562,7 +3718,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
        * dumped-lisp.el (preloaded-file-list): x-menubar.el and x-toolbar.el
        were renamed.
 
-       * menubar-items.el: 
+       * menubar-items.el:
        * toolbar-items.el: Renamed from x-menubar/x-toolbar.
        Suggested by Hrvoje Niksic <hniksic@srce.hr>
 
@@ -3608,12 +3764,12 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 
 1998-05-03  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * help.el (function-arglist): If no arguments are documented for a 
+       * help.el (function-arglist): If no arguments are documented for a
        subr, print nothing rather than incorrect output.
 
 1998-05-05  SL Baur  <steve@altair.xemacs.org>
 
-       * cmdloop.el (command-error): Update bail-out error message to use 
+       * cmdloop.el (command-error): Update bail-out error message to use
        `emacs-program-name'.
 
        * lib-complete.el: Remove reader macro cruft.
@@ -3736,7 +3892,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 
 1998-04-30  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * modeline.el (defining-kbd-macro): Restore modeline indication of 
+       * modeline.el (defining-kbd-macro): Restore modeline indication of
        kbd-macro being recorded.
        (add-minor-mode): Simplify docstring.
        (modeline-minor-mode-menu): Remove stuff.
@@ -3744,7 +3900,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 1998-04-29  Andy Piper  <andyp@parallax.co.uk>
 
        * code-process.el (call-process): dynamically decide process
-       coding type. 
+       coding type.
 
 1998-04-29  Jim Radford  <radford@robby.caltech.edu>
 
@@ -3842,7 +3998,7 @@ Wed May 27, 1998  Darryl Okahata  <darrylo@sr.hp.com>
 1998-04-25  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
 
        * info.el (Info-parse-dir-entries): Fixed regexp
-       (Info-build-dir-anew): Remove full suffix and capitalize info file 
+       (Info-build-dir-anew): Remove full suffix and capitalize info file
        name for files with no @direntry
        (Info-batch-rebuild-dir): New function
        (Info-suffixed-file): Check for regular files instead of simple
@@ -3956,11 +4112,11 @@ Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
 1998-04-19  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
 
        * info.el (Info-maybe-update-dir): Bug fix in `conservative' behaviour
-       (Info-build-dir-anew): Add a final newline.  
-       (Info-build-dir-anew): Do not issue warning when rebuilding policy 
+       (Info-build-dir-anew): Add a final newline.
+       (Info-build-dir-anew): Do not issue warning when rebuilding policy
        is `always'
        (Info-rebuild-dir): Ditto
-       
+
        * dumped-lisp.el (preloaded-file-list): Added ldap.el
 
 1998-04-21  SL Baur  <steve@altair.xemacs.org>
@@ -3974,7 +4130,7 @@ Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-04-19  SL Baur  <steve@altair.xemacs.org>
 
-       * packages.el (package-locations): infodock-packages must override 
+       * packages.el (package-locations): infodock-packages must override
        mule-packages and packages.
 
 1998-04-19  Jonathan Harris <jhar@tardis.ed.a.uk>
@@ -4003,7 +4159,7 @@ Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
        * packages.el, setup-paths.el: Set various path searching depths
        to 1.
 
-       * packages.el (packages-hierarchy-depth): 
+       * packages.el (packages-hierarchy-depth):
        (packages-load-path-depth): Introduced and used.
 
        * setup-paths.el (paths-load-path-depth): Introduced and used.
@@ -4013,12 +4169,12 @@ Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-04-15  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
-       * setup-paths.el (paths-construct-info-path): Removed 
+       * setup-paths.el (paths-construct-info-path): Removed
        dependency on behavior of (file-name-as-directory "").
 
 1998-04-09  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
 
-       * ldap.el (ldap-search): Adapt to the new low-level API using ldap 
+       * ldap.el (ldap-search): Adapt to the new low-level API using ldap
        lisp objects
 
 1998-04-14  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
@@ -4030,7 +4186,7 @@ Wed Apr 22 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
        * wid-edit.el: We cannot just set the help-echo or balloon-help
          properties for an extent based on the :help-echo widget
          property, since help-echo and balloon-help cause an EXTENT to
-         get passed in, where :help-echo functions are expecting a WIDGET 
+         get passed in, where :help-echo functions are expecting a WIDGET
 
 1998-04-15  Kirill M. Katsnelson  <kkm@kis.ru>
 
@@ -4146,7 +4302,7 @@ Thu Apr 16 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
        * dump-paths.el, startup.el: Removed package-path as a global
        variable.
 
-       * package-admin.el (package-admin-add-single-file-package): 
+       * package-admin.el (package-admin-add-single-file-package):
        (package-admin-add-binary-package): Changed package-path to
        late-packages.
 
@@ -4164,7 +4320,7 @@ Thu Apr 16 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
 
        * x-toolbar.el:  Added toolbar-vector-xxxxxx defvars.  Modified
        initial-toolbar-spec to use new toolbar-vector-xxxxxx defvars.  This
-       eases the use of toolbar-add/kill-item functions. 
+       eases the use of toolbar-add/kill-item functions.
 
 1998-04-07  Kirill M. Katsnelson  <kkm@kis.ru>
 
@@ -4178,11 +4334,11 @@ Thu Apr 16 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
        (Info-rebuild-dir): Appropriately parse multi-line description
        strings, and multi-section dir files. Issue warning when dir
        is rebuilt as temporary
-       (Info-build-dir-anew): Issue warning when dir is built as 
+       (Info-build-dir-anew): Issue warning when dir is built as
        temporary
 
 1998-04-04  Kirill M. Katsnelson  <kkm@kis.ru>
+
        * list-mode.el (list-mode-map): Bind highlight motion commands to
        standard keys left, right, C-b and C-f.
 
@@ -4202,7 +4358,7 @@ Thu Apr 16 12:59:35 1998  Andy Piper  <andyp@parallax.co.uk>
 
        * isearch-mode.el (isearch-just-started): New variable.
        (isearch-mode): Set it.
-       (isearch-repeat): Advance one character forward only if the search 
+       (isearch-repeat): Advance one character forward only if the search
        was successful, and was not just started.
        (isearch-repeat): Clear isearch-just-started.
 
@@ -4239,7 +4395,7 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-03-30  Kyle Jones  <kyle_jones@wonderworks.com>
 
-       * loaddefs.el: Don't set debug-ignored-errors; leave 
+       * loaddefs.el: Don't set debug-ignored-errors; leave
          its default value set to nil.
 
 1998-03-29  Damon Lipparelli  <lipp@primus.com>
@@ -4249,7 +4405,7 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 1998-03-29  Oscar Figueiredo  <Oscar.Figueiredo@di.epfl.ch>
 
        * info.el (Info-rebuild-outdated-dir): New custom var
-       (Info-insert-node): Create/update dir file when needed, ie when it 
+       (Info-insert-node): Create/update dir file when needed, ie when it
        does not exist or is older than some info files in directory
 
 1998-04-01  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
@@ -4444,7 +4600,7 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 1998-03-18  SL Baur  <steve@altair.xemacs.org>
 
        * frame.el (frame-initialize): Use `delete-console' instead of
-       `delete-device' to delete the stream console to match the usage in 
+       `delete-device' to delete the stream console to match the usage in
        Fkill_emacs.
 
 1998-03-16  SL Baur  <steve@altair.xemacs.org>
@@ -4484,11 +4640,11 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 1998-03-03  Kirill M. Katsnelson  <kkm@kis.ru>
 
        * msw-glyphs.el: New file. Defines TTY-style glyphs for
-       mswindows. Must be reworked along with glyphs.el, or 
+       mswindows. Must be reworked along with glyphs.el, or
        merged into it, after there is images support.
 
        * dumped-lisp.el (preloaded-file-list): Dump msw-glyphs.el when
-       'mswindows. 
+       'mswindows.
 
 1998-03-13  SL Baur  <steve@altair.xemacs.org>
 
@@ -4498,7 +4654,7 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-03-11  Pete Ware  <ware@cis.ohio-state.edu>
 
-       * files.el (set-auto-mode): If a mode is not fboundp, check to see 
+       * files.el (set-auto-mode): If a mode is not fboundp, check to see
        if there is an existing package that handles it and warn the user
        about that mode.
 
@@ -4519,7 +4675,7 @@ Sun Mar 29 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-03-10  Glynn Clements  <glynn@sensei.co.uk>
 
-       * files.el (backup-enable-predicate): fix breakage introduced 
+       * files.el (backup-enable-predicate): fix breakage introduced
        by TMPDIR patch.
 
 1998-03-09  Kyle Jones  <kyle_jones@wonderworks.com>
@@ -4697,7 +4853,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        decided in `mouse-drag-modeline'.
        (mouse-drag-modeline): A button release event is considered a
        mouse click is both X (modeline scroll) and Y (modeline drag) pos
-       stay unchanged. 
+       stay unchanged.
 
 1998-02-25  SL Baur  <steve@altair.xemacs.org>
 
@@ -4748,18 +4904,18 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        if it exists, becasuse with-output-to-temp-buffer will clear it.
        further, killing the buffer violates the rule that
        temp-buffer-show-function, if set, has the full responsibility of
-       showing the temp buffer.  killing the buffer fucks with the window 
+       showing the temp buffer.  killing the buffer fucks with the window
        configuration, hosing temp-buffer-show-function.
 
 
 1998-02-23  Didier Verna  <verna@inf.enst.fr>
 
-       * modeline.el (mouse-drag-modeline): 
+       * modeline.el (mouse-drag-modeline):
        - Always scroll the modeline that was originally clicked on.
-       - Use x pixels instead of x characters (which doesn't work anyway) 
+       - Use x pixels instead of x characters (which doesn't work anyway)
        as horizontal reference for modeline dragging. This allows us to
        keep on dragging the modeline even if the motion event occurs in
-       another window. 
+       another window.
 
 1998-02-23  Didier Verna  <verna@inf.enst.fr>
 
@@ -4791,7 +4947,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 1998-02-17  Didier Verna  <verna@inf.enst.fr>
 
        * mouse.el (default-mouse-track-set-point-in-window): rewrote this
-       function to handle correctly the case of a toolbar one side of the 
+       function to handle correctly the case of a toolbar one side of the
        window: scrolling will not necessarily happen.
 
 1998-02-17  Kyle Jones  <kyle_jones@wonderworks.com>
@@ -4810,20 +4966,20 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        * autoload.el (generate-file-autoloads-1): Don't force an extra
        line out when copying on-the-same line autoloads.
 
-       * x-menubar.el (default-menubar): Add Sokoban to the menubar if it 
+       * x-menubar.el (default-menubar): Add Sokoban to the menubar if it
        is installed.
 
 1998-02-14  Martin Buchholz  <martin@xemacs.org>
 
-       * x11/x-win-xfree86.el (x-win-init-xfree86): 
-       * x11/x-win-sun.el (x-win-init-sun): 
-       * x11/x-init.el (x-initialize-compose): 
+       * x11/x-win-xfree86.el (x-win-init-xfree86):
+       * x11/x-win-sun.el (x-win-init-sun):
+       * x11/x-init.el (x-initialize-compose):
        * prim/simple.el:
-       (backward-or-forward-kill-sexp): 
-       (backward-or-forward-kill-sentence): 
-       (backward-or-forward-kill-word): 
-       (backward-or-forward-delete-char): 
-       * prim/isearch-mode.el (isearch-help-or-delete-char): 
+       (backward-or-forward-kill-sexp):
+       (backward-or-forward-kill-sentence):
+       (backward-or-forward-kill-word):
+       (backward-or-forward-delete-char):
+       * prim/isearch-mode.el (isearch-help-or-delete-char):
        Use x-keysym-on-keyboard-sans-modifiers-p instead of
        x-keysym-on-keyboard-p to detect backspace.
        Use symbols instead of strings (now deprecated) with x-keysym-*-p.
@@ -4922,7 +5078,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 1997-06-15  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 
        * text-mode.el (text-mode): Let all-white lines separate paragraphs.
-       
+
 1997-06-11  Richard Stallman  <rms@psilocin.gnu.ai.mit.edu>
 
        * text-mode.el (paragraph-indent-text-mode):
@@ -5015,7 +5171,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
        * about.el: Add xemacs.org email manager.
 
-       * package-get-base.el (package-get-base): Updated with most recent 
+       * package-get-base.el (package-get-base): Updated with most recent
        package updates.
 
 1998-01-14  Jens-Ulrik Holger Petersen  <petersen@kurims.kyoto-u.ac.jp>
@@ -5032,7 +5188,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        (describe-key): Use `princ' "%s" to print object.
        (describe-function-1): Use `princ' "%s" to print object.
        Commented out alias lines removed.
-       (help-pretty-print-limit): New variable to control pretty-printing 
+       (help-pretty-print-limit): New variable to control pretty-printing
        of variable values.
        (help-maybe-pretty-print-value): Steve wins!  Renamed back from
        `help-pretty-print-value' again.  Only print-print when OBJECT is
@@ -5051,9 +5207,9 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1998-01-13  Martin Buchholz  <martin@xemacs.org>
 
-       * lisp/packages.el: 
-       * lisp/package-admin.el: 
-       * lisp/build-report.el: 
+       * lisp/packages.el:
+       * lisp/package-admin.el:
+       * lisp/build-report.el:
        Fix typos.
 
 1998-01-14  Christoph Wedler  <wedler@fmi.uni-passau.de>
@@ -5236,10 +5392,10 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        * package-get.el: Changes to work with real data.
        From Pete Ware <ware@cis.ohio-state.edu>
 
-       * packages.el (packages-reload-autoloads): Guard load for the time 
+       * packages.el (packages-reload-autoloads): Guard load for the time
        being.
 
-       * update-elc.el ("packages.el"): Force loading packages.el instead 
+       * update-elc.el ("packages.el"): Force loading packages.el instead
        of possibly out-of-date packges.elc.
        * make-docfile.el ("packages.el"): Ditto.
 
@@ -5295,7 +5451,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1997-12-29  Colin Rafferty  <colin@xemacs.org>
 
-       * packages.el (packages-find-packages-1): Made it signal a warning 
+       * packages.el (packages-find-packages-1): Made it signal a warning
        for an error in an auto-autoload.el file.
 
 1997-12-30  SL Baur  <steve@altair.xemacs.org>
@@ -5436,10 +5592,10 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1997-12-18  SL Baur  <steve@altair.xemacs.org>
 
-       * startup.el (set-default-load-path): Make sure lisp and site-lisp 
+       * startup.el (set-default-load-path): Make sure lisp and site-lisp
        get trailing slashes when added to the load-path.
 
-       * x-init.el (init-x-win): Locate where XEmacs X localization files 
+       * x-init.el (init-x-win): Locate where XEmacs X localization files
        are.
 
 1997-12-18  Kyle Jones  <kyle_jones@wonderworks.com>
@@ -5534,11 +5690,11 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
        * startup.el (set-default-load-path): Only search package-path
        when not running temacs.
 
-       * dumped-lisp.el (preloaded-file-list): Remove Egg/Its dumped lisp 
+       * dumped-lisp.el (preloaded-file-list): Remove Egg/Its dumped lisp
        files.
 
        * loadup.el: Correct commentary.  Reformatting.
-       (really-early-error-handler): Use absolute path to the 
+       (really-early-error-handler): Use absolute path to the
        first dumped-lisp.el file.
        (really-early-error-handler): Print full path name of
        each dumped lisp file (inherited from InfoDock).
@@ -5578,7 +5734,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1997-12-15  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * modeline.el (mouse-drag-modeline): Give the modeline a "pressed" 
+       * modeline.el (mouse-drag-modeline): Give the modeline a "pressed"
        look.
 
 1997-12-16  Oscar Figueiredo <Oscar.Figueiredo@di.epfl.ch>
@@ -5594,7 +5750,7 @@ Tue Feb 17 12:50:37 1998  Andy Piper  <andyp@parallax.co.uk>
 
 1997-12-17  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * etags.el (get-tag-table-buffer): Use explicit lists as arguments 
+       * etags.el (get-tag-table-buffer): Use explicit lists as arguments
        to `ecase'.
 
 1997-12-14  SL Baur  <steve@altair.xemacs.org>
index c829284..e7920c0 100644 (file)
@@ -32,6 +32,9 @@
 
 ;;; Code:
 
+(defvar switch-to-buffer-hooks nil
+  "Hooks to run after a recorded buffer switch.")
+
 (defun switch-to-buffer (bufname &optional norecord)
   "Select buffer BUFNAME in the current window.
 BUFNAME may be a buffer or a buffer name and is created if it did not exist.
@@ -65,6 +68,8 @@ the window-buffer correspondences."
                           (next-window (minibuffer-window))
                         (selected-window))
                       buf)
+    ;; XEmacs change
+    (or norecord (run-hook-with-args 'switch-to-buffer-hooks buf))
     buf))
 
 (defun pop-to-buffer (bufname &optional not-this-window-p on-frame)
index 3a014ad..8ec4762 100644 (file)
@@ -374,9 +374,6 @@ with the file contents.  This is better than simply deleting and inserting
 the whole thing because (1) it preserves some marker positions
 and (2) it puts less data in the undo list.
 
-NOTE: When Mule support is enabled, the REPLACE argument is
-currently ignored.
-
 The coding system used for decoding the file is determined as follows:
 
 1. `coding-system-for-read', if non-nil.
index 6952081..50fdd03 100644 (file)
@@ -29,7 +29,7 @@
 ;;; Code:
 
 \f
-(defvar config-value-file (expand-file-name "config.values" exec-directory)
+(defvar config-value-file (expand-file-name "config.values" doc-directory)
   "File containing configuration parameters and their values.")
 
 (defvar config-value-hash-table nil
index efe6ffb..5851776 100644 (file)
@@ -617,7 +617,7 @@ when the action is chosen.")
 \f
 ;;; The Customize Commands
 
-(defun custom-prompt-variable (prompt-var prompt-val)
+(defun custom-prompt-variable (prompt-var prompt-val &optional comment)
   "Prompt for a variable and a value and return them as a list.
 PROMPT-VAR is the prompt for the variable, and PROMPT-VAL is the
 prompt for the value.  The %s escape in PROMPT-VAL is replaced with
@@ -627,10 +627,13 @@ If the variable has a `variable-interactive' property, that is used as if
 it were the arg to `interactive' (which see) to interactively read the value.
 
 If the variable has a `custom-type' property, it must be a widget and the
-`:prompt-value' property of that widget will be used for reading the value."
+`:prompt-value' property of that widget will be used for reading the value.
+
+If optional COMMENT argument is non nil, also prompt for a comment and return
+it as the third element in the list."
   (let* ((var (read-variable prompt-var))
-        (minibuffer-help-form '(describe-variable var)))
-    (list var
+        (minibuffer-help-form '(describe-variable var))
+        (val
          (let ((prop (get var 'variable-interactive))
                (type (get var 'custom-type))
                (prompt (format prompt-val var)))
@@ -649,24 +652,36 @@ If the variable has a `custom-type' property, it must be a widget and the
                                            (symbol-value var))
                                        (not (boundp var))))
                  (t
-                  (eval-minibuffer prompt)))))))
+                  (eval-minibuffer prompt))))))
+    (if comment
+       (list var val
+             (read-string "Comment: " (get var 'variable-comment)))
+      (list var val))
+    ))
 
 ;;;###autoload
-(defun customize-set-value (var val)
+(defun customize-set-value (var val &optional comment)
   "Set VARIABLE to VALUE.  VALUE is a Lisp object.
 
 If VARIABLE has a `variable-interactive' property, that is used as if
 it were the arg to `interactive' (which see) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
-`:prompt-value' property of that widget will be used for reading the value."
+`:prompt-value' property of that widget will be used for reading the value.
+
+If given a prefix (or a COMMENT argument), also prompt for a comment."
   (interactive (custom-prompt-variable "Set variable: "
-                                      "Set %s to value: "))
+                                      "Set %s to value: "
+                                      current-prefix-arg))
 
-  (set var val))
+  (set var val)
+  (cond ((string= comment "")
+        (put var 'variable-comment nil))
+       (comment
+        (put var 'variable-comment comment))))
 
 ;;;###autoload
-(defun customize-set-variable (var val)
+(defun customize-set-variable (var val &optional comment)
   "Set the default for VARIABLE to VALUE.  VALUE is a Lisp object.
 
 If VARIABLE has a `custom-set' property, that is used for setting
@@ -679,14 +694,24 @@ If VARIABLE has a `variable-interactive' property, that is used as if
 it were the arg to `interactive' (which see) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
-`:prompt-value' property of that widget will be used for reading the value. "
+`:prompt-value' property of that widget will be used for reading the value.
+
+If given a prefix (or a COMMENT argument), also prompt for a comment."
   (interactive (custom-prompt-variable "Set variable: "
-                                      "Set customized value for %s to: "))
+                                      "Set customized value for %s to: "
+                                      current-prefix-arg))
   (funcall (or (get var 'custom-set) 'set-default) var val)
-  (put var 'customized-value (list (custom-quote val))))
+  (put var 'customized-value (list (custom-quote val)))
+  (cond ((string= comment "")
+        (put var 'variable-comment nil)
+        (put var 'customized-variable-comment nil))
+       (comment
+        (put var 'variable-comment comment)
+        (put var 'customized-variable-comment comment))))
+
 
 ;;;###autoload
-(defun customize-save-variable (var val)
+(defun customize-save-variable (var val &optional comment)
   "Set the default for VARIABLE to VALUE, and save it for future sessions.
 If VARIABLE has a `custom-set' property, that is used for setting
 VARIABLE, otherwise `set-default' is used.
@@ -698,11 +723,21 @@ If VARIABLE has a `variable-interactive' property, that is used as if
 it were the arg to `interactive' (which see) to interactively read the value.
 
 If VARIABLE has a `custom-type' property, it must be a widget and the
-`:prompt-value' property of that widget will be used for reading the value. "
+`:prompt-value' property of that widget will be used for reading the value.
+
+If given a prefix (or a COMMENT argument), also prompt for a comment."
   (interactive (custom-prompt-variable "Set and ave variable: "
-                                      "Set and save value for %s as: "))
+                                      "Set and save value for %s as: "
+                                      current-prefix-arg))
   (funcall (or (get var 'custom-set) 'set-default) var val)
   (put var 'saved-value (list (custom-quote val)))
+  (custom-push-theme 'theme-value var 'user 'set (list (custom-quote val)))
+  (cond ((string= comment "")
+        (put var 'variable-comment nil)
+        (put var 'saved-variable-comment nil))
+       (comment
+        (put var 'variable-comment comment)
+        (put var 'saved-variable-comment comment)))
   (custom-save-all))
 
 ;;;###autoload
@@ -842,10 +877,12 @@ If SYMBOL is nil, customize all faces."
   (interactive)
   (let ((found nil))
     (mapatoms (lambda (symbol)
-               (and (get symbol 'customized-face)
+               (and (or (get symbol 'customized-face)
+                        (get symbol 'customized-face-comment))
                     (find-face symbol)
                     (push (list symbol 'custom-face) found))
-               (and (get symbol 'customized-value)
+               (and (or (get symbol 'customized-value)
+                        (get symbol 'customized-variable-comment))
                     (boundp symbol)
                     (push (list symbol 'custom-variable) found))))
     (if (not found)
@@ -859,10 +896,12 @@ If SYMBOL is nil, customize all faces."
   (interactive)
   (let ((found nil))
     (mapatoms (lambda (symbol)
-               (and (get symbol 'saved-face)
+               (and (or (get symbol 'saved-face)
+                        (get symbol 'saved-face-comment))
                     (find-face symbol)
                     (push (list symbol 'custom-face) found))
-               (and (get symbol 'saved-value)
+               (and (or (get symbol 'saved-value)
+                        (get symbol 'saved-variable-comment))
                     (boundp symbol)
                     (push (list symbol 'custom-variable) found))))
     (if (not found )
@@ -1705,6 +1744,77 @@ If INITIAL-STRING is non-nil, use that rather than \"Parent groups:\"."
       (delete-region start (point)))
     found))
 
+;;; The `custom-comment' Widget.
+
+;; like the editable field
+(defface custom-comment-face '((((class grayscale color)
+                                (background light))
+                               (:background "gray85"))
+                              (((class grayscale color)
+                                (background dark))
+                               (:background "dim gray"))
+                              (t
+                               (:italic t)))
+  "Face used for comments on variables or faces"
+  :group 'custom-faces)
+
+;; like font-lock-comment-face
+(defface custom-comment-tag-face
+  '((((class color) (background dark)) (:foreground "gray80"))
+    (((class color) (background light)) (:foreground "blue4"))
+    (((class grayscale) (background light))
+     (:foreground "DimGray" :bold t :italic t))
+    (((class grayscale) (background dark))
+     (:foreground "LightGray" :bold t :italic t))
+    (t (:bold t)))
+  "Face used for variables or faces comment tags"
+  :group 'custom-faces)
+
+(define-widget 'custom-comment 'string
+  "User comment"
+  :tag "Comment"
+  :help-echo "Edit a comment here"
+  :sample-face 'custom-comment-tag-face
+  :value-face 'custom-comment-face
+  :value-set 'custom-comment-value-set
+  :create 'custom-comment-create
+  :delete 'custom-comment-delete)
+
+(defun custom-comment-create (widget)
+  (let (ext)
+    (widget-default-create widget)
+    (widget-put widget :comment-extent
+               (setq ext (make-extent (widget-get widget :from)
+                                      (widget-get widget :to))))
+    (set-extent-property ext 'start-open t)
+    (when (equal (widget-get widget :value) "")
+      (set-extent-property ext 'invisible t))
+    ))
+
+(defun custom-comment-delete (widget)
+  (widget-default-delete widget)
+  (delete-extent (widget-get widget :comment-extent)))
+
+(defun custom-comment-value-set (widget value)
+  (widget-default-value-set widget value)
+  (if (equal value "")
+      (set-extent-property (widget-get widget :comment-extent)
+                          'invisible t)
+    (set-extent-property (widget-get widget :comment-extent)
+                        'invisible nil)))
+
+;; Those functions are for the menu. WIDGET is NOT the comment widget. It's
+;; the global custom one
+(defun custom-comment-show (widget)
+  (set-extent-property
+   (widget-get (widget-get widget :comment-widget) :comment-extent)
+   'invisible nil))
+
+(defun custom-comment-invisible-p (widget)
+  (extent-property
+   (widget-get (widget-get widget :comment-widget) :comment-extent)
+   'invisible))
+
 ;;; The `custom-variable' Widget.
 
 (defface custom-variable-tag-face '((((class color)
@@ -1870,23 +1980,40 @@ Otherwise, look up symbol in `custom-guess-type-alist'."
                    :value value)
                   children))))
     (unless (eq custom-buffer-style 'tree)
-      ;; Now update the state.
       (unless (eq (preceding-char) ?\n)
        (widget-insert "\n"))
-      (if (eq state 'hidden)
-         (widget-put widget :custom-state state)
-       (custom-variable-state-set widget))
       ;; Create the magic button.
       (let ((magic (widget-create-child-and-convert
                    widget 'custom-magic nil)))
        (widget-put widget :custom-magic magic)
        (push magic buttons))
-      ;; Update properties.
-      (widget-put widget :custom-form form)
-      (widget-put widget :buttons buttons)
-      (widget-put widget :children children)
       ;; Insert documentation.
+      ;; ### NOTE: this is ugly!!!! I need to do update the :buttons property
+      ;; before the call to `widget-default-format-handler'. Otherwise, I
+      ;; loose my current `buttons'. This function shouldn't be called like
+      ;; this anyway. The doc string widget should be added like the others.
+      ;; --dv
+      (widget-put widget :buttons buttons)
       (widget-default-format-handler widget ?h)
+      ;; The comment field
+      (unless (eq state 'hidden)
+       (let* ((comment (get symbol 'variable-comment))
+              (comment-widget
+               (widget-create-child-and-convert
+                widget 'custom-comment
+                :parent widget
+                :value (or comment ""))))
+         (widget-put widget :comment-widget comment-widget)
+         ;; Don't push it !!! Custom assumes that the first child is the
+         ;; value one.
+         (setq children (append children (list comment-widget)))))
+      ;; Update the rest of the properties properties.
+      (widget-put widget :custom-form form)
+      (widget-put widget :children children)
+      ;; Now update the state.
+      (if (eq state 'hidden)
+         (widget-put widget :custom-state state)
+       (custom-variable-state-set widget))
       ;; See also.
       (unless (eq state 'hidden)
        (when (eq (widget-get widget :custom-level) 1)
@@ -1910,22 +2037,32 @@ Otherwise, look up symbol in `custom-guess-type-alist'."
         (value (if (default-boundp symbol)
                    (funcall get symbol)
                  (widget-get widget :value)))
+        (comment (get symbol 'variable-comment))
         tmp
-        (state (cond ((setq tmp (get symbol 'customized-value))
+        temp
+        (state (cond ((progn (setq tmp (get symbol 'customized-value))
+                             (setq temp
+                                   (get symbol 'customized-variable-comment))
+                             (or tmp temp))
                       (if (condition-case nil
-                              (equal value (eval (car tmp)))
+                              (and (equal value (eval (car tmp)))
+                                   (equal comment temp))
                             (error nil))
                           'set
                         'changed))
-                     ((setq tmp (get symbol 'saved-value))
+                     ((progn (setq tmp (get symbol 'saved-value))
+                             (setq temp (get symbol 'saved-variable-comment))
+                             (or tmp temp))
                       (if (condition-case nil
-                              (equal value (eval (car tmp)))
+                              (and (equal value (eval (car tmp)))
+                                   (equal comment temp))
                             (error nil))
                           'saved
                         'changed))
                      ((setq tmp (get symbol 'standard-value))
                       (if (condition-case nil
-                              (equal value (eval (car tmp)))
+                              (and (equal value (eval (car tmp)))
+                                   (equal comment nil))
                             (error nil))
                           'standard
                         'changed))
@@ -1945,7 +2082,8 @@ Otherwise, look up symbol in `custom-guess-type-alist'."
            (memq (widget-get widget :custom-state) '(modified changed)))))
     ("Reset to Saved" custom-variable-reset-saved
      (lambda (widget)
-       (and (get (widget-value widget) 'saved-value)
+       (and (or (get (widget-value widget) 'saved-value)
+               (get (widget-value widget) 'saved-variable-comment))
            (memq (widget-get widget :custom-state)
                  '(modified set changed rogue)))))
     ("Reset to Standard Settings" custom-variable-reset-standard
@@ -1954,6 +2092,8 @@ Otherwise, look up symbol in `custom-guess-type-alist'."
            (memq (widget-get widget :custom-state)
                  '(modified set changed saved rogue)))))
     ("---" ignore ignore)
+    ("Add Comment" custom-comment-show custom-comment-invisible-p)
+    ("---" ignore ignore)
     ("Don't show as Lisp expression" custom-variable-edit
      (lambda (widget)
        (eq (widget-get widget :custom-form) 'lisp)))
@@ -2005,18 +2145,34 @@ Optional EVENT is the location for the menu."
         (child (car (widget-get widget :children)))
         (symbol (widget-value widget))
         (set (or (get symbol 'custom-set) 'set-default))
-         val)
+        (comment-widget (widget-get widget :comment-widget))
+        (comment (widget-value comment-widget))
+        val)
     (cond ((eq state 'hidden)
           (error "Cannot set hidden variable"))
          ((setq val (widget-apply child :validate))
           (goto-char (widget-get val :from))
           (error "%s" (widget-get val :error)))
          ((memq form '(lisp mismatch))
+          (when (equal comment "")
+            (setq comment nil)
+            ;; Make the comment invisible by hand if it's empty
+            (set-extent-property (widget-get comment-widget :comment-extent)
+                                 'invisible t))
           (funcall set symbol (eval (setq val (widget-value child))))
-          (put symbol 'customized-value (list val)))
+          (put symbol 'customized-value (list val))
+          (put symbol 'variable-comment comment)
+          (put symbol 'customized-variable-comment comment))
          (t
+          (when (equal comment "")
+            (setq comment nil)
+            ;; Make the comment invisible by hand if it's empty
+            (set-extent-property (widget-get comment-widget :comment-extent)
+                                 'invisible t))
           (funcall set symbol (setq val (widget-value child)))
-          (put symbol 'customized-value (list (custom-quote val)))))
+          (put symbol 'customized-value (list (custom-quote val)))
+          (put symbol 'variable-comment comment)
+          (put symbol 'customized-variable-comment comment)))
     (custom-variable-state-set widget)
     (custom-redraw-magic widget)))
 
@@ -2027,6 +2183,8 @@ Optional EVENT is the location for the menu."
         (child (car (widget-get widget :children)))
         (symbol (widget-value widget))
         (set (or (get symbol 'custom-set) 'set-default))
+        (comment-widget (widget-get widget :comment-widget))
+        (comment (widget-value comment-widget))
         val)
     (cond ((eq state 'hidden)
           (error "Cannot set hidden variable"))
@@ -2034,14 +2192,34 @@ Optional EVENT is the location for the menu."
           (goto-char (widget-get val :from))
           (error "%s" (widget-get val :error)))
          ((memq form '(lisp mismatch))
+          (when (equal comment "")
+            (setq comment nil)
+            ;; Make the comment invisible by hand if it's empty
+            (set-extent-property (widget-get comment-widget :comment-extent)
+                                 'invisible t))
           (put symbol 'saved-value (list (widget-value child)))
-          (funcall set symbol (eval (widget-value child))))
+          (custom-push-theme 'theme-value symbol 'user
+                             'set (list (widget-value child)))
+          (funcall set symbol (eval (widget-value child)))
+          (put symbol 'variable-comment comment)
+          (put symbol 'saved-variable-comment comment))
          (t
+          (when (equal comment "")
+            (setq comment nil)
+            ;; Make the comment invisible by hand if it's empty
+            (set-extent-property (widget-get comment-widget :comment-extent)
+                                 'invisible t))
           (put symbol
                'saved-value (list (custom-quote (widget-value
                                                  child))))
-          (funcall set symbol (widget-value child))))
+          (custom-push-theme 'theme-value symbol 'user
+                             'set (list (custom-quote (widget-value
+                                                 child))))
+          (funcall set symbol (widget-value child))
+          (put symbol 'variable-comment comment)
+          (put symbol 'saved-variable-comment comment)))
     (put symbol 'customized-value nil)
+    (put symbol 'customized-variable-comment nil)
     (custom-save-all)
     (custom-variable-state-set widget)
     (custom-redraw-magic widget)))
@@ -2049,28 +2227,45 @@ Optional EVENT is the location for the menu."
 (defun custom-variable-reset-saved (widget)
   "Restore the saved value for the variable being edited by WIDGET."
   (let* ((symbol (widget-value widget))
-        (set (or (get symbol 'custom-set) 'set-default)))
-    (if (get symbol 'saved-value)
-       (condition-case nil
-           (funcall set symbol (eval (car (get symbol 'saved-value))))
-         (error nil))
-      (signal 'error (list "No saved value for variable" symbol)))
+        (set (or (get symbol 'custom-set) 'set-default))
+        (comment-widget (widget-get widget :comment-widget))
+        (value (get symbol 'saved-value))
+        (comment (get symbol 'saved-variable-comment)))
+    (cond ((or value comment)
+          (put symbol 'variable-comment comment)
+          (condition-case nil
+              (funcall set symbol (eval (car value)))
+            (error nil)))
+         (t
+          (signal 'error (list "No saved value for variable" symbol))))
     (put symbol 'customized-value nil)
+    (put symbol 'customized-variable-comment nil)
     (widget-put widget :custom-state 'unknown)
+    ;; This call will possibly make the comment invisible
     (custom-redraw widget)))
 
 (defun custom-variable-reset-standard (widget)
   "Restore the standard setting for the variable being edited by WIDGET."
   (let* ((symbol (widget-value widget))
-        (set (or (get symbol 'custom-set) 'set-default)))
+        (set (or (get symbol 'custom-set) 'set-default))
+        (comment-widget (widget-get widget :comment-widget)))
     (if (get symbol 'standard-value)
        (funcall set symbol (eval (car (get symbol 'standard-value))))
       (signal 'error (list "No standard setting known for variable" symbol)))
+    (put symbol 'variable-comment nil)
     (put symbol 'customized-value nil)
-    (when (get symbol 'saved-value)
+    (put symbol 'customized-variable-comment nil)
+    (when (or (get symbol 'saved-value) (get symbol 'saved-variable-comment))
       (put symbol 'saved-value nil)
+      (custom-push-theme 'theme-value symbol 'user 'reset 'standard)
+      ;; As a special optimizations we do not (explictly)
+      ;; save resets to standard when no theme set the value.
+      (if (null (cdr (get symbol 'theme-value)))
+         (put symbol 'theme-value nil))
+      (put symbol 'saved-variable-comment nil)
       (custom-save-all))
     (widget-put widget :custom-state 'unknown)
+    ;; This call will possibly make the comment invisible
     (custom-redraw widget)))
 
 ;;; The `custom-face-edit' Widget.
@@ -2225,6 +2420,7 @@ Match frames with dark backgrounds")
 (defun custom-face-value-create (widget)
   "Create a list of the display specifications for WIDGET."
   (let ((buttons (widget-get widget :buttons))
+       children
        (symbol (widget-get widget :value))
        (tag (widget-get widget :tag))
        (state (widget-get widget :custom-state))
@@ -2274,6 +2470,16 @@ Match frames with dark backgrounds")
           (widget-put widget :buttons buttons)
           ;; Insert documentation.
           (widget-default-format-handler widget ?h)
+          ;; The comment field
+          (unless (eq state 'hidden)
+            (let* ((comment (get symbol 'face-comment))
+                   (comment-widget
+                    (widget-create-child-and-convert
+                     widget 'custom-comment
+                     :parent widget
+                     :value (or comment ""))))
+              (widget-put widget :comment-widget comment-widget)
+              (push comment-widget children)))
           ;; See also.
           (unless (eq state 'hidden)
             (when (eq (widget-get widget :custom-level) 1)
@@ -2307,7 +2513,8 @@ Match frames with dark backgrounds")
                                  'sexp))
                           :value spec)))
               (custom-face-state-set widget)
-              (widget-put widget :children (list edit)))
+              (push edit children)
+              (widget-put widget :children children))
             (message "Creating face editor...done"))))))
 
 (defvar custom-face-menu
@@ -2315,11 +2522,14 @@ Match frames with dark backgrounds")
     ("Save for Future Sessions" custom-face-save)
     ("Reset to Saved" custom-face-reset-saved
      (lambda (widget)
-       (get (widget-value widget) 'saved-face)))
+       (or (get (widget-value widget) 'saved-face)
+          (get (widget-value widget) 'saved-face-comment))))
     ("Reset to Standard Setting" custom-face-reset-standard
      (lambda (widget)
        (get (widget-value widget) 'face-defface-spec)))
     ("---" ignore ignore)
+    ("Add Comment" custom-comment-show custom-comment-invisible-p)
+    ("---" ignore ignore)
     ("Show all display specs" custom-face-edit-all
      (lambda (widget)
        (not (eq (widget-get widget :custom-form) 'all))))
@@ -2356,15 +2566,30 @@ widget. If FILTER is nil, ACTION is always valid.")
 
 (defun custom-face-state-set (widget)
   "Set the state of WIDGET."
-  (let ((symbol (widget-value widget)))
-    (widget-put widget :custom-state (cond ((get symbol 'customized-face)
-                                           'set)
-                                          ((get symbol 'saved-face)
-                                           'saved)
-                                          ((get symbol 'face-defface-spec)
-                                           'standard)
-                                          (t
-                                           'rogue)))))
+  (let* ((symbol (widget-value widget))
+        (comment (get symbol 'face-comment))
+        tmp temp)
+    (widget-put widget :custom-state
+               (cond ((progn
+                        (setq tmp (get symbol 'customized-face))
+                        (setq temp (get symbol 'customized-face-comment))
+                        (or tmp temp))
+                      (if (equal temp comment)
+                          'set
+                        'changed))
+                     ((progn
+                        (setq tmp (get symbol 'saved-face))
+                        (setq temp (get symbol 'saved-face-comment))
+                        (or tmp temp))
+                      (if (equal temp comment)
+                          'saved
+                        'changed))
+                     ((get symbol 'face-defface-spec)
+                      (if (equal comment nil)
+                          'standard
+                        'changed))
+                     (t
+                      'rogue)))))
 
 (defun custom-face-action (widget &optional event)
   "Show the menu for `custom-face' WIDGET.
@@ -2385,9 +2610,18 @@ Optional EVENT is the location for the menu."
   "Make the face attributes in WIDGET take effect."
   (let* ((symbol (widget-value widget))
         (child (car (widget-get widget :children)))
-        (value (widget-value child)))
+        (value (widget-value child))
+        (comment-widget (widget-get widget :comment-widget))
+        (comment (widget-value comment-widget)))
+    (when (equal comment "")
+      (setq comment nil)
+      ;; Make the comment invisible by hand if it's empty
+      (set-extent-property (widget-get comment-widget :comment-extent)
+                          'invisible t))
     (put symbol 'customized-face value)
     (face-spec-set symbol value nil '(custom))
+    (put symbol 'customized-face-comment comment)
+    (put symbol 'face-comment comment)
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
 
@@ -2395,10 +2629,21 @@ Optional EVENT is the location for the menu."
   "Make the face attributes in WIDGET default."
   (let* ((symbol (widget-value widget))
         (child (car (widget-get widget :children)))
-        (value (widget-value child)))
+        (value (widget-value child))
+        (comment-widget (widget-get widget :comment-widget))
+        (comment (widget-value comment-widget)))
+    (when (equal comment "")
+      (setq comment nil)
+      ;; Make the comment invisible by hand if it's empty
+      (set-extent-property (widget-get comment-widget :comment-extent)
+                          'invisible t))
     (face-spec-set symbol value nil '(custom))
     (put symbol 'saved-face value)
+    (custom-push-theme 'theme-face symbol 'user 'set value)
     (put symbol 'customized-face nil)
+    (put symbol 'face-comment comment)
+    (put symbol 'customized-face-comment nil)
+    (put symbol 'saved-face-comment comment)
     (custom-save-all)
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
@@ -2407,12 +2652,18 @@ Optional EVENT is the location for the menu."
   "Restore WIDGET to the face's default attributes."
   (let* ((symbol (widget-value widget))
         (child (car (widget-get widget :children)))
-        (value (get symbol 'saved-face)))
-    (unless value
+        (value (get symbol 'saved-face))
+        (comment (get symbol 'saved-face-comment))
+        (comment-widget (widget-get widget :comment-widget)))
+    (unless (or value comment)
       (signal 'error (list "No saved value for this face" symbol)))
     (put symbol 'customized-face nil)
+    (put symbol 'customized-face-comment nil)
     (face-spec-set symbol value nil '(custom))
+    (put symbol 'face-comment comment)
     (widget-value-set child value)
+    ;; This call manages the comment visibility
+    (widget-value-set comment-widget (or comment ""))
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
 
@@ -2420,15 +2671,25 @@ Optional EVENT is the location for the menu."
   "Restore WIDGET to the face's standard settings."
   (let* ((symbol (widget-value widget))
         (child (car (widget-get widget :children)))
-        (value (get symbol 'face-defface-spec)))
+        (value (get symbol 'face-defface-spec))
+        (comment-widget (widget-get widget :comment-widget)))
     (unless value
       (signal 'error (list "No standard setting for this face" symbol)))
     (put symbol 'customized-face nil)
-    (when (get symbol 'saved-face)
+    (put symbol 'customized-face-comment nil)
+    (when (or (get symbol 'saved-face) (get symbol 'saved-face-comment))
       (put symbol 'saved-face nil)
+      (custom-push-theme 'theme-face symbol 'user 'reset 'standard)
+      ;; Do not explictly save resets to standards without themes.
+      (if (null (cdr (get symbol 'theme-face)))
+         (put symbol  'theme-face nil))
+      (put symbol 'saved-face-comment nil)
       (custom-save-all))
     (face-spec-set symbol value nil '(custom))
+    (put symbol 'face-comment nil)
     (widget-value-set child value)
+    ;; This call manages the comment visibility
+    (widget-value-set comment-widget "")
     (custom-face-state-set widget)
     (custom-redraw-magic widget)))
 
@@ -2977,7 +3238,7 @@ explicitly load that file for the settings to take effect."
   :group 'customize)
 
 (defun custom-save-delete (symbol)
-  "Delete the call to SYMBOL form `custom-file'.
+  "Delete the call to SYMBOL form in `custom-file'.
 Leave point at the location of the call, or after the last expression."
   (let ((find-file-hooks nil)
        (auto-mode-alist nil))
@@ -2997,87 +3258,152 @@ Leave point at the location of the call, or after the last expression."
          (throw 'found nil))))))
 
 (defun custom-save-variables ()
-  "Save all customized variables in `custom-file'."
-  (save-excursion
-    (custom-save-delete 'custom-set-variables)
-    (let ((standard-output (current-buffer)))
-      (unless (bolp)
-       (princ "\n"))
-      (princ "(custom-set-variables")
-      (mapatoms (lambda (symbol)
-                 (let ((value (get symbol 'saved-value))
-                       (requests (get symbol 'custom-requests))
-                       (now (not (or (get symbol 'standard-value)
-                                     (and (not (boundp symbol))
-                                          (not (get symbol 'force-value)))))))
-                   (when value
-                     (princ "\n '(")
-                     (prin1 symbol)
-                     (princ " ")
-                     (prin1 (car value))
-                     (cond (requests
-                            (if now
-                                (princ " t ")
-                              (princ " nil "))
-                            (prin1 requests)
-                            (princ ")"))
-                           (now
-                            (princ " t)"))
-                           (t
-                            (princ ")")))))))
+   "Save all customized variables in `custom-file'."
+   (save-excursion
+     (custom-save-delete 'custom-load-themes)
+     (custom-save-delete 'custom-reset-variables)
+     (custom-save-delete 'custom-set-variables)
+     (custom-save-loaded-themes)
+     (custom-save-resets 'theme-value 'custom-reset-variables nil)
+     (let ((standard-output (current-buffer)))
+       (unless (bolp)
+       (princ "\n"))
+       (princ "(custom-set-variables")
+       (mapatoms (lambda (symbol)               
+                 (let ((spec (car-safe (get symbol 'theme-value)))
+                       (requests (get symbol 'custom-requests))
+                       (now (not (or (get symbol 'standard-value)
+                                     (and (not (boundp symbol))
+                                          (not (eq (get symbol 'force-value)
+                                                   'rogue))))))
+                       (comment (get symbol 'saved-variable-comment)))
+                   (when (or (and spec (eq (car spec) 'user)
+                              (eq (second spec) 'set)) comment)
+                     (princ "\n '(")
+                     (princ symbol)
+                     (princ " ")
+                     ;; This comment stuf is in the way ####
+                     ;; Is (eq (third spec) (car saved-value)) ????
+                     ;; (prin1 (third spec))
+                     (prin1 (car (get symbol 'saved-value)))
+                     (when (or now requests comment)
+                       (princ (if now " t" " nil")))
+                     (when (or comment requests)
+                       (princ " ")
+                       (prin1 requests))
+                     (when comment
+                       (princ " ")
+                       (prin1 comment))
+                     (princ ")")))))
       (princ ")")
       (unless (looking-at "\n")
        (princ "\n")))))
 
+(defvar custom-save-face-ignoring nil)
+
+(defun custom-save-face-internal (symbol)
+  (let ((theme-spec (car-safe (get symbol 'theme-face)))
+       (comment (get symbol 'saved-face-comment))
+       (now (not (or (get symbol 'face-defface-spec)
+             (and (not (find-face symbol))
+                  (not (eq (get symbol 'force-face) 'rogue)))))))
+    (when (or (and (not (memq symbol custom-save-face-ignoring))
+              ;; Don't print default face here.
+              theme-spec
+              (eq (car theme-spec) 'user)
+              (eq (second theme-spec) 'set)) comment)
+      (princ "\n '(")
+      (princ symbol)
+      (princ " ")
+      (prin1 (get symbol 'saved-face))
+      (if (or comment now)
+         (princ (if now " t" " nil")))
+      (when comment
+         (princ " ")
+         (prin1 comment))
+      (princ ")"))))
+
 (defun custom-save-faces ()
   "Save all customized faces in `custom-file'."
   (save-excursion
+    (custom-save-delete 'custom-reset-faces)
     (custom-save-delete 'custom-set-faces)
+    (custom-save-resets 'theme-face 'custom-reset-faces '(default))
     (let ((standard-output (current-buffer)))
       (unless (bolp)
        (princ "\n"))
       (princ "(custom-set-faces")
-      (let ((value (get 'default 'saved-face)))
        ;; The default face must be first, since it affects the others.
-       (when value
-         (princ "\n '(default ")
-         (prin1 value)
-         (if (or (get 'default 'face-defface-spec)
-                 (and (not (find-face 'default))
-                      (not (get 'default 'force-face))))
-             (princ ")")
-           (princ " t)"))))
-      (mapatoms (lambda (symbol)
-                 (let ((value (get symbol 'saved-face)))
-                   (when (and (not (eq symbol 'default))
-                              ;; Don't print default face here.
-                              value)
-                     (princ "\n '(")
-                     (prin1 symbol)
-                     (princ " ")
-                     (prin1 value)
-                     (if (or (get symbol 'face-defface-spec)
-                             (and (not (find-face symbol))
-                                  (not (get symbol 'force-face))))
-                         (princ ")")
-                       (princ " t)"))))))
+      (custom-save-face-internal 'default)
+      (let ((custom-save-face-ignoring '(default)))
+       (mapatoms #'custom-save-face-internal))
       (princ ")")
       (unless (looking-at "\n")
        (princ "\n")))))
 
+(defun custom-save-resets (property setter special)
+  (let (started-writing ignored-special)
+    ;; (custom-save-delete setter) Done by caller 
+    (let ((standard-output (current-buffer))
+         (mapper `(lambda (object)
+                   (let ((spec (car-safe (get object (quote ,property)))))
+                     (when (and (not (memq object ignored-special))
+                                (eq (car spec) 'user)
+                                (eq (second spec) 'reset))
+                       ;; Do not write reset statements unless necessary.
+                       (unless started-writing
+                         (setq started-writing t)
+                         (unless (bolp)
+                           (princ "\n"))
+                       (princ "(")
+                       (princ (quote ,setter))
+                       (princ "\n '(")
+                       (princ object)
+                       (princ " ")
+                       (prin1 (third spec))
+                       (princ ")")))))))
+      (mapc mapper special)
+      (setq ignored-special special)
+      (mapatoms mapper)
+      (when started-writing
+       (princ ")\n")))))
+                       
+
+(defun custom-save-loaded-themes ()
+  (let ((themes (reverse (get 'user 'theme-loads-themes)))
+       (standard-output (current-buffer)))
+    (when themes
+      (unless (bolp) (princ "\n"))
+      (princ "(custom-load-themes")
+      (mapc (lambda (theme)
+             (princ "\n   '")
+             (prin1 theme)) themes)
+      (princ " )\n"))))         
+
 ;;;###autoload
 (defun customize-save-customized ()
   "Save all user options which have been set in this session."
   (interactive)
   (mapatoms (lambda (symbol)
              (let ((face (get symbol 'customized-face))
-                   (value (get symbol 'customized-value)))
+                   (value (get symbol 'customized-value))
+                   (face-comment (get symbol 'customized-face-comment))
+                   (variable-comment
+                    (get symbol 'customized-variable-comment)))
                (when face
                  (put symbol 'saved-face face)
+                 (custom-push-theme 'theme-face symbol 'user 'set value)
                  (put symbol 'customized-face nil))
                (when value
                  (put symbol 'saved-value value)
-                 (put symbol 'customized-value nil)))))
+                 (custom-push-theme 'theme-value symbol 'user 'set value)
+                 (put symbol 'customized-value nil))
+               (when variable-comment
+                 (put symbol 'saved-variable-comment variable-comment)
+                 (put symbol 'customized-variable-comment nil))
+               (when face-comment
+                 (put symbol 'saved-face-comment face-comment)
+                 (put symbol 'customized-face-comment nil)))))
   ;; We really should update all custom buffers here.
   (custom-save-all))
 
index cf4755d..18f2d38 100644 (file)
@@ -30,6 +30,7 @@
   "Like `defface', but FACE is evaluated as a normal argument."
   ;; (when (fboundp 'pureload)
     ;; (error "Attempt to declare a face during dump"))
+  ;; #### should we possibly reset force-face here?
   (unless (get face 'face-defface-spec)
     (put face 'face-defface-spec spec)
     (unless (find-face face)
@@ -69,7 +70,7 @@ Text size (e.g. 9pt or 2mm).")
           custom-set-face-font-size custom-face-font-size)
     (:family (editable-field :format "Font Family: %v"
                             :help-echo "\
-Name of font family to use (e.g. times).") 
+Name of font family to use (e.g. times).")
             custom-set-face-font-family custom-face-font-family)
     (:background-pixmap (editable-field :format "Background pixmap: %v"
                                        :help-echo "\
@@ -240,33 +241,94 @@ If FRAME is nil, use the default face."
 ;;;###autoload
 (defun custom-set-faces (&rest args)
   "Initialize faces according to user preferences.
+This asociates the setting with the USER theme.
 The arguments should be a list where each entry has the form:
 
-  (FACE SPEC [NOW])
+  (FACE SPEC [NOW [COMMENT]])
 
 SPEC will be stored as the saved value for FACE.  If NOW is present
 and non-nil, FACE will also be created according to SPEC.
+COMMENT is a string comment about FACE.
 
 See `defface' for the format of SPEC."
-  (while args
-    (let ((entry (car args)))
-      (if (listp entry)
-         (let ((face (nth 0 entry))
-               (spec (nth 1 entry))
-               (now (nth 2 entry)))
+  (apply #'custom-theme-set-faces 'user args))
+
+;;;###autoload
+(defun custom-theme-set-faces (theme &rest args)
+  "Initialize faces according to settings specified by args.
+Records the settings as belonging to THEME.
+
+See `custom-set-faces' for a description of the arguments ARGS."
+  (custom-check-theme theme)
+  (let ((immediate (get theme 'theme-immediate)))
+    (while args
+      (let ((entry (car args)))
+       (if (listp entry)
+           (let ((face (nth 0 entry))
+                 (spec (nth 1 entry))
+                 (now (nth 2 entry))
+                 (comment (nth 3 entry)))
+             (put face 'saved-face spec)
+             (custom-push-theme 'theme-face face theme 'set spec)
+             (put face 'saved-face-comment comment)
+             (when (or now immediate)
+               (put face 'force-face (if now 'rogue 'immediate)))
+             (when (or now immediate (find-face face))
+               (put face 'face-comment comment)
+               (unless (find-face face)
+                 (make-empty-face face))
+               (face-spec-set face spec nil '(custom)))
+             (setq args (cdr args)))
+         ;; Old format, a plist of FACE SPEC pairs.
+         (let ((face (nth 0 args))
+               (spec (nth 1 args)))
            (put face 'saved-face spec)
-           (when now
-             (put face 'force-face t))
-           (when (or now (find-face face))
+           (custom-push-theme 'theme-face face theme 'set spec))
+         (setq args (cdr (cdr args))))))))
+
+;;;###autoload
+(defun custom-theme-face-value (face theme)
+  "Return spec of FACE in THEME if the THEME modifies the
+FACE.  Nil otherwise."
+  (car-safe (custom-theme-value theme (get face 'theme-face))))
+
+(defun custom-theme-reset-internal-face (face to-theme)
+  (let ((spec (custom-theme-face-value face to-theme))
+       was-in-theme)
+    (setq was-in-theme spec)
+    (setq spec (or spec (get face 'standard-value)))
+    (when spec
+      (put face 'save-face was-in-theme)
+      (when (or (get face 'force-face) (find-face face))
              (unless (find-face face)
                (make-empty-face face))
-             (face-spec-set face spec nil '(custom)))
-           (setq args (cdr args)))
-       ;; Old format, a plist of FACE SPEC pairs.
-       (let ((face (nth 0 args))
-             (spec (nth 1 args)))
-         (put face 'saved-face spec))
-       (setq args (cdr (cdr args)))))))
+             (face-spec-set face spec)))
+    spec))
+
+;;;###autoload
+(defun custom-theme-reset-faces (theme &rest args)
+  (custom-check-theme theme)
+  "Reset the value of the face to values previously defined.
+Assosiate this setting with THEME.
+
+ARGS is a list of lists of the form
+
+    (face to-theme)
+
+This means reset face to its value in to-theme."
+  (mapc #'(lambda (arg)
+           (apply #'custom-theme-reset-internal-face arg)
+           (custom-push-theme (car arg) 'theme-face theme 'reset (cadr arg)))
+       args))
+
+;;;###autoload
+(defun custom-reset-faces (&rest args)
+  "Reset the value of the face to values previously defined.
+Assosiate this setting with the 'user' theme.
+
+ARGS is defined as for `custom-theme-reset-faces'"
+  (apply #'custom-theme-reset-faces 'user args))
+
 
 ;;; The End.
 
index 77dd59d..b27b551 100644 (file)
 
 ;; This file only contain the code needed to declare and initialize
 ;; user options.  The code to customize options is autoloaded from
-;; `cus-edit.el'. 
+;; `cus-edit.el'.
 ;;
 ;; The code implementing face declarations is in `cus-face.el'
 
 ;;; Code:
 
+(eval-when-compile
+  (load "cl-macs"))
+
+(if (not (fboundp 'defun*))
+    (autoload 'defun* "cl-macs"))
+
 (require 'widget)
 
 (defvar custom-define-hook nil
@@ -55,8 +61,8 @@ symbol."
   (unless (default-boundp symbol)
     ;; Use the saved value if it exists, otherwise the standard setting.
     (set-default symbol (if (get symbol 'saved-value)
-                           (eval (car (get symbol 'saved-value)))
-                         (eval value)))))
+                            (eval (car (get symbol 'saved-value)))
+                          (eval value)))))
 
 (defun custom-initialize-set (symbol value)
   "Initialize SYMBOL with VALUE.
@@ -64,83 +70,83 @@ Like `custom-initialize-default', but use the function specified by
 `:set' to initialize SYMBOL."
   (unless (default-boundp symbol)
     (funcall (or (get symbol 'custom-set) 'set-default)
-            symbol 
-            (if (get symbol 'saved-value)
-                (eval (car (get symbol 'saved-value)))
-              (eval value)))))
+             symbol
+             (if (get symbol 'saved-value)
+                 (eval (car (get symbol 'saved-value)))
+               (eval value)))))
 
 (defun custom-initialize-reset (symbol value)
   "Initialize SYMBOL with VALUE.
 Like `custom-initialize-set', but use the function specified by
 `:get' to reinitialize SYMBOL if it is already bound."
     (funcall (or (get symbol 'custom-set) 'set-default)
-            symbol 
-            (cond ((default-boundp symbol)
-                   (funcall (or (get symbol 'custom-get) 'default-value)
-                            symbol))
-                  ((get symbol 'saved-value)
-                   (eval (car (get symbol 'saved-value))))
-                  (t
-                   (eval value)))))
+             symbol
+             (cond ((default-boundp symbol)
+                    (funcall (or (get symbol 'custom-get) 'default-value)
+                             symbol))
+                   ((get symbol 'saved-value)
+                    (eval (car (get symbol 'saved-value))))
+                   (t
+                    (eval value)))))
 
 (defun custom-initialize-changed (symbol value)
   "Initialize SYMBOL with VALUE.
-Like `custom-initialize-reset', but only use the `:set' function if the 
+Like `custom-initialize-reset', but only use the `:set' function if the
 not using the standard setting.  Otherwise, use the `set-default'."
   (cond ((default-boundp symbol)
-        (funcall (or (get symbol 'custom-set) 'set-default)
-                 symbol
-                 (funcall (or (get symbol 'custom-get) 'default-value)
-                          symbol)))
-       ((get symbol 'saved-value)
-        (funcall (or (get symbol 'custom-set) 'set-default)
-                 symbol
-                 (eval (car (get symbol 'saved-value)))))
-       (t
-        (set-default symbol (eval value)))))
+         (funcall (or (get symbol 'custom-set) 'set-default)
+                  symbol
+                  (funcall (or (get symbol 'custom-get) 'default-value)
+                           symbol)))
+        ((get symbol 'saved-value)
+         (funcall (or (get symbol 'custom-set) 'set-default)
+                  symbol
+                  (eval (car (get symbol 'saved-value)))))
+        (t
+         (set-default symbol (eval value)))))
 
 (defun custom-declare-variable (symbol value doc &rest args)
   "Like `defcustom', but SYMBOL and VALUE are evaluated as normal arguments."
   ;; Remember the standard setting.
   (put symbol 'standard-value (list value))
   ;; Maybe this option was rogue in an earlier version.  It no longer is.
-  (when (get symbol 'force-value)
-    ;; It no longer is.    
+  (when (eq (get symbol 'force-value) 'rogue)
+    ;; It no longer is.
     (put symbol 'force-value nil))
   (when doc
     (put symbol 'variable-documentation doc))
   (let ((initialize 'custom-initialize-reset)
-       (requests nil))
-    (while args 
+        (requests nil))
+    (while args
       (let ((arg (car args)))
-       (setq args (cdr args))
-       (check-argument-type 'keywordp arg)
-       (let ((keyword arg)
-             (value (car args)))
-         (unless args
-           (signal 'error (list "Keyword is missing an argument" keyword)))
-         (setq args (cdr args))
-         (cond ((eq keyword :initialize)
-                (setq initialize value))
-               ((eq keyword :set)
-                (put symbol 'custom-set value))
-               ((eq keyword :get)
-                (put symbol 'custom-get value))
-               ((eq keyword :require)
-                (setq requests (cons value requests)))
-               ((eq keyword :type)
-                (put symbol 'custom-type value))
-               ((eq keyword :options)
-                (if (get symbol 'custom-options)
-                    ;; Slow safe code to avoid duplicates.
-                    (mapc (lambda (option)
-                            (custom-add-option symbol option))
-                          value)
-                  ;; Fast code for the common case.
-                  (put symbol 'custom-options (copy-sequence value))))
-               (t
-                (custom-handle-keyword symbol keyword value
-                                       'custom-variable))))))
+        (setq args (cdr args))
+        (check-argument-type 'keywordp arg)
+        (let ((keyword arg)
+              (value (car args)))
+          (unless args
+            (signal 'error (list "Keyword is missing an argument" keyword)))
+          (setq args (cdr args))
+          (cond ((eq keyword :initialize)
+                 (setq initialize value))
+                ((eq keyword :set)
+                 (put symbol 'custom-set value))
+                ((eq keyword :get)
+                 (put symbol 'custom-get value))
+                ((eq keyword :require)
+                 (setq requests (cons value requests)))
+                ((eq keyword :type)
+                 (put symbol 'custom-type value))
+                ((eq keyword :options)
+                 (if (get symbol 'custom-options)
+                     ;; Slow safe code to avoid duplicates.
+                     (mapc (lambda (option)
+                             (custom-add-option symbol option))
+                           value)
+                   ;; Fast code for the common case.
+                   (put symbol 'custom-options (copy-sequence value))))
+                (t
+                 (custom-handle-keyword symbol keyword value
+                                        'custom-variable))))))
     (put symbol 'custom-requests requests)
     ;; Do the actual initialization.
     (funcall initialize symbol value))
@@ -158,29 +164,29 @@ Neither SYMBOL nor VALUE needs to be quoted.
 If SYMBOL is not already bound, initialize it to VALUE.
 The remaining arguments should have the form
 
-   [KEYWORD VALUE]... 
+   [KEYWORD VALUE]...
 
 The following KEYWORD's are defined:
 
-:type  VALUE should be a widget type for editing the symbols value.
-       The default is `sexp'.
+:type   VALUE should be a widget type for editing the symbols value.
+        The default is `sexp'.
 :options VALUE should be a list of valid members of the widget type.
-:group  VALUE should be a customization group.  
+:group  VALUE should be a customization group.
         Add SYMBOL to that group.
 :initialize VALUE should be a function used to initialize the
-       variable.  It takes two arguments, the symbol and value
-       given in the `defcustom' call.  The default is
-       `custom-initialize-set' 
-:set   VALUE should be a function to set the value of the symbol. 
-       It takes two arguments, the symbol to set and the value to
-       give it.  The default is `set-default'.
-:get   VALUE should be a function to extract the value of symbol.
-       The function takes one argument, a symbol, and should return
-       the current value for that symbol.  The default is
-       `default-value'. 
+        variable.  It takes two arguments, the symbol and value
+        given in the `defcustom' call.  The default is
+        `custom-initialize-set'
+:set    VALUE should be a function to set the value of the symbol.
+        It takes two arguments, the symbol to set and the value to
+        give it.  The default is `set-default'.
+:get    VALUE should be a function to extract the value of symbol.
+        The function takes one argument, a symbol, and should return
+        the current value for that symbol.  The default is
+        `default-value'.
 :require VALUE should be a feature symbol.  Each feature will be
-       required after initialization, of the the user have saved this
-       option.
+        required after initialization, of the the user have saved this
+        option.
 
 Read the section about customization in the Emacs Lisp manual for more
 information."
@@ -237,7 +243,7 @@ information."
 
 (defun custom-declare-group (symbol members doc &rest args)
   "Like `defgroup', but SYMBOL is evaluated as a normal argument."
-  (while members 
+  (while members
     (apply 'custom-add-to-group symbol (car members))
     (pop members))
   (put symbol 'custom-group (nconc members (get symbol 'custom-group)))
@@ -248,15 +254,15 @@ information."
       (setq args (cdr args))
       (check-argument-type 'keywordp arg)
       (let ((keyword arg)
-           (value (car args)))
-       (unless args
-         (signal 'error (list "Keyword is missing an argument" keyword)))
-       (setq args (cdr args))
-       (cond ((eq keyword :prefix)
-              (put symbol 'custom-prefix value))
-             (t
-              (custom-handle-keyword symbol keyword value
-                                     'custom-group))))))
+            (value (car args)))
+        (unless args
+          (signal 'error (list "Keyword is missing an argument" keyword)))
+        (setq args (cdr args))
+        (cond ((eq keyword :prefix)
+               (put symbol 'custom-prefix value))
+              (t
+               (custom-handle-keyword symbol keyword value
+                                      'custom-group))))))
   (run-hooks 'custom-define-hook)
   symbol)
 
@@ -273,7 +279,7 @@ edit faces, and `custom-group' for editing groups.
 
 The remaining arguments should have the form
 
-   [KEYWORD VALUE]... 
+   [KEYWORD VALUE]...
 
 The following KEYWORD's are defined:
 
@@ -291,9 +297,9 @@ information."
   "To existing GROUP add a new OPTION of type WIDGET.
 If there already is an entry for that option, overwrite it."
   (let* ((members (get group 'custom-group))
-        (old (assq option members)))
+         (old (assq option members)))
     (if old
-       (setcar (cdr old) widget)
+        (setcar (cdr old) widget)
       (put group 'custom-group (nconc members (list (list option widget))))))
   (puthash group t custom-group-hash-table))
 
@@ -302,32 +308,32 @@ If there already is an entry for that option, overwrite it."
 (defun custom-handle-all-keywords (symbol args type)
   "For customization option SYMBOL, handle keyword arguments ARGS.
 Third argument TYPE is the custom option type."
-  (while args 
+  (while args
     (let ((arg (car args)))
       (setq args (cdr args))
       (check-argument-type 'keywordp arg)
       (let ((keyword arg)
-           (value (car args)))
-       (unless args
-         (signal 'error (list "Keyword is missing an argument" keyword)))
-       (setq args (cdr args))
-       (custom-handle-keyword symbol keyword value type)))))  
+            (value (car args)))
+        (unless args
+          (signal 'error (list "Keyword is missing an argument" keyword)))
+        (setq args (cdr args))
+        (custom-handle-keyword symbol keyword value type)))))
 
 (defun custom-handle-keyword (symbol keyword value type)
   "For customization option SYMBOL, handle KEYWORD with VALUE.
 Fourth argument TYPE is the custom option type."
   (cond ((eq keyword :group)
-        (custom-add-to-group value symbol type))
-       ((eq keyword :version)
-        (custom-add-version symbol value))
-       ((eq keyword :link)
-        (custom-add-link symbol value))
-       ((eq keyword :load)
-        (custom-add-load symbol value))
-       ((eq keyword :tag)
-        (put symbol 'custom-tag value))
-       (t
-        (signal 'error (list "Unknown keyword" keyword)))))
+         (custom-add-to-group value symbol type))
+        ((eq keyword :version)
+         (custom-add-version symbol value))
+        ((eq keyword :link)
+         (custom-add-link symbol value))
+        ((eq keyword :load)
+         (custom-add-load symbol value))
+        ((eq keyword :tag)
+         (put symbol 'custom-tag value))
+        (t
+         (signal 'error (list "Unknown keyword" keyword)))))
 
 (defun custom-add-option (symbol option)
   "To the variable SYMBOL add OPTION.
@@ -356,46 +362,278 @@ LOAD should be either a library file name, or a feature name."
     (unless (member load loads)
       (put symbol 'custom-loads (cons load loads)))))
 
+;;; deftheme macro
+
+(defvar custom-known-themes '(user standard)
+   "Themes that have been defthemed.")
+
+;;  #### add strings for group
+;; #### during bootstrap we cannot use cl-macs stuff
+(defun* custom-define-theme (theme feature &optional doc
+         &key short-description immediate variable-reset-string
+         variable-set-string face-set-string face-reset-string
+         &allow-other-keys)
+  (push theme custom-known-themes)
+  (put theme 'theme-feature feature)
+  (put theme 'theme-documentation doc)
+  (if immediate (put theme 'theme-immediate immediate))
+  (if variable-reset-string
+      (put theme 'theme-variable-reset-string variable-reset-string ))
+  (if variable-set-string
+      (put theme 'theme-variable-set-string variable-set-string ))
+  (if face-reset-string
+      (put theme 'theme-face-reset-string face-reset-string ))
+  (if face-set-string
+      (put theme 'theme-face-set-string face-set-string ))
+  (if short-description
+      (put theme 'theme-short-description short-description )))
+
+(defun custom-make-theme-feature (theme)
+  (intern (concat (symbol-name theme) "-theme")))
+
+(defmacro deftheme (theme &rest body)
+  "(deftheme THEME &optional DOC &key KEYWORDS)
+
+Define a theme labeled by SYMBOL THEME. The optional argument DOC is a
+doc string describing the the theme. It is optionally followed by the
+following keyboard arguments
+
+:short-description DESC
+      DESC is a short (one line) description of the theme. If not given DOC
+      is used.
+:immediate FLAG
+      If FLAG is non-nil variables set in this theme are bound
+      immediately when loading the theme.
+:variable-set-string VARIABLE_-SET-STRING
+      A string used by the UI to indicate that the value takes it
+      setting from this theme. It is passed to FORMAT with the
+      name of the theme a additional argument.
+      If not given, a generic description is used.
+:variable-reset-string VARIABLE-RESET-STRING
+      As above but used in the case the variable has been forced to
+      the value in this theme.
+:face-set-string FACE-SET-STRING
+:face-reset-string FACE-RESET-STRING
+      As above but for faces."
+  (let ((feature (custom-make-theme-feature theme)))
+    `(custom-define-theme (quote ,theme) (quote ,feature) ,@body)))
+
+(defsubst custom-theme-p (theme)
+  "Non-nil when THEME has been defined."
+  (memq theme custom-known-themes))
+
+(defsubst custom-check-theme (theme)
+  "Check whether THEME is valid and signal an error if NOT"
+  (unless (custom-theme-p theme)
+    (error "Unknown theme `%s'" theme)))
+
+
+; #### do we need to deftheme 'user and/or 'standard here to make the
+;      code in cus-edit cleaner?.
+
 ;;; Initializing.
 
-(defun custom-set-variables (&rest args)
-  "Initialize variables according to user preferences.  
+(defun custom-push-theme (prop symbol theme mode value)
+  (let ((old (get symbol prop)))
+    (if (eq (car-safe (car-safe old)) theme)
+        (setq old (cdr old)))
+    (put symbol prop (cons (list theme mode value) old))))
 
+(defun custom-set-variables (&rest args)
+  "Initialize variables according to user preferences.
+The settings are registered as theme `user'.
 The arguments should be a list where each entry has the form:
 
-  (SYMBOL VALUE [NOW])
+  (SYMBOL VALUE [NOW [REQUEST [COMMENT]]])
 
 The unevaluated VALUE is stored as the saved value for SYMBOL.
 If NOW is present and non-nil, VALUE is also evaluated and bound as
-the default value for the SYMBOL."
-  (while args 
-    (let ((entry (car args)))
-      (if (listp entry)
-         (let* ((symbol (nth 0 entry))
-                (value (nth 1 entry))
-                (now (nth 2 entry))
-                (requests (nth 3 entry))
-                (set (or (get symbol 'custom-set) 'set-default)))
-           (put symbol 'saved-value (list value))
-           (cond (now 
-                  ;; Rogue variable, set it now.
-                  (put symbol 'force-value t)
-                  (funcall set symbol (eval value)))
-                 ((default-boundp symbol)
-                  ;; Something already set this, overwrite it.
-                  (funcall set symbol (eval value))))
-           (when requests
-             (put symbol 'custom-requests requests)
-             (mapc 'require requests))
-           (setq args (cdr args)))
-       ;; Old format, a plist of SYMBOL VALUE pairs.
-       (message "Warning: old format `custom-set-variables'")
-       (ding)
-       (sit-for 2)
-       (let ((symbol (nth 0 args))
-             (value (nth 1 args)))
-         (put symbol 'saved-value (list value)))
-       (setq args (cdr (cdr args)))))))
+the default value for the SYMBOL.
+REQUEST is a list of features we must 'require for SYMBOL.
+COMMENT is a comment string about SYMBOL."
+  (apply 'custom-theme-set-variables 'user args))
+
+(defun custom-theme-set-variables (theme &rest args)
+  "Initialize variables according to settings specified by args.
+Records the settings as belonging to THEME.
+
+See `custom-set-variables' for a description of the arguments ARGS."
+  (custom-check-theme theme)
+  (let ((immediate (get theme 'theme-immediate)))
+    (while args * etc/custom/example-themes/example-theme.el:
+      (let ((entry (car args)))
+        (if (listp entry)
+            (let* ((symbol (nth 0 entry))
+                   (value (nth 1 entry))
+                   (now (nth 2 entry))
+                   (requests (nth 3 entry))
+                   (comment (nth 4 entry))
+                   (set (or (get symbol 'custom-set) 'set-default)))
+              (put symbol 'saved-value (list value))
+              (custom-push-theme 'theme-value symbol theme 'set value)
+              (put symbol 'saved-variable-comment comment)
+              (cond ((or now immediate)
+                     ;; Rogue variable, set it now.
+                     (put symbol 'force-value (if now 'rogue 'immediate))
+                     (funcall set symbol (eval value)))
+                    ((default-boundp symbol)
+                     ;; Something already set this, overwrite it.
+                     (funcall set symbol (eval value))))
+              (and (or now (default-boundp symbol))
+                 (put symbol 'variable-comment comment))
+              (when requests
+                (put symbol 'custom-requests requests)
+                (mapc 'require requests))
+              (setq args (cdr args)))
+          ;; Old format, a plist of SYMBOL VALUE pairs.
+          (message "Warning: old format `custom-set-variables'")
+          (ding)
+          (sit-for 2)
+          (let ((symbol (nth 0 args))
+                (value (nth 1 args)))
+            (put symbol 'saved-value (list value))
+            (custom-push-theme 'theme-value symbol theme 'set value))
+          (setq args (cdr (cdr args))))))))
+
+(defvar custom-loaded-themes nil
+  "Themes in the order they are loaded.")
+
+(defun custom-theme-loaded-p (theme)
+  "Return non-nil when THEME has been loaded."
+  (memq theme custom-loaded-themes))
+
+(defun provide-theme (theme)
+  "Indicate that this file provides THEME."
+  (custom-check-theme theme)
+  (provide (get theme 'theme-feature))
+  (push theme custom-loaded-themes))
+
+(defun require-theme (theme &optional soft)
+  "Try to load a theme by requiring its feature."
+  ;; Note we do no check for validity of the theme here.
+  ;; This allows to pull in themes by a file-name convention
+  (require (get theme 'theme-feature (custom-make-theme-feature theme))))
+
+(defun custom-do-theme-reset (theme)
+  ; #### untested! slow!
+  (let (spec-list)
+    (mapatoms (lambda (symbol)
+                (setq spec-list (get symbol 'theme-value))
+                (when spec-list
+                  (setq spec-list (delete-if (lambda (elt)
+                                               (eq (car elt) theme))
+                                             spec-list))
+                  (put symbol 'theme-value spec-list)
+                  (custom-theme-reset-internal symbol 'user))
+                (setq spec-list (get symbol 'theme-face))
+                (when spec-list
+                  (setq spec-list (delete-if (lambda (elt)
+                                               (eq (car elt) theme))
+                                             spec-list))
+                  (put symbol 'theme-face spec-list)
+                  (custom-theme-reset-internal-face symbol 'user))))))
+
+(defun custom-theme-load-themes (by-theme &rest body)
+  "Load the themes specified by BODY and record them as required by
+theme BY-THEME. BODY is a secuence of
+       - a SYMBOL
+            require the theme SYMBOL
+       - a list (reset THEME)
+            Undo all the settings made by THEME.
+       - a list (hidden THEME)
+            require the THEME but hide it from the user."
+  (custom-check-theme by-theme)
+  (dolist (theme body)
+    (cond ((and (consp theme) (eq (car theme) 'reset))
+           (custom-do-theme-reset (cadr theme)))
+          ((and (consp theme) (eq (car theme) 'hidden))
+           (require-theme (cadr theme))
+           (unless (custom-theme-loaded-p (cadr theme))
+             (put (cadr theme) 'theme-hidden t)))
+          (t
+           (require-theme theme)
+           (remprop theme 'theme-hidden)))
+    (push theme (get by-theme 'theme-loads-themes))))
+
+(defun custom-load-themes (&rest body)
+  "Load themes for the USER theme as specified by BODY.
+
+BODY is as with custom-theme-load-themes."
+  (apply #'custom-theme-load-themes 'user body))
+
+
+
+
+(defsubst copy-upto-last (elt list)
+  "Copy all the elements of the list upto the last occurence of elt"
+  ;; Is it faster to do more work in C than to do less in elisp?
+  (nreverse (cdr (member elt (reverse list)))))
+
+(defun custom-theme-value (theme theme-spec-list)
+  "Determine the value for THEME defined by THEME-SPEC-LIST.
+Returns (list value) if found. Nil otherwise."
+  ;; Note we do _NOT_ singal an error if the theme is unkown
+  ;; it might have gone away without the user knowing.
+  (let ((theme-or-lower (memq theme (cons 'user custom-loaded-themes)))
+        value)
+    (mapc #'(lambda (theme-spec)
+              (when (member (car theme-spec) theme-or-lower)
+                (setq value (cdr theme-spec))
+                ;; We need to continue because if theme =A and we found
+                ;; B then if the load order is B A C B
+                ;; we actually want the value in C.
+                (setq theme-or-lower (copy-upto-last (car theme-spec)
+                                                     theme-or-lower))
+                ;; We could should circuit if this is now nil.
+                ))
+          theme-spec-list)
+    (if value
+        (if (eq (car value) 'set)
+            (list (cadr value))
+          ;; Yet another reset spec. car value = reset
+          (custom-theme-value (cadr value) theme-spec-list)))))
+
+
+(defun custom-theme-variable-value (variable theme)
+  "Return (list value) value of VARIABLE in THEME if the THEME modifies the
+VARIABLE.  Nil otherwise."
+  (custom-theme-value theme (get variable 'theme-value)))
+
+(defun custom-theme-reset-internal (symbol to-theme)
+  (let ((value (custom-theme-variable-value symbol to-theme))
+        was-in-theme)
+    (setq was-in-theme value)
+    (setq value (or value (get symbol 'standard-value)))
+    (when value
+      (put symbol 'saved-value was-in-theme)
+      (if (or (get 'force-value symbol) (default-boundp symbol))
+          (funcall (get symbol 'custom-set 'set-default) symbol
+                   (eval (car value)))))
+    value))
+
+
+(defun custom-theme-reset-variables (theme &rest args)
+  "Reset the value of the variables to values previously defined.
+Assosiate this setting with THEME.
+
+ARGS is a list of lists of the form
+
+    (variable to-theme)
+
+This means reset variable to its value in to-theme."
+  (custom-check-theme theme)
+  (mapc #'(lambda (arg)
+            (apply #'custom-theme-reset-internal arg)
+            (custom-push-theme 'theme-value (car arg) theme 'reset (cadr arg)))
+        args))
+
+(defun custom-reset-variables (&rest args)
+    "Reset the value of the variables to values previously defined.
+Assosiate this setting with the `user' theme.
+
+The ARGS are as in `custom-theme-reset-variables'."
+    (apply #'custom-theme-reset-variables 'user args))
+
 
 ;;; The End.
 
index 097c197..b3468db 100644 (file)
        (when-feature (and (not infodock)
                           (or x mswindows) menubar) "menubar-items")
        (when-feature (and infodock (or x mswindows) menubar) "id-menus")
+       (when-feature (and gutter menubar window-system) "gutter-items")
        (when-feature x "x-faces")
        (when-feature x "x-iso8859-1")
        (when-feature x "x-mouse")
index 4f41c82..0b23435 100644 (file)
@@ -1224,7 +1224,9 @@ REGEXP and search the list again for another match.")
     ("python" . python-mode)
     ("awk\\b" . awk-mode)
     ("rexx"   . rexx-mode)
-    ("scm"    . scheme-mode)
+    ("scm\\|guile" . scheme-mode)
+    ("emacs" . emacs-lisp-mode)
+    ("make" . makefile-mode)
     ("^:"     . sh-mode))
   "Alist mapping interpreter names to major modes.
 This alist is used to guess the major mode of a file based on the
index 780d6e6..748cba4 100644 (file)
@@ -226,9 +226,10 @@ first line, insist it must match FIRST-LINE-REGEXP."
       ;; XEmacs change
       (if (not dont-skip-first)
          (forward-line 1))
-      (if (>= (point) to)
-         (goto-char firstline)
-       (setq at-second t))
+      (cond ((>= (point) to)
+            (goto-char firstline))
+           ((/= (point) from)
+            (setq at-second t)))
       (move-to-left-margin)
       ;; XEmacs change
       (let ((start (point))
@@ -236,7 +237,7 @@ first line, insist it must match FIRST-LINE-REGEXP."
            ;(eol (save-excursion (end-of-line) (point)))
            )
        (setq result
-             (if (not (looking-at paragraph-start))
+             (if (or dont-skip-first (not (looking-at paragraph-start)))
                  (cond ((and adaptive-fill-regexp (looking-at adaptive-fill-regexp))
                         (buffer-substring-no-properties start (match-end 0)))
                        (adaptive-fill-function (funcall adaptive-fill-function)))))
@@ -429,7 +430,8 @@ space does not end a sentence, so don't break a line there."
          ;; This is the actual filling loop.
          (let ((prefixcol 0) linebeg
                (re-break-point (if (featurep 'mule)
-                                   (concat "[ \n\t]\\|" word-across-newline)
+                                   (concat "[ \n\t]\\|" word-across-newline
+                                           ".\\|." word-across-newline)
                                  "[ \n\t]")))
            (while (not (eobp))
              (setq linebeg (point))
index 893efe5..d23ea03 100644 (file)
@@ -64,6 +64,7 @@ Normally it also has no modelines, menubars, or toolbars."
                                 menubar-visible-p nil
                                 has-modeline-p nil
                                 default-toolbar-visible-p nil
+                                default-gutter-visible-p nil
                                 modeline-shadow-thickness 0
                                 left ,(+ fleft (- (/ fwidth 2)
                                                   (/ (* dfwidth fontw)
index bb1a875..b284749 100644 (file)
                 :selected (eq default-toolbar-position 'right)]
                )
               )))
+      ,@(if (featurep 'gutter)
+           '(("Gutter Appearance"
+              ["Visible"
+               (customize-set-variable 'gutter-visible-p
+                                       (not gutter-visible-p))
+               :style toggle
+               :selected gutter-visible-p]
+              ("Default Location"
+               ["Top"
+                (customize-set-variable 'default-gutter-position 'top)
+                :style radio
+                :selected (eq default-gutter-position 'top)]
+               ["Bottom"
+                (customize-set-variable 'default-gutter-position 'bottom)
+                :style radio
+                :selected (eq default-gutter-position 'bottom)]
+               ["Left"
+                (customize-set-variable 'default-gutter-position 'left)
+                :style radio
+                :selected (eq default-gutter-position 'left)]
+               ["Right"
+                (customize-set-variable 'default-gutter-position 'right)
+                :style radio
+                :selected (eq default-gutter-position 'right)]
+               )
+              )))
       ("Mouse"
        ["Avoid Text..."
        (customize-set-variable 'mouse-avoidance-mode
index c9eedb4..cc8bc03 100644 (file)
                             shift_jis iso-2022-jp-2)
              (coding-priority iso-2022-jp euc-jp
                               shift_jis iso-2022-jp-2)
-             (input-method . "japanese")
+;;           (input-method . "japanese")
              (features japan-util)
              (sample-text . "Japanese (\e$BF|K\8l\e(B)   \e$B$3$s$K$A$O\e(B, \e(I:]FAJ\e(B")
              (documentation . t)))
index 5b78d6b..737e1d3 100644 (file)
@@ -1,8 +1,8 @@
 ;;; rect.el --- rectangle functions for XEmacs.
 
-;; Copyright (C) 1985, 1993, 1994 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 1993, 1994, 1999 Free Software Foundation, Inc.
 
-;; Maintainer: FSF
+;; Maintainer: Didier Verna <verna@inf.enst.fr>
 ;; Keywords: internal
 
 ;; This file is part of XEmacs.
 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 ;; 02111-1307, USA.
 
-;;; Synched up with: FSF 19.34.
+;;; Synched up with: to be incorporated in a forthcoming GNU Emacs
 
 ;;; Commentary:
 
 ;; This package provides the operations on rectangles that are ocumented
 ;; in the XEmacs Reference Manual.
 
+;; ### NOTE: this file has been almost completely rewritten by Didier Verna
+;; <verna@inf.enst.fr>, Jul 99. The purpose of this rewrite is to be less
+;; intrusive and fill lines with whitespaces only when needed. A few functions
+;; are untouched though, as noted above their definition.
+
+
 ;;; Code:
 
+;; ### NOTE: this function is untouched, but not used anymore.
+;; `apply-on-rectangle' is used instead. It's still there because it's
+;; documented so people might use it in their code, so I've decided not to
+;; touch it. --dv
 ;; XEmacs: extra-args
 (defun operate-on-rectangle (function start end coerce-tabs &rest extra-args)
   "Call FUNCTION for each line of rectangle with corners at START, END.
@@ -44,15 +54,15 @@ FUNCTION is called with three arguments:
 Point is at the end of the segment of this line within the rectangle."
   (let (startcol startlinepos endcol endlinepos)
     (save-excursion
-     (goto-char start)
-     (setq startcol (current-column))
-     (beginning-of-line)
-     (setq startlinepos (point)))
+      (goto-char start)
+      (setq startcol (current-column))
+      (beginning-of-line)
+      (setq startlinepos (point)))
     (save-excursion
-     (goto-char end)
-     (setq endcol (current-column))
-     (forward-line 1)
-     (setq endlinepos (point-marker)))
+      (goto-char end)
+      (setq endcol (current-column))
+      (forward-line 1)
+      (setq endlinepos (point-marker)))
     (if (< endcol startcol)
        ;; XEmacs
        (let ((tem startcol))
@@ -74,36 +84,46 @@ Point is at the end of the segment of this line within the rectangle."
        (forward-line 1)))
     (- endcol startcol)))
 
-(defun delete-rectangle-line (startdelpos ignore ignore)
-  (delete-region startdelpos (point)))
-
-;; XEmacs: added lines arg
-(defun delete-extract-rectangle-line (startdelpos begextra endextra lines)
-  (save-excursion
-   (extract-rectangle-line startdelpos begextra endextra lines))
-  (delete-region startdelpos (point)))
+;; The replacement for `operate-on-rectangle' -- dv
+(defun apply-on-rectangle (function start end &rest args)
+  "Call FUNCTION for each line of rectangle with corners at START, END.
+FUNCTION is called with two arguments: the start and end columns of the
+rectangle, plus ARGS extra arguments. Point is at the beginning of line when
+the function is called."
+  (let (startcol startpt endcol endpt)
+    (save-excursion
+      (goto-char start)
+      (setq startcol (current-column))
+      (beginning-of-line)
+      (setq startpt (point))
+      (goto-char end)
+      (setq endcol (current-column))
+      (forward-line 1)
+      (setq endpt (point-marker))
+      ;; ensure the start column is the left one.
+      (if (< endcol startcol)
+         (let ((col startcol))
+           (setq startcol endcol endcol col)))
+      ;; start looping over lines
+      (goto-char startpt)
+      (while (< (point) endpt)
+       (apply function startcol endcol args)
+       (forward-line 1)))
+    ))
 
-;; XEmacs: added lines arg
-(defun extract-rectangle-line (startdelpos begextra endextra lines)
-  (let ((line (buffer-substring startdelpos (point)))
-       (end (point)))
-    (goto-char startdelpos)
-    (while (search-forward "\t" end t)
-      (let ((width (- (current-column)
-                     (save-excursion (forward-char -1)
-                                     (current-column)))))
-       (setq line (concat (substring line 0 (- (point) end 1))
-                          (spaces-string width)
-                          (substring line (+ (length line) (- (point) end)))))))
-    (if (or (> begextra 0) (> endextra 0))
-       (setq line (concat (spaces-string begextra)
-                          line
-                          (spaces-string endextra))))
-    (setcdr lines (cons line (cdr lines))))) ; XEmacs
+;; I love ascii art ;-)
+(defconst spaces-strings '[""
+                          " "
+                          "  "
+                          "   "
+                          "    "
+                          "     "
+                          "      "
+                          "       "
+                          "        "])
 
-(defconst spaces-strings
-  (purecopy '["" " " "  " "   " "    " "     " "      " "       " "        "]))
 
+;; This function is untouched --dv
 (defun spaces-string (n)
   (if (<= n 8) (aref spaces-strings n)
     (let ((val ""))
@@ -111,55 +131,119 @@ Point is at the end of the segment of this line within the rectangle."
        (setq val (concat "        " val)
              n (- n 8)))
       (concat val (aref spaces-strings n)))))
-    
+
 ;;;###autoload
-(defun delete-rectangle (start end)
-  "Delete (don't save) text in rectangle with point and mark as corners.
-The same range of columns is deleted in each line starting with the line
-where the region begins and ending with the line where the region ends."
-  (interactive "r")
-  (operate-on-rectangle 'delete-rectangle-line start end t))
+(defvar killed-rectangle nil
+  "Rectangle for yank-rectangle to insert.")
 
 ;;;###autoload
-(defun delete-extract-rectangle (start end)
-  "Delete contents of rectangle and return it as a list of strings.
-Arguments START and END are the corners of the rectangle.
-The value is list of strings, one for each line of the rectangle."
-  (let ((lines (list nil))) ; XEmacs change
-    (operate-on-rectangle 'delete-extract-rectangle-line
-                         start end t lines)
-    (nreverse (cdr lines))))
+(defun kill-rectangle (start end &optional fill)
+  "Delete the rectangle with corners at point and mark (START and END when
+called from a program) and save it as the last killed one. You might prefer to
+use `delete-extract-rectangle' from a program.
+
+With a prefix (or a FILL) argument, also fill lines where nothing has to be
+deleted."
+  (interactive "r\nP")
+  (when buffer-read-only
+    (setq killed-rectangle (extract-rectangle start end))
+    (barf-if-buffer-read-only))
+  (setq killed-rectangle (delete-extract-rectangle start end fill)))
 
 ;;;###autoload
-(defun extract-rectangle (start end)
-  "Return contents of rectangle with corners at START and END.
-Value is list of strings, one for each line of the rectangle."
-  (let ((lines (list nil))) ; XEmacs change
-    (operate-on-rectangle 'extract-rectangle-line start end nil lines)
-    (nreverse (cdr lines))))
+(defun delete-rectangle (start end &optional fill)
+  "Delete (don't save) text in rectangle with corners at point and mark (START
+and END when called from a program). The same range of columns is deleted in
+each line starting with the line where the region begins and ending with the
+line where the region ends.
+
+With a prefix (or a FILL) argument, also fill lines where nothing has to be
+deleted."
+  (interactive "r\nP")
+  (apply-on-rectangle 'delete-rectangle-line start end fill))
+
+(defun delete-rectangle-line (startcol endcol fill)
+  (let ((pt (point-at-eol)))
+    (when (= (move-to-column startcol (or fill 'coerce)) startcol)
+      (if (and (not fill) (<= pt endcol))
+         (delete-region (point) pt)
+       ;; else
+       (setq pt (point))
+       (move-to-column endcol t)
+       (delete-region pt (point))))
+    ))
 
 ;;;###autoload
-(defvar killed-rectangle nil
-  "Rectangle for yank-rectangle to insert.")
+(defun delete-extract-rectangle (start end &optional fill)
+  "Delete the contents of the rectangle with corners at START and END, and
+return it as a list of strings, one for each line of the rectangle.
+
+With an optional FILL argument, also fill lines where nothing has to be
+deleted."
+  (let ((lines (list nil)))
+    (apply-on-rectangle 'delete-extract-rectangle-line start end lines fill)
+    (nreverse (cdr lines))))
+
+(defun delete-extract-rectangle-line (startcol endcol lines fill)
+  (let ((pt (point-at-eol)))
+    (if (< (move-to-column startcol (or fill 'coerce)) startcol)
+       (setcdr lines (cons (spaces-string (- endcol startcol))
+                           (cdr lines)))
+      ;; else
+      (setq pt (point))
+      (move-to-column endcol t)
+      (setcdr lines (cons (buffer-substring pt (point)) (cdr lines)))
+      (delete-region pt (point)))
+    ))
 
 ;;;###autoload
-(defun kill-rectangle (start end)
-  "Delete rectangle with corners at point and mark; save as last killed one.
-Calling from program, supply two args START and END, buffer positions.
-But in programs you might prefer to use `delete-extract-rectangle'."
-  (interactive "r")
-  (if buffer-read-only
-      (progn
-       (setq killed-rectangle (extract-rectangle start end))
-       (barf-if-buffer-read-only)))
-  (setq killed-rectangle (delete-extract-rectangle start end)))
+(defun extract-rectangle (start end)
+  "Return the contents of the rectangle with corners at START and END,
+as a list of strings, one for each line of the rectangle."
+  (let ((lines (list nil)))
+    (apply-on-rectangle 'extract-rectangle-line start end lines)
+    (nreverse (cdr lines))))
+
+;; ### NOTE: this is actually the only function that needs to do complicated
+;; stuff like what's happening in `operate-on-rectangle', because the buffer
+;; might be read-only. --dv
+(defun extract-rectangle-line (startcol endcol lines)
+  (let (start end begextra endextra line)
+    (move-to-column startcol)
+    (setq start (point)
+         begextra (- (current-column) startcol))
+    (move-to-column endcol)
+    (setq end (point)
+         endextra (- endcol (current-column)))
+    (setq line (buffer-substring start (point)))
+    (if (< begextra 0)
+       (setq endextra (+ endextra begextra)
+             begextra 0))
+    (if (< endextra 0)
+       (setq endextra 0))
+    (goto-char start)
+    (while (search-forward "\t" end t)
+      (let ((width (- (current-column)
+                     (save-excursion (forward-char -1)
+                                     (current-column)))))
+       (setq line (concat (substring line 0 (- (point) end 1))
+                          (spaces-string width)
+                          (substring line (+ (length line)
+                                             (- (point) end)))))))
+    (if (or (> begextra 0) (> endextra 0))
+       (setq line (concat (spaces-string begextra)
+                          line
+                          (spaces-string endextra))))
+    (setcdr lines (cons line (cdr lines)))))
 
+;; This function is untouched --dv
 ;;;###autoload
 (defun yank-rectangle ()
   "Yank the last killed rectangle with upper left corner at point."
   (interactive)
   (insert-rectangle killed-rectangle))
 
+;; This function is untouched --dv
 ;;;###autoload
 (defun insert-rectangle (rectangle)
   "Insert text of RECTANGLE with upper left corner at point.
@@ -175,81 +259,72 @@ and point is at the lower right corner."
     (while lines
       (or first
          (progn
-          (forward-line 1)
-          (or (bolp) (insert ?\n))
-          (move-to-column insertcolumn t)))
+           (forward-line 1)
+           (or (bolp) (insert ?\n))
+           (move-to-column insertcolumn t)))
       (setq first nil)
       (insert (car lines))
       (setq lines (cdr lines)))))
 
 ;;;###autoload
-(defun open-rectangle (start end)
-  "Blank out rectangle with corners at point and mark, shifting text right.
-The text previously in the region is not overwritten by the blanks,
-but instead winds up to the right of the rectangle."
-  (interactive "r")
-  (operate-on-rectangle 'open-rectangle-line start end nil)
+(defun open-rectangle (start end &optional fill)
+  "Blank out rectangle with corners at point and mark (START and END when
+called from a program), shifting text right. The text previously in the region
+is not overwritten by the blanks, but instead winds up to the right of the
+rectangle.
+
+With a prefix (or a FILL) argument, fill with blanks even if there is no text
+on the right side of the rectangle."
+  (interactive "r\nP")
+  (apply-on-rectangle 'open-rectangle-line start end fill)
   (goto-char start))
 
-(defun open-rectangle-line (startpos begextra endextra)
-  ;; Column where rectangle ends.
-  (let ((endcol (+ (current-column) endextra))
-       whitewidth)
-    (goto-char startpos)
-    ;; Column where rectangle begins.
-    (let ((begcol (- (current-column) begextra)))
-      (skip-chars-forward " \t")
-      ;; Width of whitespace to be deleted and recreated.
-      (setq whitewidth (- (current-column) begcol)))
-    ;; Delete the whitespace following the start column.
-    (delete-region startpos (point))
-    ;; Open the desired width, plus same amount of whitespace we just deleted.
-    (indent-to (+ endcol whitewidth))))
+(defun open-rectangle-line (startcol endcol fill)
+  (let (spaces)
+    (when (= (move-to-column startcol (or fill 'coerce)) startcol)
+      (unless (and (not fill)
+                  (= (point) (point-at-eol)))
+       (indent-to endcol)))
+    ))
 
 ;;;###autoload
 (defun string-rectangle (start end string)
-  "Insert STRING on each line of the region-rectangle, shifting text right.
-The left edge of the rectangle specifies the column for insertion.
-This command does not delete or overwrite any existing text.
-
-Called from a program, takes three args; START, END and STRING."
+  "Insert STRING on each line of the rectangle with corners at point and mark
+(START and END when called from a program), shifting text right. The left edge
+of the rectangle specifies the column for insertion. This command does not
+delete or overwrite any existing text."
   (interactive "r\nsString rectangle: ")
-  (operate-on-rectangle 'string-rectangle-line start end t string)) ; XEmacs
-
-;; XEmacs: add string arg
-(defun string-rectangle-line (startpos begextra endextra string)
-  (let (whitespace)
-    (goto-char startpos)
-    ;; Compute horizontal width of following whitespace.
-    (let ((ocol (current-column)))
-      (skip-chars-forward " \t")
-      (setq whitespace (- (current-column) ocol)))
-    ;; Delete the following whitespace.
-    (delete-region startpos (point))
-    ;; Insert the desired string.
-    (insert string)
-    ;; Insert the same width of whitespace that we had before.
-    (indent-to (+ (current-column) whitespace))))
+  (apply-on-rectangle 'string-rectangle-line start end string))
+
+(defun string-rectangle-line (startcol endcol string)
+  (move-to-column startcol t)
+  (insert string))
 
 ;;;###autoload
-(defun clear-rectangle (start end)
-  "Blank out rectangle with corners at point and mark.
-The text previously in the region is overwritten by the blanks.
-When called from a program, requires two args which specify the corners."
-  (interactive "r")
-  (operate-on-rectangle 'clear-rectangle-line start end t))
-
-(defun clear-rectangle-line (startpos begextra endextra)
-  ;; Find end of whitespace after the rectangle.
-  (skip-chars-forward " \t")
-  (let ((column (+ (current-column) endextra)))
-    ;; Delete the text in the rectangle, and following whitespace.
-    (delete-region (point)
-                   (progn (goto-char startpos)
-                         (skip-chars-backward " \t")
-                         (point)))
-    ;; Reindent out to same column that we were at.
-    (indent-to column)))
+(defun clear-rectangle (start end &optional fill)
+  "Blank out the rectangle with corners at point and mark (START and END when
+called from a program). The text previously in the region is overwritten with
+blanks.
+
+With a prefix (or a FILL) argument, also fill with blanks the parts of the
+rectangle which were empty."
+  (interactive "r\nP")
+  (apply-on-rectangle 'clear-rectangle-line start end fill))
+
+(defun clear-rectangle-line (startcol endcol fill)
+  (let ((pt (point-at-eol))
+       spaces)
+    (when (= (move-to-column startcol (or fill 'coerce)) startcol)
+      (if (and (not fill)
+              (<= (save-excursion (goto-char pt) (current-column)) endcol))
+         (delete-region (point) pt)
+       ;; else
+       (setq pt (point))
+       (move-to-column endcol t)
+       (setq spaces (- (point) pt))
+       (delete-region pt (point))
+       (indent-to (+ (current-column) spaces))))
+    ))
 
 (provide 'rect)
 
index 0e45897..cbba11c 100644 (file)
@@ -2592,7 +2592,8 @@ indicating whether soft newlines should be inserted.")
                       bounce
                       ;; 97/3/14 jhod: Kinsoku
                       (re-break-point (if (featurep 'mule)
-                                           (concat "[ \t\n]\\|" word-across-newline)
+                                           (concat "[ \t\n]\\|" word-across-newline
+                                                   ".\\|." word-across-newline)
                                        "[ \t\n]"))
                       ;; end patch
                       (first t))
index 18a0e44..5c80dda 100644 (file)
@@ -54,7 +54,7 @@ customized through the options menu."
 
 (defcustom default-toolbar-position ;; added for the options menu - dverna
   (default-toolbar-position)
-  "The location of the default toolbar. It can be 'top, 'bootom, 'left or
+  "The location of the default toolbar. It can be 'top, 'bottom, 'left or
 'right. This option can be customized through the options menu."
   :group 'display
   :type '(choice (const :tag "top" 'top)
index 6788b03..9761ceb 100644 (file)
@@ -1,3 +1,7 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index fea4c9a..b0157a5 100644 (file)
@@ -1,3 +1,22 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-10  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+       * emodules.texi: Use @set emacs and @value{emacs} instead of
+       @macro (unsupported by texinfo package).  Remove stray @code.
+       * custom.texi: Add info extension to @setfilename.
+       * texinfo.texi: Ditto.
+       * widget.texi: Ditto.
+       * packages.texi: Reword a sentence, fixing @item Decide where to
+       install ...
+
+1999-07-19  Didier Verna  <verna@inf.enst.fr>
+
+       * custom.texi (Wishlist): removed the Custom Comments wishlist
+       entry. They are implemented.
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
 1998-09-03  Darryl Okahata  <darrylo@sr.hp.com>
 
        * xemacs/packages.texi: Correct and update package documentation.
-         Updated the package installation section to mention the visual 
+         Updated the package installation section to mention the visual
          package browser/installer.
 
 1998-08-31  Hrvoje Niksic  <hniksic@srce.hr>
 
        * xemacs/startup.texi: Small fixes, suggested by Hrvoje.
 
-       * xemacs/xemacs.texi: 
+       * xemacs/xemacs.texi:
        * xemacs/packages.texi: More packages documentation.
 
 1998-07-19  SL Baur  <steve@altair.xemacs.org>
 
 1998-06-20  Michael Sperber [Mr. Preprocessor]  <sperber@informatik.uni-tuebingen.de>
 
-       * xemacs/abbrevs.texi: 
-       * xemacs/basic.texi: 
-       * xemacs/buildings.texi: 
-       * xemacs/cmdargs.texi: 
-       * xemacs/files.texi: 
+       * xemacs/abbrevs.texi:
+       * xemacs/basic.texi:
+       * xemacs/buildings.texi:
+       * xemacs/cmdargs.texi:
+       * xemacs/files.texi:
        * xemacs/adjustments.texi: Adjustments to integrate startup.texi
        and packages.texi stuff.
 
-       * xemacs/startup.texi: 
+       * xemacs/startup.texi:
        * xemacs/packages.texi: Created.
 
 1998-06-10  Adrian Aichner  <aichner@ecf.teradyne.com>
 
 1998-06-13  Greg Klanderman  <greg@alphatech.com>
 
-       * lispref/windows.texi (Resizing Windows): document third optional 
+       * lispref/windows.texi (Resizing Windows): document third optional
        WINDOW argument to enlarge-window and shrink-window.
        (Selecting Windows): document select-window optional norecord
-       argument. 
+       argument.
        (Size of Window): document window-text-area-pixel-height and
-       window-text-area-pixel-width. 
+       window-text-area-pixel-width.
        (Size of Window): document window-displayed-text-pixel-height.
        (Position of Window): document window-text-area-pixel-edges.
 
 1998-05-13  Greg Klanderman  <greg@alphatech.com>
 
        * lispref/frames.texi (Input Focus): cleanup select-frame
-       documentation. 
+       documentation.
 
 1998-05-10  Oliver Graf <ograf@fga.de>
 
 
 1998-05-04  Martin Buchholz  <martin@xemacs.org>
 
-       * internals.texi (Techniques for XEmacs Developers): Add some more 
+       * internals.texi (Techniques for XEmacs Developers): Add some more
        comments on adding new files, inspired by Olivier Galibert.
 
 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
        * lispref/windows.texi (Vertical Scrolling): Fixup docstring for
        scroll-conservatively.
 
-       * lispref/loading.texi (Named Features): Document advanced args to 
+       * lispref/loading.texi (Named Features): Document advanced args to
        `feature'.
 
        * lispref/files.texi (File Name Expansion): Document that
        * lispref/os.texi (Time Conversion): Document that TIME may be
        omitted from format-time-string.
 
-       * lispref/strings.texi (String Conversion): Document BASE argument 
+       * lispref/strings.texi (String Conversion): Document BASE argument
        to `string-to-number'.
 
        * lispref/searching.texi (Syntax of Regexps): Fix up Perl
        stuff, including `display-message', `lmessage', `clear-message',
        (Warnings): Document warning stuff.
 
-       * lispref/commands.texi (Working With Events): Update `make-event' 
+       * lispref/commands.texi (Working With Events): Update `make-event'
        for misc-user events.
        (Using Interactive): Document `function-interactive'.
 
 
 1998-05-02  Hrvoje Niksic  <hniksic@srce.hr>
 
-       * lispref/numbers.texi (Comparison of Numbers): Document multi-arg 
+       * lispref/numbers.texi (Comparison of Numbers): Document multi-arg
        comparison functions.
 
 1998-04-30  Greg Klanderman  <greg@alphatech.com>
        setting of x-emacs-application-class.
 
        * lispref/x-windows.texi (Resources): update doc for
-       x-emacs-application-class. 
+       x-emacs-application-class.
 
 1998-02-20  Karl M. Hegbloom  <karlheg@bittersweet.inetarena.com>
 
@@ -915,4 +934,3 @@ Mon May 23 10:41:35 1988  Robert J. Chassell (bob at frosted-flakes.ai.mit.edu)
 
        * emacs.tex: Update information for obtaining TeX distribution from the
        University of Washington.
-
index 6f468a3..7990383 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo.tex
 
 @c %**start of header
-@setfilename ../info/custom
+@setfilename ../info/custom.info
 @settitle The Customization Library
 @iftex
 @afourpaper
@@ -25,13 +25,13 @@ and faces.  It doesn't contain any examples, but please look at the file
 @file{cus-edit.el} which contains many declarations you can learn from.
 
 @menu
-* Declaring Groups::            
-* Declaring Variables::         
-* Declaring Faces::             
-* Usage for Package Authors::   
-* Utilities::                   
-* The Init File::               
-* Wishlist::                    
+* Declaring Groups::
+* Declaring Variables::
+* Declaring Faces::
+* Usage for Package Authors::
+* Utilities::
+* The Init File::
+* Wishlist::
 @end menu
 
 All the customization declarations can be changes by keyword arguments.
@@ -39,19 +39,19 @@ Groups, variables, and faces all share these common keywords:
 
 @table @code
 @item :group
-@var{value} should be a customization group. 
-Add @var{symbol} to that group. 
+@var{value} should be a customization group.
+Add @var{symbol} to that group.
 @item :link
-@var{value} should be a widget type. 
+@var{value} should be a widget type.
 Add @var{value} to the external links for this customization option.
 Useful widget types include @code{custom-manual}, @code{info-link}, and
-@code{url-link}. 
+@code{url-link}.
 @item :load
 Add @var{value} to the files that should be loaded before displaying
 this customization option.  The value should be either a string, which
 should be a string which will be loaded with @code{load-library} unless
 present in @code{load-history}, or a symbol which will be loaded with
-@code{require}. 
+@code{require}.
 @item :tag
 @var{Value} should be a short string used for identifying the option in
 customization menus and buffers.  By default the tag will be
@@ -62,10 +62,10 @@ automatically created from the options name.
 @comment  node-name,  next,  previous,  up
 @section Declaring Groups
 
-Use @code{defgroup} to declare new customization groups. 
+Use @code{defgroup} to declare new customization groups.
 
 @defun defgroup symbol members doc [keyword value]...
-Declare @var{symbol} as a customization group containing @var{members}. 
+Declare @var{symbol} as a customization group containing @var{members}.
 @var{symbol} does not need to be quoted.
 
 @var{doc} is the group documentation.
@@ -78,7 +78,7 @@ editing faces, and @code{custom-group} for editing groups.@refill
 
 Internally, custom uses the symbol property @code{custom-group} to keep
 track of the group members, and @code{group-documentation} for the
-documentation string. 
+documentation string.
 
 The following additional @var{keyword}'s are defined:
 
@@ -106,7 +106,7 @@ If @var{symbol} is not already bound, initialize it to @var{value}.
 The following additional @var{keyword}'s are defined:
 
 @table @code
-@item :type     
+@item :type
 @var{value} should be a widget type.
 
 @item :options
@@ -122,7 +122,7 @@ Some predefined functions are:
 @item custom-initialize-set
 Use the @code{:set} method to initialize the variable.  Do not
 initialize it if already bound.  This is the default @code{:initialize}
-method. 
+method.
 
 @item custom-initialize-default
 Always use @code{set-default} to initialize the variable, even if a
@@ -135,10 +135,10 @@ method with the value returned by the @code{:get} method.
 @item custom-initialize-changed
 Like @code{custom-initialize-reset}, but use @code{set-default} to
 initialize the variable if it is not bound and has not been set
-already. 
+already.
 @end table
 
-@item :set 
+@item :set
 @var{value} should be a function to set the value of the symbol.  It
 takes two arguments, the symbol to set and the value to give it.  The
 default is @code{set-default}.
@@ -151,7 +151,7 @@ value for that symbol.  The default is @code{default-value}.
 @item :require
 @var{value} should be a feature symbol.  Each feature will be required
 when the `defcustom' is evaluated, or when Emacs is started if the user
-has saved this option. 
+has saved this option.
 
 @end table
 
@@ -180,7 +180,7 @@ member.  For other types variables, the effect is undefined."
 
 Faces are declared with @code{defface}.
 
-@defun defface face spec doc [keyword value]... 
+@defun defface face spec doc [keyword value]...
 
 Declare @var{face} as a customizable face that defaults to @var{spec}.
 @var{face} does not need to be quoted.
@@ -218,7 +218,7 @@ Should be one of @code{color}, @code{grayscale}, or @code{mono}.
 (what color is used for the background text)@*
 Should be one of @code{light} or @code{dark}.
 @end table
-  
+
 Internally, custom uses the symbol property @code{face-defface-spec} for
 the program specified default face properties, @code{saved-face} for
 properties saved by the user, and @code{face-documentation} for the
@@ -240,13 +240,13 @@ The top level group for the package should itself be member of one or
 more of the standard customization groups.  There exists a group for
 each @emph{finder} keyword.  Press @kbd{C-h p} to see a list of finder
 keywords, and add you group to each of them, using the @code{:group}
-keyword. 
+keyword.
 
 @node  Utilities, The Init File, Usage for Package Authors, Top
 @comment  node-name,  next,  previous,  up
 @section Utilities
 
-These utilities can come in handy when adding customization support. 
+These utilities can come in handy when adding customization support.
 
 @deffn Widget custom-manual
 Widget type for specifying the info manual entry for a customization
@@ -269,7 +269,7 @@ To the custom option @var{symbol} add the dependency @var{load}.
 
 @defun customize-menu-create symbol &optional name
 Create menu for customization group @var{symbol}.
-If optional @var{name} is given, use that as the name of the menu. 
+If optional @var{name} is given, use that as the name of the menu.
 Otherwise the menu will be named `Customize'.
 The menu is in a format applicable to @code{easy-menu-define}.
 @end defun
@@ -290,7 +290,7 @@ specified.
 @section Wishlist
 
 @itemize @bullet
-@item 
+@item
 Better support for keyboard operations in the customize buffer.
 
 @item
@@ -301,7 +301,7 @@ convincing example.
 
 @item
 Add an `examples' section, with explained examples of custom type
-definitions. 
+definitions.
 
 @item
 Support selectable color themes.  I.e., change many faces by setting one
@@ -316,13 +316,13 @@ Make it possible to append to `choice', `radio', and `set' options.
 
 @item
 Ask whether set or modified variables should be saved in
-@code{kill-buffer-hook}. 
+@code{kill-buffer-hook}.
 
 Ditto for @code{kill-emacs-query-functions}.
 
 @item
 Command to check if there are any customization options that
-does not belong to an existing group. 
+does not belong to an existing group.
 
 @item
 Optionally disable the point-cursor and instead highlight the selected
@@ -335,13 +335,9 @@ Explain why it is necessary that all choices have different default
 values.
 
 @item
-Make it possible to include a comment/remark/annotation when saving an
-option.
-
-@item
 Add some direct support for meta variables, i.e. make it possible to
 specify that this variable should be reset when that variable is
-changed. 
+changed.
 
 @item
 Add tutorial.
@@ -382,7 +378,7 @@ Add an easy way to display the standard settings when an item is modified.
 
 @item
 See if it is feasible to scan files for customization information
-instead of loading them, 
+instead of loading them,
 
 @item
 Add hint message when user push a non-pushable tag.
@@ -396,11 +392,11 @@ Use checkboxes and radio buttons in the state menus.
 @item
 Add option to hide @samp{[hide]} for short options.  Default, on.
 
-@item 
+@item
 Add option to hide @samp{[state]} for options with their standard
 settings.
 
-@item 
+@item
 There should be a way to specify site defaults for user options.
 
 @item
index d20ccfb..f6afa99 100644 (file)
 @c
 
 @ifset XEMACS
-@macro emacs
-XEmacs
-@end macro
+@set emacs XEmacs
 @clear EMACS
 @set HAVE_EMACS
 @end ifset
 
 @ifset EMACS
-@macro emacs
-Emacs
-@end macro
+@set emacs Emacs
 @clear XEMACS
 @set HAVE_EMACS
 @end ifset
 
 @ifclear HAVE_EMACS
 @set XEMACS
-@macro emacs
-XEmacs
-@end macro
+@set emacs XEmacs
 @end ifclear
 
 @ifinfo
-This file documents the module loading technology of @emacs{}.
+This file documents the module loading technology of @value{emacs}.
 
 Copyright @copyright{} 1998 J. Kean Johnston.
 
@@ -84,7 +78,7 @@ instead of in the original English.
 @finalout
 
 @titlepage
-@title Extending @emacs{} using C and C++
+@title Extending @value{emacs} using C and C++
 @subtitle Version 1.0, September 1998
 
 @author J. Kean Johnston
@@ -119,7 +113,7 @@ instead of in the original English.
 
 @ifinfo
 @node Top, Introduction, (dir), (dir)
-This Info file contains v1.0 of the @emacs{} dynamic loadable module
+This Info file contains v1.0 of the @value{emacs} dynamic loadable module
 support documentation.
 @menu
 * Introduction::                Introducing Emacs Modules
@@ -157,10 +151,10 @@ Defining Functions
 @node Introduction, Annatomy of a Module, Top, Top
 @chapter Introduction
 
-  @emacs{} is a powerful, extensible editor.  The traditional way of
-extending the functionality of @emacs{} is to use its built-in Lisp
+  @value{emacs} is a powerful, extensible editor.  The traditional way of
+extending the functionality of @value{emacs} is to use its built-in Lisp
 language (called Emacs Lisp, or Elisp for short).  However, while Elisp
-is a full programming language and capable of extending @emacs{} in more
+is a full programming language and capable of extending @value{emacs} in more
 ways than you can imagine, it does have its short-comings.
 
   Firstly, Elisp is an interpreted language, and this has serious speed
@@ -180,16 +174,16 @@ access to a system or need to be as quick as possible.
 @cindex DLL
 @cindex DSO
 @cindex shared object
-  This manual describes a new way of extending @emacs{}, by using dynamic
+  This manual describes a new way of extending @value{emacs}, by using dynamic
 loadable modules (also knows as dynamicaly loadable libraries (DLLs),
 dynamic shared objects (DSOs) or just simply shared objectcs), which can 
-be written in C or C++ and loaded into @emacs{} at any time.  I sometimes
+be written in C or C++ and loaded into @value{emacs} at any time.  I sometimes
 refer to this technology as @dfn{CEmacs}, which is short for @dfn{C
 Extensible Emacs}.
 
-  @emacs{} modules are configured into and installed with @emacs{} by
+  @value{emacs} modules are configured into and installed with @value{emacs} by
 default on all systems that support loading of shared objects.  From a
-users perspective, the internals of @emacs{} modules are irrelevant.
+users perspective, the internals of @value{emacs} modules are irrelevant.
 All a user will ever need to know about shared objects is the name of
 the shared object when they want to load a given module.  From a
 developers perspective though, a lot more is provided.
@@ -206,28 +200,28 @@ compile and link all objects that will make up the final shared object,
 and accepts all common C compiler flags.  @code{ellcc} also sets up the
 correct environment for compiling modules by enabling any special
 compiler modes (such as PIC mode), setting the correct include paths for 
-the location of @emacs{} internal header files etc.  The program will also
+the location of @value{emacs} internal header files etc.  The program will also
 invoke the linker correctly to created the final shared object which is
-loaded into @emacs{}.
+loaded into @value{emacs}.
 
 @item
 @cindex header files
-  CEmacs also makes all of the relevant @emacs{} internal header files
+  CEmacs also makes all of the relevant @value{emacs} internal header files
 availible for module authors to use.  This is often required to get data 
 structure definitions and external variable declarations.  The header
 files installed include the module specific header file
 @file{emodules.h}.  Due to the nature of dynamic modules, most of the
-internals of @emacs{} are exposed.
-@xref{Top,,,internals,@emacs{} Internals Manual}, for a 
-more complete discussion on how to extend and understand @emacs{}.  All of 
+internals of @value{emacs} are exposed.
+@xref{Top,,,internals,@value{emacs} Internals Manual}, for a 
+more complete discussion on how to extend and understand @value{emacs}.  All of 
 the rules for C modules are discussed there.
 
 @item
 @cindex samples
-  Part of the @emacs{} distribution is a set of sample modules.  These are
-not installed when @emacs{} is, but remain in the @emacs{} source tree.
+  Part of the @value{emacs} distribution is a set of sample modules.  These are
+not installed when @value{emacs} is, but remain in the @value{emacs} source tree.
 These modules live in the directory @file{modules}, which is a
-sub-directory of the main @emacs{} source code directory.  Please look at
+sub-directory of the main @value{emacs} source code directory.  Please look at
 the samples carefully, and maybe even use them as a basis for making
 your own modules.  Most of the concepts required for writing extension
 modules are covered in the samples.
@@ -236,19 +230,19 @@ modules are covered in the samples.
 @cindex documentation
 @cindex help
   Last, but not least is this manual.  This can be viewed from within
-@emacs{}, and it can be printed out as well.  It is the intention of this
+@value{emacs}, and it can be printed out as well.  It is the intention of this
 document that it will describe everything you need to know about
-extending @emacs{} in C.  If you do not find this to be the case, please
+extending @value{emacs} in C.  If you do not find this to be the case, please
 contact the author(s).
 @end itemize
 
   The rest of this document will discuss the actual mechanics of
-@emacs{} modules and work through several of the samples.  Please be
-sure that you have read the @emacs{} Internals Manual and understand
+@value{emacs} modules and work through several of the samples.  Please be
+sure that you have read the @value{emacs} Internals Manual and understand
 everything in it.  The concepts there apply to all modules.  This
 document may have some overlap, but it is the internals manual which
 should be considered the final authority.  It will also help a great
-deal to look at the actual @emacs{} source code to see how things are
+deal to look at the actual @value{emacs} source code to see how things are
 done.
 
 @node Annatomy of a Module, Using ellcc, Introduction, Top
@@ -259,12 +253,12 @@ done.
 @cindex module format
 @cindex format, module
 
-  Each dynamically loadable @emacs{} extension (hereafter refered to as a
+  Each dynamically loadable @value{emacs} extension (hereafter refered to as a
 module) has a certain compulsory format, and must contain several 
 pieces of information and several mandatory functions.  This chapter 
 describes the basic layout of a module, and provides a very simple
 sample.  The source for this sample can be found in the file
-@file{modules/simple/sample.c} in the main @emacs{} source code tree.
+@file{modules/simple/sample.c} in the main @value{emacs} source code tree.
 
 @menu
 * Required Header File::        Always include <emodules.h>
@@ -281,7 +275,7 @@ sample.  The source for this sample can be found in the file
 @cindex emodules.h
 @cindex config.h
   Every module must include the file @file{<emodules.h>}.  This
-will include several other @emacs{} internal header files, and will set up 
+will include several other @value{emacs} internal header files, and will set up 
 certain vital macros.  One of the most important files included by
 @file{emodules.h} is the generated @file{config.h} file, which contains
 all of the required system abstraction macros and definitions.  Most
@@ -290,9 +284,9 @@ constants defined in @file{config.h}.  Please read that file to
 familiarize yourself with the macros defined there.
 
   Depending on exactly what your module will be doing, you will probably 
-need to include one or more of the @emacs{} internal header files.  When
+need to include one or more of the @value{emacs} internal header files.  When
 you @code{#include <emodules.h>}, you will get a few of the most important 
-@emacs{} header files included automatically for you.  The files included
+@value{emacs} header files included automatically for you.  The files included
 are:
 
 @table @file
@@ -308,7 +302,7 @@ should use the abstraction macros provided in this header file.
 
 @item window.h
 This header file defines the window structures and Lisp types, and
-provides functions and macros for manipulating multiple @emacs{} windows.
+provides functions and macros for manipulating multiple @value{emacs} windows.
 
 @item buffer.h
 All macros and function declarations for manipulating internal and user
@@ -320,7 +314,7 @@ insertion and deletion.
 
 @item frame.h
 Provides the required structure, macro and function definitions for
-manipulating @emacs{} frames.
+manipulating @value{emacs} frames.
 @end table
 
 @node Required Functions, Required Variables, Required Header File, Annatomy of a Module
@@ -332,8 +326,8 @@ manipulating @emacs{} frames.
 Every module requires several initialization functions.  It is the
 responsibility of these functions to load in any dependant modules, and to 
 declare all variables and functions which are to be made visibile to the 
-@emacs{} Lisp reader.  Each of these functions performs a very specific
-task, and they are executed in the correct order by @emacs{}.  All of
+@value{emacs} Lisp reader.  Each of these functions performs a very specific
+task, and they are executed in the correct order by @value{emacs}.  All of
 these functions are @code{void} functions which take no arguments.
 Here, briefly, are the required module functions.  Note that the actual
 function names do not end with the string @code{_module}, but rather
@@ -356,12 +350,12 @@ This required function contains calls to macros such as
 @code{DEFVAR_LISP()}, @code{DEFVAR_BOOL()} etc, and its purpose is to
 declare and initialize all and any variables that your module defines.
 They syntax for declaring variables is identical to the syntax used for
-all internal @emacs{} source code.
+all internal @value{emacs} source code.
 
 @item modules_of_module
 @findex modules_of_module
 This optional function should be used to load in any modules which your
-module depends on.  The @emacs{} module loading code makes sure that the 
+module depends on.  The @value{emacs} module loading code makes sure that the 
 same module is not loaded twice, so several modules can safely call the
 module load function for the same module.  Only one copy of each module
 (at a given version) will ever be loaded.
@@ -391,14 +385,14 @@ discussed here simply for the sake of completeness.
 @table @code
 @item emodules_compiler
 This is a variable of type @code{long}, and is used to indicate the
-version of the @emacs{} loading technology that was used to produce the
+version of the @value{emacs} loading technology that was used to produce the
 module being loaded.  This version number is completely unrelated to
-the @emacs{} version number, as a given module may quite well work
-regardless of the version of @emacs{} that was installed at the time the 
+the @value{emacs} version number, as a given module may quite well work
+regardless of the version of @value{emacs} that was installed at the time the 
 module was created.
 
-The @emacs{} modules version is used to differentiate between major
-changes in the module loading technology, not versions of @emacs{}.
+The @value{emacs} modules version is used to differentiate between major
+changes in the module loading technology, not versions of @value{emacs}.
 
 @item emodules_name
 This is a short (typically 10 characters or less) name for the module,
@@ -442,7 +436,7 @@ modules, then this function can be left empty or even undeclared.
 However, if it does have dependnacies, it must call
 @code{emodules_load}:
 
-@example @code
+@example
 @cartouche
 int emodules_load (CONST char *module,
                    CONST char *modname,
@@ -484,12 +478,12 @@ previous successful calls to @code{emodules_load} at the top level.
 
 Before discussing the anatomy of a module in greater detail, you should
 be aware of the steps required in order to correctly compile and link a
-module for use within @emacs{}.  There is little difference between
+module for use within @value{emacs}.  There is little difference between
 compiling normal C code and compiling a module.  In fact, all that
 changes is the command used to compile the module, and a few extra
 arguments to the compiler.
 
-@emacs{} now ships with a new user utility, called @code{ellcc}.  This
+@value{emacs} now ships with a new user utility, called @code{ellcc}.  This
 is the @dfn{Emacs Loadable Library C Compiler}.  This is a wrapper
 program that will invoke the real C compiler with the correct arguments
 to compile and link your module.  With the exception of a few command
@@ -525,7 +519,7 @@ can force compile mode by specifying the @code{--mode=compile} argument
 to @code{ellcc}.
 
 In this mode, @code{ellcc} is simply a front-end to the same C compiler
-that was used to create the @emacs{} binary itself.  All @code{ellcc}
+that was used to create the @value{emacs} binary itself.  All @code{ellcc}
 does in this mode is insert a few extra command line arguments before
 the arguments you specify to @code{ellcc} itself.  @code{ellcc} will
 then invoke the C compiler to compile your module, and will return the
@@ -535,7 +529,7 @@ By far the easiest way to compile modules is to construct a
 @file{Makefile} as you would for a normal program, and simply insert, at 
 some appropriate place something similar to:
 
-@example @code
+@example
 @cartouche
 CC=ellcc --mode=compile
 
@@ -555,18 +549,18 @@ below for details).
 @cindex initialization
 @cindex documentation
 
-@emacs{} uses a rather bizarre way of documenting variables and
+@value{emacs} uses a rather bizarre way of documenting variables and
 functions.  Rather than have the documentation for compiled functions
 and variables passed as static strings in the source code, the
 documentation is included as a C comment.  A special program, called
 @file{make-docfile}, is used to scan the source code files and extract
-the documentation from these comments, producing the @emacs{} @file{DOC} 
+the documentation from these comments, producing the @value{emacs} @file{DOC} 
 file, which the internal help engine scans when the documentation for a
 function or variable is requested.
 
 Due to the internal construction of Lisp objects, subrs and other such
 things, adding documentation for a compiled function or variable in a
-compiled module, at any time after @emacs{} has been @dfn{dumped} is
+compiled module, at any time after @value{emacs} has been @dfn{dumped} is
 somewhat problematic.  Fortunately, as a module writer you are insulated 
 from the difficulties thanks to your friend @code{ellcc} and some
 internal trickery in the module loading code.  This is all done using
@@ -613,7 +607,7 @@ are scanned by @file{make-docfile}, and provide the information required
 to populate the @code{docs_of_module} function.  Below is a sample
 @file{Makefile} fragment which indicates how all of this is used.
 
-@example @code
+@example
 @cartouche
 CC=ellcc --mode=compile
 LD=ellcc --mode=link
@@ -651,11 +645,11 @@ sample_init.c: $(SRCS)
 The above @file{Makefile} is, in fact, complete, and would compile the
 sample module, and optionally install it.  The @code{--mod-location}
 argument to @code{ellcc} will produce, on the standard output, the base
-location of the @emacs{} module directory.  Each sub-directory of that
+location of the @value{emacs} module directory.  Each sub-directory of that
 directory is automatically searched for for modules when they are loaded
 with @code{load-module}.  An alternative location would be
 @file{/usr/local/lib/xemacs/site-modules}.  That path can change
-depending on the options the person who compiled @emacs{} chose, so you
+depending on the options the person who compiled @value{emacs} chose, so you
 can always determine the correct site location using the
 @code{--mod-site-location} option.  This directory is treated the same
 way as the main module directory.  Each sub-directory within it is
@@ -678,7 +672,7 @@ or linker, along with any other required arguments to create the
 loadable module.
 
 The module has complete access to all symbols that were present in the
-dumped @emacs{}, so you do not need to link against libraries that were
+dumped @value{emacs}, so you do not need to link against libraries that were
 linked in with the main executable.  If your library uses some other
 extra libraries, you will need to link with those.  There is nothing
 particularly complicated about link mode.  All you need to do is make
@@ -744,10 +738,10 @@ This will print the name of the site specific module location and exit.
 
 @item --mod-archdir
 Prints the name of the root of the architecture-dependant directory that 
-@emacs{} searches for architecture-dependant files.
+@value{emacs} searches for architecture-dependant files.
 
 @item --mod-config
-Prints the name of the configuration for which @emacs{} and @code{ellcc} 
+Prints the name of the configuration for which @value{emacs} and @code{ellcc} 
 were compiled.
 @end table
 
@@ -756,7 +750,7 @@ were compiled.
 @cindex environment variables
 
 During its normal operation, @code{ellcc} uses the compiler and linker
-flags that were determined at the time @emacs{} was configured.  In
+flags that were determined at the time @value{emacs} was configured.  In
 certain rare circumstances you may wish to over-ride the flags passed to 
 the compiler or linker, and you can do so using environment variables.
 The table below lists all of the environment variables that @code{ellcc} 
@@ -798,8 +792,8 @@ PIC mode, or the moral equivalent thereof on the target system.
 @cindex @code{ELLMAKEDOC}
 Sets the name of the @file{make-docfile} program to use.  Usually
 @code{ellcc} will use the version that was compiled and installed with
-@emacs{}, but this option allows you to specify an alternative path.
-Used during the compile phase of @emacs{} itself.
+@value{emacs}, but this option allows you to specify an alternative path.
+Used during the compile phase of @value{emacs} itself.
 @end table
 
 @node Defining Functions, Defining Variables, Using ellcc, Top
@@ -813,7 +807,7 @@ The term
 function and the way it appears to Lisp, which is a @dfn{subroutine}, or
 simply a @dfn{subr}.  A Lisp subr is also known as a Lisp primitive, but
 that term applies less to dynamic modules.  @xref{Writing Lisp
-Primitives,,,internals,@emacs{} Internals Manual}, for details on how to
+Primitives,,,internals,@value{emacs} Internals Manual}, for details on how to
 declare functions.  You should familiarize yourself with the
 instructions there.  The format of the function declaration is identical 
 in modules.
@@ -822,14 +816,14 @@ in modules.
 the documentation as a C comment.  During the build process, a program
 called @file{make-docfile} is run, which will extract all of these
 comments, build up a single large documentation file, and will store
-pointers to the start of each documentation entry in the dumped @emacs{}.
+pointers to the start of each documentation entry in the dumped @value{emacs}.
 This, of course, will not work for dynamic modules, as they are loaded
-long after @emacs{} has been dumped.  For this reason, we require a
+long after @value{emacs} has been dumped.  For this reason, we require a
 special means for adding documentation for new subrs.  This is what the
 macro @code{CDOCSUBR} is used for, and this is used extensively during
 @code{ellcc} initialization mode.
 
-  When using @code{DEFUN} in normal @emacs{} C code, the sixth
+  When using @code{DEFUN} in normal @value{emacs} C code, the sixth
 ``parameter'' is a C comment which documents the function.  For a
 dynamic module, we of course need to convert the C comment to a usable
 string, and we need to set the documentation pointer of the subr to this 
@@ -850,12 +844,12 @@ for this to happen.  It is all taken care of in the
 @cindex functions, defining
 
   Although the full syntax of a function declaration is discussed in the 
-@emacs{} internals manual in greater depth, what follows is a brief
+@value{emacs} internals manual in greater depth, what follows is a brief
 description of how to define and implement a new Lisp primitive in a
 module.  This is done using the @code{DEFUN} macro.  Here is a small
 example:
 
-@example @code
+@example
 @cartouche
 DEFUN ("my-function", Fmy_function, 1, 1, "FFile name: ", /*
 Sample Emacs primitive function.
@@ -886,7 +880,7 @@ respectively.  This is used to ensure that the correct number of
 arguments are passed to the function.  Next is the @code{interactive}
 definition.  If this function is meant to be run by a user
 interactively, then you need to specify the argument types and prompts
-in this string.  Please consult the @emacs{} Lisp manual for more
+in this string.  Please consult the @value{emacs} Lisp manual for more
 details.  Next comes a C comment that is the documentation for this
 function.  This comment @strong{must} exist.  Last comes the list of
 function argument names, if any.
@@ -908,13 +902,13 @@ function, which is the same as the second argument to the call to
 @code{DEFUN}.  Using the example function above, you would insert the
 following code in the @code{syms_of_module} function:
 
-@example @code
+@example
 @cartouche
 DEFSUBR(Fmy_function);
 @end cartouche
 @end example
 
-This call will instruct @emacs{} to make the function visible to the Lisp
+This call will instruct @value{emacs} to make the function visible to the Lisp
 reader and will prepare for the insertion of the documentation into
 the right place.  Once this is done, the user can call the Lisp
 function @code{my-function}, if it was defined as an interactive
@@ -922,7 +916,7 @@ function (which in this case it was).
 
 Thats all there is to defining and announcing new functions.  The rules
 for what goes inside the functions, and how to write good modules, is
-beyond the scope of this document.  Please consult the @emacs{}
+beyond the scope of this document.  Please consult the @value{emacs}
 internals manual for more details.
 
 @node Defining Variables, Index, Defining Functions, Top
@@ -941,7 +935,7 @@ internals manual for more details.
 common to also provide variables which can be used to control the
 behaviour of the function, or store the results of the function being
 executed.  The actual C variable types are the same for modules
-and internal @emacs{} primitives, and the declaration of the variables
+and internal @value{emacs} primitives, and the declaration of the variables
 is identical.
 
   @xref{Adding Global Lisp Variables,,,internals,XEmacs Internals Manual}, 
@@ -949,27 +943,27 @@ for more information on variables and naming conventions.
 
   Once your variables are defined, you need to initialize them and make
 the Lisp reader aware of them.  This is done in the
-@code{vars_of_module} initialization function using special @emacs{}
+@code{vars_of_module} initialization function using special @value{emacs}
 macros such as @code{DEFVAR_LISP}, @code{DEFVAR_BOOL}, @code{DEFVAR_INT} 
 etc.  The best way to see how to use these macros is to look at existing 
 source code, or read the internals manual.
 
-  One @emph{very} important difference between @emacs{} variables and
+  One @emph{very} important difference between @value{emacs} variables and
 module variables is how you use pure space.  Simply put, you
-@strong{never} use pure space in @emacs{} modules.  The pure space
+@strong{never} use pure space in @value{emacs} modules.  The pure space
 storage is of a limited size, and is initialized propperly during the
-dumping of @emacs{}.  Because variables are being added dynamically to
-an already running @emacs{} when you load a module, you cannot use pure
+dumping of @value{emacs}.  Because variables are being added dynamically to
+an already running @value{emacs} when you load a module, you cannot use pure
 space.  Be warned: @strong{do not use pure space in modules.  Repeat, do
 not use pure space in modules.}  Once again, to remove all doubts:
 @strong{DO NOT USE PURE SPACE IN MODULES!!!}
 
   Below is a small example which declares and initializes two
 variables.  You will note that this code takes into account the fact
-that this module may very well be compiled into @emacs{} itself.  This
+that this module may very well be compiled into @value{emacs} itself.  This
 is a prudent thing to do.
 
-@example @code
+@example
 @cartouche
 Lisp_Object Vsample_string;
 int sample_boolean;
index 0bc09a7..4690a34 100644 (file)
@@ -3,7 +3,7 @@
 @c %**start of header
 
 @c All text is ignored before the setfilename.
-@setfilename ../info/texinfo
+@setfilename ../info/texinfo.info
 @settitle Texinfo @value{edition}
 
 @c Edition number is now the same as the Texinfo distribution version number.
index 66159e5..46f2771 100644 (file)
@@ -1,7 +1,7 @@
 \input texinfo.tex
 
 @c %**start of header
-@setfilename ../info/widget
+@setfilename ../info/widget.info
 @settitle The Emacs Widget Library
 @iftex
 @afourpaper
index 4810382..fd4ac70 100644 (file)
@@ -6,8 +6,8 @@
 
 The XEmacs 21 distribution comes only with a very basic set of
 built-in modes and packages.  Most of the packages that were part of
-the distribution of earlier versions of XEmacs are now separately
-available.  The installer as well as the user can choose which
+the distribution of earlier versions of XEmacs are now available
+separately.  The installer as well as the user can choose which
 packages to install; the actual installation process is easy.
 This gives an installer the ability to tailor an XEmacs installation for
 local needs with safe removal of unnecessary code.
@@ -283,7 +283,8 @@ To install binary packages manually:
 Download the package(s) that you want to install.  Each binary package
 will typically be a gzip'd tarball.
 
-@item Decide where to install the packages: in the system package
+@item
+Decide where to install the packages: in the system package
 directory, or in @file{~/.xemacs/mule-packages} or
 @file{~/.xemacs/xemacs-packages}, respectively.  If you want to install
 the packages in the system package directory, make sure you can write
index 23a19a8..9d66963 100644 (file)
@@ -1,3 +1,18 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-10  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+       * xemacs.mak (.SUFFIXES): Add .texi.
+       (check): Improve automated test section.
+       (info): Generate info files using XEmacs (no makeinfo.exe needed).
+
+1999-07-19  Andy Piper  <andy@xemacs.org>
+
+       * xemacs.mak (DOC_SRC3): add gutter.c
+       (TEMACS_OBJS): add gutter.obj.
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index 1291b43..31733b5 100644 (file)
@@ -553,6 +553,7 @@ DOC_SRC3=\
  $(XEMACS)\src\glyphs-widget.c \
  $(XEMACS)\src\gmalloc.c \
  $(XEMACS)\src\gui.c  \
+ $(XEMACS)\src\gutter.c \
  $(XEMACS)\src\hash.c \
  $(XEMACS)\src\imgproc.c \
  $(XEMACS)\src\indent.c \
@@ -800,6 +801,7 @@ TEMACS_OBJS= \
        $(OUTDIR)\glyphs-widget.obj \
        $(OUTDIR)\gmalloc.obj \
        $(OUTDIR)\gui.obj \
+       $(OUTDIR)\gutter.obj \
        $(OUTDIR)\hash.obj \
        $(OUTDIR)\indent.obj \
        $(OUTDIR)\imgproc.obj \
@@ -850,7 +852,7 @@ TEMACS_OBJS= \
 # Rules
 
 .SUFFIXES:
-.SUFFIXES:     .c
+.SUFFIXES:     .c .texi
 
 # nmake rule
 !if $(DEBUG_XEMACS)
@@ -890,10 +892,10 @@ $(OUTDIR)\xemacs.res: xemacs.rc
 
 # Section handling automated tests starts here
 
-SRCDIR=../src
-PROGNAME=xemacs
+SRCDIR=..\src
+PROGNAME=$(SRCDIR)\xemacs.exe
 blddir=$(MAKEDIR:\=\\)\\..
-temacs_loadup=temacs -batch -l $(SRCDIR)/../lisp/loadup.el
+temacs_loadup=$(TEMACS) -batch -l $(SRCDIR)/../lisp/loadup.el
 dump_temacs   = $(temacs_loadup) dump
 run_temacs    = $(temacs_loadup) run-temacs
 ## We have automated tests!!
@@ -903,7 +905,7 @@ batch_test_emacs=-batch -l $(testdir)/test-harness.el -f batch-test-emacs $(test
 # .PHONY: check check-temacs
 
 check:
-       @cd $(SRCDIR)
+       cd $(SRCDIR)
        $(PROGNAME) $(batch_test_emacs)
 
 check-temacs:
@@ -914,6 +916,176 @@ check-temacs:
 
 # Section handling automated tests ends here
 
+# Section handling info starts here
+MAKEINFO=$(PROGNAME) -no-site-file -no-init-file -batch -l texinfmt -f batch-texinfo-format
+
+MANDIR = $(XEMACS)\man
+INFODIR = $(XEMACS)\info
+INFO_FILES= \
+       $(INFODIR)\cl.info \
+       $(INFODIR)\custom.info \
+       $(INFODIR)\emodules.info \
+       $(INFODIR)\external-widget.info \
+       $(INFODIR)\info.info \
+       $(INFODIR)\standards.info \
+       $(INFODIR)\term.info \
+       $(INFODIR)\termcap.info \
+       $(INFODIR)\texinfo.info \
+       $(INFODIR)\widget.info \
+       $(INFODIR)\xemacs-faq.info \
+       $(INFODIR)\xemacs.info \
+       $(INFODIR)\lispref.info \
+       $(INFODIR)\new-users-guide.info \
+       $(INFODIR)\internals.info
+
+{$(MANDIR)}.texi{$(INFODIR)}.info:
+       $(MAKEINFO) $**
+
+$(INFODIR)\xemacs.info:        $(MANDIR)\xemacs\xemacs.texi
+       $(MAKEINFO) $**
+
+$(MANDIR)\xemacs\xemacs.texi: \
+       $(MANDIR)\xemacs\abbrevs.texi \
+       $(MANDIR)\xemacs\basic.texi \
+       $(MANDIR)\xemacs\buffers.texi \
+       $(MANDIR)\xemacs\building.texi \
+       $(MANDIR)\xemacs\calendar.texi \
+       $(MANDIR)\xemacs\cmdargs.texi \
+       $(MANDIR)\xemacs\custom.texi \
+       $(MANDIR)\xemacs\display.texi \
+       $(MANDIR)\xemacs\entering.texi \
+       $(MANDIR)\xemacs\files.texi \
+       $(MANDIR)\xemacs\fixit.texi \
+       $(MANDIR)\xemacs\glossary.texi \
+       $(MANDIR)\xemacs\gnu.texi \
+       $(MANDIR)\xemacs\help.texi \
+       $(MANDIR)\xemacs\indent.texi \
+       $(MANDIR)\xemacs\keystrokes.texi \
+       $(MANDIR)\xemacs\killing.texi \
+       $(MANDIR)\xemacs\\xemacs.texi \
+       $(MANDIR)\xemacs\m-x.texi \
+       $(MANDIR)\xemacs\major.texi \
+       $(MANDIR)\xemacs\mark.texi \
+       $(MANDIR)\xemacs\menus.texi \
+       $(MANDIR)\xemacs\mini.texi \
+       $(MANDIR)\xemacs\misc.texi \
+       $(MANDIR)\xemacs\mouse.texi \
+       $(MANDIR)\xemacs\new.texi \
+       $(MANDIR)\xemacs\picture.texi \
+       $(MANDIR)\xemacs\programs.texi \
+       $(MANDIR)\xemacs\reading.texi \
+       $(MANDIR)\xemacs\regs.texi \
+       $(MANDIR)\xemacs\frame.texi \
+       $(MANDIR)\xemacs\search.texi \
+       $(MANDIR)\xemacs\sending.texi \
+       $(MANDIR)\xemacs\text.texi \
+       $(MANDIR)\xemacs\trouble.texi \
+       $(MANDIR)\xemacs\undo.texi \
+       $(MANDIR)\xemacs\windows.texi \
+
+
+$(INFODIR)\lispref.info:       $(MANDIR)\lispref\lispref.texi
+       copy $(MANDIR)\lispref\index.perm $(MANDIR)\lispref\index.texi
+       $(MAKEINFO) $**
+
+$(MANDIR)\lispref\lispref.texi: \
+       $(MANDIR)\lispref\abbrevs.texi \
+       $(MANDIR)\lispref\annotations.texi \
+       $(MANDIR)\lispref\back.texi \
+       $(MANDIR)\lispref\backups.texi \
+       $(MANDIR)\lispref\buffers.texi \
+       $(MANDIR)\lispref\building.texi \
+       $(MANDIR)\lispref\commands.texi \
+       $(MANDIR)\lispref\compile.texi \
+       $(MANDIR)\lispref\consoles-devices.texi \
+       $(MANDIR)\lispref\control.texi \
+       $(MANDIR)\lispref\databases.texi \
+       $(MANDIR)\lispref\debugging.texi \
+       $(MANDIR)\lispref\dialog.texi \
+       $(MANDIR)\lispref\display.texi \
+       $(MANDIR)\lispref\edebug-inc.texi \
+       $(MANDIR)\lispref\edebug.texi \
+       $(MANDIR)\lispref\errors.texi \
+       $(MANDIR)\lispref\eval.texi \
+       $(MANDIR)\lispref\extents.texi \
+       $(MANDIR)\lispref\faces.texi \
+       $(MANDIR)\lispref\files.texi \
+       $(MANDIR)\lispref\frames.texi \
+       $(MANDIR)\lispref\functions.texi \
+       $(MANDIR)\lispref\glyphs.texi \
+       $(MANDIR)\lispref\hash-tables.texi \
+       $(MANDIR)\lispref\help.texi \
+       $(MANDIR)\lispref\hooks.texi \
+       $(MANDIR)\lispref\index.texi \
+       $(MANDIR)\lispref\internationalization.texi \
+       $(MANDIR)\lispref\intro.texi \
+       $(MANDIR)\lispref\keymaps.texi \
+       $(MANDIR)\lispref\ldap.texi \
+       $(MANDIR)\lispref\lists.texi \
+       $(MANDIR)\lispref\loading.texi \
+       $(MANDIR)\lispref\locals.texi \
+       $(MANDIR)\lispref\macros.texi \
+       $(MANDIR)\lispref\maps.texi \
+       $(MANDIR)\lispref\markers.texi \
+       $(MANDIR)\lispref\menus.texi \
+       $(MANDIR)\lispref\minibuf.texi \
+       $(MANDIR)\lispref\modes.texi \
+       $(MANDIR)\lispref\mouse.texi \
+       $(MANDIR)\lispref\mule.texi \
+       $(MANDIR)\lispref\numbers.texi \
+       $(MANDIR)\lispref\objects.texi \
+       $(MANDIR)\lispref\os.texi \
+       $(MANDIR)\lispref\positions.texi \
+       $(MANDIR)\lispref\processes.texi \
+       $(MANDIR)\lispref\range-tables.texi \
+       $(MANDIR)\lispref\scrollbars.texi \
+       $(MANDIR)\lispref\searching.texi \
+       $(MANDIR)\lispref\sequences.texi \
+       $(MANDIR)\lispref\specifiers.texi \
+       $(MANDIR)\lispref\streams.texi \
+       $(MANDIR)\lispref\strings.texi \
+       $(MANDIR)\lispref\symbols.texi \
+       $(MANDIR)\lispref\syntax.texi \
+       $(MANDIR)\lispref\text.texi \
+       $(MANDIR)\lispref\tips.texi \
+       $(MANDIR)\lispref\toolbar.texi \
+       $(MANDIR)\lispref\tooltalk.texi \
+       $(MANDIR)\lispref\variables.texi \
+       $(MANDIR)\lispref\windows.texi \
+       $(MANDIR)\lispref\x-windows.texi \
+       $(MANDIR)\lispref\index.unperm \
+       $(MANDIR)\lispref\index.perm \
+
+
+$(INFODIR)\new-users-guide.info:       $(MANDIR)\new-users-guide\new-users-guide.texi
+       $(MAKEINFO) $**
+
+$(MANDIR)\new-users-guide\new-users-guide.texi: \
+       $(MANDIR)\new-users-guide\custom1.texi \
+       $(MANDIR)\new-users-guide\files.texi \
+       $(MANDIR)\new-users-guide\region.texi \
+       $(MANDIR)\new-users-guide\custom2.texi \
+       $(MANDIR)\new-users-guide\help.texi \
+       $(MANDIR)\new-users-guide\search.texi \
+       $(MANDIR)\new-users-guide\edit.texi \
+       $(MANDIR)\new-users-guide\modes.texi \
+       $(MANDIR)\new-users-guide\xmenu.texi \
+       $(MANDIR)\new-users-guide\enter.texi \
+
+
+$(INFODIR)\internals.info:     $(MANDIR)\internals\internals.texi
+       copy $(MANDIR)\internals\index.perm $(MANDIR)\internals\index.texi
+       $(MAKEINFO) $**
+
+$(MANDIR)\internals\internals.texi: \
+       $(MANDIR)\internals\index.unperm \
+       $(MANDIR)\internals\index.perm \
+
+
+info:  $(INFO_FILES)
+
+# Section handling info ends here
+
 #------------------------------------------------------------------------------
 
 # LISP bits 'n bobs
@@ -952,7 +1124,7 @@ dump-xemacs: $(TEMACS)
 
 # use this rule to build the complete system
 all:   $(XEMACS)\Installation $(OUTDIR)\nul $(LASTFILE) $(LWLIB) $(LIB_SRC_TOOLS) $(RUNEMACS) \
-       $(TEMACS) update-elc $(DOC) dump-xemacs
+       $(TEMACS) update-elc $(DOC) dump-xemacs info
 
 temacs: $(TEMACS)
 
@@ -1015,6 +1187,8 @@ distclean:
        del $(CONFIG_VALUES)
        cd $(LISP)
        -del /s /q *.bak *.elc *.orig *.rej
+       cd $(INFODIR)
+       del *.info* $(MANDIR)\internals\index.texi $(MANDIR)\lispref\index.texi
 
 depend:
        mkdepend -f xemacs.mak -p$(OUTDIR)\ -o.obj -w9999 -- $(TEMACS_CPP_FLAGS) --  $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(LASTFILE_SRC)\lastfile.c $(LIB_SRC)\make-docfile.c $(LIB_SRC)\run.c
index 3d138f8..5298af7 100644 (file)
@@ -1,3 +1,23 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
+1999-07-27  Jeff Miller  <jmiller@smart.net>
+
+       * add a "#ifdef HAVE_MENUBARS"  wrapper to gui.c around 
+         menubar_show_keybindings.
+
+1999-07-23  SL Baur  <steve@miho>
+
+       * mule-charset.c (syms_of_mule_charset): Delete duplicated
+       definition of Qccl_program.
+
+       * mule-ccl.h: Make a global declaration of it here.
+
+1999-07-20  Bob Weiner  <weiner@beopen.com>
+
+       * s/sco7.h: Added from rr@sco.com.
+
 1999-06-25  MORIOKA Tomohiko  <tomo@etl.go.jp>
 
        * mule-ccl.c (ccl_driver): Fix `CCL_WriteMultibyteChar2'.
        (ccl_driver): New case lable `CCL_Extention'.
        (setup_ccl_program): Initialize the member `private_state' of CCL.
 
+1999-07-08  Katsumi Yamaoka <yamaoka@jpl.org>
+
+       * keymap.c (copy_keymap_internal): Inherit the default binding.
+
+1999-07-14  Kazuyuki IENAGA <kazz@imasy.or.jp>
+
+       * event-Xt.c (handle_focus_event_1): Re-enable Motif/XIM to get
+       focus the event (XIM_focus_event).
+       (emacs_Xt_handle_magic_event): No side effect on Motif/XIM because 
+       XIM_SetGeometry does nothing in input_method_motif.c, but re-unify
+       the interface for future use (XIM_SetGeometry).
+       * redisplay-x.c (x_output_string): Re-enable Motif/XIM to set spot 
+       location (XIM_SetSpotLocation).
+       (x_output_eol_cursor): Ditto.
+
+1999-07-17  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+       * gdbinit (pobj): change lrecord_foo to &lrecord_foo to match
+       Olivier's change to lrecord.h of 1999-04-22
+
+1999-07-20  Robert Pluim  <rpluim@bigfoot.com>
+
+       * gutter.c (redraw_exposed_gutter): Change type of pos from
+       enum toolbar_pos -> enum gutter_pos, since former is only defined
+       if toolbar support is.
+
+1999-07-19  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-x.c (x_resize_subwindow): cope with widgets as well as
+       subwindows.
+
+       * gutter.c (gutter_validate): new function for the gutter specifier.
+       (specifier_type_create_gutter): declare specifier validator.
+
+       * buffer.h (INC_CHARBYTIND): add for no error checking version.
+
+1999-07-18  Andy Piper  <andy@xemacs.org>
+
+       * redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
+
+       * glyphs-msw.c (console_type_create_glyphs_mswindows): add
+       resize_subwindow.
+       (mswindows_resize_subwindow): new function.
+
+       * gutter.c (redraw_exposed_gutter): only reset the
+       current_display_lines if non-zero.
+       (Fgutter_pixel_height): new function.
+       (Fgutter_pixel_width): new function.
+
+       * event-msw.c (mswindows_wnd_proc): set the mask of the parameter
+       we want to retrive from the tab control.
+
+1999-07-17  Andy Piper  <andy@xemacs.org>
+
+       * window.c (change_window_height): mark gutters changed when we're
+       done.
+
+       * gutter.c (specifier_vars_of_gutter): make defaults more
+       sensible.
+
+       * gutter.h (WINDOW_REAL_GUTTER_BORDER_WIDTH): adjust to be 0 for 0
+       height gutter.
+       (DEFAULT_GUTTER_WIDTH): change.
+       (DEFAULT_GUTTER_BORDER_WIDTH): change.
+
+1999-07-18  Andy Piper  <andy@xemacs.org>
+
+       * redisplay.c (add_emchar_rune): use XSTRING_DATA not string_data.
+
+1999-07-16  Andy Piper  <andy@xemacs.org>
+
+       * frame.c (Fmake_frame): call init_frame_gutters().
+
+       * redisplay.c (add_emchar_rune): use string functions if we are
+       working with a string.
+       (position_redisplay_data_type): add string element.
+
+1999-07-15  Andy Piper  <andy@xemacs.org>
+
+       * winslots.h: add real_gutter_size slots to hold the actual gutter
+       size. This is important for autodetected sizes.
+
+       * gutter.c (calculate_gutter_size): calculate size for gutters
+       that have 'autodetect size.
+
+       * redisplay-msw.c (mswindows_output_vertical_divider): adjust
+       extent of divider for gutters.
+
+       * redisplay-x.c (x_output_vertical_divider): adjust extent of
+       divider for gutters.
+
+       * scrollbar.c (update_scrollbar_instance): adjust scrollbar
+       position to take into account the gutters.
+
+       * redisplay.c (generate_modeline): adjust modeline position to
+       take into account the gutters.
+
+1999-07-14  Andy Piper  <andy@xemacs.org>
+
+       * gutter.c (frame_topmost_window): new function.
+       (frame_bottommost_window): ditto.
+       (frame_leftmost_window): ditto.
+       (frame_rightmost_window): ditto.
+
+1999-07-13  Andy Piper  <andy@xemacs.org>
+
+       * redisplay.c (calculate_display_line_boundaries): use text
+       boundaries so that gutters get handled properly.
+
+1999-07-12  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-x.c (x_widget_instantiate): set the font Motif-style if
+       we're using Motif.
+
+       * redisplay-output.c (redisplay_clear_to_window_end): generalised
+       from redisplay-x.c
+
+       * redisplay-x.c (redisplay_clear_to_window_end): moved to
+       redisplay.c
+       
+       * redisplay-msw.c (redisplay_clear_to_window_end): deleted.
+
+       * gutter.c: new file - implements gutters. All new functions are
+       semantically equivalent to the toolbar functions.
+       (gutter_was_visible): new function.
+       (get_gutter_coords): ditto.
+       (output_gutter): ditto.
+       (clear_gutter): ditto.
+       (update_frame_gutters): ditto.
+       (redraw_exposed_gutter): ditto.
+       (redraw_exposed_gutters): ditto.
+       (free_frame_gutters): ditto.
+       (init_frame_gutters): ditto.
+       (decode_gutter_position): ditto.
+       (Fset_default_gutter_position): ditto.
+       (Fset_default_gutter_position): ditto.
+       (Fdefault_gutter_position): ditto.
+       (gutter_after_change): ditto.
+       (Fgutter_specifier_p): ditto.
+       (recompute_overlaying_specifier): ditto.
+       (gutter_specs_changed): ditto.
+       (default_gutter_specs_changed): ditto.
+       (gutter_geometry_changed_in_window): ditto.
+       (default_gutter_size_changed_in_window): ditto.
+       (default_gutter_border_width_changed_in_window): ditto.
+       (default_gutter_visible_p_changed_in_window): ditto.
+       (syms_of_gutter): ditto.
+       (vars_of_gutter): ditto.
+       (specifier_type_create_gutter): ditto.
+       (specifier_vars_of_gutter): ditto.
+
+       * gutter.h: new file. Contains gutter constants and sizing macros
+       similar to those for the toolbar.
+
+       * winslots.h: add gutter variables.
+
+       * window.h: declare window_is_* functions.
+
+       * window.c (window_is_lowest): make non-static.
+       (window_is_highest): ditto.
+       (window_top_toolbar_height): deleted.
+       (window_bottom_toolbar_height): deleted.
+       (window_left_toolbar_width): deleted.
+       (window_right_toolbar_width): deleted.
+       (window_top_gutter_height): add gutter sizing.
+       (window_bottom_gutter_height): ditto.
+       (window_left_gutter_width): ditto.
+       (window_right_gutter_width): ditto.
+
+       * symsinit.h: declarations for gutters vars etc.
+
+       * search.c (bi_find_next_emchar_in_string): new function.
+
+       * scrollbar.c (update_scrollbar_instance): remove reference to
+       window_bottom_toolbar_height which did nothing.
+
+       * redisplay.h (struct display_line): add face indices for
+       overriding defaults in output_display_line.
+       Add gutter_changed flags and declarations.
+
+       * redisplay.c (create_string_text_block): new function, similar to
+       create_text_block but for strings. Display tables etc are used
+       from the currently selected window.
+       (generate_string_display_line): ditto. Similar to
+       generate_display_line.
+       (generate_displayable_area): generate display lines for a given
+       area on a frame. Input is the string, with associated extents, to
+       display.
+       (redisplay_frame): add gutter_changed check.
+       (redisplay_device): ditto.
+       (redisplay_without_hooks): ditto.
+
+       * redisplay-x.c (bevel_modeline): moved to redisplay.c.
+       (x_redraw_exposed_area): redraw exposed gutters.
+       (x_bevel_area): new redisplay device method.
+       (x_type_create_redisplay_mswindows): add bevel_area device method.
+       (x_output_display_block): fiddly Martin-style cleanup.
+       (x_output_vertical_divider): use bevel_area.
+
+       * redisplay-output.c (output_display_line): check display_lines
+       for face information before using defaults.
+       (bevel_modeline): new function, calls bevel_area with appropriate
+       values.
+
+       * redisplay-msw.c (bevel_modeline): moved to redisplay.c.
+       (mswindows_redraw_exposed_area): redraw exposed gutters.
+       (mswindows_bevel_area): new redisplay device method.
+       (console_type_create_redisplay_mswindows): add bevel_area device
+       method.
+
+       * indent.c (string_column_at_point): add column_at_point but for
+       strings.
+
+       * glyphs-x.c (image_instantiator_format_create_glyphs_x): only
+       instantiate widgets that we have a toolkit for.
+
+       * general.c: add Qgutter.
+
+       * frame.h (struct frame): add display lines for gutters and
+       visibility flags.
+
+       * frame.c (set_frame_selected_window): mark gutters changed.
+
+       * emacs.c (main_1): add gutter initialisation.
+
+       * device.h (struct device): add gutter_changed flag and macros to
+       manipulate it.
+
+       * console.h (struct console_methods): new bevel area redisplay
+       method.
+
+       * buffer.h (REAL_INC_CHARBYTIND): new macro for strings as
+       REAL_INC_BYTIND is for buffers.
+       (INC_CHARPTR): ditto.
+
+       * Makefile.in.in (objs): add gutter.o
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index 7c28cb1..8a02b11 100644 (file)
@@ -176,7 +176,7 @@ objs=\
  event-stream.o extents.o faces.o\
  fileio.o $(LOCK_OBJ) filemode.o floatfns.o fns.o font-lock.o\
  frame.o general.o glyphs.o glyphs-eimage.o glyphs-widget.o\
- gui.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
+ gui.o gutter.o $(gui_objs) hash.o imgproc.o indent.o insdel.o intl.o\
  keymap.o $(RTC_patch_objs) line-number.o lread.o lstream.o\
  macros.o marker.o md5.o minibuf.o objects.o opaque.o\
  print.o process.o profile.o\
index 9347064..11c037e 100644 (file)
@@ -409,6 +409,9 @@ for (mps_bufcons = Qunbound,                                                        \
 #define REAL_INC_CHARPTR(ptr) \
   ((void) ((ptr) += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr))))
 
+#define REAL_INC_CHARBYTIND(ptr,pos) \
+  (pos += REP_BYTES_BY_FIRST_BYTE (* (unsigned char *) (ptr)))
+
 #define REAL_DEC_CHARPTR(ptr) do {     \
   (ptr)--;                             \
 } while (!VALID_CHARPTR_P (ptr))
@@ -419,6 +422,11 @@ for (mps_bufcons = Qunbound,                                                       \
   REAL_INC_CHARPTR (ptr);              \
 } while (0)
 
+#define INC_CHARBYTIND(ptr,pos) do {           \
+  ASSERT_VALID_CHARPTR (ptr);          \
+  REAL_INC_CHARBYTIND (ptr,pos);               \
+} while (0)
+
 #define DEC_CHARPTR(ptr) do {                  \
   CONST Bufbyte *dc_ptr1 = (ptr);              \
   CONST Bufbyte *dc_ptr2 = dc_ptr1;            \
@@ -429,6 +437,7 @@ for (mps_bufcons = Qunbound,                                                        \
 } while (0)
 
 #else /* ! ERROR_CHECK_BUFPOS */
+#define INC_CHARBYTIND(ptr,pos) REAL_INC_CHARBYTIND (ptr,pos)
 #define INC_CHARPTR(ptr) REAL_INC_CHARPTR (ptr)
 #define DEC_CHARPTR(ptr) REAL_DEC_CHARPTR (ptr)
 #endif /* ! ERROR_CHECK_BUFPOS */
index d551141..e19c15a 100644 (file)
@@ -155,6 +155,7 @@ struct console_methods
                            int duration);
   void (*frame_redraw_cursor_method) (struct frame *f);
   void (*set_final_cursor_coords_method) (struct frame *, int, int);
+  void (*bevel_area_method) (struct window *, face_index, int, int, int, int, int);
 
   /* color methods */
   int (*initialize_color_instance_method) (struct Lisp_Color_Instance *,
index 9831f13..4d9d637 100644 (file)
@@ -8,8 +8,8 @@ LISP_UNION_H=lisp-disunion.h
 LISP_H = lisp.h config.h $(LISP_UNION_H)
 #ifdef HAVE_MS_WINDOWS
 console-msw.o: $(LISP_H) conslots.h console-msw.h console.h events.h lisp-disunion.h lisp-union.h lrecord.h opaque.h symeval.h symsinit.h systime.h
-device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
-dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
+device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
+dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
 event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
 frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
@@ -17,9 +17,9 @@ glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h d
 gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 menubar-msw.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-msw.h console.h device.h elhash.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h menubar-msw.h menubar.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 objects-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h specifier.h symeval.h symsinit.h
-redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h
+redisplay-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h debug.h device.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h window.h winslots.h
 scrollbar-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
-select-msw.o: $(LISP_H) conslots.h console-msw.h console.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+select-msw.o: $(LISP_H) conslots.h console-msw.h console.h lisp-disunion.h lisp-union.h lrecord.h select.h symeval.h symsinit.h
 toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-msw.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 #endif
 #ifdef HAVE_X_WINDOWS
@@ -28,14 +28,15 @@ console-x.o: $(LISP_H) conslots.h console-x.h console.h lisp-disunion.h lisp-uni
 device-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmu.h
 dialog-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 frame-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h EmacsManager.h EmacsShell.h ExternalShell.h buffer.h bufslots.h conslots.h console-x.h console.h device.h dragdrop.h events-mod.h events.h extents.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h offix-types.h offix.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h xmu.h
-glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h conslots.h console-x.h console.h device.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
-gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
+glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h bitmaps.h buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h xintrinsic.h xmu.h
+gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
 input-method-xfs.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 input-method-xlib.o: $(LISP_H) EmacsFrame.h buffer.h bufslots.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h events.h frame.h frameslots.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h xintrinsic.h
 objects-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h specifier.h symeval.h symsinit.h xintrinsic.h
-redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
+redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h conslots.h console-x.h console.h debug.h device.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-ccl.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysproc.h systime.h toolbar.h window.h winslots.h xgccache.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar-x.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h
+select-x.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h systime.h toolbar.h xintrinsic.h
 toolbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.h buffer.h bufslots.h conslots.h console-x.h console.h device.h faces.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h xintrinsic.h xintrinsicp.h xmprimitivep.h
 #endif
 #ifdef HAVE_DATABASE
@@ -76,14 +77,14 @@ cm.o: $(LISP_H) conslots.h console-tty.h console.h device.h frame.h frameslots.h
 cmdloop.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 cmds.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
 console-stream.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-console-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gpmevent.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h
+console-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h faces.h file-coding.h frame.h frameslots.h glyphs.h gpmevent.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systty.h toolbar.h
 console.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
 data.o: $(LISP_H) buffer.h bufslots.h bytecode.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfloat.h syssignal.h
 debug.o: $(LISP_H) bytecode.h debug.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 device-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-stream.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h
 device.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h window.h winslots.h
 dgif_lib.o: gifrlib.h
-dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
+dialog.o: $(LISP_H) conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 dired.o: $(LISP_H) buffer.h bufslots.h commands.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h opaque.h regex.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h syspwd.h systime.h
 doc.o: $(LISP_H) buffer.h bufslots.h bytecode.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h sysfile.h
 doprnt.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h
@@ -98,7 +99,7 @@ emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules
 eval.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h commands.h conslots.h console.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h
 event-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h blocktype.h buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h dragdrop.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-x.h objects.h offix-types.h offix.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h toolbar.h xintrinsic.h xintrinsicp.h
 event-stream.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h blocktype.h buffer.h bufslots.h commands.h conslots.h console-x.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui-x.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syssignal.h systime.h toolbar.h window.h winslots.h xintrinsic.h
-event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h process.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
+event-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
 event-unixoid.o: $(LISP_H) conslots.h console-stream.h console-tty.h console.h device.h events.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h
 events.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console-x.h console.h device.h events-mod.h events.h extents.h frame.h frameslots.h glyphs.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h xintrinsic.h
 extents.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h debug.h device.h elhash.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
@@ -108,27 +109,28 @@ fileio.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h f
 filelock.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h paths.h symeval.h symsinit.h sysdir.h sysfile.h syspwd.h syssignal.h
 filemode.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
 floatfns.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfloat.h syssignal.h
-fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h
+fns.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h
 font-lock.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
-frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h
-frame.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
+frame-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systime.h systty.h toolbar.h
+frame.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 free-hook.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 general.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 getloadavg.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
 gif_io.o: gifrlib.h
-glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h
+glyphs-eimage.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h file-coding.h frame.h frameslots.h gifrlib.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h
 glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 glyphs.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 gmalloc.o: config.h getpagesize.h
 gpmevent.o: $(LISP_H) conslots.h console-tty.h console.h device.h events-mod.h events.h gpmevent.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h
 gui.o: $(LISP_H) bytecode.h elhash.h gui.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+gutter.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 hash.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 hftctl.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 hpplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 imgproc.o: $(LISP_H) imgproc.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 indent.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h faces.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h chartab.h conslots.h console.h database.h device.h eldap.h elhash.h events.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs-x.h glyphs.h gui-x.h gui.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects.h opaque.h process.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syntax.h systime.h toolbar.h tooltalk.h window.h winslots.h xintrinsic.h
-input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
+input-method-motif.o: $(LISP_H) EmacsFrame.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h xintrinsic.h
 insdel.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 intl.o: $(LISP_H) bytecode.h conslots.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 keymap.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h device.h elhash.h events-mod.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
@@ -144,15 +146,15 @@ md5.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h
 menubar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 minibuf.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-stream.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 nas.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h syssignal.h
-nt.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nt.h ntheap.h symeval.h symsinit.h sysproc.h syssignal.h systime.h
+nt.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nt.h ntheap.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h
 ntheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h ntheap.h symeval.h symsinit.h
 ntplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysfile.h
-ntproc.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nt.h ntheap.h process.h symeval.h symsinit.h sysproc.h syssignal.h systime.h syswait.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h nt.h ntheap.h process.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h syswait.h
 objects-tty.o: $(LISP_H) conslots.h console-tty.h console.h device.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-tty.h objects.h specifier.h symeval.h symsinit.h syssignal.h systty.h
 objects.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 offix.o: offix-cursors.h offix-types.h offix.h xintrinsic.h
 opaque.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h opaque.h symeval.h symsinit.h
-print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-stream.h console-tty.h console.h device.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h syssignal.h systty.h toolbar.h
 process-nt.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h process.h procimpl.h symeval.h symsinit.h sysdep.h
 process-unix.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
 process.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h hash.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h process.h procimpl.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h window.h winslots.h
@@ -162,13 +164,14 @@ rangetab.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h rangetab.h symeval.
 realpath.o: config.h
 redisplay-output.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 redisplay-tty.o: $(LISP_H) buffer.h bufslots.h conslots.h console-tty.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-tty.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h systty.h toolbar.h window.h winslots.h
-redisplay.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h window.h winslots.h
+redisplay.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console-tty.h console.h debug.h device.h elhash.h extents.h faces.h file-coding.h frame.h frameslots.h glyphs.h gui.h gutter.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h menubar.h mule-charset.h objects.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h syssignal.h systty.h toolbar.h window.h winslots.h
 regex.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h regex.h symeval.h symsinit.h syntax.h
 scrollbar.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 search.o: $(LISP_H) buffer.h bufslots.h chartab.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h regex.h symeval.h symsinit.h syntax.h
+select.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h opaque.h redisplay.h scrollbar.h select.h specifier.h symeval.h symsinit.h toolbar.h
 sgiplay.o: $(LISP_H) libst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 sheap.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h sheap-adjust.h symeval.h symsinit.h
-signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h
+signal.o: $(LISP_H) conslots.h console.h device.h events.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h syssignal.h systime.h toolbar.h
 sound.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h symeval.h symsinit.h sysdep.h xintrinsic.h
 specifier.o: $(LISP_H) buffer.h bufslots.h chartab.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h rangetab.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 strcat.o: config.h
@@ -205,7 +208,6 @@ unexnt.o: config.h ntheap.h
 unexsunos4.o: config.h
 vm-limit.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h mem-limits.h symeval.h symsinit.h
 widget.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-window.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
+window.o: $(LISP_H) buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h faces.h frame.h frameslots.h glyphs.h gui.h gutter.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h window.h winslots.h
 xgccache.o: $(LISP_H) hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xgccache.h
 xmu.o: config.h
-xselect.o: $(LISP_H) buffer.h bufslots.h conslots.h console-x.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h objects-x.h objects.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h xintrinsic.h
index aad12fd..1e8f0b5 100644 (file)
@@ -173,6 +173,7 @@ struct device
   unsigned int modeline_changed :1;
   unsigned int point_changed :1;
   unsigned int size_changed :1;
+  unsigned int gutter_changed :1;
   unsigned int toolbar_changed :1;
   unsigned int windows_changed :1;
   unsigned int windows_structure_changed :1;
@@ -350,6 +351,9 @@ int valid_device_class_p (Lisp_Object class);
 #define MARK_DEVICE_TOOLBARS_CHANGED(d)                        \
   ((void) (toolbar_changed = (d)->toolbar_changed = 1))
 
+#define MARK_DEVICE_GUTTERS_CHANGED(d)         \
+  ((void) (gutter_changed = (d)->gutter_changed = 1))
+
 #define MARK_DEVICE_SIZE_CHANGED(d)                    \
   ((void) (size_changed = (d)->size_changed = 1))
 
index 3f7d8c5..a60922f 100644 (file)
@@ -943,6 +943,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS)
       syms_of_gui ();
 #endif
+      syms_of_gutter ();
       syms_of_indent ();
       syms_of_intl ();
       syms_of_keymap ();
@@ -1165,6 +1166,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
       specifier_type_create ();
 
       specifier_type_create_image ();
+      specifier_type_create_gutter ();
       specifier_type_create_objects ();
 #ifdef HAVE_TOOLBARS
       specifier_type_create_toolbar ();
@@ -1338,6 +1340,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
 #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_DIALOGS) || defined (HAVE_TOOLBARS)
       vars_of_gui ();
 #endif
+      vars_of_gutter ();
       vars_of_indent ();
       vars_of_insdel ();
       vars_of_intl ();
@@ -1490,6 +1493,7 @@ main_1 (int argc, char **argv, char **envp, int restart)
         */
 
       specifier_vars_of_glyphs ();
+      specifier_vars_of_gutter ();
 #ifdef HAVE_MENUBARS
       specifier_vars_of_menubar ();
 #endif
index fcc8a92..38b1781 100644 (file)
@@ -1314,9 +1314,8 @@ handle_focus_event_1 (struct frame *f, int in_p)
 #if XtSpecificationRelease > 5
   Widget focus_widget = XtGetKeyboardFocusWidget (FRAME_X_TEXT_WIDGET (f));
 #endif
-#if defined(HAVE_XIM) && defined(XIM_XLIB)
-  if (FRAME_X_XIC(f))
-    XIM_focus_event (f, in_p);
+#ifdef HAVE_XIM
+  XIM_focus_event (f, in_p);
 #endif /* HAVE_XIM */
 
   /* On focus change, clear all memory of sticky modifiers
@@ -1334,10 +1333,10 @@ handle_focus_event_1 (struct frame *f, int in_p)
      Unfortunately native widgets break the model because they grab
      the keyboard focus and nothing sets it back again. I cannot find
      any reasonable way to do this elsewhere so we assert here that
-     the keybpard focus is on the emacs text widget. Menus and dialogs
+     the keyboard focus is on the emacs text widget. Menus and dialogs
      do this in their selection callback, but we don't want that since
      a button having focus is legitimate. An edit field having focus
-     is mandatory. Weirdly you get a FocusOut event when you glick in
+     is mandatory. Weirdly you get a FocusOut event when you click in
      a widget-glyph but you don't get a correspondng FocusIn when you
      click in the frame. Why is this?  */
   if (in_p 
@@ -1644,9 +1643,8 @@ emacs_Xt_handle_magic_event (struct Lisp_Event *emacs_event)
       break;
 
     case ConfigureNotify:
-#if defined(HAVE_XIM) && defined(XIM_XLIB)
-      if (FRAME_X_XIC(f))
-       XIM_SetGeometry (f);
+#ifdef HAVE_XIM
+      XIM_SetGeometry (f);
 #endif
       break;
 
index 49a2446..45e77ee 100644 (file)
@@ -1970,6 +1970,8 @@ mswindows_wnd_proc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
          TC_ITEM item;
          int index = SendMessage (nmhdr->hwndFrom, TCM_GETCURSEL, 0, 0);
          frame = XFRAME (mswindows_find_frame (hwnd));
+
+         item.mask = TCIF_PARAM;
          SendMessage (nmhdr->hwndFrom, TCM_GETITEM, (WPARAM)index,
                       (LPARAM)&item);
          
index 2da392d..5caeece 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA.  */
 #include "faces.h"
 #include "frame.h"
 #include "glyphs.h"
+#include "gutter.h"
 #include "menubar.h"
 #include "redisplay.h"
 #include "scrollbar.h"
@@ -460,12 +461,18 @@ See `set-frame-properties', `default-x-frame-plist', and
       reset_glyph_cachels (XWINDOW (FRAME_SELECTED_WINDOW (f)));
       reset_subwindow_cachels (f);
       change_frame_size (f, f->height, f->width, 0);
+
     }
 
   MAYBE_FRAMEMETH (f, init_frame_2, (f, props));
   Fset_frame_properties (frame, props);
   MAYBE_FRAMEMETH (f, init_frame_3, (f));
 
+  /* now initialise the gutters, this won't change the frame size
+     so is ok here. */
+  if (!DEVICE_STREAM_P (d))
+    init_frame_gutters (f);
+
   /* Hallelujah, praise the lord. */
   f->init_finished = 1;
 
@@ -893,7 +900,10 @@ set_frame_selected_window (struct frame *f, Lisp_Object window)
     {
 #ifdef HAVE_TOOLBARS
       if (!EQ (f->last_nonminibuf_window, window))
-       MARK_TOOLBAR_CHANGED;
+       {
+         MARK_TOOLBAR_CHANGED;
+         MARK_GUTTER_CHANGED;
+       }
 #endif
       f->last_nonminibuf_window = window;
     }
@@ -1526,6 +1536,7 @@ delete_frame_internal (struct frame *f, int force,
 #ifdef HAVE_TOOLBARS
   free_frame_toolbars (f);
 #endif
+  free_frame_gutters (f);
 
   /* This must be done before the window and window_mirror structures
      are freed.  The scrollbar information is attached to them. */
index ff5b332..be75ff9 100644 (file)
@@ -33,6 +33,7 @@ Boston, MA 02111-1307, USA.  */
 
 #include "device.h"
 #include "glyphs.h"
+#include "redisplay.h"
 
 #define FRAME_TYPE_NAME(f) ((f)->framemeths->name)
 #define FRAME_TYPE(f) ((f)->framemeths->symbol)
@@ -109,6 +110,10 @@ struct frame
   unsigned int current_toolbar_size[4];
 #endif
 
+  /* Dynamic array of display lines for gutters */
+  display_line_dynarr *current_display_lines;
+  display_line_dynarr *desired_display_lines;
+
   /* A structure of auxiliary data specific to the device type.
      struct x_frame is used for X window frames; defined in console-x.h */
   void *frame_data;
@@ -160,6 +165,11 @@ Value : Emacs meaning                           :f-v-p : X meaning
   unsigned int bottom_toolbar_was_visible :1;
   unsigned int left_toolbar_was_visible :1;
   unsigned int right_toolbar_was_visible :1;
+  /* gutter visibility */
+  unsigned int top_gutter_was_visible :1;
+  unsigned int bottom_gutter_was_visible :1;
+  unsigned int left_gutter_was_visible :1;
+  unsigned int right_gutter_was_visible :1;
 
   /* redisplay flags */
   unsigned int buffers_changed :1;
@@ -175,6 +185,7 @@ Value : Emacs meaning                           :f-v-p : X meaning
   unsigned int point_changed :1;
   unsigned int size_changed :1;
   unsigned int toolbar_changed :1;
+  unsigned int gutter_changed :1;
   unsigned int windows_changed :1;
   unsigned int windows_structure_changed :1;
   unsigned int window_face_cache_reset :1;     /* used by expose handler */
@@ -342,6 +353,19 @@ extern int frame_changed;
     toolbar_changed = 1;                               \
 } while (0)
 
+#define MARK_FRAME_GUTTERS_CHANGED(f) do {     \
+  struct frame *mftc_f = (f);                          \
+  mftc_f->gutter_changed = 1;                          \
+  mftc_f->modiff++;                                    \
+  if (!NILP (mftc_f->device))                          \
+    {                                                  \
+      struct device *mftc_d = XDEVICE (mftc_f->device);        \
+      MARK_DEVICE_GUTTERS_CHANGED (mftc_d);    \
+    }                                                  \
+  else                                                 \
+    gutter_changed = 1;                                        \
+} while (0)
+
 #define MARK_FRAME_SIZE_CHANGED(f) do {                        \
   struct frame *mfsc_f = (f);                          \
   mfsc_f->size_changed = 1;                            \
index f9a8c7e..b7d238d 100644 (file)
@@ -228,151 +228,151 @@ define pobj
       printf "Char: %d\n", $val
     end
   else
-  if $type == Lisp_Type_String || $imp == lrecord_string
+  if $type == Lisp_Type_String || $imp == &lrecord_string
     pstruct Lisp_String
   else
-  if $type == Lisp_Type_Cons   || $imp == lrecord_cons
+  if $type == Lisp_Type_Cons   || $imp == &lrecord_cons
     pstruct Lisp_Cons
   else
-  if $type == Lisp_Type_Symbol || $imp == lrecord_symbol
+  if $type == Lisp_Type_Symbol || $imp == &lrecord_symbol
     pstruct Lisp_Symbol
     printf "Symbol name: %s\n", $xstruct->name->data
   else
-  if $type == Lisp_Type_Vector || $imp == lrecord_vector
+  if $type == Lisp_Type_Vector || $imp == &lrecord_vector
     pstruct Lisp_Vector
     printf "Vector of length %d\n", $xstruct->size
     #print *($xstruct->data) @ $xstruct->size
   else
-  if $imp == lrecord_bit_vector
+  if $imp == &lrecord_bit_vector
     pstruct Lisp_Bit_Vector
   else
-  if $imp == lrecord_buffer
+  if $imp == &lrecord_buffer
     pstruct buffer
   else
-  if $imp == lrecord_char_table
+  if $imp == &lrecord_char_table
     pstruct Lisp_Char_Table
   else
-  if $imp == lrecord_char_table_entry
+  if $imp == &lrecord_char_table_entry
     pstruct Lisp_Char_Table_Entry
   else
-  if $imp == lrecord_charset
+  if $imp == &lrecord_charset
     pstruct Lisp_Charset
   else
-  if $imp == lrecord_coding_system
+  if $imp == &lrecord_coding_system
     pstruct Lisp_Coding_System
   else
-  if $imp == lrecord_color_instance
+  if $imp == &lrecord_color_instance
     pstruct Lisp_Color_Instance
   else
-  if $imp == lrecord_command_builder
+  if $imp == &lrecord_command_builder
     pstruct command_builder
   else
-  if $imp == lrecord_compiled_function
+  if $imp == &lrecord_compiled_function
     pstruct Lisp_Compiled_Function
   else
-  if $imp == lrecord_console
+  if $imp == &lrecord_console
     pstruct console
   else
-  if $imp == lrecord_database
+  if $imp == &lrecord_database
     pstruct Lisp_Database
   else
-  if $imp == lrecord_device
+  if $imp == &lrecord_device
     pstruct device
   else
-  if $imp == lrecord_event
+  if $imp == &lrecord_event
     pstruct Lisp_Event
   else
-  if $imp == lrecord_extent
+  if $imp == &lrecord_extent
     pstruct extent
   else
-  if $imp == lrecord_extent_auxiliary
+  if $imp == &lrecord_extent_auxiliary
     pstruct extent_auxiliary
   else
-  if $imp == lrecord_extent_info
+  if $imp == &lrecord_extent_info
     pstruct extent_info
   else
-  if $imp == lrecord_face
+  if $imp == &lrecord_face
     pstruct Lisp_Face
   else
-  if $imp == lrecord_float
+  if $imp == &lrecord_float
     pstruct Lisp_Float
   else
-  if $imp == lrecord_font_instance
+  if $imp == &lrecord_font_instance
     pstruct Lisp_Font_Instance
   else
-  if $imp == lrecord_frame
+  if $imp == &lrecord_frame
     pstruct frame
   else
-  if $imp == lrecord_glyph
+  if $imp == &lrecord_glyph
     pstruct Lisp_Glyph
   else
-  if $imp == lrecord_hash_table
+  if $imp == &lrecord_hash_table
     pstruct Lisp_Hash_Table
   else
-  if $imp == lrecord_image_instance
+  if $imp == &lrecord_image_instance
     pstruct Lisp_Image_Instance
   else
-  if $imp == lrecord_keymap
+  if $imp == &lrecord_keymap
     pstruct Lisp_Keymap
   else
-  if $imp == lrecord_lcrecord_list
+  if $imp == &lrecord_lcrecord_list
     pstruct lcrecord_list
   else
-  if $imp == lrecord_lstream
+  if $imp == &lrecord_lstream
     pstruct lstream
   else
-  if $imp == lrecord_marker
+  if $imp == &lrecord_marker
     pstruct Lisp_Marker
   else
-  if $imp == lrecord_opaque
+  if $imp == &lrecord_opaque
     pstruct Lisp_Opaque
   else
-  if $imp == lrecord_opaque_list
+  if $imp == &lrecord_opaque_list
     pstruct Lisp_Opaque_List
   else
-  if $imp == lrecord_popup_data
+  if $imp == &lrecord_popup_data
     pstruct popup_data
   else
-  if $imp == lrecord_process
+  if $imp == &lrecord_process
     pstruct Lisp_Process
   else
-  if $imp == lrecord_range_table
+  if $imp == &lrecord_range_table
     pstruct Lisp_Range_Table
   else
-  if $imp == lrecord_specifier
+  if $imp == &lrecord_specifier
     pstruct Lisp_Specifier
   else
-  if $imp == lrecord_subr
+  if $imp == &lrecord_subr
     pstruct Lisp_Subr
   else
-  if $imp == lrecord_symbol_value_buffer_local
+  if $imp == &lrecord_symbol_value_buffer_local
     pstruct symbol_value_buffer_local
   else
-  if $imp == lrecord_symbol_value_forward
+  if $imp == &lrecord_symbol_value_forward
     pstruct symbol_value_forward
   else
-  if $imp == lrecord_symbol_value_lisp_magic
+  if $imp == &lrecord_symbol_value_lisp_magic
     pstruct symbol_value_lisp_magic
   else
-  if $imp == lrecord_symbol_value_varalias
+  if $imp == &lrecord_symbol_value_varalias
     pstruct symbol_value_varalias
   else
-  if $imp == lrecord_toolbar_button
+  if $imp == &lrecord_toolbar_button
     pstruct toolbar_button
   else
-  if $imp == lrecord_tooltalk_message
+  if $imp == &lrecord_tooltalk_message
     pstruct Lisp_Tooltalk_Message
   else
-  if $imp == lrecord_tooltalk_pattern
+  if $imp == &lrecord_tooltalk_pattern
     pstruct Lisp_Tooltalk_Pattern
   else
-  if $imp == lrecord_weak_list
+  if $imp == &lrecord_weak_list
     pstruct weak_list
   else
-  if $imp == lrecord_window
+  if $imp == &lrecord_window
     pstruct window
   else
-  if $imp == lrecord_window_configuration
+  if $imp == &lrecord_window_configuration
     pstruct window_config
   else
     echo Unknown Lisp Object type\n
index 973d1e4..06c4db1 100644 (file)
@@ -89,6 +89,7 @@ Lisp_Object Qgap_overhead;
 Lisp_Object Qgeneric;
 Lisp_Object Qgeometry;
 Lisp_Object Qglobal;
+Lisp_Object Qgutter;
 Lisp_Object Qheight;
 Lisp_Object Qhighlight;
 Lisp_Object Qicon;
@@ -245,6 +246,7 @@ syms_of_general (void)
   defsymbol (&Qgeneric, "generic");
   defsymbol (&Qgeometry, "geometry");
   defsymbol (&Qglobal, "global");
+  defsymbol (&Qgutter, "gutter");
   defsymbol (&Qheight, "height");
   defsymbol (&Qhighlight, "highlight");
   defsymbol (&Qicon, "icon");
index 805e812..7a9f8d3 100644 (file)
@@ -107,6 +107,7 @@ mswindows_initialize_image_instance_mask (struct Lisp_Image_Instance* image,
                                          struct frame* f);
 
 COLORREF mswindows_string_to_color (CONST char *name);
+void check_valid_item_list_1 (Lisp_Object items);
 
 #define BPLINE(width) ((int)(~3UL & (unsigned long)((width) +3)))
 
@@ -2049,6 +2050,17 @@ mswindows_map_subwindow (struct Lisp_Image_Instance *p, int x, int y)
                | SWP_NOCOPYBITS | SWP_NOSENDCHANGING);
 }
 
+/* resize the subwindow instance */
+static void 
+mswindows_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h)
+{
+  SetWindowPos (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii), 
+               NULL, 
+               0, 0, w, h,
+               SWP_NOZORDER | SWP_NOMOVE
+               | SWP_NOCOPYBITS | SWP_NOSENDCHANGING);
+}
+
 /* when you click on a widget you may activate another widget this
    needs to be checked and all appropriate widgets updated */
 static void
@@ -2540,7 +2552,6 @@ mswindows_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object insta
                                WS_EX_CONTROLPARENT);
 
   wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
   /* add items to the tab */
   LIST_LOOP (rest, Fplist_get (IMAGE_INSTANCE_WIDGET_PROPS (ii), Q_items, Qnil))
     {
@@ -2549,6 +2560,36 @@ mswindows_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object insta
     }
 }
 
+/* set the properties of a tab control */
+static Lisp_Object
+mswindows_tab_control_set_property (Lisp_Object image_instance, Lisp_Object prop,
+                                   Lisp_Object val)
+{
+  struct Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+
+  if (EQ (prop, Q_items))
+    {
+      HWND wnd = WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii);
+      int index = 0;
+      Lisp_Object rest;
+      check_valid_item_list_1 (val);
+
+      /* delete the pre-existing items */
+      SendMessage (wnd, TCM_DELETEALLITEMS, 0, 0);
+  
+      /* add items to the tab */
+      LIST_LOOP (rest, val)
+       {
+         add_tab_item (image_instance, wnd, XCAR (rest), 
+                       IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), index);
+         index++;
+       }
+
+      return Qt;
+    }
+  return Qunbound;
+}
+
 /* instantiate a static control possible for putting other things in */
 static void
 mswindows_label_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
@@ -2739,6 +2780,7 @@ console_type_create_glyphs_mswindows (void)
   CONSOLE_HAS_METHOD (mswindows, image_instance_hash);
   CONSOLE_HAS_METHOD (mswindows, init_image_instance_from_eimage);
   CONSOLE_HAS_METHOD (mswindows, locate_pixmap_file);
+  CONSOLE_HAS_METHOD (mswindows, resize_subwindow);
 }
 
 void
@@ -2815,6 +2857,7 @@ image_instantiator_format_create_glyphs_mswindows (void)
   /* tab control widget */
   INITIALIZE_DEVICE_IIFORMAT (mswindows, tab_control);
   IIFORMAT_HAS_DEVMETHOD (mswindows, tab_control, instantiate);
+  IIFORMAT_HAS_DEVMETHOD (mswindows, tab_control, set_property);
 
   /* windows bitmap format */
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (bmp, "bmp");
index 3fbf075..917739d 100644 (file)
@@ -149,7 +149,7 @@ check_valid_string_or_vector (Lisp_Object data)
        signal_simple_error (":descriptor must be a string or a vector", data);
 }
 
-static void
+void
 check_valid_item_list_1 (Lisp_Object items)
 {
   Lisp_Object rest;
index 45f1e10..a1f0051 100644 (file)
@@ -2132,9 +2132,19 @@ Subwindows are not currently implemented.
 static void 
 x_resize_subwindow (struct Lisp_Image_Instance* ii, int w, int h)
 {
-  XResizeWindow (DisplayOfScreen (IMAGE_INSTANCE_X_SUBWINDOW_SCREEN (ii)),
-                IMAGE_INSTANCE_X_SUBWINDOW_ID (ii),
-                w, h);
+  if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_SUBWINDOW)
+    {
+      XResizeWindow (DisplayOfScreen (IMAGE_INSTANCE_X_SUBWINDOW_SCREEN (ii)),
+                    IMAGE_INSTANCE_X_SUBWINDOW_ID (ii),
+                    w, h);
+    }
+  else                         /* must be a widget */
+    {
+      Arg al[2];
+      XtSetArg (al [0], XtNwidth, (Dimension)w);
+      XtSetArg (al [1], XtNheight, (Dimension)h);
+      XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 2);
+    }
 }
 
 /************************************************************************/
@@ -2158,6 +2168,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   Arg al [32];
   int ac = 0;
   int id = new_lwlib_id ();
+#ifdef LWLIB_USES_MOTIF
+  XmFontList fontList;
+#endif
 
   if (!DEVICE_X_P (d))
     signal_simple_error ("Not an mswindows device", device);
@@ -2188,11 +2201,20 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   XtSetArg (al [ac], XtNbackground, bcolor.pixel);             ac++;
   XtSetArg (al [ac], XtNforeground, fcolor.pixel);             ac++;
+#ifdef LWLIB_USES_MOTIF
+  fontList = XmFontListCreate 
+    ((void*)FONT_INSTANCE_X_FONT 
+     (XFONT_INSTANCE (widget_face_font_info 
+                     (domain, IMAGE_INSTANCE_WIDGET_FACE (ii),
+                      0, 0))), XmSTRING_DEFAULT_CHARSET);
+  XtSetArg (al [ac], XmNfontList, fontList );                          ac++;
+#else
   XtSetArg (al [ac], XtNfont, (void*)FONT_INSTANCE_X_FONT 
            (XFONT_INSTANCE (widget_face_font_info 
                             (domain, 
                              IMAGE_INSTANCE_WIDGET_FACE (ii),
                              0, 0))));                 ac++;
+#endif
 
   wv->nargs = ac;
   wv->args = al;
@@ -2201,7 +2223,9 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
                          False, 0, popup_selection_callback, 0);
 
   IMAGE_INSTANCE_X_WIDGET_LWID (ii) = id;
-
+#ifdef LWLIB_USES_MOTIF
+  XmFontListFree (fontList);
+#endif
   /* because the EmacsManager is the widgets parent we have to
      offset the redisplay of the widget by the amount the text
      widget is inside the manager. */
@@ -2453,7 +2477,7 @@ image_instantiator_format_create_glyphs_x (void)
 
   INITIALIZE_DEVICE_IIFORMAT (x, subwindow);
   IIFORMAT_HAS_DEVMETHOD (x, subwindow, instantiate);
-
+#ifdef LWLIB_USES_MOTIF
   /* button widget */
   INITIALIZE_DEVICE_IIFORMAT (x, button);
   IIFORMAT_HAS_DEVMETHOD (x, button, property);
@@ -2469,10 +2493,12 @@ image_instantiator_format_create_glyphs_x (void)
   /* text field */
   INITIALIZE_DEVICE_IIFORMAT (x, edit_field);
   IIFORMAT_HAS_DEVMETHOD (x, edit_field, instantiate);
+#if 0 /* XmVERSION > 1*/
   /* combo box */
   INITIALIZE_DEVICE_IIFORMAT (x, combo_box);
   IIFORMAT_HAS_DEVMETHOD (x, combo_box, instantiate);
-
+#endif
+#endif
   INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (cursor_font, "cursor-font");
   IIFORMAT_VALID_CONSOLE (x, cursor_font);
 
index 55e6572..4824420 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -432,9 +432,11 @@ gui_item_display_flush_right (Lisp_Object gui_item,
   struct Lisp_Gui_Item* pgui_item = XGUI_ITEM (gui_item);
   *buf = 0;
 
+#ifdef HAVE_MENUBARS
   /* Have keys? */
   if (!menubar_show_keybindings)
     return 0;
+#endif
 
   /* Try :keys first */
   if (!NILP (pgui_item->keys))
index 7ace51f..8de057e 100644 (file)
@@ -195,6 +195,53 @@ column_at_point (struct buffer *buf, Bufpos init_pos, int cur_col)
 }
 
 int
+string_column_at_point (struct Lisp_String* s, Bufpos init_pos, int tab_width)
+{
+  int col;
+  int tab_seen;
+  int post_tab;
+  Bufpos pos = init_pos;
+  Emchar c;
+
+  if (tab_width <= 0 || tab_width > 1000) tab_width = 8;
+  col = tab_seen = post_tab = 0;
+
+  while (1)
+    {
+      if (pos <= 0)
+       break;
+
+      pos--;
+      c = string_char (s, pos);
+      if (c == '\t')
+       {
+         if (tab_seen)
+           col = ((col + tab_width) / tab_width) * tab_width;
+
+         post_tab += col;
+         col = 0;
+         tab_seen = 1;
+       }
+      else if (c == '\n')
+       break;
+      else
+#ifdef MULE
+         col += XCHARSET_COLUMNS (CHAR_CHARSET (c));
+#else
+         col ++;
+#endif /* MULE */
+    }
+
+  if (tab_seen)
+    {
+      col = ((col + tab_width) / tab_width) * tab_width;
+      col += post_tab;
+    }
+
+  return col;
+}
+
+int
 current_column (struct buffer *buf)
 {
   if (buf == last_known_column_buffer
index 499404b..430acdc 100644 (file)
@@ -1141,6 +1141,7 @@ copy_keymap_internal (Lisp_Keymap *keymap)
   new_keymap->sub_maps_cache = Qnil; /* No submaps */
   new_keymap->table          = Fcopy_hash_table (keymap->table);
   new_keymap->inverse_table  = Fcopy_hash_table (keymap->inverse_table);
+  new_keymap->default_binding = keymap->default_binding;
   /* After copying the inverse map, we need to copy the conses which
      are its values, lest they be shared by the copy, and mangled.
    */
index 4f0df2b..e2e5c97 100644 (file)
@@ -68,5 +68,6 @@ void setup_ccl_program (struct ccl_program *ccl, Lisp_Object val);
 
 /* Alist of fontname patterns vs corresponding CCL program.  */
 extern Lisp_Object Vfont_ccl_encoder_alist;
+extern Lisp_Object Qccl_program;
 
 #endif /* _CCL_H */
index 0a4b0ed..4fa9fcd 100644 (file)
@@ -32,6 +32,7 @@ Boston, MA 02111-1307, USA.  */
 #include "lstream.h"
 #include "device.h"
 #include "faces.h"
+#include "mule-ccl.h"
 
 /* The various pre-defined charsets. */
 
@@ -111,7 +112,6 @@ Lisp_Object Qcharsetp;
 Lisp_Object Qregistry, Qfinal, Qgraphic;
 Lisp_Object Qdirection;
 Lisp_Object Qreverse_direction_charset;
-Lisp_Object Qccl_program;
 Lisp_Object Qleading_byte;
 Lisp_Object Qshort_name, Qlong_name;
 
@@ -1254,7 +1254,6 @@ syms_of_mule_charset (void)
   defsymbol (&Qgraphic, "graphic");
   defsymbol (&Qdirection, "direction");
   defsymbol (&Qreverse_direction_charset, "reverse-direction-charset");
-  defsymbol (&Qccl_program, "ccl-program");
   defsymbol (&Qshort_name, "short-name");
   defsymbol (&Qlong_name, "long-name");
 
index 60b5a14..24ff96d 100644 (file)
@@ -41,6 +41,7 @@ Boston, MA 02111-1307, USA.  */
 #include "faces.h"
 #include "frame.h"
 #include "glyphs-msw.h"
+#include "gutter.h"
 #include "redisplay.h"
 #include "sysdep.h"
 #include "window.h"
@@ -75,6 +76,7 @@ static void mswindows_output_pixmap (struct window *w, struct display_line *dl,
                                     face_index findex, int cursor_start, 
                                     int cursor_width, int cursor_height,
                                     int offset_bitmap);
+void bevel_modeline (struct window *w, struct display_line *dl);
 
 typedef struct textual_run
 {
@@ -965,6 +967,7 @@ mswindows_redraw_exposed_area (struct frame *f, int x, int y, int width, int hei
      redraw anyhow. */
   MAYBE_FRAMEMETH (f, redraw_exposed_toolbars, (f, x, y, width, height));
 #endif
+  redraw_exposed_gutters (f, x, y, width, height);
 
   if (!f->window_face_cache_reset)
        {
@@ -977,38 +980,36 @@ mswindows_redraw_exposed_area (struct frame *f, int x, int y, int width, int hei
 
 
 /*****************************************************************************
- mswindows_bevel_modeline
+ mswindows_bevel_area
 
- Draw a 3d border around the modeline on window W.
+ Draw a 3d border around the specified area on window W.
  ****************************************************************************/
 static void
-mswindows_bevel_modeline (struct window *w, struct display_line *dl)
+mswindows_bevel_area (struct window *w, face_index findex, int x, int y, 
+                     int width, int height, int shadow_thickness)
 {
   struct frame *f = XFRAME (w->frame);
-  Lisp_Object color;
-  int shadow_width = MODELINE_SHADOW_THICKNESS (w);
-  RECT rect = {        WINDOW_MODELINE_LEFT (w), 
-               dl->ypos - dl->ascent - shadow_width,
-               WINDOW_MODELINE_RIGHT (w),
-               dl->ypos + dl->descent + shadow_width};
   UINT edge;
 
-  color = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX);
-  mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, color, Qnil);
-
-  if (XINT (w->modeline_shadow_thickness) < 0)
-    shadow_width = -shadow_width;
-
-  if (shadow_width < -1)
+  if (shadow_thickness < -1)
     edge = EDGE_SUNKEN;
-  else if (shadow_width < 0)
+  else if (shadow_thickness < 0)
     edge = BDR_SUNKENINNER;
-  else if (shadow_width == 1)
+  else if (shadow_thickness == 1)
     edge = BDR_RAISEDINNER;
   else
     edge = EDGE_RAISED;
-    
-  DrawEdge (FRAME_MSWINDOWS_DC (f), &rect, edge, BF_RECT);
+
+  if (shadow_thickness < 0)
+    shadow_thickness = -shadow_thickness;
+
+  {
+    RECT rect = { x, y, x + width, y + height };
+    Lisp_Object color = WINDOW_FACE_CACHEL_BACKGROUND (w, findex);
+    mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil, color, Qnil);
+
+    DrawEdge (FRAME_MSWINDOWS_DC (f), &rect, edge, BF_RECT);
+  }
 }
 
 \f
@@ -1110,18 +1111,14 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
   rb = Dynarr_atp (rba, start);
 
   if (!rb)
-    {
       /* Nothing to do so don't do anything. */
       return;
-    }
-  else
-    {
-      findex = rb->findex;
-      xpos = rb->xpos;
-      width = 0;
-      if (rb->type == RUNE_CHAR)
-       charset = CHAR_CHARSET (rb->object.chr.ch);
-    }
+
+  findex = rb->findex;
+  xpos = rb->xpos;
+  width = 0;
+  if (rb->type == RUNE_CHAR)
+    charset = CHAR_CHARSET (rb->object.chr.ch);
 
   if (end < 0)
     end = Dynarr_length (rba);
@@ -1295,7 +1292,7 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
       && (f->clear
          || f->windows_structure_changed
          || w->shadow_thickness_changed))
-    mswindows_bevel_modeline (w, dl);
+    bevel_modeline (w, dl);
 
   Dynarr_free (buf);
 }
@@ -1316,12 +1313,14 @@ mswindows_output_vertical_divider (struct window *w, int clear_unused)
   int abs_shadow = abs (shadow);
   int line_width = XINT (w->vertical_divider_line_width);
   int div_left = WINDOW_RIGHT (w) - window_divider_width (w);
+  int y1 = WINDOW_TOP (w) + FRAME_TOP_GUTTER_BOUNDS (f);
+  int y2 = WINDOW_BOTTOM (w) + FRAME_BOTTOM_GUTTER_BOUNDS (f);
 
   /* Clear left and right spacing areas */
   if (spacing)
     {
-      rect.top = WINDOW_TOP (w);
-      rect.bottom = WINDOW_BOTTOM (w);
+      rect.top = y1;
+      rect.bottom = y2;
       mswindows_update_dc (FRAME_MSWINDOWS_DC (f), Qnil, Qnil,
                   WINDOW_FACE_CACHEL_BACKGROUND (w, DEFAULT_INDEX), Qnil);
       rect.right = WINDOW_RIGHT (w);
@@ -1335,8 +1334,8 @@ mswindows_output_vertical_divider (struct window *w, int clear_unused)
     }
   
   /* Clear divider face */
-  rect.top = WINDOW_TOP (w) + abs_shadow;
-  rect.bottom = WINDOW_BOTTOM (w) - abs_shadow;
+  rect.top = y1 + abs_shadow;
+  rect.bottom = y2 - abs_shadow;
   rect.left = div_left + spacing + abs_shadow;
   rect.right = rect.left + line_width;
   if (rect.left < rect.right)
@@ -1421,56 +1420,6 @@ mswindows_clear_region (Lisp_Object locale, struct device* d, struct frame* f,
 #endif
 }
 
-/*****************************************************************************
- mswindows_clear_to_window_end
-
- Clear the area between ypos1 and ypos2.  Each margin area and the
- text area is handled separately since they may each have their own
- background color.
- ****************************************************************************/
-static void
-mswindows_clear_to_window_end (struct window *w, int ypos1, int ypos2)
-{
-  int height = ypos2 - ypos1;
-
-  if (height)
-    {
-      struct frame *f = XFRAME (w->frame);
-      Lisp_Object window;
-      int bflag = (window_needs_vertical_divider (w) ? 0 : 1);
-      layout_bounds bounds;
-
-      bounds = calculate_display_line_boundaries (w, bflag);
-      XSETWINDOW (window, w);
-
-      if (window_is_leftmost (w))
-       redisplay_clear_region (window, DEFAULT_INDEX, FRAME_LEFT_BORDER_START (f),
-                         ypos1, FRAME_BORDER_WIDTH (f), height);
-
-      if (bounds.left_in - bounds.left_out > 0)
-       redisplay_clear_region (window,
-                         get_builtin_face_cache_index (w, Vleft_margin_face),
-                         bounds.left_out, ypos1,
-                         bounds.left_in - bounds.left_out, height);
-
-      if (bounds.right_in - bounds.left_in > 0)
-       redisplay_clear_region (window, DEFAULT_INDEX, bounds.left_in, ypos1,
-                         bounds.right_in - bounds.left_in, height);
-
-      if (bounds.right_out - bounds.right_in > 0)
-       redisplay_clear_region (window,
-                         get_builtin_face_cache_index (w, Vright_margin_face),
-                         bounds.right_in, ypos1,
-                         bounds.right_out - bounds.right_in, height);
-
-      if (window_is_rightmost (w))
-       redisplay_clear_region (window, DEFAULT_INDEX, FRAME_RIGHT_BORDER_START (f),
-                         ypos1, FRAME_BORDER_WIDTH (f), height);
-    }
-
-}
-
-
 /* XXX Implement me! */
 static void
 mswindows_clear_frame (struct frame *f)
@@ -1493,11 +1442,11 @@ console_type_create_redisplay_mswindows (void)
   CONSOLE_HAS_METHOD (mswindows, divider_height);
   CONSOLE_HAS_METHOD (mswindows, eol_cursor_width);
   CONSOLE_HAS_METHOD (mswindows, output_vertical_divider);
-  CONSOLE_HAS_METHOD (mswindows, clear_to_window_end);
   CONSOLE_HAS_METHOD (mswindows, clear_region);
   CONSOLE_HAS_METHOD (mswindows, clear_frame);
   CONSOLE_HAS_METHOD (mswindows, output_begin);
   CONSOLE_HAS_METHOD (mswindows, output_end);
   CONSOLE_HAS_METHOD (mswindows, flash);
   CONSOLE_HAS_METHOD (mswindows, ring_bell);
+  CONSOLE_HAS_METHOD (mswindows, bevel_area);
 }
index 4a6ce5a..ae041e9 100644 (file)
@@ -592,7 +592,7 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
                           cdl->clip != ddl->clip)))
                {
                  int x, y, width, height;
-                 Lisp_Object face;
+                 face_index findex;
 
                  must_sync = 1;
                  x = start_pixpos;
@@ -601,23 +601,33 @@ output_display_line (struct window *w, display_line_dynarr *cdla,
                  height = ddl->ascent + ddl->descent - ddl->clip;
 
                  if (x < ddl->bounds.left_in)
-                   face = Vleft_margin_face;
+                   {
+                     findex = ddl->left_margin_findex ?
+                       ddl->left_margin_findex 
+                       : get_builtin_face_cache_index (w, Vleft_margin_face);
+                   }
                  else if (x < ddl->bounds.right_in)
-                   face = Vdefault_face;
+                   {
+                     /* no check here because DEFAULT_INDEX == 0 anyway */
+                     findex = ddl->default_findex;
+                   }
                  else if (x < ddl->bounds.right_out)
-                   face = Vright_margin_face;
+                   {
+                     findex = ddl->right_margin_findex ?
+                       ddl->right_margin_findex 
+                       : get_builtin_face_cache_index (w, Vright_margin_face);
+                   }
                  else
-                   face = Qnil;
+                   findex = (face_index) -1;
 
-                 if (!NILP (face))
+                 if (findex != (face_index) -1)
                    {
                      Lisp_Object window;
 
                      XSETWINDOW (window, w);
 
                      /* Clear the empty area. */
-                     redisplay_clear_region (window, get_builtin_face_cache_index (w, face),
-                                   x, y, width, height);
+                     redisplay_clear_region (window, findex, x, y, width, height);
 
                      /* Mark that we should clear the border.  This is
                         necessary because italic fonts may leave
@@ -1253,6 +1263,64 @@ redisplay_clear_top_of_window (struct window *w)
 }
 
 /*****************************************************************************
+ redisplay_clear_to_window_end
+
+ Clear the area between ypos1 and ypos2.  Each margin area and the
+ text area is handled separately since they may each have their own
+ background color.
+ ****************************************************************************/
+void
+redisplay_clear_to_window_end (struct window *w, int ypos1, int ypos2)
+{
+  struct frame *f = XFRAME (w->frame);
+  struct device *d = XDEVICE (f->device);
+
+  if (HAS_DEVMETH_P (d, clear_to_window_end))
+    DEVMETH (d, clear_to_window_end, (w, ypos1, ypos2));
+  else
+    {
+      int height = ypos2 - ypos1;
+      
+      if (height)
+       {
+         struct frame *f = XFRAME (w->frame);
+         Lisp_Object window;
+         int bflag = 0 ; /* (window_needs_vertical_divider (w) ? 0 : 1);*/
+         layout_bounds bounds;
+         
+         bounds = calculate_display_line_boundaries (w, bflag);
+         XSETWINDOW (window, w);
+
+         if (window_is_leftmost (w))
+           redisplay_clear_region (window, DEFAULT_INDEX, FRAME_LEFT_BORDER_START (f),
+                                   ypos1, FRAME_BORDER_WIDTH (f), height);
+         
+         if (bounds.left_in - bounds.left_out > 0)
+           redisplay_clear_region (window,
+                                   get_builtin_face_cache_index (w, Vleft_margin_face),
+                                   bounds.left_out, ypos1,
+                                   bounds.left_in - bounds.left_out, height);
+         
+         if (bounds.right_in - bounds.left_in > 0)
+           redisplay_clear_region (window, 
+                                   DEFAULT_INDEX,
+                                   bounds.left_in, ypos1,
+                                   bounds.right_in - bounds.left_in, height);
+         
+         if (bounds.right_out - bounds.right_in > 0)
+           redisplay_clear_region (window,
+                                   get_builtin_face_cache_index (w, Vright_margin_face),
+                                   bounds.right_in, ypos1,
+                                   bounds.right_out - bounds.right_in, height);
+         
+         if (window_is_rightmost (w))
+           redisplay_clear_region (window, DEFAULT_INDEX, FRAME_RIGHT_BORDER_START (f),
+                                   ypos1, FRAME_BORDER_WIDTH (f), height);
+       }
+    }
+}
+
+/*****************************************************************************
  redisplay_clear_bottom_of_window
 
  Clear window from right below the last display line to right above
@@ -1308,7 +1376,7 @@ redisplay_clear_bottom_of_window (struct window *w, display_line_dynarr *ddla,
   if (ypos2 <= ypos1)
     return;
 
-  DEVMETH (d, clear_to_window_end, (w, ypos1, ypos2));
+  redisplay_clear_to_window_end (w, ypos1, ypos2);
 }
 
 /*****************************************************************************
@@ -1603,3 +1671,28 @@ redisplay_output_window (struct window *w)
   update_window_scrollbars (w, NULL, !MINI_WINDOW_P (w), 0);
 #endif
 }
+
+/*****************************************************************************
+ bevel_modeline
+
+ Draw a 3d border around the modeline on window W.
+ ****************************************************************************/
+void
+bevel_modeline (struct window *w, struct display_line *dl)
+{
+  struct frame *f = XFRAME (w->frame);
+  struct device *d = XDEVICE (f->device);
+  int x, y, width, height;
+  int shadow_thickness = MODELINE_SHADOW_THICKNESS (w);
+
+  x = WINDOW_MODELINE_LEFT (w);
+  width = WINDOW_MODELINE_RIGHT (w) - x;
+  y = dl->ypos - dl->ascent - shadow_thickness;
+  height = dl->ascent + dl->descent + 2 * shadow_thickness;
+
+  if (XINT (w->modeline_shadow_thickness) < 0)
+    shadow_thickness = - shadow_thickness;
+
+  MAYBE_DEVMETH (d, bevel_area, 
+                (w, MODELINE_INDEX, x, y, width, height, shadow_thickness));
+}
index 8a0ba60..cf1766e 100644 (file)
@@ -40,6 +40,7 @@ Boston, MA 02111-1307, USA.  */
 #include "debug.h"
 #include "faces.h"
 #include "frame.h"
+#include "gutter.h"
 #include "redisplay.h"
 #include "sysdep.h"
 #include "window.h"
@@ -78,7 +79,7 @@ static void x_output_eol_cursor (struct window *w, struct display_line *dl,
                                 int xpos, face_index findex);
 static void x_clear_frame (struct frame *f);
 static void x_clear_frame_windows (Lisp_Object window);
-static void x_bevel_modeline (struct window *w, struct display_line *dl);
+void bevel_modeline (struct window *w, struct display_line *dl);
 
 
      /* Note: We do not use the Xmb*() functions and XFontSets.
@@ -334,7 +335,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
 
   int elt = start;
   face_index findex;
-  int xpos, width;
+  int xpos, width = 0;
   Lisp_Object charset = Qunbound; /* Qnil is a valid charset when
                                     MULE is not defined */
 
@@ -342,18 +343,13 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
   rb = Dynarr_atp (rba, start);
 
   if (!rb)
-    {
-      /* Nothing to do so don't do anything. */
-      return;
-    }
-  else
-    {
-      findex = rb->findex;
-      xpos = rb->xpos;
-      width = 0;
-      if (rb->type == RUNE_CHAR)
-       charset = CHAR_CHARSET (rb->object.chr.ch);
-    }
+    /* Nothing to do so don't do anything. */
+    return;
+
+  findex = rb->findex;
+  xpos = rb->xpos;
+  if (rb->type == RUNE_CHAR)
+    charset = CHAR_CHARSET (rb->object.chr.ch);
 
   if (end < 0)
     end = Dynarr_length (rba);
@@ -522,38 +518,40 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
       && (f->clear
          || f->windows_structure_changed
          || w->shadow_thickness_changed))
-    x_bevel_modeline (w, dl);
+    bevel_modeline (w, dl);
 
   Dynarr_free (buf);
 }
 
 /*****************************************************************************
- x_bevel_modeline
+ x_bevel_area
 
- Draw a 3d border around the modeline on window W.
+ Draw a shadows for the given area in the given face.
  ****************************************************************************/
 static void
-x_bevel_modeline (struct window *w, struct display_line *dl)
+x_bevel_area (struct window *w, face_index findex,
+             int x, int y, int width, int height,
+             int shadow_thickness)
 {
   struct frame *f = XFRAME (w->frame);
   struct device *d = XDEVICE (f->device);
+
+  EmacsFrame ef = (EmacsFrame) FRAME_X_TEXT_WIDGET (f);
   Display *dpy = DEVICE_X_DISPLAY (d);
   Window x_win = XtWindow (FRAME_X_TEXT_WIDGET (f));
-  EmacsFrame ef = (EmacsFrame) FRAME_X_TEXT_WIDGET (f);
-  GC top_shadow_gc, bottom_shadow_gc, background_gc;
   Pixel top_shadow_pixel, bottom_shadow_pixel, background_pixel;
-  XColor tmp_color;
   Lisp_Object tmp_pixel;
-  int x, y, width, height;
+  XColor tmp_color;
   XGCValues gcv;
-  unsigned long mask;
+  GC top_shadow_gc, bottom_shadow_gc, background_gc;
+
   int use_pixmap = 0;
   int flip_gcs = 0;
-  int shadow_thickness;
+  unsigned long mask;
 
   memset (&gcv, ~0, sizeof (XGCValues));
 
-  tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX);
+  tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, findex);
   tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
 
   /* First, get the GC's. */
@@ -564,12 +562,14 @@ x_bevel_modeline (struct window *w, struct display_line *dl)
   x_generate_shadow_pixels (f, &top_shadow_pixel, &bottom_shadow_pixel,
                            background_pixel, ef->core.background_pixel);
 
-  tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, MODELINE_INDEX);
+  tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, findex);
   tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
   gcv.background = tmp_color.pixel;
   gcv.graphics_exposures = False;
   mask = GCForeground | GCBackground | GCGraphicsExposures;
 
+  /* If we can't distinguish one of the shadows (the color is the same as the
+     background), it's better to use a pixmap to generate a dithered gray. */
   if (top_shadow_pixel == background_pixel ||
       bottom_shadow_pixel == background_pixel)
     use_pixmap = 1;
@@ -583,15 +583,16 @@ x_bevel_modeline (struct window *w, struct display_line *dl)
                                         gray_width, gray_height, 1, 0, 1);
        }
 
-      tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, MODELINE_INDEX);
+      tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, findex);
       tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
       gcv.foreground = tmp_color.pixel;
+      /* this is needed because the GC draws with a pixmap here */
       gcv.fill_style = FillOpaqueStippled;
       gcv.stipple = DEVICE_X_GRAY_PIXMAP (d);
       top_shadow_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv,
                                       (mask | GCStipple | GCFillStyle));
 
-      tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, MODELINE_INDEX);
+      tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, findex);
       tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
       bottom_shadow_pixel = tmp_color.pixel;
 
@@ -617,23 +618,23 @@ x_bevel_modeline (struct window *w, struct display_line *dl)
   gcv.foreground = background_pixel;
   background_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv, mask);
 
-  if (XINT (w->modeline_shadow_thickness) < 0)
+  /* possibly revert the GC's in case the shadow thickness is < 0.
+     This will give a depressed look to the divider */
+  if (shadow_thickness < 0)
     {
       GC temp;
 
       temp = top_shadow_gc;
       top_shadow_gc = bottom_shadow_gc;
       bottom_shadow_gc = temp;
-    }
-
-  shadow_thickness = MODELINE_SHADOW_THICKNESS (w);
 
-  x = WINDOW_MODELINE_LEFT (w);
-  width = WINDOW_MODELINE_RIGHT (w) - x;
-  y = dl->ypos - dl->ascent - shadow_thickness;
-  height = dl->ascent + dl->descent + 2 * shadow_thickness;
+      /* better avoid a Bad Address XLib error ;-) */
+      shadow_thickness = - shadow_thickness;
+    }
 
-  x_output_shadows (f, x, y, width, height, top_shadow_gc, bottom_shadow_gc,
+  /* Draw the shadows around the divider line */
+  x_output_shadows (f, x, y, width, height,
+                   top_shadow_gc, bottom_shadow_gc,
                    background_gc, shadow_thickness);
 }
 
@@ -840,11 +841,10 @@ x_output_string (struct window *w, struct display_line *dl,
       cachel = WINDOW_FACE_CACHEL (w, findex);
     }
 
-#if defined(HAVE_XIM) && defined(XIM_XLIB)
+#ifdef HAVE_XIM
   if (cursor && focus && (cursor_start == clip_start) && cursor_height)
-    if (FRAME_X_XIC(f))
-      XIM_SetSpotLocation (f, xpos - 2, dl->ypos + dl->descent - 2);
-#endif /* HAVE_XIM && XIM_XLIB */
+    XIM_SetSpotLocation (f, xpos - 2, dl->ypos + dl->descent - 2);
+#endif /* HAVE_XIM */
 
   bg_pmap = cachel->background_pixmap;
   if (!IMAGE_INSTANCEP (bg_pmap)
@@ -1398,17 +1398,13 @@ x_output_vertical_divider (struct window *w, int clear)
   struct frame *f = XFRAME (w->frame);
   struct device *d = XDEVICE (f->device);
 
-  EmacsFrame ef = (EmacsFrame) FRAME_X_TEXT_WIDGET (f);
   Display *dpy = DEVICE_X_DISPLAY (d);
   Window x_win = XtWindow (FRAME_X_TEXT_WIDGET (f));
-  Pixel top_shadow_pixel, bottom_shadow_pixel, background_pixel;
   Lisp_Object tmp_pixel;
   XColor tmp_color;
   XGCValues gcv;
-  GC top_shadow_gc, bottom_shadow_gc, background_gc;
+  GC background_gc;
 
-  int use_pixmap = 0;
-  int flip_gcs = 0;
   unsigned long mask;
   int x, y1, y2, width, shadow_thickness, spacing, line_width;
   face_index div_face = get_builtin_face_cache_index (w, Vvertical_divider_face);
@@ -1418,8 +1414,8 @@ x_output_vertical_divider (struct window *w, int clear)
   spacing = XINT (w->vertical_divider_spacing);
   line_width = XINT (w->vertical_divider_line_width);
   x = WINDOW_RIGHT (w) - width;
-  y1 = WINDOW_TOP (w);
-  y2 = WINDOW_BOTTOM (w);
+  y1 = WINDOW_TOP (w) + FRAME_TOP_GUTTER_BOUNDS (f);
+  y2 = WINDOW_BOTTOM (w) + FRAME_BOTTOM_GUTTER_BOUNDS (f);
 
   memset (&gcv, ~0, sizeof (XGCValues));
 
@@ -1427,83 +1423,12 @@ x_output_vertical_divider (struct window *w, int clear)
   tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
 
   /* First, get the GC's. */
-  top_shadow_pixel = tmp_color.pixel;
-  bottom_shadow_pixel = tmp_color.pixel;
-  background_pixel = tmp_color.pixel;
-
-  x_generate_shadow_pixels (f, &top_shadow_pixel, &bottom_shadow_pixel,
-                           background_pixel, ef->core.background_pixel);
-
-  tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, div_face);
-  tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
   gcv.background = tmp_color.pixel;
+  gcv.foreground = tmp_color.pixel;
   gcv.graphics_exposures = False;
   mask = GCForeground | GCBackground | GCGraphicsExposures;
-
-  /* If we can't distinguish one of the shadows (the color is the same as the
-     background), it's better to use a pixmap to generate a dithered gray. */
-  if (top_shadow_pixel == background_pixel ||
-      bottom_shadow_pixel == background_pixel)
-    use_pixmap = 1;
-
-  if (use_pixmap)
-    {
-      if (DEVICE_X_GRAY_PIXMAP (d) == None)
-       {
-         DEVICE_X_GRAY_PIXMAP (d) =
-           XCreatePixmapFromBitmapData (dpy, x_win, (char *) gray_bits,
-                                        gray_width, gray_height, 1, 0, 1);
-       }
-
-      tmp_pixel = WINDOW_FACE_CACHEL_BACKGROUND (w, div_face);
-      tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
-      gcv.foreground = tmp_color.pixel;
-      /* this is needed because the GC draws with a pixmap here */
-      gcv.fill_style = FillOpaqueStippled;
-      gcv.stipple = DEVICE_X_GRAY_PIXMAP (d);
-      top_shadow_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv,
-                                      (mask | GCStipple | GCFillStyle));
-
-      tmp_pixel = WINDOW_FACE_CACHEL_FOREGROUND (w, div_face);
-      tmp_color = COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (tmp_pixel));
-      bottom_shadow_pixel = tmp_color.pixel;
-
-      flip_gcs = (bottom_shadow_pixel ==
-                 WhitePixelOfScreen (DefaultScreenOfDisplay (dpy)));
-    }
-  else
-    {
-      gcv.foreground = top_shadow_pixel;
-      top_shadow_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv, mask);
-    }
-
-  gcv.foreground = bottom_shadow_pixel;
-  bottom_shadow_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv, mask);
-
-  if (use_pixmap && flip_gcs)
-    {
-      GC tmp_gc = bottom_shadow_gc;
-      bottom_shadow_gc = top_shadow_gc;
-      top_shadow_gc = tmp_gc;
-    }
-
-  gcv.foreground = background_pixel;
   background_gc = gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv, mask);
 
-  /* possibly revert the GC's in case the shadow thickness is < 0.
-     This will give a depressed look to the divider */
-  if (shadow_thickness < 0)
-    {
-      GC temp;
-
-      temp = top_shadow_gc;
-      top_shadow_gc = bottom_shadow_gc;
-      bottom_shadow_gc = temp;
-
-      /* better avoid a Bad Address XLib error ;-) */
-      shadow_thickness = - shadow_thickness;
-    }
-
   /* Clear the divider area first.  This needs to be done when a
      window split occurs. */
   if (clear)
@@ -1515,10 +1440,9 @@ x_output_vertical_divider (struct window *w, int clear)
                  line_width, y2 - y1);
 
   /* Draw the shadows around the divider line */
-  x_output_shadows (f, x + spacing, y1,
-                   width - 2 * spacing, y2 - y1,
-                   top_shadow_gc, bottom_shadow_gc,
-                   background_gc, shadow_thickness);
+  x_bevel_area (w, div_face, x + spacing, y1,
+               width - 2 * spacing, y2 - y1,
+               shadow_thickness);
 }
 
 /*****************************************************************************
@@ -1816,54 +1740,6 @@ x_generate_shadow_pixels (struct frame *f, unsigned long *top_shadow,
 }
 
 /*****************************************************************************
- x_clear_to_window_end
-
- Clear the area between ypos1 and ypos2.  Each margin area and the
- text area is handled separately since they may each have their own
- background color.
- ****************************************************************************/
-static void
-x_clear_to_window_end (struct window *w, int ypos1, int ypos2)
-{
-  int height = ypos2 - ypos1;
-
-  if (height)
-    {
-      struct frame *f = XFRAME (w->frame);
-      Lisp_Object window;
-      int bflag = (window_needs_vertical_divider (w) ? 0 : 1);
-      layout_bounds bounds;
-
-      bounds = calculate_display_line_boundaries (w, bflag);
-      XSETWINDOW (window, w);
-
-      if (window_is_leftmost (w))
-       redisplay_clear_region (window, DEFAULT_INDEX, FRAME_LEFT_BORDER_START (f),
-                       ypos1, FRAME_BORDER_WIDTH (f), height);
-
-      if (bounds.left_in - bounds.left_out > 0)
-       redisplay_clear_region (window,
-                       get_builtin_face_cache_index (w, Vleft_margin_face),
-                       bounds.left_out, ypos1,
-                       bounds.left_in - bounds.left_out, height);
-
-      if (bounds.right_in - bounds.left_in > 0)
-       redisplay_clear_region (window, DEFAULT_INDEX, bounds.left_in, ypos1,
-                       bounds.right_in - bounds.left_in, height);
-
-      if (bounds.right_out - bounds.right_in > 0)
-       redisplay_clear_region (window,
-                       get_builtin_face_cache_index (w, Vright_margin_face),
-                       bounds.right_in, ypos1,
-                       bounds.right_out - bounds.right_in, height);
-
-      if (window_is_rightmost (w))
-       redisplay_clear_region (window, DEFAULT_INDEX, FRAME_RIGHT_BORDER_START (f),
-                       ypos1, FRAME_BORDER_WIDTH (f), height);
-    }
-}
-
-/*****************************************************************************
  x_redraw_exposed_window
 
  Given a bounding box for an area that needs to be redrawn, determine
@@ -1980,6 +1856,7 @@ x_redraw_exposed_area (struct frame *f, int x, int y, int width, int height)
      redraw anyhow. */
   MAYBE_FRAMEMETH (f, redraw_exposed_toolbars, (f, x, y, width, height));
 #endif
+  redraw_exposed_gutters (f, x, y, width, height);
 
   if (!f->window_face_cache_reset)
     {
@@ -2069,9 +1946,8 @@ x_output_eol_cursor (struct window *w, struct display_line *dl, int xpos,
 
   if (focus)
     {
-#if defined(HAVE_XIM) && defined(XIM_XLIB)
-      if (FRAME_X_XIC(f))
-       XIM_SetSpotLocation (f, x - 2 , cursor_y + cursor_height - 2);
+#ifdef HAVE_XIM
+      XIM_SetSpotLocation (f, x - 2 , cursor_y + cursor_height - 2);
 #endif /* HAVE_XIM */
 
       if (NILP (bar_cursor_value))
@@ -2112,7 +1988,8 @@ x_clear_frame_window (Lisp_Object window)
       return;
     }
 
-  x_clear_to_window_end (w, WINDOW_TEXT_TOP (w), WINDOW_TEXT_BOTTOM (w));
+  redisplay_clear_to_window_end (w, WINDOW_TEXT_TOP (w), 
+                                WINDOW_TEXT_BOTTOM (w));
 }
 
 static void
@@ -2269,11 +2146,11 @@ console_type_create_redisplay_x (void)
   CONSOLE_HAS_METHOD (x, divider_height);
   CONSOLE_HAS_METHOD (x, eol_cursor_width);
   CONSOLE_HAS_METHOD (x, output_vertical_divider);
-  CONSOLE_HAS_METHOD (x, clear_to_window_end);
   CONSOLE_HAS_METHOD (x, clear_region);
   CONSOLE_HAS_METHOD (x, clear_frame);
   CONSOLE_HAS_METHOD (x, output_begin);
   CONSOLE_HAS_METHOD (x, output_end);
   CONSOLE_HAS_METHOD (x, flash);
   CONSOLE_HAS_METHOD (x, ring_bell);
+  CONSOLE_HAS_METHOD (x, bevel_area);
 }
index 6936acf..e2c0511 100644 (file)
@@ -51,6 +51,7 @@ Boston, MA 02111-1307, USA.  */
 #include "faces.h"
 #include "frame.h"
 #include "glyphs.h"
+#include "gutter.h"
 #include "insdel.h"
 #include "menubar.h"
 #include "objects.h"
@@ -107,6 +108,9 @@ typedef struct position_redisplay_data_type
   /* This information is normally filled in by the create_*_block
      routines and is used by the add_*_rune routines. */
   Lisp_Object window;
+  /* if we are working with strings rather than buffers we need a
+     handle to the string */
+  Lisp_Object string;
   struct device *d;
   struct display_block *db;
   struct display_line *dl;
@@ -271,6 +275,9 @@ static void free_display_line (struct display_line *dl);
 static void update_line_start_cache (struct window *w, Bufpos from, Bufpos to,
                                     Bufpos point, int no_regen);
 static int point_visible (struct window *w, Bufpos point, int type);
+extern Bytind bi_find_next_emchar_in_string (struct Lisp_String* str, Emchar target, 
+                                            Bytind st, EMACS_INT count);
+extern int string_column_at_point (struct Lisp_String* s, Bufpos init_pos, int tab_width);
 
 /* This used to be 10 but 30 seems to give much better performance. */
 #define INIT_MAX_PREEMPTS      30
@@ -401,6 +408,10 @@ int asynch_device_change_pending;
 int toolbar_changed;
 int toolbar_changed_set;
 
+/* non-nil if any gutter has changed */
+int gutter_changed;
+int gutter_changed_set;
+
 /* non-nil if any window has changed since the last time redisplay completed */
 int windows_changed;
 
@@ -902,9 +913,15 @@ add_emchar_rune (pos_data *data)
   crb->xpos = data->pixpos;
   crb->width = width;
   if (data->bi_bufpos)
-    crb->bufpos =
-      bytind_to_bufpos (XBUFFER (WINDOW_BUFFER (XWINDOW (data->window))),
-                       data->bi_bufpos);
+    {
+      if (NILP (data->string))
+       crb->bufpos =
+         bytind_to_bufpos (XBUFFER (WINDOW_BUFFER (XWINDOW (data->window))),
+                           data->bi_bufpos);
+      else
+       crb->bufpos =
+         bytecount_to_charcount (XSTRING_DATA (data->string), data->bi_bufpos);
+    }
   else if (data->is_modeline)
     crb->bufpos = data->modeline_charpos;
   else
@@ -1866,6 +1883,7 @@ create_text_block (struct window *w, struct display_line *dl,
      them to this structure for ease of passing. */
   data.d = d;
   XSETWINDOW (data.window, w);
+  data.string = Qnil;
   data.db = db;
   data.dl = dl;
 
@@ -2643,6 +2661,7 @@ create_overlay_glyph_block (struct window *w, struct display_line *dl)
   data.last_charset = Qunbound;
   data.last_findex = DEFAULT_INDEX;
   data.result_str = Qnil;
+  data.string = Qnil;
 
   Dynarr_reset (data.db->runes);
 
@@ -3493,6 +3512,10 @@ generate_modeline (struct window *w, struct display_line *dl, int type)
       /* The modeline is at the bottom of the gutters. */
       dl->ypos = WINDOW_BOTTOM (w);
 
+      /* adjust for the bottom gutter */
+      if (window_is_lowest (w))
+       dl->ypos -= FRAME_BOTTOM_GUTTER_BOUNDS (f);
+
       rb.findex = MODELINE_INDEX;
       rb.xpos = dl->bounds.left_out;
       rb.width = dl->bounds.right_out - dl->bounds.left_out;
@@ -3546,6 +3569,9 @@ generate_modeline (struct window *w, struct display_line *dl, int type)
      set this until we've generated the modeline in order to account
      for any embedded faces. */
   dl->ypos = WINDOW_BOTTOM (w) - dl->descent - ypos_adj;
+  /* adjust for the bottom gutter */
+  if (window_is_lowest (w))
+    dl->ypos -= FRAME_BOTTOM_GUTTER_BOUNDS (f);
 }
 
 static void
@@ -3572,6 +3598,7 @@ generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str,
   data.last_findex = DEFAULT_INDEX;
   data.result_str = result_str;
   data.is_modeline = 1;
+  data.string = Qnil;
   XSETWINDOW (data.window, w);
 
   Dynarr_reset (formatted_string_extent_dynarr);
@@ -4178,90 +4205,934 @@ real_current_modeline_height (struct window *w)
 
 \f
 /***************************************************************************/
-/*                                                                        */
-/*                        window-regeneration routines                     */
-/*                                                                        */
+/*                                                             */
+/*                            displayable string routines                      */
+/*                                                             */
 /***************************************************************************/
 
-/* For a given window and starting position in the buffer it contains,
-   ensure that the TYPE display lines accurately represent the
-   presentation of the window.  We pass the buffer instead of getting
-   it from the window since redisplay_window may have temporarily
-   changed it to the echo area buffer. */
+/* Given a position for a string in a window, ensure that the given
+   display line DL accurately represents the text on a line starting
+   at the given position.
 
-static void
-regenerate_window (struct window *w, Bufpos start_pos, Bufpos point, int type)
+   Yes, this is duplicating the code of create_text_block, but it
+   looked just too hard to change create_text_block to handle strings
+   *and* buffers. We already make a distinction between the two
+   elsewhere in the code so I think unifying them would require a
+   complete MULE rewrite. Besides, the other distinction is that these
+   functions cover text that the user *cannot edit* so we can remove
+   everything to do with cursors, minibuffers etc. Eventually the
+   modeline routines should be modified to use this code as it copes
+   with many more types of display situation. */
+
+static Bufpos
+create_string_text_block (struct window *w, Lisp_Object disp_string,
+                         struct display_line *dl,
+                         Bufpos start_pos,
+                         prop_block_dynarr **prop,
+                         face_index default_face)
 {
   struct frame *f = XFRAME (w->frame);
+  /* Note that a lot of the buffer controlled stuff has been left in
+     because you might well want to make use of it (selective display
+     etc), its just the buffer text that we do not use. */
   struct buffer *b = XBUFFER (w->buffer);
-  int ypos = WINDOW_TEXT_TOP (w);
-  int yend;    /* set farther down */
+  struct device *d = XDEVICE (f->device);
+  struct Lisp_String* s = XSTRING (disp_string);
 
-  prop_block_dynarr *prop;
-  layout_bounds bounds;
-  display_line_dynarr *dla;
-  int need_modeline;
+  /* we're working with these a lot so precalculate them */
+  Bytecount slen = XSTRING_LENGTH (disp_string);
+  Bytecount bi_string_zv = slen;
+  Bytind bi_start_pos = charcount_to_bytecount (string_data (s), start_pos);
 
-  /* The lines had better exist by this point. */
-  if (!(dla = window_display_lines (w, type)))
-    abort ();
-  Dynarr_reset (dla);
-  w->max_line_len = 0;
+  pos_data data;
 
-  /* Normally these get updated in redisplay_window but it is possible
-     for this function to get called from some other points where that
-     update may not have occurred.  This acts as a safety check. */
-  if (!Dynarr_length (w->face_cachels))
-    reset_face_cachels (w);
-  if (!Dynarr_length (w->glyph_cachels))
-    reset_glyph_cachels (w);
+  int truncate_win = window_truncation_on (w);
+  int end_glyph_width = 0;
 
-  Fset_marker (w->start[type], make_int (start_pos), w->buffer);
-  Fset_marker (w->pointm[type], make_int (point), w->buffer);
-  w->last_point_x[type] = -1;
-  w->last_point_y[type] = -1;
+  /* we're going to ditch selective display for static text, its an
+     FSF thing and invisble extents are the way to go
+     here. Implementing it also relies on a number of buffer-specific
+     functions that we don't have the luxury of being able to use
+     here. */
 
-  /* Make sure a modeline is in the structs if needed. */
-  need_modeline = ensure_modeline_generated (w, type);
+  /* The variable ctl-arrow allows the user to specify what characters
+     can actually be displayed and which octal should be used for.
+     #### This variable should probably have some rethought done to
+     it.
 
-  /* Wait until here to set this so that the structs have a modeline
-     generated in the case where one didn't exist. */
-  yend = WINDOW_TEXT_BOTTOM (w);
+     #### It would also be really nice if you could specify that
+     the characters come out in hex instead of in octal.  Mule
+     does that by adding a ctl-hexa variable similar to ctl-arrow,
+     but that's bogus -- we need a more general solution.  I
+     think you need to extend the concept of display tables
+     into a more general conversion mechanism.  Ideally you
+     could specify a Lisp function that converts characters,
+     but this violates the Second Golden Rule and besides would
+     make things way way way way slow.
 
-  bounds = calculate_display_line_boundaries (w, 0);
+     So instead, we extend the display-table concept, which was
+     historically limited to 256-byte vectors, to one of the
+     following:
 
-  /* 97/3/14 jhod: stuff added here to support pre-prompts (used for input systems) */
-  if (MINI_WINDOW_P (w)
-      && (!NILP (Vminibuf_prompt) || !NILP (Vminibuf_preprompt))
-      && !echo_area_active (f)
-      && start_pos == BUF_BEGV (b))
-    {
-      struct prop_block pb;
-      Lisp_Object string;
-      prop = Dynarr_new (prop_block);
+     a) A 256-entry vector, for backward compatibility;
+     b) char-table, mapping characters to values;
+     c) range-table, mapping ranges of characters to values;
+     d) a list of the above.
 
-      string = concat2(Vminibuf_preprompt, Vminibuf_prompt);
-      pb.type = PROP_MINIBUF_PROMPT;
-      pb.data.p_string.str = XSTRING_DATA(string);
-      pb.data.p_string.len = XSTRING_LENGTH(string);
-      Dynarr_add (prop, pb);
+     The (d) option allows you to specify multiple display tables
+     instead of just one.  Each display table can specify conversions
+     for some characters and leave others unchanged.  The way the
+     character gets displayed is determined by the first display table
+     with a binding for that character.  This way, you could call a
+     function `enable-hex-display' that adds a hex display-table to
+     the list of display tables for the current buffer.
+
+     #### ...not yet implemented...  Also, we extend the concept of
+     "mapping" to include a printf-like spec.  Thus you can make all
+     extended characters show up as hex with a display table like
+     this:
+
+         #s(range-table data ((256 524288) (format "%x")))
+
+     Since more than one display table is possible, you have
+     great flexibility in mapping ranges of characters.  */
+  Emchar printable_min = (CHAR_OR_CHAR_INTP (b->ctl_arrow)
+                         ? XCHAR_OR_CHAR_INT (b->ctl_arrow)
+                         : ((EQ (b->ctl_arrow, Qt) || EQ (b->ctl_arrow, Qnil))
+                            ? 255 : 160));
+
+  Lisp_Object face_dt, window_dt;
+
+  /* The text display block for this display line. */
+  struct display_block *db = get_display_block_from_line (dl, TEXT);
+
+  /* The first time through the main loop we need to force the glyph
+     data to be updated. */
+  int initial = 1;
+
+  /* Apparently the new extent_fragment_update returns an end position
+     equal to the position passed in if there are no more runs to be
+     displayed. */
+  int no_more_frags = 0;
+
+  dl->used_prop_data = 0;
+  dl->num_chars = 0;
+
+  /* set up faces to use for clearing areas, used by
+     output_display_line */
+  dl->default_findex = default_face;
+  if (default_face)
+    {
+      dl->left_margin_findex = default_face;
+      dl->right_margin_findex = default_face;
     }
   else
-    prop = 0;
+    {
+      dl->left_margin_findex = 
+       get_builtin_face_cache_index (w, Vleft_margin_face);
+      dl->right_margin_findex = 
+       get_builtin_face_cache_index (w, Vright_margin_face);
+    }
 
-  while (ypos < yend)
+  xzero (data);
+  data.ef = extent_fragment_new (disp_string, f);
+
+  /* These values are used by all of the rune addition routines.  We add
+     them to this structure for ease of passing. */
+  data.d = d;
+  XSETWINDOW (data.window, w);
+  data.db = db;
+  data.dl = dl;
+
+  data.bi_bufpos = bi_start_pos;
+  data.pixpos = dl->bounds.left_in;
+  data.last_charset = Qunbound;
+  data.last_findex = default_face;
+  data.result_str = Qnil;
+  data.string = disp_string;
+
+  /* Set the right boundary adjusting it to take into account any end
+     glyph.  Save the width of the end glyph for later use. */
+  data.max_pixpos = dl->bounds.right_in;
+#if 0
+  if (truncate_win)
+    end_glyph_width = GLYPH_CACHEL_WIDTH (w, TRUN_GLYPH_INDEX);
+  else
+    end_glyph_width = GLYPH_CACHEL_WIDTH (w, CONT_GLYPH_INDEX);
+#endif
+  data.max_pixpos -= end_glyph_width;
+
+  data.cursor_type = NO_CURSOR;
+  data.cursor_x = -1;
+
+  data.start_col = 0;
+  /* I don't think we want this, string areas should not scroll with
+     the window 
+  data.start_col = w->hscroll;
+  data.bi_start_col_enabled = (w->hscroll ? bi_start_pos : 0);
+  */
+  data.bi_start_col_enabled = 0;
+  data.hscroll_glyph_width_adjust = 0;
+
+  /* We regenerate the line from the very beginning. */
+  Dynarr_reset (db->runes);
+
+  /* Why is this less than or equal and not just less than?  If the
+     starting position is already equal to the maximum we can't add
+     anything else, right?  Wrong.  We might still have a newline to
+     add.  A newline can use the room allocated for an end glyph since
+     if we add it we know we aren't going to be adding any end
+     glyph. */
+
+  /* #### Chuck -- I think this condition should be while (1).
+     Otherwise if (e.g.) there is one begin-glyph and one end-glyph
+     and the begin-glyph ends exactly at the end of the window, the
+     end-glyph and text might not be displayed.  while (1) ensures
+     that the loop terminates only when either (a) there is
+     propagation data or (b) the end-of-line or end-of-buffer is hit.
+
+     #### Also I think you need to ensure that the operation
+     "add begin glyphs; add end glyphs; add text" is atomic and
+     can't get interrupted in the middle.  If you run off the end
+     of the line during that operation, then you keep accumulating
+     propagation data until you're done.  Otherwise, if the (e.g.)
+     there's a begin glyph at a particular position and attempting
+     to display that glyph results in window-end being hit and
+     propagation data being generated, then the character at that
+     position won't be displayed.
+
+     #### See also the comment after the end of this loop, below.
+     */
+  while (data.pixpos <= data.max_pixpos)
     {
-      struct display_line dl;
-      struct display_line *dlp;
-      int local;
+      /* #### This check probably should not be necessary. */
+      if (data.bi_bufpos > bi_string_zv)
+       {
+         /* #### urk!  More of this lossage! */
+         data.bi_bufpos--;
+         goto done;
+       }
 
-      if (Dynarr_length (dla) < Dynarr_largest (dla))
+      /* Check for face changes. */
+      if (initial || (!no_more_frags && data.bi_bufpos == data.ef->end))
        {
-         dlp = Dynarr_atp (dla, Dynarr_length (dla));
-         local = 0;
+         /* Now compute the face and begin/end-glyph information. */
+         data.findex =
+           /* Remember that the extent-fragment routines deal in Bytind's. */
+           extent_fragment_update (w, data.ef, data.bi_bufpos);
+         /* This is somewhat cheesy but the alternative is to
+             propagate default_face into extent_fragment_update. */
+         if (data.findex == DEFAULT_INDEX)
+           data.findex = default_face;
+
+         get_display_tables (w, data.findex, &face_dt, &window_dt);
+
+         if (data.bi_bufpos == data.ef->end)
+           no_more_frags = 1;
        }
-      else
+      initial = 0;
+
+      /* Determine what is next to be displayed.  We first handle any
+         glyphs returned by glyphs_at_bufpos.  If there are no glyphs to
+         display then we determine what to do based on the character at the
+         current buffer position. */
+
+      /* If the current position is covered by an invisible extent, do
+         nothing (except maybe add some ellipses).
+
+        #### The behavior of begin and end-glyphs at the edge of an
+        invisible extent should be investigated further.  This is
+        fairly low priority though. */
+      if (data.ef->invisible)
        {
+         /* #### Chuck, perhaps you could look at this code?  I don't
+            really know what I'm doing. */
+         if (*prop)
+           {
+             Dynarr_free (*prop);
+             *prop = 0;
+           }
+
+         /* The extent fragment code only sets this when we should
+            really display the ellipses.  It makes sure the ellipses
+            don't get displayed more than once in a row. */
+         if (data.ef->invisible_ellipses)
+           {
+             struct glyph_block gb;
+
+             data.ef->invisible_ellipses_already_displayed = 1;
+             data.ef->invisible_ellipses = 0;
+             gb.extent = Qnil;
+             gb.glyph = Vinvisible_text_glyph;
+             *prop = add_glyph_rune (&data, &gb, BEGIN_GLYPHS, 0,
+                                     GLYPH_CACHEL (w, INVIS_GLYPH_INDEX));
+             /* Perhaps they shouldn't propagate if the very next thing
+                is to display a newline (for compatibility with
+                selective-display-ellipses)?  Maybe that's too
+                abstruse. */
+             if (*prop)
+               goto done;
+           }
+
+         /* #### What if we we're dealing with a display table? */
+         if (data.start_col)
+           data.start_col--;
+
+         if (data.bi_bufpos == bi_string_zv)
+           goto done;
+         else
+           INC_CHARBYTIND (string_data (s), data.bi_bufpos);
+       }
+
+      /* If there is propagation data, then it represents the current
+         buffer position being displayed.  Add them and advance the
+         position counter.  This might also add the minibuffer
+         prompt. */
+      else if (*prop)
+       {
+         dl->used_prop_data = 1;
+         *prop = add_propagation_runes (prop, &data);
+
+         if (*prop)
+           goto done;  /* gee, a really narrow window */
+         else if (data.bi_bufpos == bi_string_zv)
+           goto done;
+         else if (data.bi_bufpos < 0)
+           /* #### urk urk urk! Aborts are not very fun! Fix this please! */
+           data.bi_bufpos = 0;
+         else
+           INC_CHARBYTIND (string_data (s), data.bi_bufpos);
+       }
+
+      /* If there are end glyphs, add them to the line.  These are
+        the end glyphs for the previous run of text.  We add them
+        here rather than doing them at the end of handling the
+        previous run so that glyphs at the beginning and end of
+        a line are handled correctly. */
+      else if (Dynarr_length (data.ef->end_glyphs) > 0)
+       {
+         *prop = add_glyph_runes (&data, END_GLYPHS);
+         if (*prop)
+           goto done;
+       }
+
+      /* If there are begin glyphs, add them to the line. */
+      else if (Dynarr_length (data.ef->begin_glyphs) > 0)
+       {
+         *prop = add_glyph_runes (&data, BEGIN_GLYPHS);
+         if (*prop)
+           goto done;
+       }
+
+      /* If at end-of-buffer, we've already processed begin and
+        end-glyphs at this point and there's no text to process,
+        so we're done. */
+      else if (data.bi_bufpos == bi_string_zv)
+       goto done;
+
+      else
+       {
+         Lisp_Object entry = Qnil;
+         /* Get the character at the current buffer position. */
+         data.ch = string_char (s, data.bi_bufpos);
+         if (!NILP (face_dt) || !NILP (window_dt))
+           entry = display_table_entry (data.ch, face_dt, window_dt);
+
+         /* If there is a display table entry for it, hand it off to
+             add_disp_table_entry_runes and let it worry about it. */
+         if (!NILP (entry) && !EQ (entry, make_char (data.ch)))
+           {
+             *prop = add_disp_table_entry_runes (&data, entry);
+
+             if (*prop)
+               goto done;
+           }
+
+         /* Check if we have hit a newline character.  If so, add a marker
+             to the line and end this loop. */
+         else if (data.ch == '\n')
+           {
+             /* We aren't going to be adding an end glyph so give its
+                 space back in order to make sure that the cursor can
+                 fit. */
+             data.max_pixpos += end_glyph_width;
+             goto done;
+           }
+
+         /* If the current character is considered to be printable, then
+             just add it. */
+         else if (data.ch >= printable_min)
+           {
+             *prop = add_emchar_rune (&data);
+             if (*prop)
+               goto done;
+           }
+
+         /* If the current character is a tab, determine the next tab
+             starting position and add a blank rune which extends from the
+             current pixel position to that starting position. */
+         else if (data.ch == '\t')
+           {
+             int tab_start_pixpos = data.pixpos;
+             int next_tab_start;
+             int char_tab_width;
+             int prop_width = 0;
+
+             if (data.start_col > 1)
+               tab_start_pixpos -= (space_width (w) * (data.start_col - 1));
+
+             next_tab_start =
+               next_tab_position (w, tab_start_pixpos,
+                                  dl->bounds.left_in +
+                                  data.hscroll_glyph_width_adjust);
+             if (next_tab_start > data.max_pixpos)
+               {
+                 prop_width = next_tab_start - data.max_pixpos;
+                 next_tab_start = data.max_pixpos;
+               }
+             data.blank_width = next_tab_start - data.pixpos;
+             char_tab_width =
+               (next_tab_start - tab_start_pixpos) / space_width (w);
+
+             *prop = add_blank_rune (&data, w, char_tab_width);
+
+             /* add_blank_rune is only supposed to be called with
+                 sizes guaranteed to fit in the available space. */
+             assert (!(*prop));
+
+             if (prop_width)
+               {
+                 struct prop_block pb;
+                 *prop = Dynarr_new (prop_block);
+
+                 pb.type = PROP_BLANK;
+                 pb.data.p_blank.width = prop_width;
+                 pb.data.p_blank.findex = data.findex;
+                 Dynarr_add (*prop, pb);
+
+                 goto done;
+               }
+           }
+
+         /* If character is a control character, pass it off to
+             add_control_char_runes.
+
+            The is_*() routines have undefined results on
+            arguments outside of the range [-1, 255].  (This
+            often bites people who carelessly use `char' instead
+            of `unsigned char'.)
+            */
+         else if (data.ch < 0x100 && iscntrl ((Bufbyte) data.ch))
+           {
+             *prop = add_control_char_runes (&data, b);
+
+             if (*prop)
+               goto done;
+           }
+
+         /* If the character is above the ASCII range and we have not
+             already handled it, then print it as an octal number. */
+         else if (data.ch >= 0200)
+           {
+             *prop = add_octal_runes (&data);
+
+             if (*prop)
+               goto done;
+           }
+
+         /* Assume the current character is considered to be printable,
+             then just add it. */
+         else
+           {
+             *prop = add_emchar_rune (&data);
+             if (*prop)
+               goto done;
+           }
+
+         INC_CHARBYTIND (string_data (s), data.bi_bufpos);
+       }
+    }
+
+done:
+
+  /* Determine the starting point of the next line if we did not hit the
+     end of the buffer. */
+  if (data.bi_bufpos < bi_string_zv)
+    {
+      /* #### This check is not correct.  If the line terminated
+        due to a begin-glyph or end-glyph hitting window-end, then
+        data.ch will not point to the character at data.bi_bufpos.  If
+        you make the two changes mentioned at the top of this loop,
+        you should be able to say '(if (*prop))'.  That should also
+        make it possible to eliminate the data.bi_bufpos < BI_BUF_ZV (b)
+        check. */
+
+      /* The common case is that the line ended because we hit a newline.
+         In that case, the next character is just the next buffer
+         position. */
+      if (data.ch == '\n')
+       {
+         INC_CHARBYTIND (string_data (s), data.bi_bufpos);
+       }
+
+      /* Otherwise we have a buffer line which cannot fit on one display
+         line. */
+      else
+       {
+         struct glyph_block gb;
+         struct glyph_cachel *cachel;
+
+         /* If the line is to be truncated then we actually have to look
+             for the next newline.  We also add the end-of-line glyph which
+             we know will fit because we adjusted the right border before
+             we starting laying out the line. */
+         data.max_pixpos += end_glyph_width;
+         data.findex = default_face;
+         gb.extent = Qnil;
+
+         if (truncate_win)
+           {
+             Bytind bi_pos;
+
+             /* Now find the start of the next line. */
+             bi_pos = bi_find_next_emchar_in_string (s, '\n', data.bi_bufpos, 1);
+
+             data.cursor_type = NO_CURSOR;
+             data.bi_bufpos = bi_pos;
+             gb.glyph = Vtruncation_glyph;
+             cachel = GLYPH_CACHEL (w, TRUN_GLYPH_INDEX);
+           }
+         else
+           {
+             /* The cursor can never be on the continuation glyph. */
+             data.cursor_type = NO_CURSOR;
+
+             /* data.bi_bufpos is already at the start of the next line. */
+
+             gb.glyph = Vcontinuation_glyph;
+             cachel = GLYPH_CACHEL (w, CONT_GLYPH_INDEX);
+           }
+
+         if (end_glyph_width)
+           add_glyph_rune (&data, &gb, BEGIN_GLYPHS, 0, cachel);
+
+         if (truncate_win && data.bi_bufpos == bi_string_zv)
+           {
+             CONST Bufbyte* endb = charptr_n_addr (string_data (s), bi_string_zv);
+             DEC_CHARPTR (endb);
+             if (charptr_emchar (endb) != '\n')
+               {
+                 /* #### Damn this losing shit. */
+                 data.bi_bufpos++;
+               }
+           }
+       }
+    }
+  else if (data.bi_bufpos == bi_string_zv)
+    {
+      /* We need to add a marker to the end of the line since there is no
+         newline character in order for the cursor to get drawn.  We label
+         it as a newline so that it gets handled correctly by the
+         whitespace routines below. */
+
+      data.ch = '\n';
+      data.blank_width = DEVMETH (d, eol_cursor_width, ());
+      data.findex = default_face;
+      data.start_col = 0;
+      data.bi_start_col_enabled = 0;
+
+      data.max_pixpos += data.blank_width;
+      add_emchar_rune (&data);
+      data.max_pixpos -= data.blank_width;
+
+      /* #### urk!  Chuck, this shit is bad news.  Going around
+        manipulating invalid positions is guaranteed to result in
+        trouble sooner or later. */
+      data.bi_bufpos = bi_string_zv + 1;
+    }
+
+  /* Calculate left whitespace boundary. */
+  {
+    int elt = 0;
+
+    /* Whitespace past a newline is considered right whitespace. */
+    while (elt < Dynarr_length (db->runes))
+      {
+       struct rune *rb = Dynarr_atp (db->runes, elt);
+
+       if ((rb->type == RUNE_CHAR && rb->object.chr.ch == ' ')
+           || rb->type == RUNE_BLANK)
+         {
+           dl->bounds.left_white += rb->width;
+           elt++;
+         }
+       else
+         elt = Dynarr_length (db->runes);
+      }
+  }
+
+  /* Calculate right whitespace boundary. */
+  {
+    int elt = Dynarr_length (db->runes) - 1;
+    int done = 0;
+
+    while (!done && elt >= 0)
+      {
+       struct rune *rb = Dynarr_atp (db->runes, elt);
+
+       if (!(rb->type == RUNE_CHAR && rb->object.chr.ch < 0x100
+           && isspace (rb->object.chr.ch))
+           && !rb->type == RUNE_BLANK)
+         {
+           dl->bounds.right_white = rb->xpos + rb->width;
+           done = 1;
+         }
+
+       elt--;
+
+      }
+
+    /* The line is blank so everything is considered to be right
+       whitespace. */
+    if (!done)
+      dl->bounds.right_white = dl->bounds.left_in;
+  }
+
+  /* Set the display blocks bounds. */
+  db->start_pos = dl->bounds.left_in;
+  if (Dynarr_length (db->runes))
+    {
+      struct rune *rb = Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1);
+
+      db->end_pos = rb->xpos + rb->width;
+    }
+  else
+    db->end_pos = dl->bounds.right_white;
+
+  /* update line height parameters */
+  if (!data.new_ascent && !data.new_descent)
+    {
+      /* We've got a blank line so initialize these values from the default
+         face. */
+      default_face_font_info (data.window, &data.new_ascent,
+                             &data.new_descent, 0, 0, 0);
+    }
+
+  if (data.max_pixmap_height)
+    {
+      int height = data.new_ascent + data.new_descent;
+      int pix_ascent, pix_descent;
+
+      pix_descent = data.max_pixmap_height * data.new_descent / height;
+      pix_ascent = data.max_pixmap_height - pix_descent;
+
+      data.new_ascent = max (data.new_ascent, pix_ascent);
+      data.new_descent = max (data.new_descent, pix_descent);
+    }
+
+  dl->ascent = data.new_ascent;
+  dl->descent = data.new_descent;
+
+  {
+    unsigned short ascent = (unsigned short) XINT (w->minimum_line_ascent);
+
+    if (dl->ascent < ascent)
+      dl->ascent = ascent;
+  }
+  {
+    unsigned short descent = (unsigned short) XINT (w->minimum_line_descent);
+
+    if (dl->descent < descent)
+      dl->descent = descent;
+  }
+
+  dl->cursor_elt = data.cursor_x;
+  /* #### lossage lossage lossage! Fix this shit! */
+  if (data.bi_bufpos > bi_string_zv)
+    dl->end_bufpos = buffer_or_string_bytind_to_bufpos (disp_string, bi_string_zv);
+  else
+    dl->end_bufpos = buffer_or_string_bytind_to_bufpos (disp_string, data.bi_bufpos) - 1;
+  if (truncate_win)
+    data.dl->num_chars = 
+      string_column_at_point (s, dl->end_bufpos, XINT (b->tab_width));
+  else
+    /* This doesn't correctly take into account tabs and control
+       characters but if the window isn't being truncated then this
+       value isn't going to end up being used anyhow. */
+    data.dl->num_chars = dl->end_bufpos - dl->bufpos;
+
+  /* #### handle horizontally scrolled line with text none of which
+     was actually laid out. */
+
+  /* #### handle any remainder of overlay arrow */
+
+  if (*prop == ADD_FAILED)
+    *prop = NULL;
+
+  if (truncate_win && *prop)
+    {
+      Dynarr_free (*prop);
+      *prop = NULL;
+    }
+
+  extent_fragment_delete (data.ef);
+
+  /* #### If we started at EOB, then make sure we return a value past
+     it so that regenerate_window will exit properly.  This is bogus.
+     The main loop should get fixed so that it isn't necessary to call
+     this function if we are already at EOB. */
+
+  if (data.bi_bufpos == bi_string_zv && bi_start_pos == bi_string_zv)
+    return bytecount_to_charcount (string_data (s), data.bi_bufpos) + 1; /* Yuck! */
+  else
+    return bytecount_to_charcount (string_data (s), data.bi_bufpos);
+}
+
+/* Given a display line and a starting position, ensure that the
+   contents of the display line accurately represent the visual
+   representation of the buffer contents starting from the given
+   position when displayed in the given window.  The display line ends
+   when the contents of the line reach the right boundary of the given
+   window. 
+   
+   This is very similar to generate_display_line but with the same
+   limitations as create_string_text_block. I have taken the liberty
+   of fixing the bytind stuff though.*/
+
+static Bufpos
+generate_string_display_line (struct window *w, Lisp_Object disp_string,
+                             struct display_line *dl,
+                             Bufpos start_pos,
+                             prop_block_dynarr **prop,
+                             face_index default_face)
+{
+  Bufpos ret_bufpos;
+
+  /* you must set bounds before calling this. */
+
+  /* Reset what this line is using. */
+  if (dl->display_blocks)
+    Dynarr_reset (dl->display_blocks);
+  if (dl->left_glyphs)
+    {
+      Dynarr_free (dl->left_glyphs);
+      dl->left_glyphs = 0;
+    }
+  if (dl->right_glyphs)
+    {
+      Dynarr_free (dl->right_glyphs);
+      dl->right_glyphs = 0;
+    }
+
+  /* We aren't generating a modeline at the moment. */
+  dl->modeline = 0;
+
+  /* Create a display block for the text region of the line. */
+  ret_bufpos = create_string_text_block (w, disp_string, dl, start_pos,
+                                        prop, default_face);
+  dl->bufpos = start_pos;
+  if (dl->end_bufpos < dl->bufpos)
+    dl->end_bufpos = dl->bufpos;
+
+  /* If there are left glyphs associated with any character in the
+     text block, then create a display block to handle them. */
+  if (dl->left_glyphs != NULL && Dynarr_length (dl->left_glyphs))
+    create_left_glyph_block (w, dl, 0);
+
+  /* If there are right glyphs associated with any character in the
+     text block, then create a display block to handle them. */
+  if (dl->right_glyphs != NULL && Dynarr_length (dl->right_glyphs))
+    create_right_glyph_block (w, dl);
+
+  return ret_bufpos;
+}
+
+/* This is ripped off from regenerate_window. All we want to do is
+   loop through elements in the string creating display lines until we
+   have covered the provided area. Simple really.  */
+void
+generate_displayable_area (struct window *w, Lisp_Object disp_string,
+                          int xpos, int ypos, int width, int height,
+                          display_line_dynarr* dla,
+                          Bufpos start_pos,
+                          face_index default_face)
+{
+  int yend = ypos + height;
+  Charcount s_zv;
+
+  prop_block_dynarr *prop = 0;
+  layout_bounds bounds;
+  assert (dla);
+
+  Dynarr_reset (dla);
+  /* if there's nothing to do then do nothing. code after this assumes
+     there is something to do. */
+  if (NILP (disp_string))
+    return;
+
+  s_zv = XSTRING_CHAR_LENGTH (disp_string) - 1;
+
+  bounds.left_out = xpos;
+  bounds.right_out = xpos + width;
+  /* The inner boundaries mark where the glyph margins are located. */
+  bounds.left_in = bounds.left_out + window_left_margin_width (w);
+  bounds.right_in = bounds.right_out - window_right_margin_width (w);
+  /* We cannot fully calculate the whitespace boundaries as they
+     depend on the contents of the line being displayed. */
+  bounds.left_white = bounds.left_in;
+  bounds.right_white = bounds.right_in;
+
+  while (ypos < yend)
+    {
+      struct display_line dl;
+      struct display_line *dlp;
+      Bufpos next_pos;
+      int local;
+
+      if (Dynarr_length (dla) < Dynarr_largest (dla))
+       {
+         dlp = Dynarr_atp (dla, Dynarr_length (dla));
+         local = 0;
+       }
+      else
+       {
+
+         xzero (dl);
+         dlp = &dl;
+         local = 1;
+       }
+
+      dlp->bounds = bounds;
+      dlp->offset = 0;
+      next_pos = generate_string_display_line (w, disp_string, dlp, start_pos,
+                                              &prop, default_face);
+      /* we need to make sure that we continue along the line if there
+         is more left to display otherwise we just end up redisplaying
+         the same chunk over and over again. */
+      if (next_pos == start_pos && next_pos < s_zv)
+       start_pos++;
+      else
+       start_pos = next_pos;
+
+      dlp->ypos = ypos + dlp->ascent;
+      ypos = dlp->ypos + dlp->descent;
+
+      if (ypos > yend)
+       {
+         int visible_height = dlp->ascent + dlp->descent;
+
+         dlp->clip = (ypos - yend);
+         visible_height -= dlp->clip;
+
+         if (visible_height < VERTICAL_CLIP (w, 1))
+           {
+             if (local)
+               free_display_line (dlp);
+             break;
+           }
+       }
+      else
+       dlp->clip = 0;
+
+      Dynarr_add (dla, *dlp);
+
+      /* #### This type of check needs to be done down in the
+        generate_display_line call. */
+      if (start_pos >= s_zv)
+       break;
+    }
+
+  if (prop)
+    Dynarr_free (prop);
+}
+
+\f
+/***************************************************************************/
+/*                                                                        */
+/*                        window-regeneration routines                     */
+/*                                                                        */
+/***************************************************************************/
+
+/* For a given window and starting position in the buffer it contains,
+   ensure that the TYPE display lines accurately represent the
+   presentation of the window.  We pass the buffer instead of getting
+   it from the window since redisplay_window may have temporarily
+   changed it to the echo area buffer. */
+
+static void
+regenerate_window (struct window *w, Bufpos start_pos, Bufpos point, int type)
+{
+  struct frame *f = XFRAME (w->frame);
+  struct buffer *b = XBUFFER (w->buffer);
+  int ypos = WINDOW_TEXT_TOP (w);
+  int yend;    /* set farther down */
+
+  prop_block_dynarr *prop;
+  layout_bounds bounds;
+  display_line_dynarr *dla;
+  int need_modeline;
+
+  /* The lines had better exist by this point. */
+  if (!(dla = window_display_lines (w, type)))
+    abort ();
+  Dynarr_reset (dla);
+  w->max_line_len = 0;
+
+  /* Normally these get updated in redisplay_window but it is possible
+     for this function to get called from some other points where that
+     update may not have occurred.  This acts as a safety check. */
+  if (!Dynarr_length (w->face_cachels))
+    reset_face_cachels (w);
+  if (!Dynarr_length (w->glyph_cachels))
+    reset_glyph_cachels (w);
+
+  Fset_marker (w->start[type], make_int (start_pos), w->buffer);
+  Fset_marker (w->pointm[type], make_int (point), w->buffer);
+  w->last_point_x[type] = -1;
+  w->last_point_y[type] = -1;
+
+  /* Make sure a modeline is in the structs if needed. */
+  need_modeline = ensure_modeline_generated (w, type);
+
+  /* Wait until here to set this so that the structs have a modeline
+     generated in the case where one didn't exist. */
+  yend = WINDOW_TEXT_BOTTOM (w);
+
+  bounds = calculate_display_line_boundaries (w, 0);
+
+  /* 97/3/14 jhod: stuff added here to support pre-prompts (used for input systems) */
+  if (MINI_WINDOW_P (w)
+      && (!NILP (Vminibuf_prompt) || !NILP (Vminibuf_preprompt))
+      && !echo_area_active (f)
+      && start_pos == BUF_BEGV (b))
+    {
+      struct prop_block pb;
+      Lisp_Object string;
+      prop = Dynarr_new (prop_block);
+
+      string = concat2(Vminibuf_preprompt, Vminibuf_prompt);
+      pb.type = PROP_MINIBUF_PROMPT;
+      pb.data.p_string.str = XSTRING_DATA(string);
+      pb.data.p_string.len = XSTRING_LENGTH(string);
+      Dynarr_add (prop, pb);
+    }
+  else
+    prop = 0;
+
+  while (ypos < yend)
+    {
+      struct display_line dl;
+      struct display_line *dlp;
+      int local;
+
+      if (Dynarr_length (dla) < Dynarr_largest (dla))
+       {
+         dlp = Dynarr_atp (dla, Dynarr_length (dla));
+         local = 0;
+       }
+      else
+       {
+
          xzero (dl);
          dlp = &dl;
          local = 1;
@@ -4997,7 +5868,7 @@ redisplay_window (Lisp_Object window, int skip_selected)
     }
   Fset_marker (w->pointm[DESIRED_DISP], make_int (pointm), the_buffer);
 
-  /* If the buffer has changed we have to invalid all of our face
+  /* If the buffer has changed we have to invalidate all of our face
      cache elements. */
   if ((!echo_active && b != window_display_buffer (w))
       || !Dynarr_length (w->face_cachels)
@@ -5391,6 +6262,7 @@ redisplay_frame (struct frame *f, int preemption_check)
      being handled. */
   update_frame_menubars (f);
 #endif /* HAVE_MENUBARS */
+  update_frame_gutters (f);
   /* widgets are similar to menus in that they can call lisp to
      determine activation etc. Therefore update them before we get
      into redisplay. This is primarily for connected widgets such as
@@ -5474,6 +6346,7 @@ redisplay_frame (struct frame *f, int preemption_check)
   f->modeline_changed = 0;
   f->point_changed    = 0;
   f->toolbar_changed  = 0;
+  f->gutter_changed  = 0;
   f->windows_changed  = 0;
   f->windows_structure_changed = 0;
   f->window_face_cache_reset = 0;
@@ -5532,7 +6405,8 @@ redisplay_device (struct device *d)
          f->faces_changed    || f->frame_changed || f->menubar_changed ||
          f->modeline_changed || f->point_changed || f->size_changed    ||
          f->toolbar_changed  || f->windows_changed || f->size_slipped  ||
-         f->windows_structure_changed || f->glyphs_changed || f->subwindows_changed)
+         f->windows_structure_changed || f->glyphs_changed || 
+         f->subwindows_changed || f->gutter_changed)
        {
          preempted = redisplay_frame (f, 0);
        }
@@ -5566,7 +6440,7 @@ redisplay_device (struct device *d)
              f->faces_changed    || f->frame_changed || f->menubar_changed ||
              f->modeline_changed || f->point_changed || f->size_changed    ||
              f->toolbar_changed  || f->windows_changed ||
-             f->windows_structure_changed ||
+             f->windows_structure_changed || f->gutter_changed ||
              f->glyphs_changed || f->subwindows_changed)
            {
              preempted = redisplay_frame (f, 0);
@@ -5594,6 +6468,7 @@ redisplay_device (struct device *d)
   d->modeline_changed = 0;
   d->point_changed    = 0;
   d->toolbar_changed  = 0;
+  d->gutter_changed  = 0;
   d->windows_changed  = 0;
   d->windows_structure_changed = 0;
 
@@ -5635,8 +6510,8 @@ redisplay_without_hooks (void)
       !menubar_changed && !modeline_changed && !point_changed   &&
       !size_changed    && !toolbar_changed  && !windows_changed &&
       !glyphs_changed  && !subwindows_changed &&
-      !windows_structure_changed && !disable_preemption &&
-      preemption_count < max_preempts)
+      !gutter_changed && !windows_structure_changed &&
+      !disable_preemption && preemption_count < max_preempts)
     goto done;
 
   DEVICE_LOOP_NO_BREAK (devcons, concons)
@@ -5648,7 +6523,7 @@ redisplay_without_hooks (void)
          d->faces_changed    || d->frame_changed    || d->icon_changed    ||
          d->menubar_changed  || d->modeline_changed || d->point_changed   ||
          d->size_changed     || d->toolbar_changed  || d->windows_changed ||
-         d->windows_structure_changed ||
+         d->windows_structure_changed || d->gutter_changed ||
          d->glyphs_changed || d->subwindows_changed)
        {
          preempted = redisplay_device (d);
@@ -5679,6 +6554,7 @@ redisplay_without_hooks (void)
   modeline_changed = 0;
   point_changed    = 0;
   toolbar_changed  = 0;
+  gutter_changed  = 0;
   windows_changed  = 0;
   windows_structure_changed = 0;
   RESET_CHANGED_SET_FLAGS;
index aa6f742..57c0004 100644 (file)
@@ -233,6 +233,32 @@ typedef struct
   Dynarr_declare (glyph_block);
 } glyph_block_dynarr;
 
+/*************************************************************************/
+/*                              display lines                             */
+/*************************************************************************/
+
+/*  Modeline commentary: IMO the modeline is handled very badly, we
+  special case virtually *everything* in the redisplay routines for
+  the modeline. The fact that dl->bufpos can be either a buffer
+  position or a char count highlights this. There is no abstraction at
+  all that I can find and it means that the code is made very ugly as
+  a result. Either we should treat the modeline *entirely* separately,
+  or we should abstract to something that applies equally well to the
+  modeline and to buffer text, the things are not enormously different
+  after all and handling them identically at some level would
+  eliminate some bugs that still exist (mainly to do with modeline
+  handling). This problem doesn't help trying to implement gutters
+  which are somewhere in between buffer text and modeline text.
+
+  Redisplay commentary: Everything in redisplay is tied very tightly
+  to the things that are being displayed, and the context,
+  e.g. buffers and windows. According to Chuck this is so that we can
+  get speed, which seems fine to me, however this usage is extended
+  too far down the redispay routines IMO. At some level there should
+  be functions that know how to display strings with extents and
+  faces, regardless of buffer etc. After all the window system does
+  not care. <andy@xemacs.org> */
+
 typedef struct display_line display_line;
 struct display_line
 {
@@ -268,6 +294,10 @@ struct display_line
   /* Dynamic arrays of left and right glyph blocks */
   glyph_block_dynarr *left_glyphs;
   glyph_block_dynarr *right_glyphs;
+
+  face_index   left_margin_findex;
+  face_index   right_margin_findex;
+  face_index   default_findex;
 };
 
 #define DISPLAY_LINE_HEIGHT(dl) \
@@ -387,6 +417,10 @@ extern int asynch_device_change_pending;
 extern int toolbar_changed;
 extern int toolbar_changed_set;
 
+/* non-nil if any gutter has changed */
+extern int gutter_changed;
+extern int gutter_changed_set;
+
 /* non-nil if any window has changed since the last time redisplay completed */
 extern int windows_changed;
 
@@ -426,6 +460,7 @@ extern int windows_structure_changed;
 #define MARK_MODELINE_CHANGED MARK_TYPE_CHANGED (modeline)
 #define MARK_POINT_CHANGED MARK_TYPE_CHANGED (point)
 #define MARK_TOOLBAR_CHANGED MARK_TYPE_CHANGED (toolbar)
+#define MARK_GUTTER_CHANGED MARK_TYPE_CHANGED (gutter)
 #define MARK_GLYPHS_CHANGED MARK_TYPE_CHANGED (glyphs)
 #define MARK_SUBWINDOWS_CHANGED MARK_TYPE_CHANGED (subwindows)
 
@@ -441,6 +476,7 @@ extern int windows_structure_changed;
     modeline_changed_set = 0;          \
     point_changed_set = 0;             \
     toolbar_changed_set = 0;           \
+    gutter_changed_set = 0;            \
     glyphs_changed_set = 0;            \
     subwindows_changed_set = 0;                \
   } while (0)
@@ -522,6 +558,10 @@ void free_display_structs (struct window_mirror *mir);
 Bufbyte *generate_formatted_string (struct window *w, Lisp_Object format_str,
                                     Lisp_Object result_str, face_index findex,
                                     int type);
+void generate_displayable_area (struct window *w, Lisp_Object disp_string,
+                               int xpos, int ypos, int width, int height,
+                               display_line_dynarr* dl,
+                               Bufpos start_pos, face_index default_face);
 int real_current_modeline_height (struct window *w);
 int pixel_to_glyph_translation (struct frame *f, int x_coord,
                                int y_coord, int *col, int *row,
@@ -565,6 +605,7 @@ void redisplay_output_subwindow (struct window *w, struct display_line *dl,
                                 face_index findex, int cursor_start, 
                                 int cursor_width, int cursor_height);
 void redisplay_unmap_subwindows_maybe (struct frame* f, int x, int y, int width, int height);
+void redisplay_clear_to_window_end (struct window *w, int ypos1, int ypos2);
 void redisplay_clear_region (Lisp_Object window, face_index findex, int x,
                             int y, int width, int height);
 void redisplay_clear_bottom_of_window (struct window *w,
index 7717903..39855c8 100644 (file)
@@ -34,6 +34,7 @@ Boston, MA 02111-1307, USA.  */
 #include "device.h"
 #include "frame.h"
 #include "glyphs.h"
+#include "gutter.h"
 #include "window.h"
 
 Lisp_Object Qinit_scrollbar_from_resources;
@@ -452,23 +453,41 @@ update_scrollbar_instance (struct window *w, int vertical,
   {
     int x_offset, y_offset;
 
-    /* Scrollbars are always the farthest from the text area. */
+    /* Scrollbars are always the farthest from the text area, barring
+       gutters. */
     if (vertical)
       {
-       x_offset = (!NILP (w->scrollbar_on_left_p)
-                   ? WINDOW_LEFT (w)
-                   : (WINDOW_RIGHT (w) - scrollbar_width
-                      - (window_needs_vertical_divider (w)
-                         ? window_divider_width (w) : 0)));
+       if (!NILP (w->scrollbar_on_left_p))
+         {
+           x_offset = WINDOW_LEFT (w);
+           if (window_is_leftmost (w))
+             x_offset += FRAME_LEFT_GUTTER_BOUNDS (f);
+         }
+       else 
+         {
+           x_offset = WINDOW_RIGHT (w) - scrollbar_width;
+           if (window_is_rightmost (w))
+             x_offset -= FRAME_RIGHT_GUTTER_BOUNDS (f);
+           if (window_needs_vertical_divider (w))
+             x_offset -= window_divider_width (w);
+         }
        y_offset = WINDOW_TEXT_TOP (w) + f->scrollbar_y_offset;
       }
     else
       {
        x_offset = WINDOW_TEXT_LEFT (w);
-       y_offset = f->scrollbar_y_offset +
-         (!NILP (w->scrollbar_on_top_p)
-          ? WINDOW_TOP (w)
-          : WINDOW_TEXT_BOTTOM (w) + window_bottom_toolbar_height (w));
+       y_offset = f->scrollbar_y_offset;
+
+       if (!NILP (w->scrollbar_on_top_p))
+         {
+           y_offset += WINDOW_TOP (w);
+           if (window_is_highest (w))
+             y_offset += FRAME_TOP_GUTTER_BOUNDS (f);
+         }
+       else
+         {
+           y_offset += WINDOW_TEXT_BOTTOM (w);
+         }
       }
 
     new_x = x_offset;
index 051fded..445bd87 100644 (file)
@@ -700,6 +700,50 @@ find_next_newline (struct buffer *buf, Bufpos from, int count)
   return scan_buffer (buf, '\n', from, 0, count, 0, 1);
 }
 
+Bytind
+bi_find_next_emchar_in_string (struct Lisp_String* str, Emchar target, Bytind st,
+                              EMACS_INT count)
+{
+  /* This function has been Mule-ized. */
+  Bytind lim = string_length (str) -1;
+  Bufbyte* s = string_data (str);
+
+  assert (count >= 0);
+
+#ifdef MULE
+  /* Due to the Mule representation of characters in a buffer,
+     we can simply search for characters in the range 0 - 127
+     directly.  For other characters, we do it the "hard" way.
+     Note that this way works for all characters but the other
+     way is faster. */
+  if (target >= 0200)
+    {
+      while (st < lim && count > 0)
+       {
+         if (string_char (str, st) == target)
+           count--;
+         INC_CHARBYTIND (s, st);
+       }
+    }
+  else
+#endif
+    {
+      while (st < lim && count > 0)
+       {
+         Bufbyte *bufptr = (Bufbyte *) memchr (charptr_n_addr (s, st),
+                                               (int) target, lim - st);
+         if (bufptr)
+           {
+             count--;
+             st =  (Bytind)(bufptr - s) + 1;
+           }
+         else
+           st = lim;
+       }
+    }
+  return st;
+}
+
 /* Like find_next_newline, but returns position before the newline,
    not after, and only search up to TO.  This isn't just
    find_next_newline (...)-1, because you might hit TO.  */
index d0f4e1f..1e0136a 100644 (file)
@@ -97,6 +97,7 @@ void syms_of_glyphs_mswindows (void);
 void syms_of_glyphs (void);
 void syms_of_gui_x (void);
 void syms_of_gui (void);
+void syms_of_gutter (void);
 void syms_of_indent (void);
 void syms_of_intl (void);
 void syms_of_keymap (void);
@@ -182,6 +183,7 @@ void console_type_create_select_mswindows (void);
 
 void specifier_type_create (void);
 void specifier_type_create_image (void);
+void specifier_type_create_gutter (void);
 void specifier_type_create_objects (void);
 void specifier_type_create_toolbar (void);
 
@@ -273,6 +275,7 @@ void vars_of_glyphs_mswindows (void);
 void vars_of_glyphs (void);
 void vars_of_gui_x (void);
 void vars_of_gui (void);
+void vars_of_gutter (void);
 void vars_of_input_method_motif (void);
 void vars_of_input_method_xlib (void);
 void vars_of_indent (void);
@@ -327,6 +330,7 @@ void vars_of_eldap (void);
 /* Initialize specifier variables (dump-time only). */
 
 void specifier_vars_of_glyphs (void);
+void specifier_vars_of_gutter (void);
 void specifier_vars_of_menubar (void);
 void specifier_vars_of_redisplay (void);
 void specifier_vars_of_scrollbar (void);
index 90c1be3..85a196b 100644 (file)
@@ -38,6 +38,7 @@ Boston, MA 02111-1307, USA.  */
 #include "window.h"
 #include "elhash.h"
 #include "commands.h"
+#include "gutter.h"
 
 Lisp_Object Qwindowp, Qwindow_live_p, Qwindow_configurationp;
 Lisp_Object Qscroll_up, Qscroll_down, Qdisplay_buffer;
@@ -641,7 +642,7 @@ window_full_width_p (struct window *w)
   return window_is_leftmost (w) && window_is_rightmost (w);
 }
 
-static int
+int
 window_is_highest (struct window *w)
 {
   Lisp_Object parent, current_ancestor, window;
@@ -669,7 +670,7 @@ window_is_highest (struct window *w)
     return 0;
 }
 
-static int
+int
 window_is_lowest (struct window *w)
 {
   Lisp_Object parent, current_ancestor, window;
@@ -972,32 +973,6 @@ window_right_margin_width (struct window *w)
   return margin_width_internal (w, 0);
 }
 
-static int
-window_top_toolbar_height (struct window *w)
-{
-  /* #### implement this shit. */
-  return 0;
-}
-
-/* #### Currently used in scrollbar.c.  Does it actually need to be? */
-int
-window_bottom_toolbar_height (struct window *w)
-{
-  return 0;
-}
-
-static int
-window_left_toolbar_width (struct window *w)
-{
-  return 0;
-}
-
-static int
-window_right_toolbar_width (struct window *w)
-{
-  return 0;
-}
-
 /*****************************************************************************
  Window Gutters
 
@@ -1019,47 +994,45 @@ window_right_toolbar_width (struct window *w)
 int
 window_top_gutter_height (struct window *w)
 {
-  int toolbar_height = window_top_toolbar_height (w);
+  int gutter = WINDOW_REAL_TOP_GUTTER_BOUNDS (w);
 
   if (!NILP (w->hchild) || !NILP (w->vchild))
     return 0;
 
 #ifdef HAVE_SCROLLBARS
   if (!NILP (w->scrollbar_on_top_p))
-    return window_scrollbar_height (w) + toolbar_height;
+    return window_scrollbar_height (w) + gutter;
   else
 #endif
-    return toolbar_height;
+    return gutter;
 }
 
 int
 window_bottom_gutter_height (struct window *w)
 {
-  int other_height;
+  int gutter = WINDOW_REAL_BOTTOM_GUTTER_BOUNDS (w);
 
   if (!NILP (w->hchild) || !NILP (w->vchild))
     return 0;
-  else
-    other_height =
-      window_modeline_height (w) + window_bottom_toolbar_height (w);
+
+  gutter += window_modeline_height (w);
 
 #ifdef HAVE_SCROLLBARS
   if (NILP (w->scrollbar_on_top_p))
-    return window_scrollbar_height (w) + other_height;
+    return window_scrollbar_height (w) + gutter;
   else
 #endif
-    return other_height;
+    return gutter;
 }
 
 int
 window_left_gutter_width (struct window *w, int modeline)
 {
-  int gutter = window_left_toolbar_width (w);
+  int gutter = WINDOW_REAL_LEFT_GUTTER_BOUNDS (w);
 
   if (!NILP (w->hchild) || !NILP (w->vchild))
     return 0;
 
-
 #ifdef HAVE_SCROLLBARS
   if (!modeline && !NILP (w->scrollbar_on_left_p))
     gutter += window_scrollbar_width (w);
@@ -1071,7 +1044,7 @@ window_left_gutter_width (struct window *w, int modeline)
 int
 window_right_gutter_width (struct window *w, int modeline)
 {
-  int gutter = window_right_toolbar_width (w);
+  int gutter = WINDOW_REAL_RIGHT_GUTTER_BOUNDS (w);
 
   if (!NILP (w->hchild) || !NILP (w->vchild))
     return 0;
@@ -3926,6 +3899,8 @@ change_window_height (struct window *win, int delta, int widthflag,
   SET_LAST_MODIFIED (w, 0);
   SET_LAST_FACECHANGE (w);
   MARK_FRAME_WINDOWS_STRUCTURE_CHANGED (f);
+  /* overkill maybe, but better to be correct */
+  MARK_FRAME_GUTTERS_CHANGED (f);
 }
 #undef MINSIZE
 #undef CURBEG
index 5bcfea6..342ad44 100644 (file)
@@ -329,6 +329,8 @@ int window_char_height (struct window *, int include_gutters_p);
 int window_displayed_height (struct window *);
 int window_is_leftmost (struct window *w);
 int window_is_rightmost (struct window *w);
+int window_is_lowest (struct window *w);
+int window_is_highest (struct window *w);
 int window_truncation_on (struct window *w);
 int window_needs_vertical_divider (struct window *);
 int window_scrollbar_width (struct window *w);
@@ -340,7 +342,6 @@ int window_top_gutter_height (struct window *w);
 int window_bottom_gutter_height (struct window *w);
 int window_left_gutter_width (struct window *w, int modeline);
 int window_right_gutter_width (struct window *w, int modeline);
-int window_bottom_toolbar_height (struct window *w);
 
 void delete_all_subwindows (struct window *w);
 void set_window_pixheight (Lisp_Object window, int pixheight,
index b09aef3..95d74b5 100644 (file)
@@ -97,6 +97,29 @@ Boston, MA 02111-1307, USA.  */
   WINDOW_SLOT (default_toolbar_visible_p, EQ);
   WINDOW_SLOT (default_toolbar_border_width, EQ);
 #endif /* HAVE_TOOLBARS */
+
+  /* Gutter specification for each of the four positions.
+     This is not a size hog because the value here is not copied,
+     and will be shared with the specs in the specifier. */
+  WINDOW_SLOT_ARRAY (gutter, 4, EQUAL_WRAPPED);
+  /* Gutter size for each of the four positions. */
+  WINDOW_SLOT_ARRAY (gutter_size, 4, EQUAL_WRAPPED);
+  /* Real (pre-calculated) gutter size for each of the four positions.
+     This is not a specifier, it is calculated by the specifier change
+     functions. */
+  WINDOW_SLOT_ARRAY (real_gutter_size, 4, EQUAL_WRAPPED);
+  /* Gutter border width for each of the four positions. */
+  WINDOW_SLOT_ARRAY (gutter_border_width, 4, EQUAL_WRAPPED);
+  /* Gutter visibility status for each of the four positions. */
+  WINDOW_SLOT_ARRAY (gutter_visible_p, 4, EQUAL_WRAPPED);
+  /* The following five don't really need to be cached except
+     that we need to know when they've changed. */
+  WINDOW_SLOT (default_gutter, EQUAL_WRAPPED);
+  WINDOW_SLOT (default_gutter_width, EQ);
+  WINDOW_SLOT (default_gutter_height, EQ);
+  WINDOW_SLOT (default_gutter_visible_p, EQ);
+  WINDOW_SLOT (default_gutter_border_width, EQ);
+/* margins */
   WINDOW_SLOT (left_margin_width, EQ);
   WINDOW_SLOT (right_margin_width, EQ);
   WINDOW_SLOT (minimum_line_ascent, EQ);
index f8b707d..e055147 100644 (file)
@@ -1,3 +1,7 @@
+1999-07-30  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.19 is released
+
 1999-07-13  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.18 is released
index fa8859b..511bbc8 100644 (file)
@@ -1,10 +1,12 @@
+(setq str "Hello There")
 (set-extent-begin-glyph 
- (make-extent (point) (point))
- (setq icon (make-glyph [xpm :file "../etc/xemacs-icon.xpm"])))
+ (make-extent 0 0 str)
+ (make-glyph [xpm :file "../etc/xemacs-icon.xpm"]))
 
 (defun foo ()
   (interactive) 
-  (setq ok-select (not ok-select)))
+  (ding))
+;  (setq ok-select (not ok-select)))
 
 ;; button in a group
 (setq ok-select nil)
index dafc8d4..761f565 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=18
-xemacs_codename="Toshima"
+emacs_beta_version=19
+xemacs_codename="Shinjuku"
 infodock_major_version=4
 infodock_minor_version=0
-infodock_build_version=7
+infodock_build_version=8