XEmacs 21.2.33 "Melpomene".
authortomo <tomo>
Wed, 10 May 2000 08:31:46 +0000 (08:31 +0000)
committertomo <tomo>
Wed, 10 May 2000 08:31:46 +0000 (08:31 +0000)
140 files changed:
CHANGES-beta
ChangeLog
configure
configure.in
configure.usage
etc/Emacs.ad
etc/NEWS
info/lispref.info
info/lispref.info-1
info/xemacs-faq.info
info/xemacs-faq.info-2
lib-src/ChangeLog
lib-src/gnuclient.c
lib-src/make-dump-id.c
lisp/ChangeLog
lisp/auto-autoloads.el
lisp/autoload.el
lisp/bytecomp.el
lisp/cl-compat.el
lisp/custom-load.el
lisp/dialog.el
lisp/dumped-lisp.el
lisp/etags.el
lisp/faces.el
lisp/finder.el
lisp/font-lock.el
lisp/gutter-items.el
lisp/help.el
lisp/lisp-mode.el
lisp/loaddefs.el
lisp/loadup.el
lisp/make-docfile.el
lisp/menubar-items.el
lisp/menubar.el
lisp/modeline.el
lisp/mule/mule-cmds.el
lisp/process.el
lisp/simple.el
lisp/subr.el
lisp/update-elc.el
lwlib/ChangeLog
lwlib/config.h.in
lwlib/lwlib-Xaw.c
lwlib/lwlib-Xm.c
lwlib/lwlib.c
lwlib/xlwradio.c
man/ChangeLog
man/lispref/ldap.texi
man/lispref/lispref.texi
man/xemacs-faq.texi
nt/ChangeLog
nt/README
nt/config.h
nt/config.inc.samp
nt/xemacs.dsp
nt/xemacs.mak
src/ChangeLog
src/ExternalClient.c
src/Makefile.in.in
src/alloc.c
src/buffer.c
src/buffer.h
src/callint.c
src/callproc.c
src/config.h.in
src/console-msw.h
src/console-tty.c
src/data.c
src/database.c
src/depend
src/dialog-x.c
src/dumper.c
src/emacs.c
src/eval.c
src/event-Xt.c
src/event-msw.c
src/event-stream.c
src/extents.c
src/extents.h
src/faces.c
src/file-coding.c
src/filelock.c
src/fns.c
src/frame-msw.c
src/frame.c
src/frameslots.h
src/general.c
src/glyphs-msw.c
src/glyphs-msw.h
src/glyphs-widget.c
src/glyphs-x.c
src/glyphs-x.h
src/glyphs.c
src/glyphs.h
src/gmalloc.c
src/gui-msw.c
src/gui-x.c
src/gui-x.h
src/gui.c
src/gui.h
src/gutter.c
src/hpplay.c
src/inline.c
src/input-method-xlib.c
src/insdel.c
src/keymap.c
src/line-number.c
src/linuxplay.c
src/lisp-union.h
src/lisp.h
src/lrecord.h
src/make-src-depend
src/md5.c
src/menubar-x.c
src/mule-charset.c
src/mule-charset.h
src/nt.h
src/ntplay.c
src/ntproc.c
src/postgresql.c
src/postgresql.h
src/process-nt.c
src/process-unix.c
src/redisplay-msw.c
src/redisplay-output.c
src/redisplay-tty.c
src/redisplay-x.c
src/redisplay.c
src/redisplay.h
src/scrollbar-x.c
src/sound.c
src/sunplay.c
src/sysdep.c
src/terminfo.c
src/toolbar-msw.c
src/toolbar.c
src/tooltalk.h
tests/ChangeLog
tests/glyph-test.el
version.sh

index d9b674a..b7c269e 100644 (file)
@@ -1,3 +1,23 @@
+to 21.2.33 "Melpomene"
+-- Yet more progress gauge and gutter redisplay fixes from Andy Piper
+-- glyph error checking from Andy Piper
+-- Proper implementation of string glyps makes them Mule safe (IKEYAMA Tomonori)
+-- Bug fixes from the usual suspects
+-- --with-clash-detection now defaults to `yes', at least for betas.
+-- Autoconf support for detecting how to #include header files
+   with names containing preprocessor constants, Didier Verna.
+-- LDAP documentation updated, Oscar Figueiredo.
+-- clash-detection code cleaned and audited, Yoshiki and Martin
+-- Fix hangs on DEC OSF 4.0 when (process-send-string) sends strings
+   longer than 252 bytes.
+-- Fix non-ANSI macro hacking to allow compilation by Irix native compiler.
+-- redisplay fixes, IKEYAMA Tomonori
+-- Code cleaning, Mike Alexander
+-- Pdump + Windows support, Mike Alexander
+-- Sound code cleanup, Jan Vroonhof
+-- yes-or-no-p-dialog-box no longer gives unpredictable results with
+   focus follows mouse, Martin Buchholz
+
 to 21.2.32 "Kastor & Polydeukes"
 -- Internal Postgres RDBMS support from Steve Baur
 -- Improve gutter useability
@@ -7,6 +27,8 @@ to 21.2.32 "Kastor & Polydeukes"
 -- redisplay-gutter-area fixes from Andy Piper
 -- pdump file in MS-Windows executable from Mike Alexander
 -- Miscellaneous fixes from Andy Piper
+-- Windows and menubar changes from Ben Wing
+-- dumper changes from Olivier Galibert
 
 to 21.2.31 "Iris"
 -- Make XEmacs work on Windows again.
index b23223a..980b5a2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,76 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-27  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * configure.in: Use ORDINARY_LD instead of "\$(ORDINARY_LD)" for
+       the value of LD.
+
+2000-04-26  Ben Wing  <ben@xemacs.org>
+
+       * configure.in: add support for --quick-build.  Remove --no-doc-file,
+       subsumed.
+
+2000-04-19  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in: 
+       * src/config.h.in:
+       Rewrite SMART_INCLUDE implementation to actually work.
+       Be paranoid - Avoid use of spaces in these macro definitions.
+       Leave alloca() definition at start of compilation unit, 
+       as AIX requests.
+       Rename SMART_INCLUDE_MACRO to SMART_INCLUDE_INDIRECTIONS.
+
+2000-04-13  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * configure.in: Enable clash-detection by default.
+       * configure.usage: Update documentation.
+
+2000-04-06  Andy Piper  <andy@xemacs.org>
+
+       * configure.in: fix typo.
+
+2000-04-12  Andy Piper  <andy@xemacs.org>
+
+       * etc/Emacs.ad: give the gui-element face the same font as the
+       menubar and popups. Add translations for text widgets.
+
+2000-04-03  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * configure.in : Fix printing error check warning even if
+       it is not compiled in.
+
+2000-02-19  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * xemacs/configure.in: Do a normal link when compiling with
+       --pdump. Don't try compiling an unexec object file.
+2000-03-27  Didier Verna  <didier@xemacs.org>
+
+       * configure.in: reorganize the output by topic.
+       New configure test to define the proper SMART_INCLUDE macro.
+
+       * configure.usage: slightly rearanged some options.
+
+2000-03-25  Didier Verna  <didier@xemacs.org>
+
+       * configure.in: rename `foo_h_path' to `foo_h_file' for variables
+       representing real headers and not directories. This applies to
+       `db_h_path', `curses_h_path', `term_h_path', `tt_c_h_path' and
+       `soundcard_h_path'.
+
+2000-03-21  Didier Verna  <didier@xemacs.org>
+
+       * configure.in: try to find postgresql headers at different places
+       and define POSTGRES_H_PATH as appropriate.
+
+2000-03-22  Andy Piper  <andy@xemacs.org>
+
+       * config.h.in: add ERROR_CHECK_GLYPHS.
+
+       * configure.in: add error_check_glyphs.
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
index adcabc5..e174b50 100755 (executable)
--- a/configure
+++ b/configure
@@ -368,7 +368,7 @@ while test $# != 0; do
        memory_usage_stats | \
        with_clash_detection | \
        with_modules | \
-       no_doc_file )
+       quick_build )
                  case "$val" in
            y | ye | yes )      val=yes ;;
            n | no )            val=no  ;;
@@ -552,14 +552,17 @@ echo "  Use \`$progname --help' to show usage.") >&2 && exit 1 ;;
              byte_code )     error_check_byte_code=yes ;;
              nobyte_code )   error_check_byte_code=no ;;
 
+             glyphs )     error_check_glyphs=yes ;;
+             noglyphs )   error_check_glyphs=no ;;
+
              * ) bogus_error_check=yes ;;
            esac
            if test "$bogus_error_check" -o \
                 \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
                if test "$error_check_default" = yes ; then
-                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', and \`nobyte-code'."
+                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
                else
-                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', and \`byte-code'."
+                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
                fi
                (echo "$progname: Usage error:"
 echo " " "Valid types for the \`--$optname' option are:
@@ -572,6 +575,7 @@ echo "  Use \`$progname --help' to show usage.") >&2 && exit 1
                error_check_gc=$new_default
                error_check_malloc=$new_default
                error_check_byte_code=$new_default
+               error_check_glyphs=$new_default
                new_default=    # reset this
            fi
            echeck_notfirst=true
@@ -834,7 +838,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:838: checking whether ln -s works" >&5
+echo "configure:842: checking whether ln -s works" >&5
 
 rm -f conftestdata
 if ln -s X conftestdata 2>/dev/null
@@ -1055,6 +1059,14 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
+test "${error_check_glyphs=$beta}" = yes && { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining ERROR_CHECK_GLYPHS
+EOF
+cat >> confdefs.h <<\EOF
+#define ERROR_CHECK_GLYPHS 1
+EOF
+}
+
 if test "${debug:=$beta}" = "yes"; then
   use_assertions=yes memory_usage_stats=yes
   extra_objs="$extra_objs debug.o" &&  if test "$extra_verbose" = "yes"; then
@@ -1091,7 +1103,7 @@ EOF
 
 
 echo $ac_n "checking "host system type"""... $ac_c" 1>&6
-echo "configure:1095: checking "host system type"" >&5
+echo "configure:1107: 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/'`
@@ -1557,7 +1569,7 @@ EOF
  fi
 fi
 
-if test "$with_clash_detection" = "yes"; then
+if test "$with_clash_detection" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining CLASH_DETECTION
 EOF
@@ -1586,7 +1598,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:1590: checking for $ac_word" >&5
+echo "configure:1602: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1613,7 +1625,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:1617: checking for $ac_word" >&5
+echo "configure:1629: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1661,7 +1673,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:1665: checking for $ac_word" >&5
+echo "configure:1677: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1690,7 +1702,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1694: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1706: 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'
@@ -1703,12 +1715,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1707 "configure"
+#line 1719 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1712: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1724: \"$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
@@ -1736,19 +1748,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:1740: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1752: 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:1745: checking whether we are using GNU C" >&5
+echo "configure:1757: 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:1752: \"$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:1764: \"$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
@@ -1766,7 +1778,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:1770: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1782: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -1799,7 +1811,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:1803: checking for $ac_word" >&5
+echo "configure:1815: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1826,7 +1838,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:1830: checking for $ac_word" >&5
+echo "configure:1842: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1874,7 +1886,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:1878: checking for $ac_word" >&5
+echo "configure:1890: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -1903,7 +1915,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1907: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1919: 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'
@@ -1916,12 +1928,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 1920 "configure"
+#line 1932 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:1925: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1937: \"$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
@@ -1949,19 +1961,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:1953: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1965: 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:1958: checking whether we are using GNU C" >&5
+echo "configure:1970: 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:1965: \"$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:1977: \"$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
@@ -1979,7 +1991,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:1983: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1995: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2012,7 +2024,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:2016: checking for $ac_word" >&5
+echo "configure:2028: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2039,7 +2051,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:2043: checking for $ac_word" >&5
+echo "configure:2055: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2087,7 +2099,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:2091: checking for $ac_word" >&5
+echo "configure:2103: checking for $ac_word" >&5
 
 if test -n "$CC"; then
   ac_cv_prog_CC="$CC" # Let the user override the test.
@@ -2116,7 +2128,7 @@ fi
 fi
 
 echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2120: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2132: 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'
@@ -2129,12 +2141,12 @@ cross_compiling=no
 
 cat > conftest.$ac_ext << EOF
 
-#line 2133 "configure"
+#line 2145 "configure"
 #include "confdefs.h"
 
 main(){return(0);}
 EOF
-if { (eval echo configure:2138: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2150: \"$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
@@ -2162,19 +2174,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:2166: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2178: 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:2171: checking whether we are using GNU C" >&5
+echo "configure:2183: 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:2178: \"$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:2190: \"$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
@@ -2192,7 +2204,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:2196: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2208: checking whether ${CC-cc} accepts -g" >&5
 
 echo 'void f(){}' > conftest.c
 if test -z "`${CC-cc} -g -c conftest.c 2>&1`"; then
@@ -2229,7 +2241,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:2233: checking how to run the C preprocessor" >&5
+echo "configure:2245: checking how to run the C preprocessor" >&5
 # On Suns, sometimes $CPP names a directory.
 if test -n "$CPP" && test -d "$CPP"; then
   CPP=
@@ -2242,13 +2254,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 2246 "configure"
+#line 2258 "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:2252: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2264: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2259,13 +2271,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -E -traditional-cpp"
   cat > conftest.$ac_ext <<EOF
-#line 2263 "configure"
+#line 2275 "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:2269: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2276,13 +2288,13 @@ else
   rm -rf conftest*
   CPP="${CC-cc} -nologo -E"
   cat > conftest.$ac_ext <<EOF
-#line 2280 "configure"
+#line 2292 "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:2286: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:2298: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   :
@@ -2307,11 +2319,10 @@ echo "$ac_t""$CPP" 1>&6
 
 
 
-
 echo $ac_n "checking for AIX""... $ac_c" 1>&6
-echo "configure:2313: checking for AIX" >&5
+echo "configure:2324: checking for AIX" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2315 "configure"
+#line 2326 "configure"
 #include "confdefs.h"
 #ifdef _AIX
   yes
 rm -f conftest*
 
  
+cat > $srcdir/conffoo.h <<EOF
+#define CONFFOO 1
+EOF
+echo $ac_n "checking for a working inclusion macro""... $ac_c" 1>&6
+echo "configure:2355: checking for a working inclusion macro" >&5
+cat > conftest.$ac_ext <<EOF
+#line 2357 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#define SMART_INCLUDE(path,file) <path/file>
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+
+; return 0; }
+EOF
+if { (eval echo configure:2369: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+   echo "$ac_t""direct" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining SMART_INCLUDE_INDIRECTIONS = 0
+EOF
+cat >> confdefs.h <<\EOF
+#define SMART_INCLUDE_INDIRECTIONS 0
+EOF
+}
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 2384 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#define GLUE_INCLUDE(path,file)  <##path##/##file##>
+#define SMART_INCLUDE(path,file) GLUE_INCLUDE(path,file)
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE(CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+
+; return 0; }
+EOF
+if { (eval echo configure:2397: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+   echo "$ac_t""simple" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining SMART_INCLUDE_INDIRECTIONS = 1
+EOF
+cat >> confdefs.h <<\EOF
+#define SMART_INCLUDE_INDIRECTIONS 1
+EOF
+}
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  cat > conftest.$ac_ext <<EOF
+#line 2412 "configure"
+#include "confdefs.h"
+
+int main() {
+
+#define GLUE_INCLUDE_2(path,file)  <##path##/##file##>
+#define GLUE_INCLUDE_1(path,file) GLUE_INCLUDE_2(path,file)
+#define SMART_INCLUDE(path,file) GLUE_INCLUDE_1(path,file)
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+
+; return 0; }
+EOF
+if { (eval echo configure:2426: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+  rm -rf conftest*
+   echo "$ac_t""double" 1>&6; { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining SMART_INCLUDE_INDIRECTIONS = 2
+EOF
+cat >> confdefs.h <<\EOF
+#define SMART_INCLUDE_INDIRECTIONS 2
+EOF
+}
+else
+  echo "configure: failed program was:" >&5
+  cat conftest.$ac_ext >&5
+  rm -rf conftest*
+  { echo "configure: error: Cannot define a proper SMART_INCLUDE macro. Please report." 1>&2; exit 1; }
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+fi
+rm -f conftest*
+rm -f $srcdir/conffoo.h
+
+
+
 echo $ac_n "checking for GNU libc""... $ac_c" 1>&6
-echo "configure:2341: checking for GNU libc" >&5
+echo "configure:2452: checking for GNU libc" >&5
 cat > conftest.$ac_ext <<EOF
-#line 2343 "configure"
+#line 2454 "configure"
 #include "confdefs.h"
 #include <features.h>
 int main() {
@@ -2351,7 +2462,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2355: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2466: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   have_glibc=yes
 else
@@ -2372,7 +2483,7 @@ EOF
 
 
 case "$opsys" in
-  sol2) 
+  sol2)
    { test "$extra_verbose" = "yes" && cat << \EOF
     Defining __EXTENSIONS__
 EOF
@@ -2428,7 +2539,7 @@ EOF
 esac
 
 cat > conftest.$ac_ext <<EOF
-#line 2432 "configure"
+#line 2543 "configure"
 #include "confdefs.h"
 int main () {
 #if defined __SUNPRO_C
@@ -2440,7 +2551,7 @@ return 0;
 #endif
 }
 EOF
-if { (eval echo configure:2444: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:2555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -2541,8 +2652,11 @@ configure___ unexec=UNEXEC
 configure___ ld_switch_shared=LD_SWITCH_SHARED
 
 
+#define ORDINARY_LD "\$(CC) \$(CFLAGS)"
+configure___ ordinary_ld=ORDINARY_LD
+
 #ifdef ORDINARY_LINK
-#define LD "\$(CC) \$(CFLAGS)"
+#define LD ORDINARY_LD
 #else /* no ORDINARY LINK */
 #ifdef COFF_ENCAPSULATE
 #define LD "\$(CC) -nostdlib"
@@ -2633,6 +2747,15 @@ eval `$CPP -Isrc $tempcname \
 
 rm $tempcname
 
+if test "$pdump" = "yes"; then
+  ordinary_link="yes"
+  ld="${ordinary_ld}"
+  start_files=
+  libs_standard=
+  unexec=
+  lib_gcc=     
+fi
+
 test "$extra_verbose" = "yes" && \
   for var in libs_machine libs_system libs_termcap libs_standard   objects_machine objects_system c_switch_machine c_switch_system   ld_switch_machine ld_switch_system unexec ld_switch_shared   ld lib_gcc ld_text_start_addr start_files ordinary_link   have_terminfo mail_use_flock mail_use_lockf; do eval "echo \"$var = '\$$var'\""; done && echo ""
 
@@ -2664,7 +2787,7 @@ fi
 
 if test "$GCC" = "yes"; then
 echo $ac_n "checking for buggy gcc versions""... $ac_c" 1>&6
-echo "configure:2668: checking for buggy gcc versions" >&5
+echo "configure:2791: checking for buggy gcc versions" >&5
 GCC_VERSION=`$CC --version`
 case `uname -s`:`uname -m`:$GCC_VERSION in
                    *:sun4*:2.8.1|*:sun4*:egcs-2.90.*)
@@ -2787,7 +2910,7 @@ test "$pdump" = "yes" && extra_objs="$extra_objs dumper.o" &&  if test "$extra_v
  fi
 
 echo $ac_n "checking for dynodump""... $ac_c" 1>&6
-echo "configure:2791: checking for dynodump" >&5
+echo "configure:2914: checking for dynodump" >&5
 if test "$unexec" != "unexsol2.o"; then
   echo "$ac_t""no" 1>&6
 else
@@ -2825,12 +2948,12 @@ if test "$unexec" = "unexaix.o"; then
   done
   
 echo $ac_n "checking for terminateAndUnload in -lC""... $ac_c" 1>&6
-echo "configure:2829: checking for terminateAndUnload in -lC" >&5
+echo "configure:2952: 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 2834 "configure"
+#line 2957 "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
@@ -2841,7 +2964,7 @@ int main() {
 terminateAndUnload()
 ; return 0; }
 EOF
-if { (eval echo configure:2845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2968: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -2949,7 +3072,7 @@ fi
 
 if test "$add_runtime_path" = "yes"; then
       echo $ac_n "checking "for runtime libraries flag"""... $ac_c" 1>&6
-echo "configure:2953: checking "for runtime libraries flag"" >&5
+echo "configure:3076: checking "for runtime libraries flag"" >&5
   case "$opsys" in
     sol2 ) dash_r="-R" ;;
     decosf* | linux* | irix*) dash_r="-rpath " ;;
@@ -2971,14 +3094,14 @@ if test "$GCC" = "yes"; then
   done
 fi
         cat > conftest.$ac_ext <<EOF
-#line 2975 "configure"
+#line 3098 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:2982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   dash_r="$try_dash_r"
 else
@@ -3080,10 +3203,10 @@ else
 fi
 after_morecore_hook_exists=yes
 echo $ac_n "checking for malloc_get_state""... $ac_c" 1>&6
-echo "configure:3084: checking for malloc_get_state" >&5
+echo "configure:3207: checking for malloc_get_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3087 "configure"
+#line 3210 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_get_state(); below.  */
@@ -3106,7 +3229,7 @@ malloc_get_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3110: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3233: \"$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
@@ -3126,10 +3249,10 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking for malloc_set_state""... $ac_c" 1>&6
-echo "configure:3130: checking for malloc_set_state" >&5
+echo "configure:3253: checking for malloc_set_state" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3133 "configure"
+#line 3256 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char malloc_set_state(); below.  */
@@ -3152,7 +3275,7 @@ malloc_set_state();
 
 ; return 0; }
 EOF
-if { (eval echo configure:3156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3279: \"$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
@@ -3172,16 +3295,16 @@ doug_lea_malloc=no
 fi
 
 echo $ac_n "checking whether __after_morecore_hook exists""... $ac_c" 1>&6
-echo "configure:3176: checking whether __after_morecore_hook exists" >&5
+echo "configure:3299: checking whether __after_morecore_hook exists" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3178 "configure"
+#line 3301 "configure"
 #include "confdefs.h"
 extern void (* __after_morecore_hook)();
 int main() {
 __after_morecore_hook = 0
 ; return 0; }
 EOF
-if { (eval echo configure:3185: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:3308: \"$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
@@ -3195,21 +3318,21 @@ rm -f conftest*
 if test "$system_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (The GNU allocators don't work with this system configuration)."
+    - The GNU allocators don't work with this system configuration."
 elif test "$with_system_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (User chose not to use GNU allocators)."
+    - User chose not to use GNU allocators."
 elif test "$with_debug_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (User chose to use Debugging Malloc)."
+    - User chose to use Debugging Malloc."
 fi
 
 if test "$doug_lea_malloc" = "yes" ; then
   if test "$GNU_MALLOC" = yes ; then
     GNU_MALLOC_reason="
-  (Using Doug Lea's new malloc from the GNU C Library.)"
+    - Using Doug Lea's new malloc from the GNU C Library."
   fi
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining DOUG_LEA_MALLOC
@@ -3221,7 +3344,7 @@ EOF
 
   if test "$after_morecore_hook_exists" = "no" ; then
     GNU_MALLOC_reason="
-  (Using Doug Lea's new malloc from the Linux C Library.)"
+    - Using Doug Lea's new malloc from the Linux C Library."
     { test "$extra_verbose" = "yes" && cat << \EOF
     Defining _NO_MALLOC_WARNING_
 EOF
@@ -3240,7 +3363,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:3244: checking for $ac_word" >&5
+echo "configure:3367: checking for $ac_word" >&5
 
 if test -n "$RANLIB"; then
   ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test.
@@ -3295,7 +3418,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:3299: checking for a BSD compatible install" >&5
+echo "configure:3422: checking for a BSD compatible install" >&5
 if test -z "$INSTALL"; then
 
   IFS="${IFS=  }"; ac_save_IFS="$IFS"; IFS=":"
@@ -3349,7 +3472,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:3353: checking for $ac_word" >&5
+echo "configure:3476: checking for $ac_word" >&5
 
 if test -n "$YACC"; then
   ac_cv_prog_YACC="$YACC" # Let the user override the test.
@@ -3381,15 +3504,15 @@ for ac_hdr in   a.out.h   cygwin/version.h   fcntl.h   inttypes.h   libgen.h   l
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:3385: checking for $ac_hdr" >&5
+echo "configure:3508: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3388 "configure"
+#line 3511 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:3393: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3516: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3419,10 +3542,10 @@ fi
 done
 
 echo $ac_n "checking for sys/wait.h that is POSIX.1 compatible""... $ac_c" 1>&6
-echo "configure:3423: checking for sys/wait.h that is POSIX.1 compatible" >&5
+echo "configure:3546: checking for sys/wait.h that is POSIX.1 compatible" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3426 "configure"
+#line 3549 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/wait.h>
@@ -3438,7 +3561,7 @@ wait (&s);
 s = WIFEXITED (s) ? WEXITSTATUS (s) : 1;
 ; return 0; }
 EOF
-if { (eval echo configure:3442: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3565: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_sys_wait_h=yes
 else
@@ -3462,10 +3585,10 @@ EOF
 fi
 
 echo $ac_n "checking for ANSI C header files""... $ac_c" 1>&6
-echo "configure:3466: checking for ANSI C header files" >&5
+echo "configure:3589: checking for ANSI C header files" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3469 "configure"
+#line 3592 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 #include <stdarg.h>
@@ -3473,7 +3596,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:3477: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:3600: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -3490,7 +3613,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 3494 "configure"
+#line 3617 "configure"
 #include "confdefs.h"
 #include <string.h>
 EOF
@@ -3508,7 +3631,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 3512 "configure"
+#line 3635 "configure"
 #include "confdefs.h"
 #include <stdlib.h>
 EOF
@@ -3526,7 +3649,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 3530 "configure"
+#line 3653 "configure"
 #include "confdefs.h"
 #include <ctype.h>
 #define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
@@ -3537,7 +3660,7 @@ if (XOR (islower (i), ISLOWER (i)) || toupper (i) != TOUPPER (i)) exit(2);
 exit (0); }
 
 EOF
-if { (eval echo configure:3541: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:3664: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -3563,10 +3686,10 @@ EOF
 fi
 
 echo $ac_n "checking whether time.h and sys/time.h may both be included""... $ac_c" 1>&6
-echo "configure:3567: checking whether time.h and sys/time.h may both be included" >&5
+echo "configure:3690: checking whether time.h and sys/time.h may both be included" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3570 "configure"
+#line 3693 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/time.h>
@@ -3575,7 +3698,7 @@ int main() {
 struct tm *tp;
 ; return 0; }
 EOF
-if { (eval echo configure:3579: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3702: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_header_time=yes
 else
@@ -3599,10 +3722,10 @@ EOF
 fi
 
 echo $ac_n "checking for sys_siglist declaration in signal.h or unistd.h""... $ac_c" 1>&6
-echo "configure:3603: checking for sys_siglist declaration in signal.h or unistd.h" >&5
+echo "configure:3726: checking for sys_siglist declaration in signal.h or unistd.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3606 "configure"
+#line 3729 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3614,7 +3737,7 @@ int main() {
 char *msg = *(sys_siglist + 1);
 ; return 0; }
 EOF
-if { (eval echo configure:3618: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3741: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_decl_sys_siglist=yes
 else
@@ -3639,9 +3762,9 @@ fi
 
 
 echo $ac_n "checking for struct utimbuf""... $ac_c" 1>&6
-echo "configure:3643: checking for struct utimbuf" >&5
+echo "configure:3766: checking for struct utimbuf" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3645 "configure"
+#line 3768 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3660,7 +3783,7 @@ int main() {
 static struct utimbuf x; x.actime = x.modtime;
 ; return 0; }
 EOF
-if { (eval echo configure:3664: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3787: \"$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
@@ -3680,10 +3803,10 @@ fi
 rm -f conftest*
 
 echo $ac_n "checking return type of signal handlers""... $ac_c" 1>&6
-echo "configure:3684: checking return type of signal handlers" >&5
+echo "configure:3807: checking return type of signal handlers" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3687 "configure"
+#line 3810 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <signal.h>
@@ -3700,7 +3823,7 @@ int main() {
 int i;
 ; return 0; }
 EOF
-if { (eval echo configure:3704: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:3827: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_type_signal=void
 else
@@ -3722,10 +3845,10 @@ EOF
 
 
 echo $ac_n "checking for size_t""... $ac_c" 1>&6
-echo "configure:3726: checking for size_t" >&5
+echo "configure:3849: checking for size_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3729 "configure"
+#line 3852 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3756,10 +3879,10 @@ EOF
 fi
 
 echo $ac_n "checking for pid_t""... $ac_c" 1>&6
-echo "configure:3760: checking for pid_t" >&5
+echo "configure:3883: checking for pid_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3763 "configure"
+#line 3886 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3790,10 +3913,10 @@ EOF
 fi
 
 echo $ac_n "checking for uid_t in sys/types.h""... $ac_c" 1>&6
-echo "configure:3794: checking for uid_t in sys/types.h" >&5
+echo "configure:3917: checking for uid_t in sys/types.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3797 "configure"
+#line 3920 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 EOF
@@ -3829,10 +3952,10 @@ EOF
 fi
 
 echo $ac_n "checking for mode_t""... $ac_c" 1>&6
-echo "configure:3833: checking for mode_t" >&5
+echo "configure:3956: checking for mode_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3836 "configure"
+#line 3959 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3863,10 +3986,10 @@ EOF
 fi
 
 echo $ac_n "checking for off_t""... $ac_c" 1>&6
-echo "configure:3867: checking for off_t" >&5
+echo "configure:3990: checking for off_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3870 "configure"
+#line 3993 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3897,10 +4020,10 @@ EOF
 fi
 
 echo $ac_n "checking for ssize_t""... $ac_c" 1>&6
-echo "configure:3901: checking for ssize_t" >&5
+echo "configure:4024: checking for ssize_t" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3904 "configure"
+#line 4027 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #if STDC_HEADERS
@@ -3932,9 +4055,9 @@ fi
 
 
 echo $ac_n "checking for struct timeval""... $ac_c" 1>&6
-echo "configure:3936: checking for struct timeval" >&5
+echo "configure:4059: checking for struct timeval" >&5
 cat > conftest.$ac_ext <<EOF
-#line 3938 "configure"
+#line 4061 "configure"
 #include "confdefs.h"
 #ifdef TIME_WITH_SYS_TIME
 #include <sys/time.h>
@@ -3950,7 +4073,7 @@ int main() {
 static struct timeval x; x.tv_sec = x.tv_usec;
 ; return 0; }
 EOF
-if { (eval echo configure:3954: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4077: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
   HAVE_TIMEVAL=yes
@@ -3972,10 +4095,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:3976: checking whether struct tm is in sys/time.h or time.h" >&5
+echo "configure:4099: checking whether struct tm is in sys/time.h or time.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 3979 "configure"
+#line 4102 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <time.h>
@@ -3983,7 +4106,7 @@ int main() {
 struct tm *tp; tp->tm_sec;
 ; return 0; }
 EOF
-if { (eval echo configure:3987: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4110: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm=time.h
 else
@@ -4007,10 +4130,10 @@ EOF
 fi
 
 echo $ac_n "checking for tm_zone in struct tm""... $ac_c" 1>&6
-echo "configure:4011: checking for tm_zone in struct tm" >&5
+echo "configure:4134: checking for tm_zone in struct tm" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4014 "configure"
+#line 4137 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <$ac_cv_struct_tm>
@@ -4018,7 +4141,7 @@ int main() {
 struct tm tm; tm.tm_zone;
 ; return 0; }
 EOF
-if { (eval echo configure:4022: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4145: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_struct_tm_zone=yes
 else
@@ -4041,10 +4164,10 @@ EOF
 
 else
   echo $ac_n "checking for tzname""... $ac_c" 1>&6
-echo "configure:4045: checking for tzname" >&5
+echo "configure:4168: checking for tzname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4048 "configure"
+#line 4171 "configure"
 #include "confdefs.h"
 #include <time.h>
 #ifndef tzname /* For SGI.  */
@@ -4054,7 +4177,7 @@ int main() {
 atoi(*tzname);
 ; return 0; }
 EOF
-if { (eval echo configure:4058: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_cv_var_tzname=yes
 else
@@ -4080,10 +4203,10 @@ fi
 
 
 echo $ac_n "checking for working const""... $ac_c" 1>&6
-echo "configure:4084: checking for working const" >&5
+echo "configure:4207: checking for working const" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4087 "configure"
+#line 4210 "configure"
 #include "confdefs.h"
 
 int main() {
@@ -4132,7 +4255,7 @@ ccp = (char const *const *) p;
 
 ; return 0; }
 EOF
-if { (eval echo configure:4136: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4259: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_const=yes
 else
@@ -4157,7 +4280,7 @@ fi
 
 
 echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:4161: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:4284: checking whether ${MAKE-make} sets \${MAKE}" >&5
 set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
 
 cat > conftestmake <<\EOF
@@ -4182,12 +4305,12 @@ fi
 
 
 echo $ac_n "checking whether byte ordering is bigendian""... $ac_c" 1>&6
-echo "configure:4186: checking whether byte ordering is bigendian" >&5
+echo "configure:4309: 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 4191 "configure"
+#line 4314 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4198,11 +4321,11 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4202: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4325: \"$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 4206 "configure"
+#line 4329 "configure"
 #include "confdefs.h"
 #include <sys/types.h>
 #include <sys/param.h>
@@ -4213,7 +4336,7 @@ int main() {
 #endif
 ; return 0; }
 EOF
-if { (eval echo configure:4217: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:4340: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_bigendian=yes
 else
@@ -4230,7 +4353,7 @@ fi
 rm -f conftest*
 if test $ac_cv_c_bigendian = unknown; then
 cat > conftest.$ac_ext <<EOF
-#line 4234 "configure"
+#line 4357 "configure"
 #include "confdefs.h"
 main () {
   /* Are we little or big endian?  From Harbison&Steele.  */
@@ -4243,7 +4366,7 @@ main () {
   exit (u.c[sizeof (long) - 1] == 1);
 }
 EOF
-if { (eval echo configure:4247: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_bigendian=no
 else
@@ -4270,10 +4393,10 @@ fi
 
 
 echo $ac_n "checking size of short""... $ac_c" 1>&6
-echo "configure:4274: checking size of short" >&5
+echo "configure:4397: checking size of short" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4277 "configure"
+#line 4400 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4284,7 +4407,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4411: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_short=`cat conftestval`
 else
@@ -4312,10 +4435,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:4316: checking size of int" >&5
+echo "configure:4439: checking size of int" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4319 "configure"
+#line 4442 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4326,7 +4449,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4453: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_int=`cat conftestval`
 else
@@ -4348,10 +4471,10 @@ EOF
 
 
 echo $ac_n "checking size of long""... $ac_c" 1>&6
-echo "configure:4352: checking size of long" >&5
+echo "configure:4475: checking size of long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4355 "configure"
+#line 4478 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4362,7 +4485,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4366: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4489: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long=`cat conftestval`
 else
@@ -4384,10 +4507,10 @@ EOF
 
 
 echo $ac_n "checking size of long long""... $ac_c" 1>&6
-echo "configure:4388: checking size of long long" >&5
+echo "configure:4511: checking size of long long" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4391 "configure"
+#line 4514 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4398,7 +4521,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4525: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_sizeof_long_long=`cat conftestval`
 else
@@ -4420,10 +4543,10 @@ EOF
 
 
 echo $ac_n "checking size of void *""... $ac_c" 1>&6
-echo "configure:4424: checking size of void *" >&5
+echo "configure:4547: checking size of void *" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4427 "configure"
+#line 4550 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 main()
@@ -4434,7 +4557,7 @@ main()
   exit(0);
 }
 EOF
-if { (eval echo configure:4438: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:4561: \"$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
@@ -4457,7 +4580,7 @@ EOF
 
 
 echo $ac_n "checking for long file names""... $ac_c" 1>&6
-echo "configure:4461: checking for long file names" >&5
+echo "configure:4584: 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:
@@ -4503,10 +4626,10 @@ fi
 
 
 echo $ac_n "checking for sin""... $ac_c" 1>&6
-echo "configure:4507: checking for sin" >&5
+echo "configure:4630: checking for sin" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4510 "configure"
+#line 4633 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char sin(); below.  */
@@ -4529,7 +4652,7 @@ sin();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4656: \"$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
@@ -4547,12 +4670,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for sin in -lm""... $ac_c" 1>&6
-echo "configure:4551: checking for sin in -lm" >&5
+echo "configure:4674: 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 4556 "configure"
+#line 4679 "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
@@ -4563,7 +4686,7 @@ int main() {
 sin()
 ; return 0; }
 EOF
-if { (eval echo configure:4567: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4607,14 +4730,14 @@ EOF
 
 
 cat > conftest.$ac_ext <<EOF
-#line 4611 "configure"
+#line 4734 "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:4618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4741: \"$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
@@ -4631,14 +4754,14 @@ fi
 rm -f conftest*
 
 echo "checking type of mail spool file locking" 1>&6
-echo "configure:4635: checking type of mail spool file locking" >&5
+echo "configure:4758: checking type of mail spool file locking" >&5
 for ac_func in lockf flock
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:4639: checking for $ac_func" >&5
+echo "configure:4762: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 4642 "configure"
+#line 4765 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -4661,7 +4784,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:4665: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4788: \"$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
@@ -4734,12 +4857,12 @@ test "$mail_locking" = "locking" -a "$ac_cv_func_locking" != "yes" && \
 case "$opsys" in decosf*)
   
 echo $ac_n "checking for cma_open in -lpthreads""... $ac_c" 1>&6
-echo "configure:4738: checking for cma_open in -lpthreads" >&5
+echo "configure:4861: 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 4743 "configure"
+#line 4866 "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
@@ -4750,7 +4873,7 @@ int main() {
 cma_open()
 ; return 0; }
 EOF
-if { (eval echo configure:4754: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:4877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -4786,7 +4909,7 @@ fi
 esac
 
 echo $ac_n "checking whether the -xildoff compiler flag is required""... $ac_c" 1>&6
-echo "configure:4790: checking whether the -xildoff compiler flag is required" >&5
+echo "configure:4913: 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;
@@ -4798,7 +4921,7 @@ fi
 if test "$opsys" = "sol2"; then
   if test "$os_release" -ge 56; then
     echo $ac_n "checking for \"-z ignore\" linker flag""... $ac_c" 1>&6
-echo "configure:4802: checking for \"-z ignore\" linker flag" >&5
+echo "configure:4925: 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 ;;
@@ -4809,7 +4932,7 @@ fi
 
 
 echo "checking "for specified window system"" 1>&6
-echo "configure:4813: checking "for specified window system"" >&5
+echo "configure:4936: checking "for specified window system"" >&5
 
 if test "$with_x11" != "no"; then
     test "$x_includes $x_libraries" != "NONE NONE" && \
@@ -4842,7 +4965,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:4846: checking for X" >&5
+echo "configure:4969: checking for X" >&5
 
 # Check whether --with-x or --without-x was given.
 if test "${with_x+set}" = set; then
@@ -4902,12 +5025,12 @@ if test "$ac_x_includes" = NO; then
 
   # First, try using that file with no special directory specified.
 cat > conftest.$ac_ext <<EOF
-#line 4906 "configure"
+#line 5029 "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:4911: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5034: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -4976,14 +5099,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 4980 "configure"
+#line 5103 "configure"
 #include "confdefs.h"
 
 int main() {
 ${x_direct_test_function}()
 ; return 0; }
 EOF
-if { (eval echo configure:4987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5110: \"$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.
@@ -5092,17 +5215,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:5096: checking whether -R must be followed by a space" >&5
+echo "configure:5219: 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 5099 "configure"
+#line 5222 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5106: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5229: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_nospace=yes
 else
@@ -5118,14 +5241,14 @@ rm -f conftest*
       else
        LIBS="$ac_xsave_LIBS -R $x_libraries"
        cat > conftest.$ac_ext <<EOF
-#line 5122 "configure"
+#line 5245 "configure"
 #include "confdefs.h"
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:5129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5252: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   ac_R_space=yes
 else
@@ -5161,12 +5284,12 @@ ac_cv_lib_dnet_dnet_ntoa=no
 else
 
 echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:5165: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:5288: 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 5170 "configure"
+#line 5293 "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
@@ -5177,7 +5300,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5304: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5201,12 +5324,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:5205: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:5328: 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 5210 "configure"
+#line 5333 "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
@@ -5217,7 +5340,7 @@ int main() {
 dnet_ntoa()
 ; return 0; }
 EOF
-if { (eval echo configure:5221: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5344: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5246,10 +5369,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:5250: checking for gethostbyname" >&5
+echo "configure:5373: checking for gethostbyname" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5253 "configure"
+#line 5376 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char gethostbyname(); below.  */
@@ -5272,7 +5395,7 @@ gethostbyname();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5399: \"$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
@@ -5293,12 +5416,12 @@ fi
     if test $ac_cv_func_gethostbyname = no; then
       
 echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:5297: checking for gethostbyname in -lnsl" >&5
+echo "configure:5420: 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 5302 "configure"
+#line 5425 "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
@@ -5309,7 +5432,7 @@ int main() {
 gethostbyname()
 ; return 0; }
 EOF
-if { (eval echo configure:5313: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5436: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5339,10 +5462,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:5343: checking for connect" >&5
+echo "configure:5466: checking for connect" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5346 "configure"
+#line 5469 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char connect(); below.  */
@@ -5365,7 +5488,7 @@ connect();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5369: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5492: \"$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
@@ -5388,12 +5511,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:5392: checking "$xe_msg_checking"" >&5
+echo "configure:5515: 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 5397 "configure"
+#line 5520 "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
@@ -5404,7 +5527,7 @@ int main() {
 connect()
 ; return 0; }
 EOF
-if { (eval echo configure:5408: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5531: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5428,10 +5551,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:5432: checking for remove" >&5
+echo "configure:5555: checking for remove" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5435 "configure"
+#line 5558 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char remove(); below.  */
@@ -5454,7 +5577,7 @@ remove();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5581: \"$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
@@ -5475,12 +5598,12 @@ fi
     if test $ac_cv_func_remove = no; then
       
 echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:5479: checking for remove in -lposix" >&5
+echo "configure:5602: 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 5484 "configure"
+#line 5607 "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
@@ -5491,7 +5614,7 @@ int main() {
 remove()
 ; return 0; }
 EOF
-if { (eval echo configure:5495: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5515,10 +5638,10 @@ fi
 
     # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
     echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:5519: checking for shmat" >&5
+echo "configure:5642: checking for shmat" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5522 "configure"
+#line 5645 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char shmat(); below.  */
@@ -5541,7 +5664,7 @@ shmat();
 
 ; return 0; }
 EOF
-if { (eval echo configure:5545: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5668: \"$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
@@ -5562,12 +5685,12 @@ fi
     if test $ac_cv_func_shmat = no; then
       
 echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:5566: checking for shmat in -lipc" >&5
+echo "configure:5689: 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 5571 "configure"
+#line 5694 "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
@@ -5578,7 +5701,7 @@ int main() {
 shmat()
 ; return 0; }
 EOF
-if { (eval echo configure:5582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5705: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5614,12 +5737,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:5618: checking "$xe_msg_checking"" >&5
+echo "configure:5741: 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 5623 "configure"
+#line 5746 "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
@@ -5630,7 +5753,7 @@ int main() {
 IceConnectionNumber()
 ; return 0; }
 EOF
-if { (eval echo configure:5634: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:5757: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5799,7 +5922,7 @@ EOF
 
 
     echo "checking for X defines extracted by xmkmf" 1>&6
-echo "configure:5803: checking for X defines extracted by xmkmf" >&5
+echo "configure:5926: checking for X defines extracted by xmkmf" >&5
   rm -fr conftestdir
   if mkdir conftestdir; then
     cd conftestdir
@@ -5831,15 +5954,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:5835: checking for X11/Intrinsic.h" >&5
+echo "configure:5958: checking for X11/Intrinsic.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 5838 "configure"
+#line 5961 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:5843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:5966: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -5863,12 +5986,12 @@ fi
 
       
 echo $ac_n "checking for XOpenDisplay in -lX11""... $ac_c" 1>&6
-echo "configure:5867: checking for XOpenDisplay in -lX11" >&5
+echo "configure:5990: 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 5872 "configure"
+#line 5995 "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
@@ -5879,7 +6002,7 @@ int main() {
 XOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:5883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5904,12 +6027,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:5908: checking "$xe_msg_checking"" >&5
+echo "configure:6031: 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 5913 "configure"
+#line 6036 "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
@@ -5920,7 +6043,7 @@ int main() {
 XGetFontProperty()
 ; return 0; }
 EOF
-if { (eval echo configure:5924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6047: \"$ac_link\") 1>&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,12 +6070,12 @@ fi
 
     
 echo $ac_n "checking for XShapeSelectInput in -lXext""... $ac_c" 1>&6
-echo "configure:5951: checking for XShapeSelectInput in -lXext" >&5
+echo "configure:6074: 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 5956 "configure"
+#line 6079 "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
@@ -5963,7 +6086,7 @@ int main() {
 XShapeSelectInput()
 ; return 0; }
 EOF
-if { (eval echo configure:5967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -5986,12 +6109,12 @@ fi
 
     
 echo $ac_n "checking for XtOpenDisplay in -lXt""... $ac_c" 1>&6
-echo "configure:5990: checking for XtOpenDisplay in -lXt" >&5
+echo "configure:6113: 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 5995 "configure"
+#line 6118 "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
@@ -6002,7 +6125,7 @@ int main() {
 XtOpenDisplay()
 ; return 0; }
 EOF
-if { (eval echo configure:6006: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6025,14 +6148,14 @@ fi
 
 
   echo $ac_n "checking the version of X11 being used""... $ac_c" 1>&6
-echo "configure:6029: checking the version of X11 being used" >&5
+echo "configure:6152: checking the version of X11 being used" >&5
   cat > conftest.$ac_ext <<EOF
-#line 6031 "configure"
+#line 6154 "configure"
 #include "confdefs.h"
 #include <X11/Intrinsic.h>
     int main(int c, char *v[]) { return c>1 ? XlibSpecificationRelease : 0; }
 EOF
-if { (eval echo configure:6036: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6159: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ./conftest foobar; x11_release=$?
 else
@@ -6056,10 +6179,10 @@ EOF
   for ac_func in XConvertCase
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:6060: checking for $ac_func" >&5
+echo "configure:6183: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6063 "configure"
+#line 6186 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -6082,7 +6205,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:6086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6209: \"$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
@@ -6114,15 +6237,15 @@ done
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:6118: checking for $ac_hdr" >&5
+echo "configure:6241: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6121 "configure"
+#line 6244 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6153,7 +6276,7 @@ done
 
 
     echo $ac_n "checking for XFree86""... $ac_c" 1>&6
-echo "configure:6157: checking for XFree86" >&5
+echo "configure:6280: checking for XFree86" >&5
   if test -d "/usr/X386/include" -o \
           -f "/etc/XF86Config"    -o \
          -f "/etc/X11/XF86Config" -o \
@@ -6173,12 +6296,12 @@ EOF
 
     test -z "$with_xmu" && { 
 echo $ac_n "checking for XmuReadBitmapDataFromFile in -lXmu""... $ac_c" 1>&6
-echo "configure:6177: checking for XmuReadBitmapDataFromFile in -lXmu" >&5
+echo "configure:6300: 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 6182 "configure"
+#line 6305 "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
@@ -6189,7 +6312,7 @@ int main() {
 XmuReadBitmapDataFromFile()
 ; return 0; }
 EOF
-if { (eval echo configure:6193: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6316: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6228,19 +6351,19 @@ EOF
 
       
 echo $ac_n "checking for main in -lXbsd""... $ac_c" 1>&6
-echo "configure:6232: checking for main in -lXbsd" >&5
+echo "configure:6355: 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 6237 "configure"
+#line 6360 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6277,22 +6400,22 @@ fi
 fi 
 if test "$with_msw" != "no"; then
   echo "checking for MS-Windows" 1>&6
-echo "configure:6281: checking for MS-Windows" >&5
+echo "configure:6404: checking for MS-Windows" >&5
   
 echo $ac_n "checking for main in -lgdi32""... $ac_c" 1>&6
-echo "configure:6284: checking for main in -lgdi32" >&5
+echo "configure:6407: 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 6289 "configure"
+#line 6412 "configure"
 #include "confdefs.h"
 
 int main() {
 main()
 ; return 0; }
 EOF
-if { (eval echo configure:6296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6419: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6358,12 +6481,12 @@ EOF
  fi
     fi
         cat > conftest.$ac_ext <<EOF
-#line 6362 "configure"
+#line 6485 "configure"
 #include "confdefs.h"
 #include <fcntl.h>
     int main() { return (open("/dev/windows", O_RDONLY, 0) > 0)? 0 : 1; }
 EOF
-if { (eval echo configure:6367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:6490: \"$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
@@ -6438,7 +6561,7 @@ case "$x_libraries" in *X11R4* )
 esac
 
 echo "checking for WM_COMMAND option" 1>&6
-echo "configure:6442: checking for WM_COMMAND option" >&5;
+echo "configure:6565: checking for WM_COMMAND option" >&5;
 if test "$with_wmcommand" != "no"; then
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_WMCOMMAND
@@ -6453,15 +6576,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:6457: checking for X11/Xauth.h" >&5
+echo "configure:6580: checking for X11/Xauth.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6460 "configure"
+#line 6583 "configure"
 #include "confdefs.h"
 #include <X11/Xauth.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6465: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6588: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6484,12 +6607,12 @@ fi
  }
 test -z "$with_xauth" && { 
 echo $ac_n "checking for XauGetAuthByAddr in -lXau""... $ac_c" 1>&6
-echo "configure:6488: checking for XauGetAuthByAddr in -lXau" >&5
+echo "configure:6611: 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 6493 "configure"
+#line 6616 "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
@@ -6500,7 +6623,7 @@ int main() {
 XauGetAuthByAddr()
 ; return 0; }
 EOF
-if { (eval echo configure:6504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6627: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6545,15 +6668,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:6549: checking for ${dir}tt_c.h" >&5
+echo "configure:6672: checking for ${dir}tt_c.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6552 "configure"
+#line 6675 "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:6557: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6680: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6568,13 +6691,13 @@ fi
 rm -f conftest*
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  tt_c_h_path="${dir}tt_c.h"; break
+  tt_c_h_file="${dir}tt_c.h"; break
 else
   echo "$ac_t""no" 1>&6
 fi
 
   done
-  if test -z "$tt_c_h_path"; then
+  if test -z "$tt_c_h_file"; then
     if test "$with_tooltalk" = "yes"; then
       (echo "$progname: Usage error:"
 echo " " "Unable to find required tooltalk header files."
@@ -6589,12 +6712,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:6593: checking "$xe_msg_checking"" >&5
+echo "configure:6716: 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 6598 "configure"
+#line 6721 "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
@@ -6605,7 +6728,7 @@ int main() {
 tt_message_create()
 ; return 0; }
 EOF
-if { (eval echo configure:6609: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6732: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6647,10 +6770,10 @@ EOF
 }
 
   { test "$extra_verbose" = "yes" && cat << EOF
-    Defining TT_C_H_PATH = "$tt_c_h_path"
+    Defining TT_C_H_FILE = "$tt_c_h_file"
 EOF
 cat >> confdefs.h <<EOF
-#define TT_C_H_PATH "$tt_c_h_path"
+#define TT_C_H_FILE "$tt_c_h_file"
 EOF
 }
 
@@ -6662,15 +6785,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:6666: checking for Dt/Dt.h" >&5
+echo "configure:6789: checking for Dt/Dt.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6669 "configure"
+#line 6792 "configure"
 #include "confdefs.h"
 #include <Dt/Dt.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6797: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6693,12 +6816,12 @@ fi
  }
 test -z "$with_cde" && { 
 echo $ac_n "checking for DtDndDragStart in -lDtSvc""... $ac_c" 1>&6
-echo "configure:6697: checking for DtDndDragStart in -lDtSvc" >&5
+echo "configure:6820: 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 6702 "configure"
+#line 6825 "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
@@ -6709,7 +6832,7 @@ int main() {
 DtDndDragStart()
 ; return 0; }
 EOF
-if { (eval echo configure:6713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:6836: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6778,7 +6901,7 @@ EOF
 fi
 
 echo $ac_n "checking if drag and drop API is needed""... $ac_c" 1>&6
-echo "configure:6782: checking if drag and drop API is needed" >&5
+echo "configure:6905: checking if drag and drop API is needed" >&5
 if test "$with_dragndrop" != "no" ; then
   if test -n "$dragndrop_proto" ; then
     with_dragndrop=yes
@@ -6799,18 +6922,18 @@ EOF
 fi
 
 echo "checking for LDAP" 1>&6
-echo "configure:6803: checking for LDAP" >&5
+echo "configure:6926: 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:6806: checking for ldap.h" >&5
+echo "configure:6929: checking for ldap.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6809 "configure"
+#line 6932 "configure"
 #include "confdefs.h"
 #include <ldap.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6937: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6833,15 +6956,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:6837: checking for lber.h" >&5
+echo "configure:6960: checking for lber.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 6840 "configure"
+#line 6963 "configure"
 #include "confdefs.h"
 #include <lber.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:6845: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:6968: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -6865,12 +6988,12 @@ fi
 if test "$with_ldap" != "no"; then
   
 echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6
-echo "configure:6869: checking for ldap_search in -lldap" >&5
+echo "configure:6992: 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 6874 "configure"
+#line 6997 "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
@@ -6881,7 +7004,7 @@ int main() {
 ldap_search()
 ; return 0; }
 EOF
-if { (eval echo configure:6885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6906,12 +7029,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:6910: checking "$xe_msg_checking"" >&5
+echo "configure:7033: 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 6915 "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
@@ -6922,7 +7045,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6926: \"$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
@@ -6947,12 +7070,12 @@ fi
 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:6951: checking "$xe_msg_checking"" >&5
+echo "configure:7074: 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 6956 "configure"
+#line 7079 "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
@@ -6963,7 +7086,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:6967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7090: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -6988,12 +7111,12 @@ fi
 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:6992: checking "$xe_msg_checking"" >&5
+echo "configure:7115: 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 6997 "configure"
+#line 7120 "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
@@ -7004,7 +7127,7 @@ int main() {
 ldap_open()
 ; return 0; }
 EOF
-if { (eval echo configure:7008: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7131: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7055,10 +7178,10 @@ EOF
   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:7059: checking for $ac_func" >&5
+echo "configure:7182: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7062 "configure"
+#line 7185 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -7081,7 +7204,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7085: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7208: \"$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
@@ -7111,21 +7234,23 @@ done
 fi
 
 echo "checking for PostgreSQL" 1>&6
-echo "configure:7115: checking for PostgreSQL" >&5
+echo "configure:7238: checking for PostgreSQL" >&5
+postgres_h_path=""
 postgres_includes_found=no
 save_c_switch_site="$c_switch_site"
+
 if test "$with_postgresql" != "no"; then
        ac_safe=`echo "libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libpq-fe.h""... $ac_c" 1>&6
-echo "configure:7121: checking for libpq-fe.h" >&5
+echo "configure:7246: checking for libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7124 "configure"
+#line 7249 "configure"
 #include "confdefs.h"
 #include <libpq-fe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7129: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7254: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7146,20 +7271,21 @@ else
 fi
 
 fi
+
 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
-       -d "/usr/include/pgsql"; then
-       c_switch_site="$c_switch_site -I/usr/include/pgsql"
+       -d "/usr/local/pgsql/include"; then
+       c_switch_site="$c_switch_site -I/usr/local/pgsql/include"
        ac_safe=`echo "libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libpq-fe.h""... $ac_c" 1>&6
-echo "configure:7155: checking for libpq-fe.h" >&5
+echo "configure:7281: checking for libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7158 "configure"
+#line 7284 "configure"
 #include "confdefs.h"
 #include <libpq-fe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7289: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7180,23 +7306,24 @@ else
 fi
 
        if test "$postgres_includes_found" != "yes"; then
-               c_switch_site="$save_c_switch_site"
+               postgres_h_path="/usr/local/pgsql/include"
        fi
+       c_switch_site="$save_c_switch_site"
 fi
 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
-       -d "/usr/local/pgsql/include"; then
-       c_switch_site="$c_switch_site -I/usr/local/pgsql/include"
+       -d "/usr/include/pgsql"; then
+       c_switch_site="$c_switch_site -I/usr/include/pgsql"
        ac_safe=`echo "libpq-fe.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for libpq-fe.h""... $ac_c" 1>&6
-echo "configure:7192: checking for libpq-fe.h" >&5
+echo "configure:7319: checking for libpq-fe.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7195 "configure"
+#line 7322 "configure"
 #include "confdefs.h"
 #include <libpq-fe.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7327: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7216,20 +7343,59 @@ else
   echo "$ac_t""no" 1>&6
 fi
 
-       if test "$postgres_includes_found" != "yes"; then
+       if test "$postgres_includes_found" = "yes"; then
+               postgres_h_path="pgsql"
+       fi
                c_switch_site="$save_c_switch_site"
        fi
+if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
+       -d "/usr/include/postgresql"; then
+       c_switch_site="$c_switch_site -I/usr/include/postgresql"
+       ac_safe=`echo "libpq-fe.h" | sed 'y%./+-%__p_%'`
+echo $ac_n "checking for libpq-fe.h""... $ac_c" 1>&6
+echo "configure:7357: checking for libpq-fe.h" >&5
+
+cat > conftest.$ac_ext <<EOF
+#line 7360 "configure"
+#include "confdefs.h"
+#include <libpq-fe.h>
+EOF
+ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
+{ (eval echo configure:7365: \"$ac_try\") 1>&5; (eval $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
+  postgres_includes_found=yes
+else
+  echo "$ac_t""no" 1>&6
+fi
+
+       if test "$postgres_includes_found" = "yes"; then
+               postgres_h_path="postgresql"
+fi
+       c_switch_site="$save_c_switch_site"
 fi
 
 if test "$postgres_includes_found" = "yes"; then
        
 echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6
-echo "configure:7228: checking for PQconnectdb in -lpq" >&5
+echo "configure:7394: checking for PQconnectdb in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 7233 "configure"
+#line 7399 "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
@@ -7240,7 +7406,7 @@ int main() {
 PQconnectdb()
 ; return 0; }
 EOF
-if { (eval echo configure:7244: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7410: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7265,12 +7431,12 @@ fi
 if test "$with_postgresql" = "yes"; then
        
 echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6
-echo "configure:7269: checking for PQconnectStart in -lpq" >&5
+echo "configure:7435: checking for PQconnectStart in -lpq" >&5
 ac_lib_var=`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lpq "
 cat > conftest.$ac_ext <<EOF
-#line 7274 "configure"
+#line 7440 "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
@@ -7281,7 +7447,7 @@ int main() {
 PQconnectStart()
 ; return 0; }
 EOF
-if { (eval echo configure:7285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7304,6 +7470,16 @@ fi
 
 fi
 if test "$with_postgresql" = "yes"; then
+       if test -n "$postgres_h_path"; then
+               { test "$extra_verbose" = "yes" && cat << EOF
+    Defining POSTGRES_H_PATH = $postgres_h_path
+EOF
+cat >> confdefs.h <<EOF
+#define POSTGRES_H_PATH $postgres_h_path
+EOF
+}
+
+       fi
        { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_POSTGRESQL
 EOF
@@ -7326,22 +7502,20 @@ EOF
        extra_objs="$extra_objs postgresql.o" &&  if test "$extra_verbose" = "yes"; then
    echo "    xemacs will be linked with \"postgresql.o\""
  fi
-else
-       c_switch_site=$save_c_switch_site
 fi
 
 
 if test "$window_system" != "none"; then
   echo "checking for graphics libraries" 1>&6
-echo "configure:7337: checking for graphics libraries" >&5
+echo "configure:7511: 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:7342: checking for Xpm - no older than 3.4f" >&5
+echo "configure:7516: checking for Xpm - no older than 3.4f" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7345 "configure"
+#line 7519 "configure"
 #include "confdefs.h"
 #define XPM_NUMBERS
 #include <X11/xpm.h>
@@ -7350,7 +7524,7 @@ echo "configure:7342: checking for Xpm - no older than 3.4f" >&5
       XpmIncludeVersion != XpmLibraryVersion() ? 1 :
       XpmIncludeVersion < 30406 ? 2 : 0 ;}
 EOF
-if { (eval echo configure:7354: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:7528: \"$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
@@ -7392,17 +7566,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:7396: checking for \"FOR_MSW\" xpm" >&5
+echo "configure:7570: checking for \"FOR_MSW\" xpm" >&5
     xe_check_libs=-lXpm
     cat > conftest.$ac_ext <<EOF
-#line 7399 "configure"
+#line 7573 "configure"
 #include "confdefs.h"
 
 int main() {
 XpmCreatePixmapFromData()
 ; return 0; }
 EOF
-if { (eval echo configure:7406: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7580: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   xpm_for_msw=no
 else
@@ -7428,15 +7602,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:7432: checking for compface.h" >&5
+echo "configure:7606: checking for compface.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7435 "configure"
+#line 7609 "configure"
 #include "confdefs.h"
 #include <compface.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7440: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7614: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7459,12 +7633,12 @@ fi
  }
   test -z "$with_xface" && { 
 echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6
-echo "configure:7463: checking for UnGenFace in -lcompface" >&5
+echo "configure:7637: 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 7468 "configure"
+#line 7642 "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
@@ -7475,7 +7649,7 @@ int main() {
 UnGenFace()
 ; return 0; }
 EOF
-if { (eval echo configure:7479: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7653: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7527,12 +7701,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:7531: checking for inflate in -lc" >&5
+echo "configure:7705: 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 7536 "configure"
+#line 7710 "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
@@ -7543,7 +7717,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7562,12 +7736,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6
-echo "configure:7566: checking for inflate in -lz" >&5
+echo "configure:7740: 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 7571 "configure"
+#line 7745 "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
@@ -7578,7 +7752,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7582: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7597,12 +7771,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6
-echo "configure:7601: checking for inflate in -lgz" >&5
+echo "configure:7775: 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 7606 "configure"
+#line 7780 "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
@@ -7613,7 +7787,7 @@ int main() {
 inflate()
 ; return 0; }
 EOF
-if { (eval echo configure:7617: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7791: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7643,15 +7817,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:7647: checking for jpeglib.h" >&5
+echo "configure:7821: checking for jpeglib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7650 "configure"
+#line 7824 "configure"
 #include "confdefs.h"
 #include <jpeglib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7655: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7829: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7674,12 +7848,12 @@ fi
  }
   test -z "$with_jpeg" && { 
 echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6
-echo "configure:7678: checking for jpeg_destroy_decompress in -ljpeg" >&5
+echo "configure:7852: 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 7683 "configure"
+#line 7857 "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
@@ -7690,7 +7864,7 @@ int main() {
 jpeg_destroy_decompress()
 ; return 0; }
 EOF
-if { (eval echo configure:7694: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7868: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7726,10 +7900,10 @@ EOF
 
     png_problem=""
   test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6
-echo "configure:7730: checking for pow" >&5
+echo "configure:7904: checking for pow" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7733 "configure"
+#line 7907 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char pow(); below.  */
@@ -7752,7 +7926,7 @@ pow();
 
 ; return 0; }
 EOF
-if { (eval echo configure:7756: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7930: \"$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
@@ -7773,15 +7947,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:7777: checking for png.h" >&5
+echo "configure:7951: checking for png.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7780 "configure"
+#line 7954 "configure"
 #include "confdefs.h"
 #include <png.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7785: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:7959: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7804,12 +7978,12 @@ fi
  }
   test -z "$with_png" && { 
 echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6
-echo "configure:7808: checking for png_read_image in -lpng" >&5
+echo "configure:7982: 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 7813 "configure"
+#line 7987 "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
@@ -7820,7 +7994,7 @@ int main() {
 png_read_image()
 ; return 0; }
 EOF
-if { (eval echo configure:7824: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:7998: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7843,10 +8017,10 @@ fi
  }
   if test -z "$with_png"; then
     echo $ac_n "checking for workable png version information""... $ac_c" 1>&6
-echo "configure:7847: checking for workable png version information" >&5
+echo "configure:8021: checking for workable png version information" >&5
     xe_check_libs="-lpng -lz"
     cat > conftest.$ac_ext <<EOF
-#line 7850 "configure"
+#line 8024 "configure"
 #include "confdefs.h"
 #include <png.h>
     int main(int c, char **v) {
@@ -7854,7 +8028,7 @@ echo "configure:7847: 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:7858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:8032: \"$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
@@ -7897,15 +8071,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:7901: checking for tiffio.h" >&5
+echo "configure:8075: checking for tiffio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 7904 "configure"
+#line 8078 "configure"
 #include "confdefs.h"
 #include <tiffio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:7909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8083: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -7928,12 +8102,12 @@ fi
  }
   test -z "$with_tiff" && { 
 echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6
-echo "configure:7932: checking for TIFFClientOpen in -ltiff" >&5
+echo "configure:8106: 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 7937 "configure"
+#line 8111 "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
@@ -7944,7 +8118,7 @@ int main() {
 TIFFClientOpen()
 ; return 0; }
 EOF
-if { (eval echo configure:7948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -7983,10 +8157,10 @@ fi
 if test "$with_x11" = "yes"; then
 
   echo "checking for X11 graphics libraries" 1>&6
-echo "configure:7987: checking for X11 graphics libraries" >&5
+echo "configure:8161: checking for X11 graphics libraries" >&5
 
   echo "checking for the Athena widgets" 1>&6
-echo "configure:7990: checking for the Athena widgets" >&5
+echo "configure:8164: checking for the Athena widgets" >&5
 
     case "$with_athena" in
         "xaw" | "")    athena_variant=Xaw      athena_3d=no  ;;
@@ -8000,12 +8174,12 @@ echo "configure:7990: checking for the Athena widgets" >&5
     if test "$athena_3d" = "no"; then
     
 echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:8004: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
+echo "configure:8178: checking for XawScrollbarSetThumb in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8009 "configure"
+#line 8183 "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
@@ -8016,7 +8190,7 @@ int main() {
 XawScrollbarSetThumb()
 ; return 0; }
 EOF
-if { (eval echo configure:8020: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8194: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8032,12 +8206,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes" ; then
   echo "$ac_t""yes" 1>&6
           
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:8036: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:8210: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8041 "configure"
+#line 8215 "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
@@ -8048,7 +8222,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8052: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8226: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8079,12 +8253,12 @@ fi
   else
         
 echo $ac_n "checking for threeDClassRec in -l$athena_variant""... $ac_c" 1>&6
-echo "configure:8083: checking for threeDClassRec in -l$athena_variant" >&5
+echo "configure:8257: checking for threeDClassRec in -l$athena_variant" >&5
 ac_lib_var=`echo $athena_variant'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -l$athena_variant "
 cat > conftest.$ac_ext <<EOF
-#line 8088 "configure"
+#line 8262 "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
@@ -8095,7 +8269,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8099: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8273: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8113,12 +8287,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 threeDClassRec in -lXaw""... $ac_c" 1>&6
-echo "configure:8117: checking for threeDClassRec in -lXaw" >&5
+echo "configure:8291: checking for threeDClassRec in -lXaw" >&5
 ac_lib_var=`echo Xaw'_'threeDClassRec | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -lXaw "
 cat > conftest.$ac_ext <<EOF
-#line 8122 "configure"
+#line 8296 "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
@@ -8129,7 +8303,7 @@ int main() {
 threeDClassRec()
 ; return 0; }
 EOF
-if { (eval echo configure:8133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8160,15 +8334,15 @@ fi
     if test "$athena_3d" = "no"; then
     ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8164: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:8338: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8167 "configure"
+#line 8341 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8172: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8346: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8188,15 +8362,15 @@ else
   echo "$ac_t""no" 1>&6
 ac_safe=`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6
-echo "configure:8192: checking for X11/Xaw/XawInit.h" >&5
+echo "configure:8366: checking for X11/Xaw/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8195 "configure"
+#line 8369 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8200: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8374: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8222,15 +8396,15 @@ fi
   else
             ac_safe=`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:8226: checking for X11/$athena_variant/XawInit.h" >&5
+echo "configure:8400: checking for X11/$athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8229 "configure"
+#line 8403 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8247,15 +8421,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8251: checking for X11/$athena_variant/ThreeD.h" >&5
+echo "configure:8425: checking for X11/$athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8254 "configure"
+#line 8428 "configure"
 #include "confdefs.h"
 #include <X11/$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8259: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8433: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8283,15 +8457,15 @@ fi
         if test -z "$athena_h_path"; then
       ac_safe=`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6
-echo "configure:8287: checking for $athena_variant/XawInit.h" >&5
+echo "configure:8461: checking for $athena_variant/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8290 "configure"
+#line 8464 "configure"
 #include "confdefs.h"
 #include <$athena_variant/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8295: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8469: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8308,15 +8482,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8312: checking for $athena_variant/ThreeD.h" >&5
+echo "configure:8486: checking for $athena_variant/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8315 "configure"
+#line 8489 "configure"
 #include "confdefs.h"
 #include <$athena_variant/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8320: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8494: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8345,15 +8519,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:8349: checking for X11/Xaw3d/XawInit.h" >&5
+echo "configure:8523: checking for X11/Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8352 "configure"
+#line 8526 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8357: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8370,15 +8544,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8374: checking for X11/Xaw3d/ThreeD.h" >&5
+echo "configure:8548: checking for X11/Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8377 "configure"
+#line 8551 "configure"
 #include "confdefs.h"
 #include <X11/Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8382: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8410,15 +8584,15 @@ fi
         if test -z "$athena_h_path" -a "$athena_variant" != "Xaw3d"; then
       ac_safe=`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6
-echo "configure:8414: checking for Xaw3d/XawInit.h" >&5
+echo "configure:8588: checking for Xaw3d/XawInit.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8417 "configure"
+#line 8591 "configure"
 #include "confdefs.h"
 #include <Xaw3d/XawInit.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8422: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8435,15 +8609,15 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
   ac_safe=`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8439: checking for Xaw3d/ThreeD.h" >&5
+echo "configure:8613: checking for Xaw3d/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8442 "configure"
+#line 8616 "configure"
 #include "confdefs.h"
 #include <Xaw3d/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8447: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8621: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8475,15 +8649,15 @@ fi
             if test -z "$athena_h_path"; then
       ac_safe=`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6
-echo "configure:8479: checking for X11/Xaw/ThreeD.h" >&5
+echo "configure:8653: checking for X11/Xaw/ThreeD.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8482 "configure"
+#line 8656 "configure"
 #include "confdefs.h"
 #include <X11/Xaw/ThreeD.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8487: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8661: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8518,15 +8692,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:8522: checking for Xm/Xm.h" >&5
+echo "configure:8696: checking for Xm/Xm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8525 "configure"
+#line 8699 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:8704: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8543,12 +8717,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:8547: checking for XmStringFree in -lXm" >&5
+echo "configure:8721: 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 8552 "configure"
+#line 8726 "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
@@ -8559,7 +8733,7 @@ int main() {
 XmStringFree()
 ; return 0; }
 EOF
-if { (eval echo configure:8563: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:8737: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -8588,9 +8762,9 @@ fi
 
   if test "$have_motif" = "yes"; then
         echo $ac_n "checking for Lesstif""... $ac_c" 1>&6
-echo "configure:8592: checking for Lesstif" >&5
+echo "configure:8766: checking for Lesstif" >&5
     cat > conftest.$ac_ext <<EOF
-#line 8594 "configure"
+#line 8768 "configure"
 #include "confdefs.h"
 #include <Xm/Xm.h>
 #ifdef LESSTIF_VERSION
@@ -8923,7 +9097,7 @@ fi
 
 if test "$with_mule" = "yes" ; then
   echo "checking for Mule-related features" 1>&6
-echo "configure:8927: checking for Mule-related features" >&5
+echo "configure:9101: checking for Mule-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining MULE
 EOF
@@ -8948,15 +9122,15 @@ EOF
 do
 ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:8952: checking for $ac_hdr" >&5
+echo "configure:9126: checking for $ac_hdr" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 8955 "configure"
+#line 9129 "configure"
 #include "confdefs.h"
 #include <$ac_hdr>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:8960: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -8987,12 +9161,12 @@ done
 
   
 echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6
-echo "configure:8991: checking for strerror in -lintl" >&5
+echo "configure:9165: 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 8996 "configure"
+#line 9170 "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
@@ -9003,7 +9177,7 @@ int main() {
 strerror()
 ; return 0; }
 EOF
-if { (eval echo configure:9007: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9181: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9036,18 +9210,18 @@ fi
 
 
   echo "checking for Mule input methods" 1>&6
-echo "configure:9040: checking for Mule input methods" >&5
+echo "configure:9214: checking for Mule input methods" >&5
         case "$with_xim" in "" | "yes" )
     echo "checking for XIM" 1>&6
-echo "configure:9043: checking for XIM" >&5
+echo "configure:9217: checking for XIM" >&5
     
 echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6
-echo "configure:9046: checking for XOpenIM in -lX11" >&5
+echo "configure:9220: 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 9051 "configure"
+#line 9225 "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
@@ -9058,7 +9232,7 @@ int main() {
 XOpenIM()
 ; return 0; }
 EOF
-if { (eval echo configure:9062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9082,12 +9256,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:9086: checking for XmImMbLookupString in -lXm" >&5
+echo "configure:9260: 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 9091 "configure"
+#line 9265 "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
@@ -9098,7 +9272,7 @@ int main() {
 XmImMbLookupString()
 ; return 0; }
 EOF
-if { (eval echo configure:9102: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9276: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9163,15 +9337,15 @@ EOF
 
     if test "$with_xfs" = "yes" ; then
     echo "checking for XFontSet" 1>&6
-echo "configure:9167: checking for XFontSet" >&5
+echo "configure:9341: checking for XFontSet" >&5
     
 echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6
-echo "configure:9170: checking for XmbDrawString in -lX11" >&5
+echo "configure:9344: 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 9175 "configure"
+#line 9349 "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
@@ -9182,7 +9356,7 @@ int main() {
 XmbDrawString()
 ; return 0; }
 EOF
-if { (eval echo configure:9186: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9360: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9222,15 +9396,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:9226: checking for wnn/jllib.h" >&5
+echo "configure:9400: checking for wnn/jllib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9229 "configure"
+#line 9403 "configure"
 #include "confdefs.h"
 #include <wnn/jllib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9234: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9408: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9255,10 +9429,10 @@ fi
     for ac_func in crypt
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9259: checking for $ac_func" >&5
+echo "configure:9433: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9262 "configure"
+#line 9436 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9281,7 +9455,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9459: \"$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
@@ -9310,12 +9484,12 @@ done
 
     test "$ac_cv_func_crypt" != "yes" && { 
 echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6
-echo "configure:9314: checking for crypt in -lcrypt" >&5
+echo "configure:9488: 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 9319 "configure"
+#line 9493 "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
@@ -9326,7 +9500,7 @@ int main() {
 crypt()
 ; return 0; }
 EOF
-if { (eval echo configure:9330: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9361,12 +9535,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:9365: checking for jl_dic_list_e in -lwnn" >&5
+echo "configure:9539: 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 9370 "configure"
+#line 9544 "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
@@ -9377,7 +9551,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9381: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9555: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9395,12 +9569,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:9399: checking for jl_dic_list_e in -lwnn4" >&5
+echo "configure:9573: 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 9404 "configure"
+#line 9578 "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
@@ -9411,7 +9585,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9415: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9589: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9429,12 +9603,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:9433: checking for jl_dic_list_e in -lwnn6" >&5
+echo "configure:9607: 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 9438 "configure"
+#line 9612 "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
@@ -9445,7 +9619,7 @@ int main() {
 jl_dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9449: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9623: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9463,12 +9637,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:9467: checking for dic_list_e in -lwnn6_fromsrc" >&5
+echo "configure:9641: 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 9472 "configure"
+#line 9646 "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
@@ -9479,7 +9653,7 @@ int main() {
 dic_list_e()
 ; return 0; }
 EOF
-if { (eval echo configure:9483: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9657: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9527,12 +9701,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:9531: checking for jl_fi_dic_list in -l$libwnn" >&5
+echo "configure:9705: 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 9536 "configure"
+#line 9710 "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
@@ -9543,7 +9717,7 @@ int main() {
 jl_fi_dic_list()
 ; return 0; }
 EOF
-if { (eval echo configure:9547: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9721: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9578,15 +9752,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:9582: checking for canna/jrkanji.h" >&5
+echo "configure:9756: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9585 "configure"
+#line 9759 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9590: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9613,15 +9787,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:9617: checking for canna/jrkanji.h" >&5
+echo "configure:9791: checking for canna/jrkanji.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9620 "configure"
+#line 9794 "configure"
 #include "confdefs.h"
 #include <canna/jrkanji.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9625: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9799: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9649,15 +9823,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:9653: checking for canna/RK.h" >&5
+echo "configure:9827: checking for canna/RK.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9656 "configure"
+#line 9830 "configure"
 #include "confdefs.h"
 #include <canna/RK.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:9661: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:9835: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -9680,12 +9854,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6
-echo "configure:9684: checking for RkBgnBun in -lRKC" >&5
+echo "configure:9858: 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 9689 "configure"
+#line 9863 "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
@@ -9696,7 +9870,7 @@ int main() {
 RkBgnBun()
 ; return 0; }
 EOF
-if { (eval echo configure:9700: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9874: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9719,12 +9893,12 @@ fi
  }
   test -z "$with_canna" && { 
 echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6
-echo "configure:9723: checking for jrKanjiControl in -lcanna" >&5
+echo "configure:9897: 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 9728 "configure"
+#line 9902 "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
@@ -9735,7 +9909,7 @@ int main() {
 jrKanjiControl()
 ; return 0; }
 EOF
-if { (eval echo configure:9739: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -9784,12 +9958,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:9788: checking for layout_object_getvalue in -li18n" >&5
+echo "configure:9962: 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 9793 "configure"
+#line 9967 "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
@@ -9800,7 +9974,7 @@ int main() {
 layout_object_getvalue()
 ; return 0; }
 EOF
-if { (eval echo configure:9804: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:9978: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getaddrinfo gethostname getnameinfo getpagesize gettimeofday getcwd getpt getwd logb lrand48 matherr mkdir mktime perror poll random rename res_init rint rmdir select setitimer setpgid setlocale setsid sigblock sighold sigprocmask snprintf stpcpy strcasecmp strerror tzset ulimit usleep utimes waitpid vsnprintf fsync ftruncate umask
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9890: checking for $ac_func" >&5
+echo "configure:10064: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9893 "configure"
+#line 10067 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9912,7 +10086,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9916: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10090: \"$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
@@ -9947,10 +10121,10 @@ extra_objs="$extra_objs realpath.o" &&  if test "$extra_verbose" = "yes"; then
 for ac_func in getloadavg
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:9951: checking for $ac_func" >&5
+echo "configure:10125: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 9954 "configure"
+#line 10128 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -9973,7 +10147,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:9977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10151: \"$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
@@ -10009,12 +10183,12 @@ then
 
     
 echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6
-echo "configure:10013: checking for kstat_open in -lkstat" >&5
+echo "configure:10187: 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 10018 "configure"
+#line 10192 "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
@@ -10025,7 +10199,7 @@ int main() {
 kstat_open()
 ; return 0; }
 EOF
-if { (eval echo configure:10029: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10203: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
     
 echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6
-echo "configure:10063: checking for kvm_read in -lkvm" >&5
+echo "configure:10237: 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 10068 "configure"
+#line 10242 "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
@@ -10075,7 +10249,7 @@ int main() {
 kvm_read()
 ; return 0; }
 EOF
-if { (eval echo configure:10079: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10253: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 fi
 
 echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6
-echo "configure:10113: checking whether netdb declares h_errno" >&5
+echo "configure:10287: checking whether netdb declares h_errno" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10115 "configure"
+#line 10289 "configure"
 #include "confdefs.h"
 #include <netdb.h>
 int main() {
 return h_errno;
 ; return 0; }
 EOF
-if { (eval echo configure:10122: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10296: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
 rm -f conftest*
 
 echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6
-echo "configure:10142: checking for sigsetjmp" >&5
+echo "configure:10316: checking for sigsetjmp" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10144 "configure"
+#line 10318 "configure"
 #include "confdefs.h"
 #include <setjmp.h>
 int main() {
 sigjmp_buf bar; sigsetjmp (bar, 0);
 ; return 0; }
 EOF
-if { (eval echo configure:10151: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10325: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   echo "$ac_t""yes" 1>&6
    { test "$extra_verbose" = "yes" && cat << \EOF
 rm -f conftest*
 
 echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6
-echo "configure:10171: checking whether localtime caches TZ" >&5
+echo "configure:10345: checking whether localtime caches TZ" >&5
 
 if test "$ac_cv_func_tzset" = "yes"; then
 cat > conftest.$ac_ext <<EOF
-#line 10175 "configure"
+#line 10349 "configure"
 #include "confdefs.h"
 #include <time.h>
 #if STDC_HEADERS
@@ -10206,7 +10380,7 @@ main()
   exit (0);
 }
 EOF
-if { (eval echo configure:10210: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10384: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   emacs_cv_localtime_cache=no
 else
@@ -10236,9 +10410,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:10240: checking whether gettimeofday accepts one or two arguments" >&5
+echo "configure:10414: checking whether gettimeofday accepts one or two arguments" >&5
 cat > conftest.$ac_ext <<EOF
-#line 10242 "configure"
+#line 10416 "configure"
 #include "confdefs.h"
 
 #ifdef TIME_WITH_SYS_TIME
@@ -10259,7 +10433,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:10263: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10437: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   echo "$ac_t""two" 1>&6
 else
 
 
 echo $ac_n "checking for inline""... $ac_c" 1>&6
-echo "configure:10285: checking for inline" >&5
+echo "configure:10459: checking for inline" >&5
 
 ac_cv_c_inline=no
 for ac_kw in inline __inline__ __inline; do
   cat > conftest.$ac_ext <<EOF
-#line 10290 "configure"
+#line 10464 "configure"
 #include "confdefs.h"
 
 int main() {
 } $ac_kw foo() {
 ; return 0; }
 EOF
-if { (eval echo configure:10297: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:10471: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   ac_cv_c_inline=$ac_kw; break
 else
@@ -10333,17 +10507,17 @@ test "$ac_cv_c_inline" != "no" -a "$GCC" = "yes" && extra_objs="$extra_objs inli
 # 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:10337: checking for working alloca.h" >&5
+echo "configure:10511: checking for working alloca.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10340 "configure"
+#line 10514 "configure"
 #include "confdefs.h"
 #include <alloca.h>
 int main() {
 char *p = alloca(2 * sizeof(int));
 ; return 0; }
 EOF
-if { (eval echo configure:10347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10521: \"$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
@@ -10367,10 +10541,10 @@ EOF
 fi
 
 echo $ac_n "checking for alloca""... $ac_c" 1>&6
-echo "configure:10371: checking for alloca" >&5
+echo "configure:10545: checking for alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10374 "configure"
+#line 10548 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -10398,7 +10572,7 @@ int main() {
 char *p = (char *) alloca(1);
 ; return 0; }
 EOF
-if { (eval echo configure:10402: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10576: \"$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
@@ -10437,10 +10611,10 @@ EOF
 
 
 echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6
-echo "configure:10441: checking whether alloca needs Cray hooks" >&5
+echo "configure:10615: checking whether alloca needs Cray hooks" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10444 "configure"
+#line 10618 "configure"
 #include "confdefs.h"
 #if defined(CRAY) && ! defined(CRAY2)
 webecray
@@ -10464,10 +10638,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:10468: checking for $ac_func" >&5
+echo "configure:10642: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10471 "configure"
+#line 10645 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10490,7 +10664,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10494: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10668: \"$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
@@ -10520,10 +10694,10 @@ done
 fi
 
 echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6
-echo "configure:10524: checking stack direction for C alloca" >&5
+echo "configure:10698: checking stack direction for C alloca" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10527 "configure"
+#line 10701 "configure"
 #include "confdefs.h"
 find_stack_direction ()
 {
@@ -10542,7 +10716,7 @@ main ()
   exit (find_stack_direction() < 0);
 }
 EOF
-if { (eval echo configure:10546: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10720: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_c_stack_direction=1
 else
@@ -10571,15 +10745,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:10575: checking for vfork.h" >&5
+echo "configure:10749: checking for vfork.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10578 "configure"
+#line 10752 "configure"
 #include "confdefs.h"
 #include <vfork.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:10583: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:10757: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -10607,10 +10781,10 @@ else
 fi
 
 echo $ac_n "checking for working vfork""... $ac_c" 1>&6
-echo "configure:10611: checking for working vfork" >&5
+echo "configure:10785: checking for working vfork" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10614 "configure"
+#line 10788 "configure"
 #include "confdefs.h"
 /* Thanks to Paul Eggert for this test.  */
 #include <stdio.h>
@@ -10705,7 +10879,7 @@ main() {
   }
 }
 EOF
-if { (eval echo configure:10709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10883: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_vfork_works=yes
 else
 
 
 echo $ac_n "checking for working strcoll""... $ac_c" 1>&6
-echo "configure:10735: checking for working strcoll" >&5
+echo "configure:10909: checking for working strcoll" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10738 "configure"
+#line 10912 "configure"
 #include "confdefs.h"
 #include <string.h>
 main ()
@@ -10744,7 +10918,7 @@ main ()
        strcoll ("123", "456") >= 0);
 }
 EOF
-if { (eval echo configure:10748: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:10922: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_strcoll_works=yes
 else
 for ac_func in getpgrp
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:10776: checking for $ac_func" >&5
+echo "configure:10950: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10779 "configure"
+#line 10953 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -10798,7 +10972,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:10802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:10976: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_$ac_func=yes"
 else
 done
 
 echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6
-echo "configure:10830: checking whether getpgrp takes no argument" >&5
+echo "configure:11004: checking whether getpgrp takes no argument" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 10833 "configure"
+#line 11007 "configure"
 #include "confdefs.h"
 
 /*
@@ -10884,7 +11058,7 @@ main()
 }
 
 EOF
-if { (eval echo configure:10888: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11062: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   ac_cv_func_getpgrp_void=yes
 else
 
 
 echo $ac_n "checking for working mmap""... $ac_c" 1>&6
-echo "configure:10915: checking for working mmap" >&5
+echo "configure:11089: checking for working mmap" >&5
 case "$opsys" in ultrix* ) have_mmap=no ;; *)
 cat > conftest.$ac_ext <<EOF
-#line 10918 "configure"
+#line 11092 "configure"
 #include "confdefs.h"
 #include <stdio.h>
 #include <unistd.h>
@@ -10947,7 +11121,7 @@ int main (int argc, char *argv[])
   return 1;
 }
 EOF
-if { (eval echo configure:10951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:11125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   have_mmap=yes
 else
@@ -10973,9 +11147,9 @@ test "$GNU_MALLOC" != "yes" -a "$have_mmap" != "yes" && rel_alloc=no
 if test "$rel_alloc $have_mmap" = "default yes"; then
   if test "$doug_lea_malloc" = "yes"; then
         echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6
-echo "configure:10977: checking for M_MMAP_THRESHOLD" >&5
+echo "configure:11151: checking for M_MMAP_THRESHOLD" >&5
     cat > conftest.$ac_ext <<EOF
-#line 10979 "configure"
+#line 11153 "configure"
 #include "confdefs.h"
 #include <malloc.h>
 int main() {
@@ -10987,7 +11161,7 @@ int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:10991: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:11165: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
   rel_alloc=no; echo "$ac_t""yes" 1>&6;
 else
@@ -11012,15 +11186,15 @@ EOF
 
 ac_safe=`echo "termios.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for termios.h""... $ac_c" 1>&6
-echo "configure:11016: checking for termios.h" >&5
+echo "configure:11190: checking for termios.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11019 "configure"
+#line 11193 "configure"
 #include "confdefs.h"
 #include <termios.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11024: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11198: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11063,15 +11237,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:11067: checking for termio.h" >&5
+echo "configure:11241: checking for termio.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11070 "configure"
+#line 11244 "configure"
 #include "confdefs.h"
 #include <termio.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11075: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11249: \"$ac_try\") 1>&5; (eval $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:11107: checking for socket" >&5
+echo "configure:11281: checking for socket" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11110 "configure"
+#line 11284 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char socket(); below.  */
@@ -11129,7 +11303,7 @@ socket();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11133: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11307: \"$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
@@ -11144,15 +11318,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:11148: checking for netinet/in.h" >&5
+echo "configure:11322: checking for netinet/in.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11151 "configure"
+#line 11325 "configure"
 #include "confdefs.h"
 #include <netinet/in.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11156: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11330: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11169,15 +11343,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:11173: checking for arpa/inet.h" >&5
+echo "configure:11347: checking for arpa/inet.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11176 "configure"
+#line 11350 "configure"
 #include "confdefs.h"
 #include <arpa/inet.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11181: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11355: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11202,9 +11376,9 @@ EOF
 }
 
       echo $ac_n "checking "for sun_len member in struct sockaddr_un"""... $ac_c" 1>&6
-echo "configure:11206: checking "for sun_len member in struct sockaddr_un"" >&5
+echo "configure:11380: checking "for sun_len member in struct sockaddr_un"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 11208 "configure"
+#line 11382 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -11215,7 +11389,7 @@ int main() {
 static struct sockaddr_un x; x.sun_len = 1;
 ; 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:11393: \"$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
@@ -11233,9 +11407,9 @@ else
 fi
 rm -f conftest*
       echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c" 1>&6
-echo "configure:11237: checking "for ip_mreq struct in netinet/in.h"" >&5
+echo "configure:11411: checking "for ip_mreq struct in netinet/in.h"" >&5
       cat > conftest.$ac_ext <<EOF
-#line 11239 "configure"
+#line 11413 "configure"
 #include "confdefs.h"
 
 #include <sys/types.h>
@@ -11245,7 +11419,7 @@ int main() {
 static struct ip_mreq x;
 ; return 0; }
 EOF
-if { (eval echo configure:11249: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11423: \"$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:11280: checking for msgget" >&5
+echo "configure:11454: checking for msgget" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11283 "configure"
+#line 11457 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char msgget(); below.  */
@@ -11302,7 +11476,7 @@ msgget();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11306: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11480: \"$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
@@ -11317,15 +11491,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:11321: checking for sys/ipc.h" >&5
+echo "configure:11495: checking for sys/ipc.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11324 "configure"
+#line 11498 "configure"
 #include "confdefs.h"
 #include <sys/ipc.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11329: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11503: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11342,15 +11516,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:11346: checking for sys/msg.h" >&5
+echo "configure:11520: checking for sys/msg.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11349 "configure"
+#line 11523 "configure"
 #include "confdefs.h"
 #include <sys/msg.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11354: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11528: \"$ac_try\") 1>&5; (eval $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:11392: checking for dirent.h" >&5
+echo "configure:11566: checking for dirent.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11395 "configure"
+#line 11569 "configure"
 #include "confdefs.h"
 #include <dirent.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11400: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11574: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11423,15 +11597,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:11427: checking for sys/dir.h" >&5
+echo "configure:11601: checking for sys/dir.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11430 "configure"
+#line 11604 "configure"
 #include "confdefs.h"
 #include <sys/dir.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11435: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11609: \"$ac_try\") 1>&5; (eval $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:11468: checking for nlist.h" >&5
+echo "configure:11642: checking for nlist.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11471 "configure"
+#line 11645 "configure"
 #include "confdefs.h"
 #include <nlist.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11476: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11650: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 
 
 echo "checking "for sound support"" 1>&6
-echo "configure:11506: checking "for sound support"" >&5
+echo "configure:11680: checking "for sound support"" >&5
 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_sound=yes
 
 if test "$with_native_sound" != "no"; then
     if test -n "$native_sound_lib"; then
     ac_safe=`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6
-echo "configure:11513: checking for multimedia/audio_device.h" >&5
+echo "configure:11687: checking for multimedia/audio_device.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11516 "configure"
+#line 11690 "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:11521: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11695: \"$ac_try\") 1>&5; (eval $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:11569: checking for ALopenport in -laudio" >&5
+echo "configure:11743: 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 11574 "configure"
+#line 11748 "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
@@ -11581,7 +11755,7 @@ int main() {
 ALopenport()
 ; return 0; }
 EOF
-if { (eval echo configure:11585: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11759: \"$ac_link\") 1>&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:11616: checking for AOpenAudio in -lAlib" >&5
+echo "configure:11790: 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 11621 "configure"
+#line 11795 "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
@@ -11628,7 +11802,7 @@ int main() {
 AOpenAudio()
 ; return 0; }
 EOF
-if { (eval echo configure:11632: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11806: \"$ac_link\") 1>&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:11670: checking for ${dir}/soundcard.h" >&5
+echo "configure:11844: checking for ${dir}/soundcard.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11673 "configure"
+#line 11847 "configure"
 #include "confdefs.h"
 #include <${dir}/soundcard.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11678: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11852: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11695,10 +11869,10 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
    echo "    xemacs will be linked with \"linuxplay.o\""
  fi
         { test "$extra_verbose" = "yes" && cat << EOF
-    Defining SOUNDCARD_H_PATH = "${dir}/soundcard.h"
+    Defining SOUNDCARD_H_FILE = "${dir}/soundcard.h"
 EOF
 cat >> confdefs.h <<EOF
-#define SOUNDCARD_H_PATH "${dir}/soundcard.h"
+#define SOUNDCARD_H_FILE "${dir}/soundcard.h"
 EOF
 }
 
 if test "$with_nas_sound" != "no"; then
   ac_safe=`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6
-echo "configure:11732: checking for audio/audiolib.h" >&5
+echo "configure:11906: checking for audio/audiolib.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11735 "configure"
+#line 11909 "configure"
 #include "confdefs.h"
 #include <audio/audiolib.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:11740: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:11914: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -11754,12 +11928,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6
-echo "configure:11758: checking for AuOpenServer in -laudio" >&5
+echo "configure:11932: checking for AuOpenServer in -laudio" >&5
 ac_lib_var=`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'`
 
 xe_check_libs=" -laudio "
 cat > conftest.$ac_ext <<EOF
-#line 11763 "configure"
+#line 11937 "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
@@ -11770,7 +11944,7 @@ int main() {
 AuOpenServer()
 ; return 0; }
 EOF
-if { (eval echo configure:11774: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:11948: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -11809,7 +11983,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 11813 "configure"
+#line 11987 "configure"
 #include "confdefs.h"
 #include <audio/Xtutil.h>
 EOF
@@ -11840,7 +12014,7 @@ if test "$with_esd_sound" != "no"; then
   # Extract the first word of "esd-config", so it can be a program name with args.
 set dummy esd-config; ac_word=$2
 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:11844: checking for $ac_word" >&5
+echo "configure:12018: checking for $ac_word" >&5
 
 if test -n "$have_esd_config"; then
   ac_cv_prog_have_esd_config="$have_esd_config" # Let the user override the test.
     c_switch_site="$c_switch_site `esd-config --cflags`" &&  if test "$extra_verbose" = "yes"; then echo "    Appending \"`esd-config --cflags`\" to \$c_switch_site"; fi
     LIBS="`esd-config --libs` $LIBS" &&  if test "$extra_verbose" = "yes"; then echo "    Prepending \"`esd-config --libs`\" to \$LIBS"; fi
     echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6
-echo "configure:11873: checking for esd_play_stream" >&5
+echo "configure:12047: checking for esd_play_stream" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 11876 "configure"
+#line 12050 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char esd_play_stream(); below.  */
@@ -11895,7 +12069,7 @@ esd_play_stream();
 
 ; return 0; }
 EOF
-if { (eval echo configure:11899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12073: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_func_esd_play_stream=yes"
 else
@@ -11946,7 +12120,7 @@ test -z "$with_tty" && with_tty=yes
 
 if test "$with_tty" = "yes"  ; then
   echo "checking for TTY-related features" 1>&6
-echo "configure:11950: checking for TTY-related features" >&5
+echo "configure:12124: checking for TTY-related features" >&5
   { test "$extra_verbose" = "yes" && cat << \EOF
     Defining HAVE_TTY
 EOF
@@ -11962,12 +12136,12 @@ EOF
     if test -z "$with_ncurses"; then
     
 echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6
-echo "configure:11966: checking for tgetent in -lncurses" >&5
+echo "configure:12140: 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 11971 "configure"
+#line 12145 "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
@@ -11978,7 +12152,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:11982: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12156: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12011,15 +12185,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:12015: checking for ncurses/curses.h" >&5
+echo "configure:12189: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12018 "configure"
+#line 12192 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12023: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12197: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 rm -f conftest*
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  curses_h_path=ncurses/curses.h
+  curses_h_file=ncurses/curses.h
 else
   echo "$ac_t""no" 1>&6
 fi
 
     ac_safe=`echo "ncurses/term.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6
-echo "configure:12045: checking for ncurses/term.h" >&5
+echo "configure:12219: checking for ncurses/term.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12048 "configure"
+#line 12222 "configure"
 #include "confdefs.h"
 #include <ncurses/term.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12053: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12227: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12064,7 +12238,7 @@ fi
 rm -f conftest*
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  term_h_path=ncurses/term.h
+  term_h_file=ncurses/term.h
 else
   echo "$ac_t""no" 1>&6
 fi
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
       ac_safe=`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6
-echo "configure:12083: checking for ncurses/curses.h" >&5
+echo "configure:12257: checking for ncurses/curses.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12086 "configure"
+#line 12260 "configure"
 #include "confdefs.h"
 #include <ncurses/curses.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12091: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12102,7 +12276,7 @@ fi
 rm -f conftest*
 if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   echo "$ac_t""yes" 1>&6
-  curses_h_path=ncurses/curses.h
+  curses_h_file=ncurses/curses.h
 else
   echo "$ac_t""no" 1>&6
 fi
        for lib in curses termlib termcap; do
          
 echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6
-echo "configure:12126: checking for tgetent in -l$lib" >&5
+echo "configure:12300: 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 12131 "configure"
+#line 12305 "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
@@ -12138,7 +12312,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12142: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12316: \"$ac_link\") 1>&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:12173: checking for tgetent in -lcurses" >&5
+echo "configure:12347: 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 12178 "configure"
+#line 12352 "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
@@ -12185,7 +12359,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12363: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12203,12 +12377,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:12207: checking for tgetent in -ltermcap" >&5
+echo "configure:12381: 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 12212 "configure"
+#line 12386 "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
@@ -12219,7 +12393,7 @@ int main() {
 tgetent()
 ; return 0; }
 EOF
-if { (eval echo configure:12223: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12397: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
     fi
   fi
   { test "$extra_verbose" = "yes" && cat << EOF
-    Defining CURSES_H_PATH = "${curses_h_path-curses.h}"
+    Defining CURSES_H_FILE = "${curses_h_file-curses.h}"
 EOF
 cat >> confdefs.h <<EOF
-#define CURSES_H_PATH "${curses_h_path-curses.h}"
+#define CURSES_H_FILE "${curses_h_file-curses.h}"
 EOF
 }
 
   { test "$extra_verbose" = "yes" && cat << EOF
-    Defining TERM_H_PATH = "${term_h_path-term.h}"
+    Defining TERM_H_FILE = "${term_h_file-term.h}"
 EOF
 cat >> confdefs.h <<EOF
-#define TERM_H_PATH "${term_h_path-term.h}"
+#define TERM_H_FILE "${term_h_file-term.h}"
 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:12271: checking for gpm.h" >&5
+echo "configure:12445: checking for gpm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12274 "configure"
+#line 12448 "configure"
 #include "confdefs.h"
 #include <gpm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12279: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12453: \"$ac_try\") 1>&5; (eval $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:12302: checking for Gpm_Open in -lgpm" >&5
+echo "configure:12476: 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 12307 "configure"
+#line 12481 "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
@@ -12314,7 +12488,7 @@ int main() {
 Gpm_Open()
 ; return 0; }
 EOF
-if { (eval echo configure:12318: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12492: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12364,20 +12538,20 @@ test "$with_x11" = "yes" -o "$with_tty" = "yes" && extra_objs="$extra_objs event
 
 test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \
   != "no no no" && echo "checking for database support" 1>&6
-echo "configure:12368: checking for database support" >&5
+echo "configure:12542: checking for database support" >&5
 
 if test "$with_database_gdbm $with_database_dbm" != "no no"; then
   ac_safe=`echo "ndbm.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6
-echo "configure:12373: checking for ndbm.h" >&5
+echo "configure:12547: checking for ndbm.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12376 "configure"
+#line 12550 "configure"
 #include "confdefs.h"
 #include <ndbm.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12381: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:12555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
 if test "$with_database_gdbm" != "no"; then
   
 echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6
-echo "configure:12411: checking for dbm_open in -lgdbm" >&5
+echo "configure:12585: 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 12416 "configure"
+#line 12590 "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
@@ -12423,7 +12597,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:12427: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12601: \"$ac_link\") 1>&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:12455: checking for dbm_open" >&5
+echo "configure:12629: checking for dbm_open" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12458 "configure"
+#line 12632 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char dbm_open(); below.  */
@@ -12477,7 +12651,7 @@ dbm_open();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12481: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12655: \"$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
@@ -12496,12 +12670,12 @@ else
 
     
 echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6
-echo "configure:12500: checking for dbm_open in -ldbm" >&5
+echo "configure:12674: 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 12505 "configure"
+#line 12679 "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
@@ -12512,7 +12686,7 @@ int main() {
 dbm_open()
 ; return 0; }
 EOF
-if { (eval echo configure:12516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12690: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12553,10 +12727,10 @@ EOF
 
 if test "$with_database_berkdb" != "no"; then
   echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6
-echo "configure:12557: checking for Berkeley db.h" >&5
-  for path in "db/db.h" "db.h"; do
+echo "configure:12731: checking for Berkeley db.h" >&5
+  for header in "db/db.h" "db.h"; do
     cat > conftest.$ac_ext <<EOF
-#line 12560 "configure"
+#line 12734 "configure"
 #include "confdefs.h"
 
 #include <stdlib.h>
@@ -12572,33 +12746,33 @@ typedef uint64_t u_int64_t;
 #endif
 #endif
 #endif
-#include <$path>
+#include <$header>
 
 int main() {
 
 ; return 0; }
 EOF
-if { (eval echo configure:12582: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:12756: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
   rm -rf conftest*
-  db_h_path="$path"; break
+  db_h_file="$header"; break
 else
   echo "configure: failed program was:" >&5
   cat conftest.$ac_ext >&5
 fi
 rm -f conftest*
   done
-  if test -z "$db_h_path"
+  if test -z "$db_h_file"
   then echo "$ac_t""no" 1>&6; with_database_berkdb=no
-  else echo "$ac_t""$db_h_path" 1>&6
+  else echo "$ac_t""$db_h_file" 1>&6
   fi
 
   if test "$with_database_berkdb" != "no"; then
     echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6
-echo "configure:12598: checking for Berkeley DB version" >&5
+echo "configure:12772: checking for Berkeley DB version" >&5
     cat > conftest.$ac_ext <<EOF
-#line 12600 "configure"
+#line 12774 "configure"
 #include "confdefs.h"
-#include <$db_h_path>
+#include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
 yes
 #endif
 rm -f conftest*
 
     echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6
-echo "configure:12619: checking for $dbfunc" >&5
+echo "configure:12793: checking for $dbfunc" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12622 "configure"
+#line 12796 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $dbfunc(); below.  */
@@ -12641,7 +12815,7 @@ $dbfunc();
 
 ; return 0; }
 EOF
-if { (eval echo configure:12645: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12819: \"$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
@@ -12660,12 +12834,12 @@ else
 
     
 echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6
-echo "configure:12664: checking for $dbfunc in -ldb" >&5
+echo "configure:12838: 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 12669 "configure"
+#line 12843 "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
@@ -12676,7 +12850,7 @@ int main() {
 $dbfunc()
 ; return 0; }
 EOF
-if { (eval echo configure:12680: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12854: \"$ac_link\") 1>&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_berkdb" = "yes"; then
     { test "$extra_verbose" = "yes" && cat << EOF
-    Defining DB_H_PATH = "$db_h_path"
+    Defining DB_H_FILE = "$db_h_file"
 EOF
 cat >> confdefs.h <<EOF
-#define DB_H_PATH "$db_h_path"
+#define DB_H_FILE "$db_h_file"
 EOF
 }
 
 if test "$with_socks" = "yes"; then
   
 echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6
-echo "configure:12744: checking for SOCKSinit in -lsocks" >&5
+echo "configure:12918: 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 12749 "configure"
+#line 12923 "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
@@ -12756,7 +12930,7 @@ int main() {
 SOCKSinit()
 ; return 0; }
 EOF
-if { (eval echo configure:12760: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:12934: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
 
 if test "$with_modules" != "no"; then
   echo "checking for module support" 1>&6
-echo "configure:12815: checking for module support" >&5
+echo "configure:12989: checking for module support" >&5
 
     ac_safe=`echo "dlfcn.h" | sed 'y%./+-%__p_%'`
 echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6
-echo "configure:12819: checking for dlfcn.h" >&5
+echo "configure:12993: checking for dlfcn.h" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 12822 "configure"
+#line 12996 "configure"
 #include "confdefs.h"
 #include <dlfcn.h>
 EOF
 ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:12827: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:13001: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
 ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
 if test -z "$ac_err"; then
   rm -rf conftest*
@@ -12841,12 +13015,12 @@ if eval "test \"`echo '$ac_cv_header_'$ac_safe`\" = yes"; then
   
     
 echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6
-echo "configure:12845: checking for dlopen in -ldl" >&5
+echo "configure:13019: 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 12850 "configure"
+#line 13024 "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
@@ -12857,7 +13031,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12876,12 +13050,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6
-echo "configure:12880: checking for dlopen in -lc" >&5
+echo "configure:13054: 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 12885 "configure"
+#line 13059 "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
@@ -12892,7 +13066,7 @@ int main() {
 dlopen()
 ; return 0; }
 EOF
-if { (eval echo configure:12896: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13070: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12931,12 +13105,12 @@ EOF
   else
     
 echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6
-echo "configure:12935: checking for shl_load in -ldld" >&5
+echo "configure:13109: 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 12940 "configure"
+#line 13114 "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
@@ -12947,7 +13121,7 @@ int main() {
 shl_load()
 ; return 0; }
 EOF
-if { (eval echo configure:12951: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13125: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -12974,12 +13148,12 @@ else
   echo "$ac_t""no" 1>&6
 
 echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6
-echo "configure:12978: checking for dld_init in -ldld" >&5
+echo "configure:13152: 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 12983 "configure"
+#line 13157 "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
@@ -12990,7 +13164,7 @@ int main() {
 dld_init()
 ; return 0; }
 EOF
-if { (eval echo configure:12994: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13168: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   eval "ac_cv_lib_$ac_lib_var=yes"
 else
@@ -13035,7 +13209,7 @@ xehost=$canonical
 xealias=$internal_configuration
 
 echo "checking how to build dynamic libraries for ${xehost}" 1>&6
-echo "configure:13039: checking how to build dynamic libraries for ${xehost}" >&5
+echo "configure:13213: checking how to build dynamic libraries for ${xehost}" >&5
 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts.
 case "$xehost" in
 *-*-linux-gnu*) ;;
@@ -13063,9 +13237,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:13067: checking checking whether we are using GNU C" >&5
+echo "configure:13241: checking checking whether we are using GNU C" >&5
   cat > conftest.$ac_ext <<EOF
-#line 13069 "configure"
+#line 13243 "configure"
 #include "confdefs.h"
 
 #ifdef __GNUC__
@@ -13087,7 +13261,7 @@ rm -f conftest*
 fi
 
 echo $ac_n "checking how to produce PIC code""... $ac_c" 1>&6
-echo "configure:13091: checking how to produce PIC code" >&5
+echo "configure:13265: checking how to produce PIC code" >&5
 wl=
 
 can_build_shared=yes
@@ -13180,18 +13354,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:13184: checking if PIC flag ${dll_cflags} really works" >&5
+echo "configure:13358: checking if PIC flag ${dll_cflags} really works" >&5
   save_CFLAGS="$CFLAGS"
   CFLAGS="$CFLAGS $dll_cflags -DPIC"
   cat > conftest.$ac_ext <<EOF
-#line 13188 "configure"
+#line 13362 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:13195: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:13369: \"$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
@@ -13222,7 +13396,7 @@ cc_produces_so=no
 xldf=
 xcldf=
 echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c" 1>&6
-echo "configure:13226: checking if C compiler can produce shared libraries" >&5
+echo "configure:13400: checking if C compiler can produce shared libraries" >&5
 if test "$XEGCC" = yes; then
   xcldf="-shared"
   xldf="-shared"
@@ -13273,14 +13447,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 13277 "configure"
+#line 13451 "configure"
 #include "confdefs.h"
 
 int main() {
 int x=0;
 ; return 0; }
 EOF
-if { (eval echo configure:13284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13458: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
   rm -rf conftest*
   cc_produces_so=yes
 else
@@ -13305,7 +13479,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:13309: checking for ld used by GCC" >&5
+echo "configure:13483: checking for ld used by GCC" >&5
     ac_prog=`($CC -print-prog-name=ld) 2>&5`
     case "$ac_prog" in
     # Accept absolute paths.
@@ -13330,7 +13504,7 @@ echo "configure:13309: checking for ld used by GCC" >&5
     esac
   else
     echo $ac_n "checking for GNU ld""... $ac_c" 1>&6
-echo "configure:13334: checking for GNU ld" >&5
+echo "configure:13508: checking for GNU ld" >&5
   fi
 
   if test -z "$LTLD"; then
@@ -13368,7 +13542,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:13372: checking if the linker is GNU ld" >&5
+echo "configure:13546: 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
@@ -13396,7 +13570,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:13400: checking whether the linker supports shared libraries" >&5
+echo "configure:13574: checking whether the linker supports shared libraries" >&5
   dll_ld=$CC
   dll_ldflags=$LDFLAGS
   ld_shlibs=yes
@@ -13611,10 +13785,10 @@ EOF
     for ac_func in dlerror _dlerror
 do
 echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:13615: checking for $ac_func" >&5
+echo "configure:13789: checking for $ac_func" >&5
 
 cat > conftest.$ac_ext <<EOF
-#line 13618 "configure"
+#line 13792 "configure"
 #include "confdefs.h"
 /* System header to define __stub macros and hopefully few prototypes,
     which can conflict with char $ac_func(); below.  */
@@ -13637,7 +13811,7 @@ $ac_func();
 
 ; return 0; }
 EOF
-if { (eval echo configure:13641: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:13815: \"$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
@@ -13676,11 +13850,11 @@ done
 fi
 
 cat > conftest.$ac_ext <<EOF
-#line 13680 "configure"
+#line 13854 "configure"
 #include "confdefs.h"
 int main(int c,char *v[]){return 0;}
 EOF
-if { (eval echo configure:13684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
+if { (eval echo configure:13858: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit $?) 2>&5
 then
   :
 else
@@ -14207,11 +14381,11 @@ cat >> confdefs.h <<\EOF
 EOF
 }
 
-test "$no_doc_file"        = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF
-    Defining NO_DOC_FILE
+test "$quick_build"        = "yes" && { test "$extra_verbose" = "yes" && cat << \EOF
+    Defining QUICK_BUILD
 EOF
 cat >> confdefs.h <<\EOF
-#define NO_DOC_FILE 1
+#define QUICK_BUILD 1
 EOF
 }
 
 echo "
 
 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
-
-  Where should the build process find the source code?    $srcdir
-  What installation prefix should install use?           $prefix
-  What operating system and machine description files should XEmacs use?
-        \`$opsysfile' and \`$machfile'
-  What compiler should XEmacs be built with?              $CC $CFLAGS
-  Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
-  Should XEmacs use the relocating allocator for buffers? $rel_alloc
-  What window system should XEmacs use?                   ${window_system}"
-if test "$with_x11" = "yes"; then
-  echo "  Where do we find X Windows header files?                $x_includes"
-  echo "  Where do we find X Windows libraries?                   $x_libraries"
-fi
+"
+echo "
+Compilation / Installation:"
+echo "  Source code location:              $srcdir"
+echo "  Installation prefix:               $prefix"
 if test -n "$site_includes"; then
-  echo "  Additional header files:                                $site_includes"
+  echo "  Additional header files:           $site_includes"
 fi
 if test -n "$site_libraries"; then
-  echo "  Additional libraries:                                   $site_libraries"
+  echo "  Additional libraries:              $site_libraries"
 fi
 if test -n "$site_prefixes"; then
-  echo "  Additional prefixes:                                    $site_prefixes"
+  echo "  Additional prefixes:               $site_prefixes"
 fi
 if test -n "$runpath"; then
-  echo "  Runtime library search path:                            $runpath"
+  echo "  Runtime library search path:       $runpath"
+fi
+echo "  Operating system description file: \`$opsysfile'"
+echo "  Machine description file:          \`$machfile'"
+echo "  Compiler:                          $CC $CFLAGS"
+echo "  Relocating allocator for buffers:  $rel_alloc"
+echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
+
+echo "
+Window System:"
+if test "$with_msw" = "yes"; then
+  echo "  Compiling in support for the Microsoft window system."
+fi
+if test "$with_x11" = "yes"; then
+  echo "  Compiling in support for the X window system:"
+  echo "    - X Windows headers location:                 $x_includes"
+  echo "    - X Windows libraries location:               $x_libraries"
+  if test "$with_xauth" != yes; then
+    echo "    - Xau (X authority) not available."
+  fi
+  if test "$with_xmu" != yes; then
+    echo "    - Xmu library not available; substituting equivalent routines."
+  fi
+  if test "$with_wmcommand" != no; then
+    echo "    - Handling WM_COMMAND properly."
+  fi
 fi
 if test "$have_xaw" = "yes"; then
-  echo "  Athena library to link:                                 $athena_lib"
-  echo "  Athena header include path:                             $athena_h_path"
+  echo "  Compiling in support for the Athena widget set:"
+  echo "    - Athena headers location:                    $athena_h_path"
+  echo "    - Athena library to link:                     $athena_lib"
 fi
-test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
-test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
-test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
-if test "$with_xmu" != yes -a "$with_x11" = yes; then
-  echo "  No Xmu; substituting equivalent routines."
+case "$with_menubars" in
+  lucid ) echo "  Using Lucid menubars." ;;
+  motif ) echo "  Using Motif menubars."
+          echo "  *WARNING*  The Motif menubar implementation is currently buggy."
+          echo "             We recommend using the Lucid menubar instead."
+          echo "             Re-run configure with --with-menubars='lucid'." ;;
+    msw ) echo "  Using MS-Windows menubars." ;;
+esac
+case "$with_scrollbars" in
+  lucid  ) echo "  Using Lucid scrollbars."      ;;
+  motif  ) echo "  Using Motif scrollbars."      ;;
+  athena ) echo "  Using Athena scrollbars."     ;;
+     msw ) echo "  Using MS-Windows scrollbars." ;;
+esac
+case "$with_dialogs" in
+  motif  ) echo "  Using Motif dialog boxes."
+           if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
+             echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
+             echo "             We recommend using the Athena dialog boxes instead."
+             echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
+             echo "             Read the PROBLEMS file for more information."
+           fi; fi ;;
+  athena ) echo "  Using Athena dialog boxes."     ;;
+     msw ) echo "  Using MS-Windows dialog boxes." ;;
+esac
+case "$with_widgets" in
+  motif  ) echo "  Using Motif native widgets."      ;;
+  athena ) echo "  Using Athena native widgets."     ;;
+     msw ) echo "  Using MS-Windows native widgets." ;;
+esac
+if test "$with_dragndrop" = yes; then
+  echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
+  echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
 fi
 
+echo "
+TTY:"
+test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
+test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
+
+echo "
+Images:"
+test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
 if test "$with_xpm" = yes; then
-  echo "  Compiling in support for XPM images."
+  echo "  Compiling in support for XPM  images."
 elif test "$with_x11" = yes; then
-  echo "  --------------------------------------------------------------------"
-  echo "  WARNING: Compiling without XPM support."
+  echo "  WARNING: -----------------------------------------------------------"
+  echo "  WARNING: Compiling without XPM image support."
   if test "$xpm_problem" != ""; then
     echo "  Reason: $xpm_problem"
   fi
   echo "  WARNING: You should strongly consider installing XPM."
   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
 fi
 if test "$with_png" = yes; then
-  echo "  Compiling in support for PNG image handling."
+  echo "  Compiling in support for PNG  images."
 elif test "$window_system" != "none"; then
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
   echo "  WARNING: Compiling without PNG image support."
   if test "$png_problem" != ""; then
     echo "  Reason: $png_problem"
@@ -14356,97 +14584,72 @@ elif test "$window_system" != "none"; then
   echo "  WARNING: You should strongly consider installing the PNG libraries."
   echo "  WARNING: Otherwise certain images and glyphs may not display."
   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
 fi
-test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image handling."
-test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
-test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
+test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
+test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
 
-test "$with_native_sound" = yes && echo "  Compiling in native sound support."
-test "$with_nas_sound"    = yes && echo "  Compiling in network sound (NAS) support."
-test "$old_nas"           = yes && echo "     nas library lacks error trapping, will play synchronously."
-test "$with_esd_sound"    = yes && echo "  Compiling in support for Enlightened Sound Daemon (ESD)."
+echo "
+Sound:"
+test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
+test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
+test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
+test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
 
-test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
+echo "
+Databases:"
+test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
-
-test "$with_ldap"           = yes && echo "  Compiling in support for LDAP."
-
+test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
 if test "$with_postgresql" = yes; then
-       echo "  Compiling in support for PostgreSQL."
-       if test "$with_postgresqlv7" = yes; then
-               echo "    Using PostgreSQL V7 bindings."
-       fi
+  echo "  Compiling in support for PostgreSQL."
+  if test "$with_postgresqlv7" = yes; then
+    echo "    - Using PostgreSQL V7 bindings."
+  fi
+  if test -n "$postgres_h_path"; then
+    echo "    - PostgreSQL headers location:  $postgres_h_path"
+  fi
 fi
-test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
-test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
 
-test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
-test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
-test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
-test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
-test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
-test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
-test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
+echo "
+Internationalization:"
+test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
+test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
+test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
+test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
+test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
+test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
+test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
 if test "$with_wnn" = yes; then
   echo "  Compiling in support for the WNN input method on Mule."
-  test "$with_wnn6" = yes && echo "    Using WNN version 6."
+  test "$with_wnn6" = yes && echo "    - Using WNN version 6."
 fi
-test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
+test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
 
-test "$with_cde"      = yes && echo "  Compiling in support for CDE."
+echo "
+Mail:"
+test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
+test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
+test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
+echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
+
+echo "
+Other Features:"
 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
-test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
-test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
-test "$with_wmcommand"  != no && echo "  Compiling in support for proper WM_COMMAND handling."
-case "$with_menubars" in
-  lucid ) echo "  Using Lucid menubars." ;;
-  motif ) echo "  Using Motif menubars."
-          echo "  *WARNING*  The Motif menubar implementation is currently buggy."
-          echo "             We recommend using the Lucid menubar instead."
-          echo "             Re-run configure with --with-menubars='lucid'." ;;
-  msw ) echo "  Using MS-Windows menubars." ;;
-esac
-case "$with_scrollbars" in
-  lucid    ) echo "  Using Lucid scrollbars."     ;;
-  motif    ) echo "  Using Motif scrollbars."     ;;
-  athena   ) echo "  Using Athena scrollbars."    ;;
-  msw ) echo "  Using MS-Windows scrollbars." ;;
-esac
-case "$with_widgets" in
-  motif    ) echo "  Using Motif native widgets."     ;;
-  athena   ) echo "  Using Athena native widgets."    ;;
-  msw ) echo "  Using MS-Windows native widgets." ;;
-esac
-case "$with_dialogs" in
-  motif    )
-    echo "  Using Motif dialog boxes."
-    if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
-      echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
-      echo "             We recommend using the Athena dialog boxes instead."
-      echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
-      echo "             Read the PROBLEMS file for more information."
-    fi; fi
-    ;;
-  athena   ) echo "  Using Athena dialog boxes."    ;;
-  msw ) echo "  Using MS-Windows dialog boxes." ;;
-esac
-test "$with_modules" = "yes" && echo "  Compiling in dynamic shared object module support."
-test "$with_clash_detection" = yes && \
+test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
+test "$with_dnet" = yes && echo "  Compiling in support for DNET."
+test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
+test "$with_clash_detection" != "no" && \
   echo "  Clash detection will use \"$lockdir\" for locking files."
-echo "  movemail will use \"$mail_locking\" for locking mail spool files."
-test "$with_pop"       = yes && echo "  Using POP for mail access."
-test "$with_kerberos"  = yes && echo "  Using Kerberos for POP authentication."
-test "$with_hesiod"    = yes && echo "  Using Hesiod to get POP server host."
-test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
-test "$pdump"           = yes && echo "  Using the new portable dumper."
-test "$debug"           = yes && echo "  Compiling in extra code for debugging."
-test "$usage_tracking"  = yes && echo "  Compiling with usage tracking active (Sun internal)."
-if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
-  != "no no no no no"; then
+test "$use_union_type" = yes && echo "  Using the union type for Lisp_Objects."
+test "$pdump" = yes && echo "  Using the new portable dumper."
+test "$debug" = yes && echo "  Compiling in support for extra debugging code."
+test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
+if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
+  != "no no no no no no"; then
   echo "  WARNING: ---------------------------------------------------------"
   echo "  WARNING: Compiling in support for runtime error checking."
   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
index 28bc58a..ff22b3f 100644 (file)
@@ -523,7 +523,7 @@ while test $# != 0; do
        memory_usage_stats | \
        with_clash_detection | \
        with_modules | \
-       no_doc_file )
+       quick_build )
          dnl Make sure the value given was either "yes" or "no".
          case "$val" in
            y | ye | yes )      val=yes ;;
@@ -711,14 +711,17 @@ The default is to autodetect all sound support."])
              byte_code )     error_check_byte_code=yes ;;
              nobyte_code )   error_check_byte_code=no ;;
 
+             glyphs )     error_check_glyphs=yes ;;
+             noglyphs )   error_check_glyphs=no ;;
+
              * ) bogus_error_check=yes ;;
            esac
            if test "$bogus_error_check" -o \
                 \( -n "$new_default" -a -n "$echeck_notfirst" \) ; then
                if test "$error_check_default" = yes ; then
-                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', and \`nobyte-code'."
+                 types="\`all' (default), \`none', \`noextents', \`notypecheck', \`nobufpos', \`nogc', \`nomalloc', \`noglyphs' and \`nobyte-code'."
                else
-                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', and \`byte-code'."
+                 types="\`all', \`none' (default), \`extents', \`typecheck', \`bufpos', \`gc', \`malloc', \`glyphs' and \`byte-code'."
                fi
                USAGE_ERROR(["Valid types for the \`--$optname' option are:
   $types."])
@@ -729,6 +732,7 @@ The default is to autodetect all sound support."])
                error_check_gc=$new_default
                error_check_malloc=$new_default
                error_check_byte_code=$new_default
+               error_check_glyphs=$new_default
                new_default=    # reset this
            fi
            echeck_notfirst=true
@@ -1017,6 +1021,7 @@ test "${error_check_bufpos=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_BUFPOS)
 test "${error_check_gc=$beta}"        = yes && AC_DEFINE(ERROR_CHECK_GC)
 test "${error_check_malloc=$beta}"    = yes && AC_DEFINE(ERROR_CHECK_MALLOC)
 test "${error_check_byte_code=$beta}" = yes && AC_DEFINE(ERROR_CHECK_BYTE_CODE)
+test "${error_check_glyphs=$beta}" = yes && AC_DEFINE(ERROR_CHECK_GLYPHS)
 dnl debug=yes must be set when error checking is present.  This should be
 dnl fixed up.
 dnl debug implies other options
@@ -1597,7 +1602,7 @@ if test "$with_workshop" = "yes"; then
   XE_ADD_OBJS(sunpro.o)
 fi
 
-if test "$with_clash_detection" = "yes"; then
+if test "$with_clash_detection" != "no"; then
   AC_DEFINE(CLASH_DETECTION)
   XE_ADD_OBJS(filelock.o)
 fi
@@ -1648,11 +1653,41 @@ dnl --------------------------------------------------------------------
 dnl Compiler feature macros
 dnl --------------------------------------------------------------------
 
+AC_AIX dnl Defines _ALL_SOURCE on AIX.
+
+dnl Determine which SMART_INCLUDE macro will work for this system
+cat > $srcdir/conffoo.h <<EOF
+#define CONFFOO 1
+EOF
+AC_MSG_CHECKING(for a working inclusion macro)
+AC_TRY_COMPILE(,[
+#define SMART_INCLUDE(path,file) <path/file>
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+], [ AC_MSG_RESULT(direct); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,0) ],
+AC_TRY_COMPILE(,[
+#define GLUE_INCLUDE(path,file)  <##path##/##file##>
+#define SMART_INCLUDE(path,file) GLUE_INCLUDE(path,file)
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE(CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+], [ AC_MSG_RESULT(simple); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,1) ],
+AC_TRY_COMPILE(,[
+#define GLUE_INCLUDE_2(path,file)  <##path##/##file##>
+#define GLUE_INCLUDE_1(path,file) GLUE_INCLUDE_2(path,file)
+#define SMART_INCLUDE(path,file) GLUE_INCLUDE_1(path,file)
+#define CONFFOO_H_PATH $srcdir
+#define CONFFOO_INCLUDE(file) SMART_INCLUDE (CONFFOO_H_PATH,file)
+#include CONFFOO_INCLUDE(conffoo.h)
+], [ AC_MSG_RESULT(double); AC_DEFINE(SMART_INCLUDE_INDIRECTIONS,2) ],
+  AC_MSG_ERROR([Cannot define a proper SMART_INCLUDE macro. Please report.]))))
+rm -f $srcdir/conffoo.h
+
+
 dnl We want feature macros defined here and in config.h.in, so that
 dnl the compilation environment at configure time and compile time agree.
 
-AC_AIX dnl Defines _ALL_SOURCE on AIX.
-
 AC_MSG_CHECKING(for GNU libc)
 AC_TRY_COMPILE([#include <features.h>],[
 #if ! (defined __GLIBC__ || defined __GNU_LIBRARY__)
@@ -1669,7 +1704,7 @@ dnl We'd like to use vendor extensions, where available.
 dnl We'd like to use functions from the latest Unix98 standards.
 dnl See http://www.opengroup.org/onlinepubs/007908799/xsh/compilation.html
 case "$opsys" in
-  sol2) 
+  sol2)
    AC_DEFINE(__EXTENSIONS__)
    dnl Solaris 2 before 2.5 had some bugs with feature test macro interaction.
    if test "$os_release" -ge 55; then
@@ -1762,8 +1797,11 @@ CPP_to_sh(UNEXEC, unexec, unexec.o)
 
 CPP_to_sh(LD_SWITCH_SHARED, ld_switch_shared, -c)
 
+#define ORDINARY_LD "\$(CC) \$(CFLAGS)"
+configure___ ordinary_ld=ORDINARY_LD
+
 #ifdef ORDINARY_LINK
-#define LD "\$(CC) \$(CFLAGS)"
+#define LD ORDINARY_LD
 #else /* no ORDINARY LINK */
 #ifdef COFF_ENCAPSULATE
 #define LD "\$(CC) -nostdlib"
@@ -1817,6 +1855,15 @@ changequote([, ])dnl
 
 rm $tempcname
 
+if test "$pdump" = "yes"; then
+  ordinary_link="yes"
+  ld="${ordinary_ld}"
+  start_files=
+  libs_standard=
+  unexec=
+  lib_gcc=     
+fi
+
 dnl For debugging...
 test "$extra_verbose" = "yes" && \
   PRINT_VAR(libs_machine libs_system libs_termcap libs_standard
@@ -2088,10 +2135,10 @@ dnl safe to use them at link time, and less controversial than forcing
 dnl the run-time to use the link-time libraries.  This also helps avoid
 dnl mismatches between the link-time and run-time libraries.
 
-dnl #### Unfortunately, there are horrible libc4 and libc5 libraries 
-dnl listed in /etc/ld.so.conf on some systems, and including them on 
-dnl the link path leads to linking in utterly broken libc's.  
-dnl There are many clever ways of approaching this problem, 
+dnl #### Unfortunately, there are horrible libc4 and libc5 libraries
+dnl listed in /etc/ld.so.conf on some systems, and including them on
+dnl the link path leads to linking in utterly broken libc's.
+dnl There are many clever ways of approaching this problem,
 dnl but finding out that actually works...
 
 dnl if test -z "$LD_RUN_PATH" -a -r "/etc/ld.so.conf"; then
@@ -2234,26 +2281,26 @@ AC_TRY_LINK([extern void (* __after_morecore_hook)();],[__after_morecore_hook =
 if test "$system_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (The GNU allocators don't work with this system configuration)."
+    - The GNU allocators don't work with this system configuration."
 elif test "$with_system_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (User chose not to use GNU allocators)."
+    - User chose not to use GNU allocators."
 elif test "$with_debug_malloc" = "yes" ; then
   GNU_MALLOC=no
   GNU_MALLOC_reason="
-  (User chose to use Debugging Malloc)."
+    - User chose to use Debugging Malloc."
 fi
 
 if test "$doug_lea_malloc" = "yes" ; then
   if test "$GNU_MALLOC" = yes ; then
     GNU_MALLOC_reason="
-  (Using Doug Lea's new malloc from the GNU C Library.)"
+    - Using Doug Lea's new malloc from the GNU C Library."
   fi
   AC_DEFINE(DOUG_LEA_MALLOC)
   if test "$after_morecore_hook_exists" = "no" ; then
     GNU_MALLOC_reason="
-  (Using Doug Lea's new malloc from the Linux C Library.)"
+    - Using Doug Lea's new malloc from the Linux C Library."
     AC_DEFINE(_NO_MALLOC_WARNING_)
   fi
   use_minimal_tagbits=yes
@@ -2788,9 +2835,9 @@ if test "$with_tooltalk" != "no" ; then
   dnl autodetect the location of tt_c.h
   dnl tt_c.h might be in Tt or desktop include directories
   for dir in "" "Tt/" "desktop/" ; do
-    AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_path="${dir}tt_c.h"; break)
+    AC_CHECK_HEADER(${dir}tt_c.h, tt_c_h_file="${dir}tt_c.h"; break)
   done
-  if test -z "$tt_c_h_path"; then
+  if test -z "$tt_c_h_file"; then
     if test "$with_tooltalk" = "yes"; then
       USAGE_ERROR("Unable to find required tooltalk header files.")
     fi
@@ -2812,7 +2859,7 @@ fi
 test -z "$with_tooltalk" && with_tooltalk=yes
 if test "$with_tooltalk" = "yes"; then
   AC_DEFINE(TOOLTALK)
-  AC_DEFINE_UNQUOTED(TT_C_H_PATH, "$tt_c_h_path")
+  AC_DEFINE_UNQUOTED(TT_C_H_FILE, "$tt_c_h_file")
   XE_PREPEND($tt_libs, libs_x)
   XE_ADD_OBJS(tooltalk.o)
 fi
@@ -2910,31 +2957,45 @@ dnl  is installed into a different prefix, that prefix must be specified in
 dnl  in the --site-prefixes flag.
 dnl The default RPM-based Linux installation location is /usr.
 AC_CHECKING(for PostgreSQL)
+postgres_h_path=""
 postgres_includes_found=no
 save_c_switch_site="$c_switch_site"
-dnl First check site prefixes
+
+dnl First, test standard location and site prefixes only:
 if test "$with_postgresql" != "no"; then
        AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
 fi
-dnl test for Linux-style installation in /usr
+
+dnl Otherwise, test different known headers locations on linux:
 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
-       -d "/usr/include/pgsql"; then
-       c_switch_site="$c_switch_site -I/usr/include/pgsql"
+       -d "/usr/local/pgsql/include"; then
+       c_switch_site="$c_switch_site -I/usr/local/pgsql/include"
        AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
        if test "$postgres_includes_found" != "yes"; then
-               c_switch_site="$save_c_switch_site"
+               postgres_h_path="/usr/local/pgsql/include"
        fi
+       c_switch_site="$save_c_switch_site"
 fi
 if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
-       -d "/usr/local/pgsql/include"; then
-       c_switch_site="$c_switch_site -I/usr/local/pgsql/include"
+       -d "/usr/include/pgsql"; then
+       c_switch_site="$c_switch_site -I/usr/include/pgsql"
        AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
-       if test "$postgres_includes_found" != "yes"; then
+       if test "$postgres_includes_found" = "yes"; then
+               postgres_h_path="pgsql"
+       fi
                c_switch_site="$save_c_switch_site"
        fi
+if test "$postgres_includes_found" = "no" -a "$with_postgresql" != "no" -a \
+       -d "/usr/include/postgresql"; then
+       c_switch_site="$c_switch_site -I/usr/include/postgresql"
+       AC_CHECK_HEADER(libpq-fe.h,postgres_includes_found=yes)
+       if test "$postgres_includes_found" = "yes"; then
+               postgres_h_path="postgresql"
+fi
+       c_switch_site="$save_c_switch_site"
 fi
 
-dnl last check -- can we link against libpq?
+dnl Finally, check if we can link with libpq:
 if test "$postgres_includes_found" = "yes"; then
        AC_CHECK_LIB(pq,PQconnectdb,with_postgresql=yes,with_postgresql=no)
 fi
@@ -2942,14 +3003,15 @@ if test "$with_postgresql" = "yes"; then
        AC_CHECK_LIB(pq,PQconnectStart,with_postgresqlv7=yes,with_postgresqlv7=no)
 fi
 if test "$with_postgresql" = "yes"; then
+       if test -n "$postgres_h_path"; then
+               AC_DEFINE_UNQUOTED(POSTGRES_H_PATH, $postgres_h_path)
+       fi
        AC_DEFINE(HAVE_POSTGRESQL)
        if test "$with_postgresqlv7" = "yes"; then
                AC_DEFINE(HAVE_POSTGRESQLV7)
        fi
        XE_PREPEND(-lpq, LIBS)
        XE_ADD_OBJS(postgresql.o)
-else
-       c_switch_site=$save_c_switch_site
 fi
 
 dnl ----------------------
@@ -3759,7 +3821,7 @@ if test "$with_native_sound" != "no"; then
         sound_found=yes
        need_miscplay=yes
         XE_ADD_OBJS(linuxplay.o)
-        [AC_DEFINE_UNQUOTED(SOUNDCARD_H_PATH, "${dir}/soundcard.h")]
+        [AC_DEFINE_UNQUOTED(SOUNDCARD_H_FILE, "${dir}/soundcard.h")]
         break)
     done
   fi
@@ -3834,8 +3896,8 @@ if test "$with_tty" = "yes"  ; then
   fi
   if test "$with_ncurses" = "yes"; then
     AC_DEFINE(HAVE_NCURSES)
-    AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
-    AC_CHECK_HEADER(ncurses/term.h, term_h_path=ncurses/term.h)
+    AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
+    AC_CHECK_HEADER(ncurses/term.h, term_h_file=ncurses/term.h)
     XE_ADD_OBJS(terminfo.o)
     XE_PREPEND(-lncurses, LIBS)
 
@@ -3845,7 +3907,7 @@ if test "$with_tty" = "yes"  ; then
       dnl <ncurses/unctrl.h>)
       save_c_switch_site="$c_switch_site"
       c_switch_site="$c_switch_site -I/usr/include/ncurses"
-      AC_CHECK_HEADER(ncurses/curses.h, curses_h_path=ncurses/curses.h)
+      AC_CHECK_HEADER(ncurses/curses.h, curses_h_file=ncurses/curses.h)
       if test "$ac_cv_header_ncurses_curses_h" = "yes"
         then AC_MSG_WARN("Your system has the bogus ncurses include bug.")
         else c_switch_site="$save_c_switch_site"
@@ -3877,8 +3939,8 @@ if test "$with_tty" = "yes"  ; then
       fi
     fi
   fi
-  AC_DEFINE_UNQUOTED(CURSES_H_PATH, "${curses_h_path-curses.h}")
-  AC_DEFINE_UNQUOTED(TERM_H_PATH, "${term_h_path-term.h}")
+  AC_DEFINE_UNQUOTED(CURSES_H_FILE, "${curses_h_file-curses.h}")
+  AC_DEFINE_UNQUOTED(TERM_H_FILE, "${term_h_file-term.h}")
 
   dnl Autodetect gpm
   test -z "$with_gpm" && { AC_CHECK_HEADER(gpm.h, , with_gpm=no) }
@@ -3946,7 +4008,7 @@ test "$with_database_gdbm" = "yes" -o \
 dnl Check for Berkeley DB.
 if test "$with_database_berkdb" != "no"; then
   AC_MSG_CHECKING(for Berkeley db.h)
-  for path in "db/db.h" "db.h"; do
+  for header in "db/db.h" "db.h"; do
     AC_TRY_COMPILE([
 #include <stdlib.h>
 #if !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1)
@@ -3961,18 +4023,18 @@ typedef uint64_t u_int64_t;
 #endif
 #endif
 #endif
-#include <$path>
-],[], db_h_path="$path"; break)
+#include <$header>
+],[], db_h_file="$header"; break)
   done
-  if test -z "$db_h_path"
+  if test -z "$db_h_file"
   then AC_MSG_RESULT(no); with_database_berkdb=no
-  else AC_MSG_RESULT($db_h_path)
+  else AC_MSG_RESULT($db_h_file)
   fi
 
   if test "$with_database_berkdb" != "no"; then
     AC_MSG_CHECKING(for Berkeley DB version)
     AC_EGREP_CPP(yes,
-[#include <$db_h_path>
+[#include <$db_h_file>
 #if DB_VERSION_MAJOR > 1
 yes
 #endif
@@ -3982,7 +4044,7 @@ yes
   fi
 
   if test "$with_database_berkdb" = "yes"; then
-    AC_DEFINE_UNQUOTED(DB_H_PATH, "$db_h_path")
+    AC_DEFINE_UNQUOTED(DB_H_FILE, "$db_h_file")
     AC_DEFINE(HAVE_BERKELEY_DB)
     test "$need_libdb" = "yes" && XE_PREPEND(-ldb, LIBS)
   else with_database_berkdb=no
@@ -4411,7 +4473,7 @@ fi
 test "$with_i18n3"         = "yes" && AC_DEFINE(I18N3)
 test "$GCC"                = "yes" && AC_DEFINE(USE_GCC)
 test "$external_widget"    = "yes" && AC_DEFINE(EXTERNAL_WIDGET)
-test "$no_doc_file"        = "yes" && AC_DEFINE(NO_DOC_FILE)
+test "$quick_build"        = "yes" && AC_DEFINE(QUICK_BUILD)
 test "$with_purify"        = "yes" && AC_DEFINE(PURIFY)
 test "$with_quantify"      = "yes" && AC_DEFINE(QUANTIFY)
 test "$with_pop"           = "yes" && AC_DEFINE(MAIL_USE_POP)
@@ -4450,59 +4512,113 @@ dnl Start stdout redirection to '| tee -a Installation'
 echo "
 
 XEmacs ${emacs_major_version}.${emacs_minor_version}${xemacs_betaname} \"$xemacs_codename\" configured for \`$canonical'.
-
-  Where should the build process find the source code?    $srcdir
-  What installation prefix should install use?           $prefix
-  What operating system and machine description files should XEmacs use?
-        \`$opsysfile' and \`$machfile'
-  What compiler should XEmacs be built with?              $CC $CFLAGS
-  Should XEmacs use the GNU version of malloc?            ${GNU_MALLOC}${GNU_MALLOC_reason}
-  Should XEmacs use the relocating allocator for buffers? $rel_alloc
-  What window system should XEmacs use?                   ${window_system}"
-if test "$with_x11" = "yes"; then
-  echo "  Where do we find X Windows header files?                $x_includes"
-  echo "  Where do we find X Windows libraries?                   $x_libraries"
-fi
+"
+echo "
+Compilation / Installation:"
+echo "  Source code location:              $srcdir"
+echo "  Installation prefix:               $prefix"
 if test -n "$site_includes"; then
-  echo "  Additional header files:                                $site_includes"
+  echo "  Additional header files:           $site_includes"
 fi
 if test -n "$site_libraries"; then
-  echo "  Additional libraries:                                   $site_libraries"
+  echo "  Additional libraries:              $site_libraries"
 fi
 if test -n "$site_prefixes"; then
-  echo "  Additional prefixes:                                    $site_prefixes"
+  echo "  Additional prefixes:               $site_prefixes"
 fi
 if test -n "$runpath"; then
-  echo "  Runtime library search path:                            $runpath"
+  echo "  Runtime library search path:       $runpath"
+fi
+echo "  Operating system description file: \`$opsysfile'"
+echo "  Machine description file:          \`$machfile'"
+echo "  Compiler:                          $CC $CFLAGS"
+echo "  Relocating allocator for buffers:  $rel_alloc"
+echo "  GNU version of malloc:             ${GNU_MALLOC}${GNU_MALLOC_reason}"
+
+echo "
+Window System:"
+if test "$with_msw" = "yes"; then
+  echo "  Compiling in support for the Microsoft window system."
+fi
+if test "$with_x11" = "yes"; then
+  echo "  Compiling in support for the X window system:"
+  echo "    - X Windows headers location:                 $x_includes"
+  echo "    - X Windows libraries location:               $x_libraries"
+  if test "$with_xauth" != yes; then
+    echo "    - Xau (X authority) not available."
+  fi
+  if test "$with_xmu" != yes; then
+    echo "    - Xmu library not available; substituting equivalent routines."
+  fi
+  if test "$with_wmcommand" != no; then
+    echo "    - Handling WM_COMMAND properly."
+  fi
 fi
 if test "$have_xaw" = "yes"; then
-  echo "  Athena library to link:                                 $athena_lib"
-  echo "  Athena header include path:                             $athena_h_path"
+  echo "  Compiling in support for the Athena widget set:"
+  echo "    - Athena headers location:                    $athena_h_path"
+  echo "    - Athena library to link:                     $athena_lib"
 fi
-test "$with_dnet"  = yes && echo "  Compiling in support for DNET."
-test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
-test "$with_xauth" = yes && echo "  Compiling in support for XAUTH."
-if test "$with_xmu" != yes -a "$with_x11" = yes; then
-  echo "  No Xmu; substituting equivalent routines."
+case "$with_menubars" in
+  lucid ) echo "  Using Lucid menubars." ;;
+  motif ) echo "  Using Motif menubars."
+          echo "  *WARNING*  The Motif menubar implementation is currently buggy."
+          echo "             We recommend using the Lucid menubar instead."
+          echo "             Re-run configure with --with-menubars='lucid'." ;;
+    msw ) echo "  Using MS-Windows menubars." ;;
+esac
+case "$with_scrollbars" in
+  lucid  ) echo "  Using Lucid scrollbars."      ;;
+  motif  ) echo "  Using Motif scrollbars."      ;;
+  athena ) echo "  Using Athena scrollbars."     ;;
+     msw ) echo "  Using MS-Windows scrollbars." ;;
+esac
+case "$with_dialogs" in
+  motif  ) echo "  Using Motif dialog boxes."
+           if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
+             echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
+             echo "             We recommend using the Athena dialog boxes instead."
+             echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
+             echo "             Read the PROBLEMS file for more information."
+           fi; fi ;;
+  athena ) echo "  Using Athena dialog boxes."     ;;
+     msw ) echo "  Using MS-Windows dialog boxes." ;;
+esac
+case "$with_widgets" in
+  motif  ) echo "  Using Motif native widgets."      ;;
+  athena ) echo "  Using Athena native widgets."     ;;
+     msw ) echo "  Using MS-Windows native widgets." ;;
+esac
+if test "$with_dragndrop" = yes; then
+  echo "  Compiling in support for Drag'n'Drop (EXPERIMENTAL)."
+  echo "    -  Drag'n'Drop prototype:                             $dragndrop_proto."
 fi
 
+echo "
+TTY:"
+test "$with_ncurses" = yes && echo "  Compiling in support for ncurses."
+test "$with_gpm" = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
+
+echo "
+Images:"
+test "$with_gif" = yes && echo "  Compiling in support for GIF  images (builtin)."
 if test "$with_xpm" = yes; then
-  echo "  Compiling in support for XPM images."
+  echo "  Compiling in support for XPM  images."
 elif test "$with_x11" = yes; then
-  echo "  --------------------------------------------------------------------"
-  echo "  WARNING: Compiling without XPM support."
+  echo "  WARNING: -----------------------------------------------------------"
+  echo "  WARNING: Compiling without XPM image support."
   if test "$xpm_problem" != ""; then
     echo "  Reason: $xpm_problem"
   fi
   echo "  WARNING: You should strongly consider installing XPM."
   echo "  WARNING: Otherwise toolbars and other graphics will look suboptimal."
   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
 fi
 if test "$with_png" = yes; then
-  echo "  Compiling in support for PNG image handling."
+  echo "  Compiling in support for PNG  images."
 elif test "$window_system" != "none"; then
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
   echo "  WARNING: Compiling without PNG image support."
   if test "$png_problem" != ""; then
     echo "  Reason: $png_problem"
@@ -4510,97 +4626,72 @@ elif test "$window_system" != "none"; then
   echo "  WARNING: You should strongly consider installing the PNG libraries."
   echo "  WARNING: Otherwise certain images and glyphs may not display."
   echo "  WARNING: (a copy may be found in ftp://ftp.xemacs.org/pub/xemacs/aux)"
-  echo "  --------------------------------------------------------------------"
+  echo "  WARNING: -----------------------------------------------------------"
 fi
-test "$with_gif"   = yes && echo "  Compiling in support for (builtin) GIF image handling."
-test "$with_jpeg"  = yes && echo "  Compiling in support for JPEG image handling."
-test "$with_tiff"  = yes && echo "  Compiling in support for TIFF image handling."
+test "$with_jpeg" = yes && echo "  Compiling in support for JPEG images."
+test "$with_tiff" = yes && echo "  Compiling in support for TIFF images."
 test "$with_xface" = yes && echo "  Compiling in support for X-Face message headers."
 
-test "$with_native_sound" = yes && echo "  Compiling in native sound support."
-test "$with_nas_sound"    = yes && echo "  Compiling in network sound (NAS) support."
-test "$old_nas"           = yes && echo "     nas library lacks error trapping, will play synchronously."
-test "$with_esd_sound"    = yes && echo "  Compiling in support for Enlightened Sound Daemon (ESD)."
+echo "
+Sound:"
+test "$with_native_sound" = yes && echo "  Compiling in support for sound (native)."
+test "$with_nas_sound" = yes && echo "  Compiling in support for NAS (network audio system)."
+test "$old_nas" = yes && echo "    - NAS library lacks error trapping; will play synchronously."
+test "$with_esd_sound" = yes && echo "  Compiling in support for ESD (Enlightened Sound Daemon)."
 
-test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley DB."
+echo "
+Databases:"
+test "$with_database_berkdb" = yes && echo "  Compiling in support for Berkeley database."
 test "$with_database_dbm"    = yes && echo "  Compiling in support for DBM."
 test "$with_database_gdbm"   = yes && echo "  Compiling in support for GNU DBM."
-
-test "$with_ldap"           = yes && echo "  Compiling in support for LDAP."
-
+test "$with_ldap" = yes && echo "  Compiling in support for LDAP."
 if test "$with_postgresql" = yes; then
-       echo "  Compiling in support for PostgreSQL."
-       if test "$with_postgresqlv7" = yes; then
-               echo "    Using PostgreSQL V7 bindings."
-       fi
+  echo "  Compiling in support for PostgreSQL."
+  if test "$with_postgresqlv7" = yes; then
+    echo "    - Using PostgreSQL V7 bindings."
+  fi
+  if test -n "$postgres_h_path"; then
+    echo "    - PostgreSQL headers location:  $postgres_h_path"
+  fi
 fi
-test "$with_ncurses"  = yes && echo "  Compiling in support for ncurses."
-test "$with_gpm"      = yes && echo "  Compiling in support for GPM (General Purpose Mouse)."
-
-test "$with_mule"     = yes && echo "  Compiling in Mule (multi-lingual) support."
-test "$with_file_coding"     = yes && echo "  Compiling in File coding support."
-test "$with_xim"      != no && echo "  Compiling in XIM (X11R5+ I18N input method) support."
-test "$with_xim" = motif    && echo "    Using Motif to provide XIM support."
-test "$with_xim" = xlib     && echo "    Using raw Xlib to provide XIM support."
-test "$with_xfs" = yes      && echo "    Using XFontSet to provide bilingual menubar."
-test "$with_canna"    = yes && echo "  Compiling in support for Canna on Mule."
+
+echo "
+Internationalization:"
+test "$with_mule" = yes && echo "  Compiling in support for Mule (multi-lingual Emacs)."
+test "$with_file_coding" = yes && echo "  Compiling in support for file coding."
+test "$with_xim" != no && echo "  Compiling in support for XIM (X11R5+ I18N input method)."
+test "$with_xim" = motif && echo "    - Using Motif to provide XIM support."
+test "$with_xim" = xlib && echo "    - Using raw Xlib to provide XIM support."
+test "$with_xfs" = yes && echo "    - Using XFontSet to provide bilingual menubar."
+test "$with_canna" = yes && echo "  Compiling in support for Canna on Mule."
 if test "$with_wnn" = yes; then
   echo "  Compiling in support for the WNN input method on Mule."
-  test "$with_wnn6" = yes && echo "    Using WNN version 6."
+  test "$with_wnn6" = yes && echo "    - Using WNN version 6."
 fi
-test "$with_i18n3"    = yes && echo "  Compiling in I18N support, level 3 (doesn't currently work)."
+test "$with_i18n3" = yes && echo "  Compiling in support for I18N level 3 (doesn't currently work)."
 
-test "$with_cde"      = yes && echo "  Compiling in support for CDE."
+echo "
+Mail:"
+test "$with_pop" = yes && echo "  Compiling in support for POP mail retrieval."
+test "$with_kerberos" = yes && echo "  Compiling in support for Kerberos POP authentication."
+test "$with_hesiod" = yes && echo "  Compiling in support for Hesiod POP server access."
+echo "  Compiling in support for \"$mail_locking\" mail spool file locking method."
+
+echo "
+Other Features:"
 test "$with_tooltalk" = yes && echo "  Compiling in support for ToolTalk."
-test "$with_offix"    = yes && echo "  Compiling in support for OffiX."
-test "$with_dragndrop" = yes && echo "  Compiling in EXPERIMENTAL support for Drag'n'Drop ($dragndrop_proto )."
 test "$with_workshop" = yes && echo "  Compiling in support for Sun WorkShop."
-test "$with_wmcommand"  != no && echo "  Compiling in support for proper WM_COMMAND handling."
-case "$with_menubars" in
-  lucid ) echo "  Using Lucid menubars." ;;
-  motif ) echo "  Using Motif menubars."
-          echo "  *WARNING*  The Motif menubar implementation is currently buggy."
-          echo "             We recommend using the Lucid menubar instead."
-          echo "             Re-run configure with --with-menubars='lucid'." ;;
-  msw ) echo "  Using MS-Windows menubars." ;;
-esac
-case "$with_scrollbars" in
-  lucid    ) echo "  Using Lucid scrollbars."     ;;
-  motif    ) echo "  Using Motif scrollbars."     ;;
-  athena   ) echo "  Using Athena scrollbars."    ;;
-  msw ) echo "  Using MS-Windows scrollbars." ;;
-esac
-case "$with_widgets" in
-  motif    ) echo "  Using Motif native widgets."     ;;
-  athena   ) echo "  Using Athena native widgets."    ;;
-  msw ) echo "  Using MS-Windows native widgets." ;;
-esac
-case "$with_dialogs" in
-  motif    )
-    echo "  Using Motif dialog boxes."
-    if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
-      echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
-      echo "             We recommend using the Athena dialog boxes instead."
-      echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
-      echo "             Read the PROBLEMS file for more information."
-    fi; fi
-    ;;
-  athena   ) echo "  Using Athena dialog boxes."    ;;
-  msw ) echo "  Using MS-Windows dialog boxes." ;;
-esac
-test "$with_modules" = "yes" && echo "  Compiling in dynamic shared object module support."
-test "$with_clash_detection" = yes && \
+test "$with_socks" = yes && echo "  Compiling in support for SOCKS."
+test "$with_dnet" = yes && echo "  Compiling in support for DNET."
+test "$with_modules" = "yes" && echo "  Compiling in support for dynamic shared object modules."
+test "$with_clash_detection" != "no" && \
   echo "  Clash detection will use \"$lockdir\" for locking files."
-echo "  movemail will use \"$mail_locking\" for locking mail spool files."
-test "$with_pop"       = yes && echo "  Using POP for mail access."
-test "$with_kerberos"  = yes && echo "  Using Kerberos for POP authentication."
-test "$with_hesiod"    = yes && echo "  Using Hesiod to get POP server host."
-test "$use_union_type"  = yes && echo "  Using the union type for Lisp_Objects."
-test "$pdump"           = yes && echo "  Using the new portable dumper."
-test "$debug"           = yes && echo "  Compiling in extra code for debugging."
-test "$usage_tracking"  = yes && echo "  Compiling with usage tracking active (Sun internal)."
-if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc" \
-  != "no no no no no"; then
+test "$use_union_type" = yes && echo "  Using the union type for Lisp_Objects."
+test "$pdump" = yes && echo "  Using the new portable dumper."
+test "$debug" = yes && echo "  Compiling in support for extra debugging code."
+test "$usage_tracking" = yes && echo "  Compiling in support for active usage tracking (Sun internal)."
+if test "$error_check_extents $error_check_typecheck $error_check_bufpos $error_check_gc $error_check_malloc $error_check_glyphs" \
+  != "no no no no no no"; then
   echo "  WARNING: ---------------------------------------------------------"
   echo "  WARNING: Compiling in support for runtime error checking."
   echo "  WARNING: XEmacs will run noticeably more slowly as a result."
index 6b95066..89c648e 100644 (file)
@@ -88,6 +88,17 @@ Window-system options:
                                    unpredictable.
 --without-xmu (*)       For those unfortunates whose vendors don't ship Xmu.
 --external-widget       Compile with external widget support.
+
+
+TTY options:
+
+--without-tty           Don't support TTY-s.
+--with-ncurses (*)      Use the ncurses library for tty support.
+--with-gpm (*)          Compile in support for General Purpose Mouse.
+
+
+Image options:
+
 --with-xpm (*)          Compile with support for XPM files.
                         It is highly recommended that you obtain XPM
                         (version 3.4h or better) if you don't already
@@ -107,22 +118,8 @@ Window-system options:
                         Get if from the XEmacs FTP site.
 
 
-TTY options:
+Sound options:
 
---without-tty           Don't support TTY-s.
---with-ncurses (*)      Use the ncurses library for tty support.
---with-gpm (*)          Compile in support for General Purpose Mouse.
-
-
-Additional features:
-
---with-tooltalk (*)     Support the ToolTalk IPC protocol.
---with-workshop         Support the Sun WorkShop (formerly Sparcworks)
-                        development environment.
---with-socks            Compile with support for SOCKS (an Internet proxy).
---with-database=TYPE (*) Compile with database support.  Valid types are
-                        `no' or a comma-separated list of one or more
-                        of `berkdb' and either `dbm' or `gnudbm'.
 --with-sound=TYPE,[TYPE],... Compile with native sound support.
                        Valid types are `native', `nas' and `esd'.
                        Prefix a type with 'no' to disable.
@@ -133,17 +130,36 @@ Additional features:
 --native-sound-lib=LIB  Native sound support library.  Needed on Suns
                         with --with-sound=both because both sound libraries
                         are called libaudio.
---with-pop              support POP for mail retrieval
---with-kerberos         support Kerberos-authenticated POP
---with-hesiod           support Hesiod to get the POP server host
---with-dnet (*)         Compile with support for DECnet.
+
+
+Database options:
+
+--with-database=TYPE (*) Compile with database support.  Valid types are
+                        `no' or a comma-separated list of one or more
+                        of `berkdb' and either `dbm' or `gnudbm'.
 --with-ldap (*)         Compile with support for the LDAP protocol (requires
                         installed LDAP libraries on the system).
 --with-postgresql (*)  Compile with support for the PostgreSQL RDBMS (requires
                        installed PostreSQL libraries on the system).
+
+
+Mail options:
+
 --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 `dot'.
+--with-pop              support POP for mail retrieval
+--with-kerberos         support Kerberos-authenticated POP
+--with-hesiod           support Hesiod to get the POP server host
+
+
+Additional features:
+
+--with-tooltalk (*)     Support the ToolTalk IPC protocol.
+--with-workshop         Support the Sun WorkShop (formerly Sparcworks)
+                        development environment.
+--with-socks            Compile with support for SOCKS (an Internet proxy).
+--with-dnet (*)         Compile with support for DECnet.
 --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
@@ -232,7 +248,7 @@ Other options:
 --with-system-malloc    Force use of the system malloc, rather than GNU malloc.
 --with-debug-malloc     Use the debugging malloc package.
 --with-clash-detection  Use lock files to detect multiple edits of the same
-                        file.  The default is to not do clash detection.
+                        file.  The default is to do clash detection.
 --lockdir=DIR           The directory to put clash detection files in, such as
                         `/var/lock/emacs'.
                         Defaults to `${statedir}/xemacs/lock'.
index 4754a7f..39ac03a 100644 (file)
 *menubar*Font:                         -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*
 *popup*Font:                   -*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-*
 
+! Gui elements share this font
+!
+Emacs.gui-element.attributeFont:  -*-helvetica-medium-r-*-*-*-120-*-*-*-*-iso8859-*
+
 ! Font in the Motif dialog boxes.
 ! (Motif uses `fontList' while most other things use `font' - if you don't
 ! know why you probably don't want to.)
@@ -260,6 +264,11 @@ Ctrl<KeyPress>m: ArmAndActivate()\n
     <EnterWindow>:      Enter()\n\
     <LeaveWindow>:      Leave()\n
 
+! Native Widget translations
+! ======================= 
+Emacs*Text*translations: #override\n\
+       <Btn1Down>:     widget-focus-in()\n
+
 ! XIM input method style 
 ! ======================= 
 
index 9425a05..0f586dd 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -239,14 +239,14 @@ See `lprogress-display' for details.  This support has been switched
 on by default for font-lock and some web browsing functions.  If you
 do not like this behaviour set `progress-display-use-echo-area'.
 
-** Etags changes.
-
 ** The PostgreSQL Relational Database Management System is now supported.
 It is now possible to build XEmacs so that the programming interface
 to the PostgreSQL RDBMS (libpq) is available in XEmacs Lisp.
 Supported versions of PostgreSQL are 6.5.3 (earlier versions may work,
 but have not been tested) and 7.0-beta1.
 
+** Etags changes.
+
 *** In DOS, etags looks for file.cgz if it cannot find file.c.
 
 *** New option --ignore-case-regex is an alternative to --regex.  It is now
index a936cb7..320da86 100644 (file)
@@ -52,860 +52,864 @@ Foundation instead of in the original English.
 \1f
 Indirect:
 lispref.info-1: 2366
-lispref.info-2: 48507
-lispref.info-3: 97046
-lispref.info-4: 146886
-lispref.info-5: 195720
-lispref.info-6: 243407
-lispref.info-7: 291685
-lispref.info-8: 340294
-lispref.info-9: 388621
-lispref.info-10: 438073
-lispref.info-11: 486301
-lispref.info-12: 536073
-lispref.info-13: 583972
-lispref.info-14: 632195
-lispref.info-15: 680449
-lispref.info-16: 726641
-lispref.info-17: 775374
-lispref.info-18: 825372
-lispref.info-19: 875063
-lispref.info-20: 923904
-lispref.info-21: 972712
-lispref.info-22: 1019020
-lispref.info-23: 1068450
-lispref.info-24: 1117289
-lispref.info-25: 1162635
-lispref.info-26: 1210057
-lispref.info-27: 1255683
-lispref.info-28: 1304968
-lispref.info-29: 1352818
-lispref.info-30: 1401042
-lispref.info-31: 1450719
-lispref.info-32: 1499044
-lispref.info-33: 1548342
-lispref.info-34: 1589677
-lispref.info-35: 1635982
-lispref.info-36: 1685313
-lispref.info-37: 1733721
-lispref.info-38: 1782812
-lispref.info-39: 1832289
-lispref.info-40: 1879847
-lispref.info-41: 1924668
-lispref.info-42: 1971260
-lispref.info-43: 2019960
-lispref.info-44: 2067361
-lispref.info-45: 2116487
-lispref.info-46: 2148488
+lispref.info-2: 48665
+lispref.info-3: 97204
+lispref.info-4: 147044
+lispref.info-5: 195878
+lispref.info-6: 243565
+lispref.info-7: 291843
+lispref.info-8: 340452
+lispref.info-9: 388779
+lispref.info-10: 438231
+lispref.info-11: 486459
+lispref.info-12: 536231
+lispref.info-13: 584130
+lispref.info-14: 632353
+lispref.info-15: 680607
+lispref.info-16: 726799
+lispref.info-17: 775532
+lispref.info-18: 825530
+lispref.info-19: 875221
+lispref.info-20: 924062
+lispref.info-21: 972870
+lispref.info-22: 1019178
+lispref.info-23: 1068608
+lispref.info-24: 1117447
+lispref.info-25: 1162793
+lispref.info-26: 1210215
+lispref.info-27: 1255841
+lispref.info-28: 1305126
+lispref.info-29: 1352976
+lispref.info-30: 1401200
+lispref.info-31: 1450877
+lispref.info-32: 1499202
+lispref.info-33: 1548500
+lispref.info-34: 1589835
+lispref.info-35: 1636140
+lispref.info-36: 1685471
+lispref.info-37: 1733879
+lispref.info-38: 1782970
+lispref.info-39: 1832447
+lispref.info-40: 1880005
+lispref.info-41: 1924826
+lispref.info-42: 1962038
+lispref.info-43: 2006636
+lispref.info-44: 2053069
+lispref.info-45: 2093862
+lispref.info-46: 2143132
+lispref.info-47: 2156997
 \1f
 Tag Table:
 (Indirect)
 Node: Top\7f2366
-Node: Copying\7f48507
-Node: Introduction\7f67665
-Node: Caveats\7f69256
-Node: Lisp History\7f70987
-Node: Conventions\7f72243
-Node: Some Terms\7f73058
-Node: nil and t\7f73779
-Node: Evaluation Notation\7f75456
-Node: Printing Notation\7f76369
-Node: Error Messages\7f77243
-Node: Buffer Text Notation\7f77684
-Node: Format of Descriptions\7f78559
-Node: A Sample Function Description\7f79413
-Node: A Sample Variable Description\7f83399
-Node: Acknowledgements\7f84307
-Node: Lisp Data Types\7f86285
-Node: Printed Representation\7f88840
-Node: Comments\7f90882
-Node: Primitive Types\7f91779
-Node: Programming Types\7f93438
-Node: Integer Type\7f95390
-Node: Floating Point Type\7f96427
-Node: Character Type\7f97046
-Node: Symbol Type\7f104950
-Node: Sequence Type\7f107645
-Node: Cons Cell Type\7f109164
-Node: Dotted Pair Notation\7f113648
-Node: Association List Type\7f115769
-Node: Array Type\7f116652
-Node: String Type\7f118118
-Node: Vector Type\7f120799
-Node: Bit Vector Type\7f121571
-Node: Function Type\7f122433
-Node: Macro Type\7f123546
-Node: Primitive Function Type\7f124243
-Node: Compiled-Function Type\7f125769
-Node: Autoload Type\7f126323
-Node: Char Table Type\7f127337
-Node: Hash Table Type\7f127511
-Node: Range Table Type\7f128666
-Node: Weak List Type\7f129519
-Node: Editing Types\7f129669
-Node: Buffer Type\7f131296
-Node: Marker Type\7f133323
-Node: Extent Type\7f134047
-Node: Window Type\7f135315
-Node: Frame Type\7f136726
-Node: Device Type\7f137521
-Node: Console Type\7f138347
-Node: Window Configuration Type\7f139548
-Node: Event Type\7f140246
-Node: Process Type\7f140410
-Node: Stream Type\7f141445
-Node: Keymap Type\7f142568
-Node: Syntax Table Type\7f143106
-Node: Display Table Type\7f144129
-Node: Database Type\7f144568
-Node: Charset Type\7f144734
-Node: Coding System Type\7f144898
-Node: ToolTalk Message Type\7f145082
-Node: ToolTalk Pattern Type\7f145281
-Node: Window-System Types\7f145453
-Node: Face Type\7f146599
-Node: Glyph Type\7f146730
-Node: Specifier Type\7f146886
-Node: Font Instance Type\7f147059
-Node: Color Instance Type\7f147249
-Node: Image Instance Type\7f147446
-Node: Toolbar Button Type\7f147644
-Node: Subwindow Type\7f147837
-Node: X Resource Type\7f148016
-Node: Type Predicates\7f148169
-Node: Equality Predicates\7f157298
-Node: Numbers\7f162103
-Node: Integer Basics\7f163558
-Node: Float Basics\7f165907
-Node: Predicates on Numbers\7f167649
-Node: Comparison of Numbers\7f169282
-Node: Numeric Conversions\7f173103
-Node: Arithmetic Operations\7f174569
-Node: Rounding Operations\7f180034
-Node: Bitwise Operations\7f181139
-Node: Math Functions\7f190185
-Node: Random Numbers\7f192501
-Node: Strings and Characters\7f194267
-Node: String Basics\7f195720
-Node: Predicates for Strings\7f198138
-Node: Creating Strings\7f198901
-Node: Predicates for Characters\7f204218
-Node: Character Codes\7f205289
-Node: Text Comparison\7f206702
-Node: String Conversion\7f210064
-Node: Modifying Strings\7f213740
-Node: String Properties\7f214381
-Node: Formatting Strings\7f215026
-Node: Character Case\7f224644
-Node: Case Tables\7f227790
-Node: Char Tables\7f231688
-Node: Char Table Types\7f233080
-Node: Working With Char Tables\7f234655
-Node: Lists\7f236604
-Node: Cons Cells\7f237727
-Node: Lists as Boxes\7f239063
-Node: List-related Predicates\7f241705
-Node: List Elements\7f243407
-Node: Building Lists\7f248436
-Node: Modifying Lists\7f254428
-Node: Setcar\7f255240
-Node: Setcdr\7f257661
-Node: Rearrangement\7f260172
-Node: Sets And Lists\7f265758
-Node: Association Lists\7f269986
-Ref: Association Lists-Footnote-1\7f279277
-Node: Property Lists\7f279482
-Node: Working With Normal Plists\7f281030
-Node: Working With Lax Plists\7f283298
-Node: Converting Plists To/From Alists\7f285538
-Node: Weak Lists\7f286886
-Node: Sequences Arrays Vectors\7f289049
-Node: Sequence Functions\7f291685
-Node: Arrays\7f295344
-Node: Array Functions\7f298408
-Node: Vectors\7f300941
-Node: Vector Functions\7f302439
-Node: Bit Vectors\7f305010
-Node: Bit Vector Functions\7f305855
-Node: Symbols\7f308105
-Node: Symbol Components\7f309154
-Node: Definitions\7f313327
-Node: Creating Symbols\7f315552
-Node: Symbol Properties\7f322586
-Node: Plists and Alists\7f324113
-Node: Object Plists\7f325862
-Node: Other Plists\7f328622
-Node: Evaluation\7f330424
-Node: Intro Eval\7f331229
-Ref: Intro Eval-Footnote-1\7f334582
-Node: Eval\7f334717
-Node: Forms\7f339135
-Node: Self-Evaluating Forms\7f340294
-Node: Symbol Forms\7f341807
-Node: Classifying Lists\7f342724
-Node: Function Indirection\7f343480
-Node: Function Forms\7f346591
-Node: Macro Forms\7f347588
-Node: Special Forms\7f349188
-Node: Autoloading\7f351497
-Node: Quoting\7f351995
-Node: Control Structures\7f353356
-Node: Sequencing\7f354976
-Node: Conditionals\7f357841
-Node: Combining Conditions\7f361264
-Node: Iteration\7f364534
-Node: Nonlocal Exits\7f366313
-Node: Catch and Throw\7f367015
-Node: Examples of Catch\7f370854
-Node: Errors\7f372873
-Node: Signaling Errors\7f374362
-Node: Processing of Errors\7f379101
-Node: Handling Errors\7f381380
-Node: Error Symbols\7f388621
-Node: Cleanups\7f392577
-Node: Variables\7f396355
-Node: Global Variables\7f398124
-Node: Constant Variables\7f399200
-Node: Local Variables\7f399826
-Node: Void Variables\7f404763
-Node: Defining Variables\7f408279
-Node: Accessing Variables\7f415443
-Node: Setting Variables\7f416868
-Node: Variable Scoping\7f421387
-Node: Scope\7f422986
-Node: Extent\7f424511
-Node: Impl of Scope\7f425990
-Node: Using Scoping\7f427953
-Node: Buffer-Local Variables\7f429475
-Node: Intro to Buffer-Local\7f430311
-Node: Creating Buffer-Local\7f432854
-Node: Default Value\7f438073
-Node: Variable Aliases\7f441216
-Node: Functions\7f443001
-Node: What Is a Function\7f444095
-Node: Lambda Expressions\7f448141
-Node: Lambda Components\7f449051
-Node: Simple Lambda\7f450883
-Node: Argument List\7f452540
-Node: Function Documentation\7f456268
-Node: Function Names\7f458210
-Node: Defining Functions\7f460783
-Node: Calling Functions\7f463823
-Node: Mapping Functions\7f467672
-Node: Anonymous Functions\7f470360
-Node: Function Cells\7f473605
-Node: Inline Functions\7f478415
-Node: Related Topics\7f480225
-Node: Macros\7f481278
-Node: Simple Macro\7f482562
-Node: Expansion\7f483297
-Node: Compiling Macros\7f486301
-Node: Defining Macros\7f488137
-Node: Backquote\7f489454
-Node: Problems with Macros\7f491851
-Node: Argument Evaluation\7f492546
-Node: Surprising Local Vars\7f495461
-Node: Eval During Expansion\7f497529
-Node: Repeated Expansion\7f499222
-Node: Customization\7f501138
-Node: Common Keywords\7f501607
-Node: Group Definitions\7f504452
-Node: Variable Definitions\7f506644
-Node: Customization Types\7f511634
-Node: Simple Types\7f513069
-Node: Composite Types\7f515226
-Node: Splicing into Lists\7f519916
-Node: Type Keywords\7f521751
-Node: Loading\7f525271
-Node: How Programs Do Loading\7f526946
-Node: Autoload\7f536073
-Node: Repeated Loading\7f542152
-Node: Named Features\7f544265
-Node: Unloading\7f550697
-Node: Hooks for Loading\7f552853
-Node: Byte Compilation\7f553570
-Node: Speed of Byte-Code\7f555487
-Node: Compilation Functions\7f556694
-Node: Docs and Compilation\7f563081
-Node: Dynamic Loading\7f565734
-Node: Eval During Compile\7f568098
-Node: Compiled-Function Objects\7f569363
-Node: Disassembly\7f574161
-Node: Debugging\7f581415
-Node: Debugger\7f582827
-Node: Error Debugging\7f583972
-Node: Infinite Loops\7f586725
-Node: Function Debugging\7f587969
-Node: Explicit Debug\7f590759
-Node: Using Debugger\7f591530
-Node: Debugger Commands\7f593392
-Node: Invoking the Debugger\7f597709
-Node: Internals of Debugger\7f601624
-Node: Syntax Errors\7f606511
-Node: Excess Open\7f607759
-Node: Excess Close\7f609634
-Node: Compilation Errors\7f611055
-Node: Edebug\7f612343
-Node: Using Edebug\7f614451
-Node: Instrumenting\7f617148
-Node: Edebug Execution Modes\7f620637
-Node: Jumping\7f623747
-Node: Edebug Misc\7f626090
-Node: Breakpoints\7f627479
-Node: Global Break Condition\7f630285
-Node: Embedded Breakpoints\7f631240
-Node: Trapping Errors\7f632195
-Node: Edebug Views\7f634271
-Node: Edebug Eval\7f636236
-Node: Eval List\7f637413
-Node: Reading in Edebug\7f640798
-Node: Printing in Edebug\7f641597
-Node: Tracing\7f643312
-Node: Coverage Testing\7f645198
-Node: The Outside Context\7f647239
-Node: Checking Whether to Stop\7f648188
-Node: Edebug Display Update\7f648835
-Node: Edebug Recursive Edit\7f650858
-Node: Instrumenting Macro Calls\7f652513
-Node: Specification List\7f654995
-Node: Backtracking\7f664406
-Node: Debugging Backquote\7f666344
-Node: Specification Examples\7f670050
-Node: Edebug Options\7f672117
-Node: Read and Print\7f677454
-Node: Streams Intro\7f678431
-Node: Input Streams\7f680449
-Node: Input Functions\7f685350
-Node: Output Streams\7f687410
-Node: Output Functions\7f691461
-Node: Output Variables\7f695761
-Node: Minibuffers\7f700560
-Node: Intro to Minibuffers\7f701712
-Node: Text from Minibuffer\7f703900
-Node: Object from Minibuffer\7f708986
-Node: Minibuffer History\7f713081
-Node: Completion\7f716060
-Node: Basic Completion\7f718035
-Node: Minibuffer Completion\7f723064
-Node: Completion Commands\7f726641
-Node: High-Level Completion\7f731298
-Node: Reading File Names\7f736040
-Node: Programmed Completion\7f739732
-Node: Yes-or-No Queries\7f742114
-Node: Multiple Queries\7f747851
-Node: Reading a Password\7f751918
-Node: Minibuffer Misc\7f753255
-Node: Command Loop\7f758125
-Node: Command Overview\7f759469
-Node: Defining Commands\7f762747
-Node: Using Interactive\7f763495
-Node: Interactive Codes\7f768268
-Node: Interactive Examples\7f774060
-Node: Interactive Call\7f775374
-Node: Command Loop Info\7f780775
-Node: Events\7f785754
-Node: Event Types\7f787214
-Node: Event Contents\7f789137
-Node: Event Predicates\7f793613
-Node: Accessing Mouse Event Positions\7f794938
-Node: Frame-Level Event Position Info\7f795637
-Node: Window-Level Event Position Info\7f796677
-Node: Event Text Position Info\7f798441
-Node: Event Glyph Position Info\7f800933
-Node: Event Toolbar Position Info\7f802256
-Node: Other Event Position Info\7f802927
-Node: Accessing Other Event Info\7f803336
-Node: Working With Events\7f804956
-Node: Converting Events\7f810944
-Node: Reading Input\7f813896
-Node: Key Sequence Input\7f814898
-Node: Reading One Event\7f816852
-Node: Dispatching an Event\7f819669
-Node: Quoted Character Input\7f820120
-Node: Peeking and Discarding\7f821468
-Node: Waiting\7f825372
-Node: Quitting\7f827680
-Node: Prefix Command Arguments\7f832088
-Node: Recursive Editing\7f837175
-Node: Disabling Commands\7f841971
-Node: Command History\7f844039
-Node: Keyboard Macros\7f845776
-Node: Keymaps\7f847993
-Node: Keymap Terminology\7f849570
-Node: Format of Keymaps\7f852499
-Node: Creating Keymaps\7f852910
-Node: Inheritance and Keymaps\7f854989
-Node: Key Sequences\7f857361
-Node: Prefix Keys\7f862157
-Node: Active Keymaps\7f865742
-Node: Key Lookup\7f875063
-Node: Functions for Key Lookup\7f880226
-Node: Changing Key Bindings\7f885923
-Node: Key Binding Commands\7f892820
-Node: Scanning Keymaps\7f894885
-Node: Other Keymap Functions\7f903396
-Node: Menus\7f904018
-Node: Menu Format\7f904610
-Node: Menubar Format\7f913256
-Node: Menubar\7f913881
-Node: Modifying Menus\7f916994
-Node: Menu Filters\7f922008
-Node: Pop-Up Menus\7f923904
-Node: Menu Accelerators\7f926109
-Node: Creating Menu Accelerators\7f926865
-Node: Keyboard Menu Traversal\7f928225
-Node: Menu Accelerator Functions\7f928952
-Node: Buffers Menu\7f932029
-Node: Dialog Boxes\7f933323
-Node: Dialog Box Format\7f933490
-Node: Dialog Box Functions\7f934915
-Node: Toolbar\7f935312
-Node: Toolbar Intro\7f935633
-Node: Toolbar Descriptor Format\7f938042
-Node: Specifying the Toolbar\7f942536
-Node: Other Toolbar Variables\7f946141
-Node: Gutter\7f950567
-Node: Gutter Intro\7f951043
-Node: Gutter Descriptor Format\7f953040
-Node: Specifying a Gutter\7f957494
-Node: Other Gutter Variables\7f961027
-Node: Common Gutter Widgets\7f965412
-Node: Buffer Tabs\7f966404
-Node: Progress Bars\7f966545
-Node: Scrollbars\7f966690
-Node: Drag and Drop\7f966825
-Node: Supported Protocols\7f967901
-Node: OffiX DND\7f968404
-Node: CDE dt\7f969411
-Node: MSWindows OLE\7f970002
-Node: Loose ends\7f970173
-Node: Drop Interface\7f970565
-Node: Drag Interface\7f971587
-Node: Modes\7f971761
-Node: Major Modes\7f972712
-Node: Major Mode Conventions\7f975627
-Node: Example Major Modes\7f981582
-Node: Auto Major Mode\7f989615
-Node: Mode Help\7f997063
-Node: Derived Modes\7f998164
-Node: Minor Modes\7f1000355
-Node: Minor Mode Conventions\7f1001657
-Node: Keymaps and Minor Modes\7f1004520
-Node: Modeline Format\7f1005355
-Node: Modeline Data\7f1007123
-Node: Modeline Variables\7f1011393
-Node: %-Constructs\7f1016109
-Node: Hooks\7f1019020
-Node: Documentation\7f1025782
-Node: Documentation Basics\7f1027205
-Node: Accessing Documentation\7f1030255
-Node: Keys in Documentation\7f1036534
-Node: Describing Characters\7f1040013
-Node: Help Functions\7f1042362
-Node: Obsoleteness\7f1048813
-Node: Files\7f1051807
-Node: Visiting Files\7f1053732
-Node: Visiting Functions\7f1055237
-Node: Subroutines of Visiting\7f1060284
-Node: Saving Buffers\7f1062357
-Node: Reading from Files\7f1068450
-Node: Writing to Files\7f1070607
-Node: File Locks\7f1073324
-Node: Information about Files\7f1076377
-Node: Testing Accessibility\7f1077138
-Node: Kinds of Files\7f1080878
-Node: Truenames\7f1082559
-Node: File Attributes\7f1083561
-Node: Changing File Attributes\7f1088700
-Node: File Names\7f1094106
-Node: File Name Components\7f1095715
-Node: Directory Names\7f1098816
-Node: Relative File Names\7f1102269
-Node: File Name Expansion\7f1103347
-Node: Unique File Names\7f1107254
-Node: File Name Completion\7f1108869
-Node: User Name Completion\7f1111530
-Node: Contents of Directories\7f1112870
-Node: Create/Delete Dirs\7f1116183
-Node: Magic File Names\7f1117289
-Node: Partial Files\7f1122919
-Node: Intro to Partial Files\7f1123147
-Node: Creating a Partial File\7f1124387
-Node: Detached Partial Files\7f1125322
-Node: Format Conversion\7f1126444
-Node: Files and MS-DOS\7f1132960
-Node: Backups and Auto-Saving\7f1135024
-Node: Backup Files\7f1135699
-Node: Making Backups\7f1137096
-Node: Rename or Copy\7f1139845
-Node: Numbered Backups\7f1142338
-Node: Backup Names\7f1144573
-Node: Auto-Saving\7f1147865
-Node: Reverting\7f1156007
-Node: Buffers\7f1159165
-Node: Buffer Basics\7f1160582
-Node: Current Buffer\7f1162635
-Node: Buffer Names\7f1167323
-Node: Buffer File Name\7f1170528
-Node: Buffer Modification\7f1174647
-Node: Modification Time\7f1176840
-Node: Read Only Buffers\7f1180215
-Node: The Buffer List\7f1182633
-Node: Creating Buffers\7f1187463
-Node: Killing Buffers\7f1189609
-Node: Indirect Buffers\7f1193340
-Node: Windows\7f1195912
-Node: Basic Windows\7f1197390
-Node: Splitting Windows\7f1200488
-Node: Deleting Windows\7f1207377
-Node: Selecting Windows\7f1210057
-Node: Cyclic Window Ordering\7f1213186
-Node: Buffers and Windows\7f1217810
-Node: Displaying Buffers\7f1219651
-Node: Choosing Window\7f1224827
-Node: Window Point\7f1232543
-Node: Window Start\7f1234589
-Node: Vertical Scrolling\7f1239079
-Node: Horizontal Scrolling\7f1245216
-Node: Size of Window\7f1248725
-Node: Position of Window\7f1253443
-Node: Resizing Windows\7f1255683
-Node: Window Configurations\7f1261112
-Node: Frames\7f1264537
-Node: Creating Frames\7f1266878
-Node: Frame Properties\7f1268219
-Node: Property Access\7f1269035
-Node: Initial Properties\7f1269884
-Node: X Frame Properties\7f1272370
-Node: Size and Position\7f1277004
-Node: Frame Name\7f1279000
-Node: Frame Titles\7f1279914
-Node: Deleting Frames\7f1281738
-Node: Finding All Frames\7f1282338
-Node: Frames and Windows\7f1284332
-Node: Minibuffers and Frames\7f1286037
-Node: Input Focus\7f1286955
-Node: Visibility of Frames\7f1290032
-Node: Raising and Lowering\7f1291951
-Node: Frame Configurations\7f1294327
-Node: Frame Hooks\7f1294921
-Node: Consoles and Devices\7f1296726
-Node: Basic Console Functions\7f1299469
-Node: Basic Device Functions\7f1299892
-Node: Console Types and Device Classes\7f1300608
-Node: Connecting to a Console or Device\7f1302805
-Node: The Selected Console and Device\7f1304968
-Node: Console and Device I/O\7f1305994
-Node: Positions\7f1306758
-Node: Point\7f1307727
-Node: Motion\7f1310817
-Node: Character Motion\7f1311584
-Node: Word Motion\7f1313821
-Node: Buffer End Motion\7f1315322
-Node: Text Lines\7f1316819
-Node: Screen Lines\7f1321414
-Node: List Motion\7f1325477
-Node: Skipping Characters\7f1328885
-Node: Excursions\7f1331104
-Node: Narrowing\7f1334136
-Node: Markers\7f1339461
-Node: Overview of Markers\7f1340367
-Node: Predicates on Markers\7f1345059
-Node: Creating Markers\7f1346305
-Node: Information from Markers\7f1350342
-Node: Changing Markers\7f1351440
-Node: The Mark\7f1352818
-Node: The Region\7f1361312
-Node: Text\7f1366998
-Node: Near Point\7f1369697
-Node: Buffer Contents\7f1373884
-Node: Comparing Text\7f1375290
-Node: Insertion\7f1376698
-Node: Commands for Insertion\7f1380540
-Node: Deletion\7f1383496
-Node: User-Level Deletion\7f1387091
-Node: The Kill Ring\7f1391252
-Node: Kill Ring Concepts\7f1393426
-Node: Kill Functions\7f1394480
-Node: Yank Commands\7f1396385
-Node: Low-Level Kill Ring\7f1398256
-Node: Internals of Kill Ring\7f1401042
-Node: Undo\7f1403822
-Node: Maintaining Undo\7f1408151
-Node: Filling\7f1410771
-Node: Margins\7f1416765
-Node: Auto Filling\7f1420694
-Node: Sorting\7f1421875
-Node: Columns\7f1431175
-Node: Indentation\7f1433691
-Node: Primitive Indent\7f1434470
-Node: Mode-Specific Indent\7f1435714
-Node: Region Indent\7f1438225
-Node: Relative Indent\7f1441173
-Node: Indent Tabs\7f1443555
-Node: Motion by Indent\7f1444876
-Node: Case Changes\7f1445655
-Node: Text Properties\7f1448906
-Node: Examining Properties\7f1450719
-Node: Changing Properties\7f1452586
-Node: Property Search\7f1456177
-Node: Special Properties\7f1460888
-Node: Saving Properties\7f1461169
-Node: Substitution\7f1464311
-Node: Registers\7f1467581
-Node: Transposition\7f1470124
-Node: Change Hooks\7f1471018
-Node: Transformations\7f1473058
-Node: Searching and Matching\7f1477443
-Node: String Search\7f1478574
-Node: Regular Expressions\7f1483298
-Node: Syntax of Regexps\7f1484665
-Node: Regexp Example\7f1499044
-Node: Regexp Search\7f1501214
-Node: POSIX Regexps\7f1507302
-Node: Search and Replace\7f1509137
-Node: Match Data\7f1512502
-Node: Simple Match Data\7f1513632
-Node: Replacing Match\7f1517897
-Node: Entire Match Data\7f1520231
-Node: Saving Match Data\7f1522222
-Node: Searching and Case\7f1523603
-Node: Standard Regexps\7f1525637
-Node: Syntax Tables\7f1527835
-Node: Syntax Basics\7f1528949
-Node: Syntax Descriptors\7f1531921
-Node: Syntax Class Table\7f1533771
-Node: Syntax Flags\7f1539809
-Node: Syntax Table Functions\7f1543026
-Node: Motion and Syntax\7f1546890
-Node: Parsing Expressions\7f1548342
-Node: Standard Syntax Tables\7f1554411
-Node: Syntax Table Internals\7f1555255
-Node: Abbrevs\7f1556281
-Node: Abbrev Mode\7f1558084
-Node: Abbrev Tables\7f1558804
-Node: Defining Abbrevs\7f1560337
-Node: Abbrev Files\7f1562242
-Node: Abbrev Expansion\7f1564015
-Node: Standard Abbrev Tables\7f1568646
-Node: Extents\7f1569805
-Node: Intro to Extents\7f1571048
-Node: Creating and Modifying Extents\7f1575042
-Node: Extent Endpoints\7f1576549
-Node: Finding Extents\7f1579812
-Node: Mapping Over Extents\7f1583560
-Node: Extent Properties\7f1589677
-Node: Detached Extents\7f1599821
-Node: Extent Parents\7f1601680
-Node: Duplicable Extents\7f1603374
-Node: Extents and Events\7f1606595
-Node: Atomic Extents\7f1608502
-Node: Specifiers\7f1608949
-Node: Introduction to Specifiers\7f1611062
-Node: Specifiers In-Depth\7f1613372
-Node: Specifier Instancing\7f1618284
-Node: Specifier Types\7f1621546
-Node: Adding Specifications\7f1626620
-Node: Retrieving Specifications\7f1635982
-Node: Specifier Tag Functions\7f1639717
-Node: Specifier Instancing Functions\7f1642951
-Node: Specifier Example\7f1646358
-Node: Creating Specifiers\7f1649514
-Node: Specifier Validation Functions\7f1651763
-Node: Other Specification Functions\7f1654147
-Node: Faces and Window-System Objects\7f1657966
-Node: Faces\7f1658290
-Node: Merging Faces\7f1659907
-Node: Basic Face Functions\7f1661868
-Node: Face Properties\7f1663966
-Node: Face Convenience Functions\7f1674208
-Node: Other Face Display Functions\7f1677338
-Node: Fonts\7f1678151
-Node: Font Specifiers\7f1678852
-Node: Font Instances\7f1679093
-Node: Font Instance Names\7f1680060
-Node: Font Instance Size\7f1680901
-Node: Font Instance Characteristics\7f1682187
-Node: Font Convenience Functions\7f1683356
-Node: Colors\7f1684646
-Node: Color Specifiers\7f1685086
-Node: Color Instances\7f1685313
-Node: Color Instance Properties\7f1686057
-Node: Color Convenience Functions\7f1686683
-Node: Glyphs\7f1687736
-Node: Glyph Functions\7f1689328
-Node: Creating Glyphs\7f1689735
-Node: Glyph Properties\7f1691322
-Node: Glyph Convenience Functions\7f1700489
-Node: Glyph Dimensions\7f1704436
-Node: Images\7f1705516
-Node: Image Specifiers\7f1705965
-Node: Image Instantiator Conversion\7f1717314
-Node: Image Instances\7f1718679
-Node: Image Instance Types\7f1719430
-Node: Image Instance Functions\7f1722085
-Node: Glyph Types\7f1726654
-Node: Mouse Pointer\7f1728426
-Node: Redisplay Glyphs\7f1731429
-Node: Subwindows\7f1732462
-Node: Annotations\7f1732705
-Node: Annotation Basics\7f1733721
-Node: Annotation Primitives\7f1737659
-Node: Annotation Properties\7f1738988
-Node: Locating Annotations\7f1742028
-Node: Margin Primitives\7f1742865
-Node: Annotation Hooks\7f1744759
-Node: Display\7f1745419
-Node: Refresh Screen\7f1746397
-Node: Truncation\7f1748308
-Node: The Echo Area\7f1750833
-Node: Warnings\7f1757268
-Node: Invisible Text\7f1761704
-Node: Selective Display\7f1764283
-Node: Overlay Arrow\7f1768409
-Node: Temporary Displays\7f1769762
-Node: Blinking\7f1773883
-Node: Usual Display\7f1776068
-Node: Display Tables\7f1778617
-Node: Display Table Format\7f1779421
-Node: Active Display Table\7f1780863
-Node: Character Descriptors\7f1782055
-Node: Beeping\7f1782812
-Node: Hash Tables\7f1787578
-Node: Introduction to Hash Tables\7f1788186
-Node: Working With Hash Tables\7f1794209
-Node: Weak Hash Tables\7f1795326
-Node: Range Tables\7f1797125
-Node: Introduction to Range Tables\7f1797814
-Node: Working With Range Tables\7f1798245
-Node: Databases\7f1799130
-Node: Connecting to a Database\7f1799429
-Node: Working With a Database\7f1800520
-Node: Other Database Functions\7f1801378
-Node: Processes\7f1801952
-Node: Subprocess Creation\7f1804176
-Node: Synchronous Processes\7f1807465
-Node: MS-DOS Subprocesses\7f1814183
-Node: Asynchronous Processes\7f1815257
-Node: Deleting Processes\7f1818970
-Node: Process Information\7f1820841
-Node: Input to Processes\7f1824767
-Node: Signals to Processes\7f1827057
-Node: Output from Processes\7f1831477
-Node: Process Buffers\7f1832289
-Node: Filter Functions\7f1835156
-Node: Accepting Output\7f1840726
-Node: Sentinels\7f1842253
-Node: Process Window Size\7f1845743
-Node: Transaction Queues\7f1846092
-Node: Network\7f1847790
-Node: System Interface\7f1849624
-Node: Starting Up\7f1850894
-Node: Start-up Summary\7f1851488
-Node: Init File\7f1855042
-Node: Terminal-Specific\7f1857423
-Node: Command Line Arguments\7f1860582
-Node: Getting Out\7f1864071
-Node: Killing XEmacs\7f1864640
-Node: Suspending XEmacs\7f1866309
-Node: System Environment\7f1869651
-Node: User Identification\7f1876318
-Node: Time of Day\7f1879847
-Node: Time Conversion\7f1882634
-Node: Timers\7f1887674
-Node: Terminal Input\7f1889847
-Node: Input Modes\7f1890350
-Node: Translating Input\7f1892763
-Node: Recording Input\7f1896928
-Node: Terminal Output\7f1899028
-Node: Flow Control\7f1902651
-Node: Batch Mode\7f1906443
-Node: X-Windows\7f1907825
-Node: X Selections\7f1908696
-Node: X Server\7f1910906
-Node: Resources\7f1911357
-Node: Server Data\7f1916666
-Node: Grabs\7f1917873
-Node: X Miscellaneous\7f1919453
-Node: ToolTalk Support\7f1921838
-Node: XEmacs ToolTalk API Summary\7f1922055
-Node: Sending Messages\7f1923355
-Node: Example of Sending Messages\7f1923606
-Node: Elisp Interface for Sending Messages\7f1924668
-Node: Receiving Messages\7f1931060
-Node: Example of Receiving Messages\7f1931283
-Node: Elisp Interface for Receiving Messages\7f1932119
-Node: LDAP Support\7f1935944
-Node: Building XEmacs with LDAP support\7f1936438
-Node: XEmacs LDAP API\7f1937416
-Node: LDAP Variables\7f1938146
-Node: The High-Level LDAP API\7f1940622
-Node: The Low-Level LDAP API\7f1941727
-Node: The LDAP Lisp Object\7f1942001
-Node: Opening and Closing a LDAP Connection\7f1942554
-Node: Searching on a LDAP Server (Low-level)\7f1944337
-Node: Syntax of Search Filters\7f1945730
-Node: PostgreSQL Support\7f1947028
-Node: Building XEmacs with PostgreSQL support\7f1947423
-Node: XEmacs PostgreSQL libpq API\7f1948690
-Node: libpq Lisp Variables\7f1950565
-Node: libpq Lisp Symbols and DataTypes\7f1953529
-Node: Synchronous Interface Functions\7f1966769
-Node: Asynchronous Interface Functions\7f1971260
-Node: Large Object Support\7f1974761
-Node: Other libpq Functions\7f1975388
-Node: Unimplemented libpq Functions\7f1978423
-Node: XEmacs PostgreSQL libpq Examples\7f1983742
-Node: Internationalization\7f1989833
-Node: I18N Levels 1 and 2\7f1990176
-Node: I18N Level 3\7f1990882
-Node: Level 3 Basics\7f1991163
-Node: Level 3 Primitives\7f1991996
-Node: Dynamic Messaging\7f1993602
-Node: Domain Specification\7f1994065
-Node: Documentation String Extraction\7f1995968
-Node: I18N Level 4\7f1996886
-Node: MULE\7f1997078
-Node: Internationalization Terminology\7f1998127
-Node: Charsets\7f2010326
-Node: Charset Properties\7f2011022
-Node: Basic Charset Functions\7f2015737
-Node: Charset Property Functions\7f2017918
-Node: Predefined Charsets\7f2019960
-Node: MULE Characters\7f2022880
-Node: Composite Characters\7f2023727
-Node: Coding Systems\7f2024987
-Node: Coding System Types\7f2027127
-Node: ISO 2022\7f2031111
-Node: EOL Conversion\7f2043388
-Node: Coding System Properties\7f2044560
-Node: Basic Coding System Functions\7f2048877
-Node: Coding System Property Functions\7f2050911
-Node: Encoding and Decoding Text\7f2051469
-Node: Detection of Textual Encoding\7f2052605
-Node: Big5 and Shift-JIS Functions\7f2054141
-Node: Predefined Coding Systems\7f2055267
-Node: CCL\7f2067361
-Node: CCL Syntax\7f2070465
-Node: CCL Statements\7f2072041
-Node: CCL Expressions\7f2076689
-Node: Calling CCL\7f2079228
-Node: CCL Examples\7f2082217
-Node: Category Tables\7f2082354
-Node: Tips\7f2084712
-Node: Style Tips\7f2085353
-Node: Compilation Tips\7f2094872
-Node: Documentation Tips\7f2096786
-Node: Comment Tips\7f2102295
-Node: Library Headers\7f2105297
-Node: Building XEmacs and Object Allocation\7f2109269
-Node: Building XEmacs\7f2110152
-Node: Pure Storage\7f2116487
-Node: Garbage Collection\7f2119275
-Node: Standard Errors\7f2130414
-Node: Standard Buffer-Local Variables\7f2134623
-Node: Standard Keymaps\7f2137256
-Node: Standard Hooks\7f2140988
-Node: Index\7f2148488
+Node: Copying\7f48665
+Node: Introduction\7f67823
+Node: Caveats\7f69414
+Node: Lisp History\7f71145
+Node: Conventions\7f72401
+Node: Some Terms\7f73216
+Node: nil and t\7f73937
+Node: Evaluation Notation\7f75614
+Node: Printing Notation\7f76527
+Node: Error Messages\7f77401
+Node: Buffer Text Notation\7f77842
+Node: Format of Descriptions\7f78717
+Node: A Sample Function Description\7f79571
+Node: A Sample Variable Description\7f83557
+Node: Acknowledgements\7f84465
+Node: Lisp Data Types\7f86443
+Node: Printed Representation\7f88998
+Node: Comments\7f91040
+Node: Primitive Types\7f91937
+Node: Programming Types\7f93596
+Node: Integer Type\7f95548
+Node: Floating Point Type\7f96585
+Node: Character Type\7f97204
+Node: Symbol Type\7f105108
+Node: Sequence Type\7f107803
+Node: Cons Cell Type\7f109322
+Node: Dotted Pair Notation\7f113806
+Node: Association List Type\7f115927
+Node: Array Type\7f116810
+Node: String Type\7f118276
+Node: Vector Type\7f120957
+Node: Bit Vector Type\7f121729
+Node: Function Type\7f122591
+Node: Macro Type\7f123704
+Node: Primitive Function Type\7f124401
+Node: Compiled-Function Type\7f125927
+Node: Autoload Type\7f126481
+Node: Char Table Type\7f127495
+Node: Hash Table Type\7f127669
+Node: Range Table Type\7f128824
+Node: Weak List Type\7f129677
+Node: Editing Types\7f129827
+Node: Buffer Type\7f131454
+Node: Marker Type\7f133481
+Node: Extent Type\7f134205
+Node: Window Type\7f135473
+Node: Frame Type\7f136884
+Node: Device Type\7f137679
+Node: Console Type\7f138505
+Node: Window Configuration Type\7f139706
+Node: Event Type\7f140404
+Node: Process Type\7f140568
+Node: Stream Type\7f141603
+Node: Keymap Type\7f142726
+Node: Syntax Table Type\7f143264
+Node: Display Table Type\7f144287
+Node: Database Type\7f144726
+Node: Charset Type\7f144892
+Node: Coding System Type\7f145056
+Node: ToolTalk Message Type\7f145240
+Node: ToolTalk Pattern Type\7f145439
+Node: Window-System Types\7f145611
+Node: Face Type\7f146757
+Node: Glyph Type\7f146888
+Node: Specifier Type\7f147044
+Node: Font Instance Type\7f147217
+Node: Color Instance Type\7f147407
+Node: Image Instance Type\7f147604
+Node: Toolbar Button Type\7f147802
+Node: Subwindow Type\7f147995
+Node: X Resource Type\7f148174
+Node: Type Predicates\7f148327
+Node: Equality Predicates\7f157456
+Node: Numbers\7f162261
+Node: Integer Basics\7f163716
+Node: Float Basics\7f166065
+Node: Predicates on Numbers\7f167807
+Node: Comparison of Numbers\7f169440
+Node: Numeric Conversions\7f173261
+Node: Arithmetic Operations\7f174727
+Node: Rounding Operations\7f180192
+Node: Bitwise Operations\7f181297
+Node: Math Functions\7f190343
+Node: Random Numbers\7f192659
+Node: Strings and Characters\7f194425
+Node: String Basics\7f195878
+Node: Predicates for Strings\7f198296
+Node: Creating Strings\7f199059
+Node: Predicates for Characters\7f204376
+Node: Character Codes\7f205447
+Node: Text Comparison\7f206860
+Node: String Conversion\7f210222
+Node: Modifying Strings\7f213898
+Node: String Properties\7f214539
+Node: Formatting Strings\7f215184
+Node: Character Case\7f224802
+Node: Case Tables\7f227948
+Node: Char Tables\7f231846
+Node: Char Table Types\7f233238
+Node: Working With Char Tables\7f234813
+Node: Lists\7f236762
+Node: Cons Cells\7f237885
+Node: Lists as Boxes\7f239221
+Node: List-related Predicates\7f241863
+Node: List Elements\7f243565
+Node: Building Lists\7f248594
+Node: Modifying Lists\7f254586
+Node: Setcar\7f255398
+Node: Setcdr\7f257819
+Node: Rearrangement\7f260330
+Node: Sets And Lists\7f265916
+Node: Association Lists\7f270144
+Ref: Association Lists-Footnote-1\7f279435
+Node: Property Lists\7f279640
+Node: Working With Normal Plists\7f281188
+Node: Working With Lax Plists\7f283456
+Node: Converting Plists To/From Alists\7f285696
+Node: Weak Lists\7f287044
+Node: Sequences Arrays Vectors\7f289207
+Node: Sequence Functions\7f291843
+Node: Arrays\7f295502
+Node: Array Functions\7f298566
+Node: Vectors\7f301099
+Node: Vector Functions\7f302597
+Node: Bit Vectors\7f305168
+Node: Bit Vector Functions\7f306013
+Node: Symbols\7f308263
+Node: Symbol Components\7f309312
+Node: Definitions\7f313485
+Node: Creating Symbols\7f315710
+Node: Symbol Properties\7f322744
+Node: Plists and Alists\7f324271
+Node: Object Plists\7f326020
+Node: Other Plists\7f328780
+Node: Evaluation\7f330582
+Node: Intro Eval\7f331387
+Ref: Intro Eval-Footnote-1\7f334740
+Node: Eval\7f334875
+Node: Forms\7f339293
+Node: Self-Evaluating Forms\7f340452
+Node: Symbol Forms\7f341965
+Node: Classifying Lists\7f342882
+Node: Function Indirection\7f343638
+Node: Function Forms\7f346749
+Node: Macro Forms\7f347746
+Node: Special Forms\7f349346
+Node: Autoloading\7f351655
+Node: Quoting\7f352153
+Node: Control Structures\7f353514
+Node: Sequencing\7f355134
+Node: Conditionals\7f357999
+Node: Combining Conditions\7f361422
+Node: Iteration\7f364692
+Node: Nonlocal Exits\7f366471
+Node: Catch and Throw\7f367173
+Node: Examples of Catch\7f371012
+Node: Errors\7f373031
+Node: Signaling Errors\7f374520
+Node: Processing of Errors\7f379259
+Node: Handling Errors\7f381538
+Node: Error Symbols\7f388779
+Node: Cleanups\7f392735
+Node: Variables\7f396513
+Node: Global Variables\7f398282
+Node: Constant Variables\7f399358
+Node: Local Variables\7f399984
+Node: Void Variables\7f404921
+Node: Defining Variables\7f408437
+Node: Accessing Variables\7f415601
+Node: Setting Variables\7f417026
+Node: Variable Scoping\7f421545
+Node: Scope\7f423144
+Node: Extent\7f424669
+Node: Impl of Scope\7f426148
+Node: Using Scoping\7f428111
+Node: Buffer-Local Variables\7f429633
+Node: Intro to Buffer-Local\7f430469
+Node: Creating Buffer-Local\7f433012
+Node: Default Value\7f438231
+Node: Variable Aliases\7f441374
+Node: Functions\7f443159
+Node: What Is a Function\7f444253
+Node: Lambda Expressions\7f448299
+Node: Lambda Components\7f449209
+Node: Simple Lambda\7f451041
+Node: Argument List\7f452698
+Node: Function Documentation\7f456426
+Node: Function Names\7f458368
+Node: Defining Functions\7f460941
+Node: Calling Functions\7f463981
+Node: Mapping Functions\7f467830
+Node: Anonymous Functions\7f470518
+Node: Function Cells\7f473763
+Node: Inline Functions\7f478573
+Node: Related Topics\7f480383
+Node: Macros\7f481436
+Node: Simple Macro\7f482720
+Node: Expansion\7f483455
+Node: Compiling Macros\7f486459
+Node: Defining Macros\7f488295
+Node: Backquote\7f489612
+Node: Problems with Macros\7f492009
+Node: Argument Evaluation\7f492704
+Node: Surprising Local Vars\7f495619
+Node: Eval During Expansion\7f497687
+Node: Repeated Expansion\7f499380
+Node: Customization\7f501296
+Node: Common Keywords\7f501765
+Node: Group Definitions\7f504610
+Node: Variable Definitions\7f506802
+Node: Customization Types\7f511792
+Node: Simple Types\7f513227
+Node: Composite Types\7f515384
+Node: Splicing into Lists\7f520074
+Node: Type Keywords\7f521909
+Node: Loading\7f525429
+Node: How Programs Do Loading\7f527104
+Node: Autoload\7f536231
+Node: Repeated Loading\7f542310
+Node: Named Features\7f544423
+Node: Unloading\7f550855
+Node: Hooks for Loading\7f553011
+Node: Byte Compilation\7f553728
+Node: Speed of Byte-Code\7f555645
+Node: Compilation Functions\7f556852
+Node: Docs and Compilation\7f563239
+Node: Dynamic Loading\7f565892
+Node: Eval During Compile\7f568256
+Node: Compiled-Function Objects\7f569521
+Node: Disassembly\7f574319
+Node: Debugging\7f581573
+Node: Debugger\7f582985
+Node: Error Debugging\7f584130
+Node: Infinite Loops\7f586883
+Node: Function Debugging\7f588127
+Node: Explicit Debug\7f590917
+Node: Using Debugger\7f591688
+Node: Debugger Commands\7f593550
+Node: Invoking the Debugger\7f597867
+Node: Internals of Debugger\7f601782
+Node: Syntax Errors\7f606669
+Node: Excess Open\7f607917
+Node: Excess Close\7f609792
+Node: Compilation Errors\7f611213
+Node: Edebug\7f612501
+Node: Using Edebug\7f614609
+Node: Instrumenting\7f617306
+Node: Edebug Execution Modes\7f620795
+Node: Jumping\7f623905
+Node: Edebug Misc\7f626248
+Node: Breakpoints\7f627637
+Node: Global Break Condition\7f630443
+Node: Embedded Breakpoints\7f631398
+Node: Trapping Errors\7f632353
+Node: Edebug Views\7f634429
+Node: Edebug Eval\7f636394
+Node: Eval List\7f637571
+Node: Reading in Edebug\7f640956
+Node: Printing in Edebug\7f641755
+Node: Tracing\7f643470
+Node: Coverage Testing\7f645356
+Node: The Outside Context\7f647397
+Node: Checking Whether to Stop\7f648346
+Node: Edebug Display Update\7f648993
+Node: Edebug Recursive Edit\7f651016
+Node: Instrumenting Macro Calls\7f652671
+Node: Specification List\7f655153
+Node: Backtracking\7f664564
+Node: Debugging Backquote\7f666502
+Node: Specification Examples\7f670208
+Node: Edebug Options\7f672275
+Node: Read and Print\7f677612
+Node: Streams Intro\7f678589
+Node: Input Streams\7f680607
+Node: Input Functions\7f685508
+Node: Output Streams\7f687568
+Node: Output Functions\7f691619
+Node: Output Variables\7f695919
+Node: Minibuffers\7f700718
+Node: Intro to Minibuffers\7f701870
+Node: Text from Minibuffer\7f704058
+Node: Object from Minibuffer\7f709144
+Node: Minibuffer History\7f713239
+Node: Completion\7f716218
+Node: Basic Completion\7f718193
+Node: Minibuffer Completion\7f723222
+Node: Completion Commands\7f726799
+Node: High-Level Completion\7f731456
+Node: Reading File Names\7f736198
+Node: Programmed Completion\7f739890
+Node: Yes-or-No Queries\7f742272
+Node: Multiple Queries\7f748009
+Node: Reading a Password\7f752076
+Node: Minibuffer Misc\7f753413
+Node: Command Loop\7f758283
+Node: Command Overview\7f759627
+Node: Defining Commands\7f762905
+Node: Using Interactive\7f763653
+Node: Interactive Codes\7f768426
+Node: Interactive Examples\7f774218
+Node: Interactive Call\7f775532
+Node: Command Loop Info\7f780933
+Node: Events\7f785912
+Node: Event Types\7f787372
+Node: Event Contents\7f789295
+Node: Event Predicates\7f793771
+Node: Accessing Mouse Event Positions\7f795096
+Node: Frame-Level Event Position Info\7f795795
+Node: Window-Level Event Position Info\7f796835
+Node: Event Text Position Info\7f798599
+Node: Event Glyph Position Info\7f801091
+Node: Event Toolbar Position Info\7f802414
+Node: Other Event Position Info\7f803085
+Node: Accessing Other Event Info\7f803494
+Node: Working With Events\7f805114
+Node: Converting Events\7f811102
+Node: Reading Input\7f814054
+Node: Key Sequence Input\7f815056
+Node: Reading One Event\7f817010
+Node: Dispatching an Event\7f819827
+Node: Quoted Character Input\7f820278
+Node: Peeking and Discarding\7f821626
+Node: Waiting\7f825530
+Node: Quitting\7f827838
+Node: Prefix Command Arguments\7f832246
+Node: Recursive Editing\7f837333
+Node: Disabling Commands\7f842129
+Node: Command History\7f844197
+Node: Keyboard Macros\7f845934
+Node: Keymaps\7f848151
+Node: Keymap Terminology\7f849728
+Node: Format of Keymaps\7f852657
+Node: Creating Keymaps\7f853068
+Node: Inheritance and Keymaps\7f855147
+Node: Key Sequences\7f857519
+Node: Prefix Keys\7f862315
+Node: Active Keymaps\7f865900
+Node: Key Lookup\7f875221
+Node: Functions for Key Lookup\7f880384
+Node: Changing Key Bindings\7f886081
+Node: Key Binding Commands\7f892978
+Node: Scanning Keymaps\7f895043
+Node: Other Keymap Functions\7f903554
+Node: Menus\7f904176
+Node: Menu Format\7f904768
+Node: Menubar Format\7f913414
+Node: Menubar\7f914039
+Node: Modifying Menus\7f917152
+Node: Menu Filters\7f922166
+Node: Pop-Up Menus\7f924062
+Node: Menu Accelerators\7f926267
+Node: Creating Menu Accelerators\7f927023
+Node: Keyboard Menu Traversal\7f928383
+Node: Menu Accelerator Functions\7f929110
+Node: Buffers Menu\7f932187
+Node: Dialog Boxes\7f933481
+Node: Dialog Box Format\7f933648
+Node: Dialog Box Functions\7f935073
+Node: Toolbar\7f935470
+Node: Toolbar Intro\7f935791
+Node: Toolbar Descriptor Format\7f938200
+Node: Specifying the Toolbar\7f942694
+Node: Other Toolbar Variables\7f946299
+Node: Gutter\7f950725
+Node: Gutter Intro\7f951201
+Node: Gutter Descriptor Format\7f953198
+Node: Specifying a Gutter\7f957652
+Node: Other Gutter Variables\7f961185
+Node: Common Gutter Widgets\7f965570
+Node: Buffer Tabs\7f966562
+Node: Progress Bars\7f966703
+Node: Scrollbars\7f966848
+Node: Drag and Drop\7f966983
+Node: Supported Protocols\7f968059
+Node: OffiX DND\7f968562
+Node: CDE dt\7f969569
+Node: MSWindows OLE\7f970160
+Node: Loose ends\7f970331
+Node: Drop Interface\7f970723
+Node: Drag Interface\7f971745
+Node: Modes\7f971919
+Node: Major Modes\7f972870
+Node: Major Mode Conventions\7f975785
+Node: Example Major Modes\7f981740
+Node: Auto Major Mode\7f989773
+Node: Mode Help\7f997221
+Node: Derived Modes\7f998322
+Node: Minor Modes\7f1000513
+Node: Minor Mode Conventions\7f1001815
+Node: Keymaps and Minor Modes\7f1004678
+Node: Modeline Format\7f1005513
+Node: Modeline Data\7f1007281
+Node: Modeline Variables\7f1011551
+Node: %-Constructs\7f1016267
+Node: Hooks\7f1019178
+Node: Documentation\7f1025940
+Node: Documentation Basics\7f1027363
+Node: Accessing Documentation\7f1030413
+Node: Keys in Documentation\7f1036692
+Node: Describing Characters\7f1040171
+Node: Help Functions\7f1042520
+Node: Obsoleteness\7f1048971
+Node: Files\7f1051965
+Node: Visiting Files\7f1053890
+Node: Visiting Functions\7f1055395
+Node: Subroutines of Visiting\7f1060442
+Node: Saving Buffers\7f1062515
+Node: Reading from Files\7f1068608
+Node: Writing to Files\7f1070765
+Node: File Locks\7f1073482
+Node: Information about Files\7f1076535
+Node: Testing Accessibility\7f1077296
+Node: Kinds of Files\7f1081036
+Node: Truenames\7f1082717
+Node: File Attributes\7f1083719
+Node: Changing File Attributes\7f1088858
+Node: File Names\7f1094264
+Node: File Name Components\7f1095873
+Node: Directory Names\7f1098974
+Node: Relative File Names\7f1102427
+Node: File Name Expansion\7f1103505
+Node: Unique File Names\7f1107412
+Node: File Name Completion\7f1109027
+Node: User Name Completion\7f1111688
+Node: Contents of Directories\7f1113028
+Node: Create/Delete Dirs\7f1116341
+Node: Magic File Names\7f1117447
+Node: Partial Files\7f1123077
+Node: Intro to Partial Files\7f1123305
+Node: Creating a Partial File\7f1124545
+Node: Detached Partial Files\7f1125480
+Node: Format Conversion\7f1126602
+Node: Files and MS-DOS\7f1133118
+Node: Backups and Auto-Saving\7f1135182
+Node: Backup Files\7f1135857
+Node: Making Backups\7f1137254
+Node: Rename or Copy\7f1140003
+Node: Numbered Backups\7f1142496
+Node: Backup Names\7f1144731
+Node: Auto-Saving\7f1148023
+Node: Reverting\7f1156165
+Node: Buffers\7f1159323
+Node: Buffer Basics\7f1160740
+Node: Current Buffer\7f1162793
+Node: Buffer Names\7f1167481
+Node: Buffer File Name\7f1170686
+Node: Buffer Modification\7f1174805
+Node: Modification Time\7f1176998
+Node: Read Only Buffers\7f1180373
+Node: The Buffer List\7f1182791
+Node: Creating Buffers\7f1187621
+Node: Killing Buffers\7f1189767
+Node: Indirect Buffers\7f1193498
+Node: Windows\7f1196070
+Node: Basic Windows\7f1197548
+Node: Splitting Windows\7f1200646
+Node: Deleting Windows\7f1207535
+Node: Selecting Windows\7f1210215
+Node: Cyclic Window Ordering\7f1213344
+Node: Buffers and Windows\7f1217968
+Node: Displaying Buffers\7f1219809
+Node: Choosing Window\7f1224985
+Node: Window Point\7f1232701
+Node: Window Start\7f1234747
+Node: Vertical Scrolling\7f1239237
+Node: Horizontal Scrolling\7f1245374
+Node: Size of Window\7f1248883
+Node: Position of Window\7f1253601
+Node: Resizing Windows\7f1255841
+Node: Window Configurations\7f1261270
+Node: Frames\7f1264695
+Node: Creating Frames\7f1267036
+Node: Frame Properties\7f1268377
+Node: Property Access\7f1269193
+Node: Initial Properties\7f1270042
+Node: X Frame Properties\7f1272528
+Node: Size and Position\7f1277162
+Node: Frame Name\7f1279158
+Node: Frame Titles\7f1280072
+Node: Deleting Frames\7f1281896
+Node: Finding All Frames\7f1282496
+Node: Frames and Windows\7f1284490
+Node: Minibuffers and Frames\7f1286195
+Node: Input Focus\7f1287113
+Node: Visibility of Frames\7f1290190
+Node: Raising and Lowering\7f1292109
+Node: Frame Configurations\7f1294485
+Node: Frame Hooks\7f1295079
+Node: Consoles and Devices\7f1296884
+Node: Basic Console Functions\7f1299627
+Node: Basic Device Functions\7f1300050
+Node: Console Types and Device Classes\7f1300766
+Node: Connecting to a Console or Device\7f1302963
+Node: The Selected Console and Device\7f1305126
+Node: Console and Device I/O\7f1306152
+Node: Positions\7f1306916
+Node: Point\7f1307885
+Node: Motion\7f1310975
+Node: Character Motion\7f1311742
+Node: Word Motion\7f1313979
+Node: Buffer End Motion\7f1315480
+Node: Text Lines\7f1316977
+Node: Screen Lines\7f1321572
+Node: List Motion\7f1325635
+Node: Skipping Characters\7f1329043
+Node: Excursions\7f1331262
+Node: Narrowing\7f1334294
+Node: Markers\7f1339619
+Node: Overview of Markers\7f1340525
+Node: Predicates on Markers\7f1345217
+Node: Creating Markers\7f1346463
+Node: Information from Markers\7f1350500
+Node: Changing Markers\7f1351598
+Node: The Mark\7f1352976
+Node: The Region\7f1361470
+Node: Text\7f1367156
+Node: Near Point\7f1369855
+Node: Buffer Contents\7f1374042
+Node: Comparing Text\7f1375448
+Node: Insertion\7f1376856
+Node: Commands for Insertion\7f1380698
+Node: Deletion\7f1383654
+Node: User-Level Deletion\7f1387249
+Node: The Kill Ring\7f1391410
+Node: Kill Ring Concepts\7f1393584
+Node: Kill Functions\7f1394638
+Node: Yank Commands\7f1396543
+Node: Low-Level Kill Ring\7f1398414
+Node: Internals of Kill Ring\7f1401200
+Node: Undo\7f1403980
+Node: Maintaining Undo\7f1408309
+Node: Filling\7f1410929
+Node: Margins\7f1416923
+Node: Auto Filling\7f1420852
+Node: Sorting\7f1422033
+Node: Columns\7f1431333
+Node: Indentation\7f1433849
+Node: Primitive Indent\7f1434628
+Node: Mode-Specific Indent\7f1435872
+Node: Region Indent\7f1438383
+Node: Relative Indent\7f1441331
+Node: Indent Tabs\7f1443713
+Node: Motion by Indent\7f1445034
+Node: Case Changes\7f1445813
+Node: Text Properties\7f1449064
+Node: Examining Properties\7f1450877
+Node: Changing Properties\7f1452744
+Node: Property Search\7f1456335
+Node: Special Properties\7f1461046
+Node: Saving Properties\7f1461327
+Node: Substitution\7f1464469
+Node: Registers\7f1467739
+Node: Transposition\7f1470282
+Node: Change Hooks\7f1471176
+Node: Transformations\7f1473216
+Node: Searching and Matching\7f1477601
+Node: String Search\7f1478732
+Node: Regular Expressions\7f1483456
+Node: Syntax of Regexps\7f1484823
+Node: Regexp Example\7f1499202
+Node: Regexp Search\7f1501372
+Node: POSIX Regexps\7f1507460
+Node: Search and Replace\7f1509295
+Node: Match Data\7f1512660
+Node: Simple Match Data\7f1513790
+Node: Replacing Match\7f1518055
+Node: Entire Match Data\7f1520389
+Node: Saving Match Data\7f1522380
+Node: Searching and Case\7f1523761
+Node: Standard Regexps\7f1525795
+Node: Syntax Tables\7f1527993
+Node: Syntax Basics\7f1529107
+Node: Syntax Descriptors\7f1532079
+Node: Syntax Class Table\7f1533929
+Node: Syntax Flags\7f1539967
+Node: Syntax Table Functions\7f1543184
+Node: Motion and Syntax\7f1547048
+Node: Parsing Expressions\7f1548500
+Node: Standard Syntax Tables\7f1554569
+Node: Syntax Table Internals\7f1555413
+Node: Abbrevs\7f1556439
+Node: Abbrev Mode\7f1558242
+Node: Abbrev Tables\7f1558962
+Node: Defining Abbrevs\7f1560495
+Node: Abbrev Files\7f1562400
+Node: Abbrev Expansion\7f1564173
+Node: Standard Abbrev Tables\7f1568804
+Node: Extents\7f1569963
+Node: Intro to Extents\7f1571206
+Node: Creating and Modifying Extents\7f1575200
+Node: Extent Endpoints\7f1576707
+Node: Finding Extents\7f1579970
+Node: Mapping Over Extents\7f1583718
+Node: Extent Properties\7f1589835
+Node: Detached Extents\7f1599979
+Node: Extent Parents\7f1601838
+Node: Duplicable Extents\7f1603532
+Node: Extents and Events\7f1606753
+Node: Atomic Extents\7f1608660
+Node: Specifiers\7f1609107
+Node: Introduction to Specifiers\7f1611220
+Node: Specifiers In-Depth\7f1613530
+Node: Specifier Instancing\7f1618442
+Node: Specifier Types\7f1621704
+Node: Adding Specifications\7f1626778
+Node: Retrieving Specifications\7f1636140
+Node: Specifier Tag Functions\7f1639875
+Node: Specifier Instancing Functions\7f1643109
+Node: Specifier Example\7f1646516
+Node: Creating Specifiers\7f1649672
+Node: Specifier Validation Functions\7f1651921
+Node: Other Specification Functions\7f1654305
+Node: Faces and Window-System Objects\7f1658124
+Node: Faces\7f1658448
+Node: Merging Faces\7f1660065
+Node: Basic Face Functions\7f1662026
+Node: Face Properties\7f1664124
+Node: Face Convenience Functions\7f1674366
+Node: Other Face Display Functions\7f1677496
+Node: Fonts\7f1678309
+Node: Font Specifiers\7f1679010
+Node: Font Instances\7f1679251
+Node: Font Instance Names\7f1680218
+Node: Font Instance Size\7f1681059
+Node: Font Instance Characteristics\7f1682345
+Node: Font Convenience Functions\7f1683514
+Node: Colors\7f1684804
+Node: Color Specifiers\7f1685244
+Node: Color Instances\7f1685471
+Node: Color Instance Properties\7f1686215
+Node: Color Convenience Functions\7f1686841
+Node: Glyphs\7f1687894
+Node: Glyph Functions\7f1689486
+Node: Creating Glyphs\7f1689893
+Node: Glyph Properties\7f1691480
+Node: Glyph Convenience Functions\7f1700647
+Node: Glyph Dimensions\7f1704594
+Node: Images\7f1705674
+Node: Image Specifiers\7f1706123
+Node: Image Instantiator Conversion\7f1717472
+Node: Image Instances\7f1718837
+Node: Image Instance Types\7f1719588
+Node: Image Instance Functions\7f1722243
+Node: Glyph Types\7f1726812
+Node: Mouse Pointer\7f1728584
+Node: Redisplay Glyphs\7f1731587
+Node: Subwindows\7f1732620
+Node: Annotations\7f1732863
+Node: Annotation Basics\7f1733879
+Node: Annotation Primitives\7f1737817
+Node: Annotation Properties\7f1739146
+Node: Locating Annotations\7f1742186
+Node: Margin Primitives\7f1743023
+Node: Annotation Hooks\7f1744917
+Node: Display\7f1745577
+Node: Refresh Screen\7f1746555
+Node: Truncation\7f1748466
+Node: The Echo Area\7f1750991
+Node: Warnings\7f1757426
+Node: Invisible Text\7f1761862
+Node: Selective Display\7f1764441
+Node: Overlay Arrow\7f1768567
+Node: Temporary Displays\7f1769920
+Node: Blinking\7f1774041
+Node: Usual Display\7f1776226
+Node: Display Tables\7f1778775
+Node: Display Table Format\7f1779579
+Node: Active Display Table\7f1781021
+Node: Character Descriptors\7f1782213
+Node: Beeping\7f1782970
+Node: Hash Tables\7f1787736
+Node: Introduction to Hash Tables\7f1788344
+Node: Working With Hash Tables\7f1794367
+Node: Weak Hash Tables\7f1795484
+Node: Range Tables\7f1797283
+Node: Introduction to Range Tables\7f1797972
+Node: Working With Range Tables\7f1798403
+Node: Databases\7f1799288
+Node: Connecting to a Database\7f1799587
+Node: Working With a Database\7f1800678
+Node: Other Database Functions\7f1801536
+Node: Processes\7f1802110
+Node: Subprocess Creation\7f1804334
+Node: Synchronous Processes\7f1807623
+Node: MS-DOS Subprocesses\7f1814341
+Node: Asynchronous Processes\7f1815415
+Node: Deleting Processes\7f1819128
+Node: Process Information\7f1820999
+Node: Input to Processes\7f1824925
+Node: Signals to Processes\7f1827215
+Node: Output from Processes\7f1831635
+Node: Process Buffers\7f1832447
+Node: Filter Functions\7f1835314
+Node: Accepting Output\7f1840884
+Node: Sentinels\7f1842411
+Node: Process Window Size\7f1845901
+Node: Transaction Queues\7f1846250
+Node: Network\7f1847948
+Node: System Interface\7f1849782
+Node: Starting Up\7f1851052
+Node: Start-up Summary\7f1851646
+Node: Init File\7f1855200
+Node: Terminal-Specific\7f1857581
+Node: Command Line Arguments\7f1860740
+Node: Getting Out\7f1864229
+Node: Killing XEmacs\7f1864798
+Node: Suspending XEmacs\7f1866467
+Node: System Environment\7f1869809
+Node: User Identification\7f1876476
+Node: Time of Day\7f1880005
+Node: Time Conversion\7f1882792
+Node: Timers\7f1887832
+Node: Terminal Input\7f1890005
+Node: Input Modes\7f1890508
+Node: Translating Input\7f1892921
+Node: Recording Input\7f1897086
+Node: Terminal Output\7f1899186
+Node: Flow Control\7f1902809
+Node: Batch Mode\7f1906601
+Node: X-Windows\7f1907983
+Node: X Selections\7f1908854
+Node: X Server\7f1911064
+Node: Resources\7f1911515
+Node: Server Data\7f1916824
+Node: Grabs\7f1918031
+Node: X Miscellaneous\7f1919611
+Node: ToolTalk Support\7f1921996
+Node: XEmacs ToolTalk API Summary\7f1922213
+Node: Sending Messages\7f1923513
+Node: Example of Sending Messages\7f1923764
+Node: Elisp Interface for Sending Messages\7f1924826
+Node: Receiving Messages\7f1931218
+Node: Example of Receiving Messages\7f1931441
+Node: Elisp Interface for Receiving Messages\7f1932277
+Node: LDAP Support\7f1936102
+Node: Building XEmacs with LDAP support\7f1936596
+Node: XEmacs LDAP API\7f1937573
+Node: LDAP Variables\7f1938625
+Node: The High-Level LDAP API\7f1941225
+Node: The Low-Level LDAP API\7f1944688
+Node: The LDAP Lisp Object\7f1945519
+Node: Opening and Closing a LDAP Connection\7f1946072
+Node: Low-level Operations on a LDAP Server\7f1947872
+Node: LDAP Internationalization\7f1950566
+Node: LDAP Internationalization Variables\7f1951471
+Node: Encoder/Decoder Functions\7f1953200
+Node: Syntax of Search Filters\7f1954239
+Node: PostgreSQL Support\7f1955537
+Node: Building XEmacs with PostgreSQL support\7f1955932
+Node: XEmacs PostgreSQL libpq API\7f1957199
+Node: libpq Lisp Variables\7f1959074
+Node: libpq Lisp Symbols and DataTypes\7f1962038
+Node: Synchronous Interface Functions\7f1975278
+Node: Asynchronous Interface Functions\7f1979769
+Node: Large Object Support\7f1983270
+Node: Other libpq Functions\7f1983897
+Node: Unimplemented libpq Functions\7f1986932
+Node: XEmacs PostgreSQL libpq Examples\7f1992251
+Node: Internationalization\7f1998342
+Node: I18N Levels 1 and 2\7f1998685
+Node: I18N Level 3\7f1999391
+Node: Level 3 Basics\7f1999672
+Node: Level 3 Primitives\7f2000505
+Node: Dynamic Messaging\7f2002111
+Node: Domain Specification\7f2002574
+Node: Documentation String Extraction\7f2004477
+Node: I18N Level 4\7f2005395
+Node: MULE\7f2005587
+Node: Internationalization Terminology\7f2006636
+Node: Charsets\7f2018835
+Node: Charset Properties\7f2019531
+Node: Basic Charset Functions\7f2024246
+Node: Charset Property Functions\7f2026427
+Node: Predefined Charsets\7f2028469
+Node: MULE Characters\7f2031389
+Node: Composite Characters\7f2032236
+Node: Coding Systems\7f2033496
+Node: Coding System Types\7f2035636
+Node: ISO 2022\7f2039620
+Node: EOL Conversion\7f2051897
+Node: Coding System Properties\7f2053069
+Node: Basic Coding System Functions\7f2057386
+Node: Coding System Property Functions\7f2059420
+Node: Encoding and Decoding Text\7f2059978
+Node: Detection of Textual Encoding\7f2061114
+Node: Big5 and Shift-JIS Functions\7f2062650
+Node: Predefined Coding Systems\7f2063776
+Node: CCL\7f2075870
+Node: CCL Syntax\7f2078974
+Node: CCL Statements\7f2080550
+Node: CCL Expressions\7f2085198
+Node: Calling CCL\7f2087737
+Node: CCL Examples\7f2090726
+Node: Category Tables\7f2090863
+Node: Tips\7f2093221
+Node: Style Tips\7f2093862
+Node: Compilation Tips\7f2103381
+Node: Documentation Tips\7f2105295
+Node: Comment Tips\7f2110804
+Node: Library Headers\7f2113806
+Node: Building XEmacs and Object Allocation\7f2117778
+Node: Building XEmacs\7f2118661
+Node: Pure Storage\7f2124996
+Node: Garbage Collection\7f2127784
+Node: Standard Errors\7f2138923
+Node: Standard Buffer-Local Variables\7f2143132
+Node: Standard Keymaps\7f2145765
+Node: Standard Hooks\7f2149497
+Node: Index\7f2156997
 \1f
 End Tag Table
index e5d088c..1850e70 100644 (file)
@@ -1029,12 +1029,18 @@ XEmacs LDAP API
 * LDAP Variables::              Lisp variables related to LDAP
 * The High-Level LDAP API::     High-level LDAP lisp functions
 * The Low-Level LDAP API::      Low-level LDAP lisp primitives
+* LDAP Internationalization::   I18n variables and functions
 
 The Low-Level LDAP API
 
 * The LDAP Lisp Object::
 * Opening and Closing a LDAP Connection::
-* Searching on a LDAP Server (Low-level)::
+* Low-level Operations on a LDAP Server::
+
+LDAP Internationalization
+
+* LDAP Internationalization Variables::
+* Encoder/Decoder Functions::
 
 Internationalization
 
index 81838da..3b7ffdf 100644 (file)
@@ -10,9 +10,9 @@ END-INFO-DIR-ENTRY
 Indirect:
 xemacs-faq.info-1: 205
 xemacs-faq.info-2: 50086
-xemacs-faq.info-3: 99333
-xemacs-faq.info-4: 149327
-xemacs-faq.info-5: 196406
+xemacs-faq.info-3: 99259
+xemacs-faq.info-4: 149253
+xemacs-faq.info-5: 196332
 \1f
 Tag Table:
 (Indirect)
@@ -88,178 +88,178 @@ Node: Q2.1.21\7f90120
 Node: Q2.1.22\7f90313
 Node: Q2.1.23\7f91610
 Node: Q2.1.24\7f92278
-Node: Customization\7f92808
-Node: Q3.0.1\7f97646
-Node: Q3.0.2\7f98352
-Node: Q3.0.3\7f98916
-Node: Q3.0.4\7f99333
-Node: Q3.0.5\7f100166
-Node: Q3.0.6\7f100947
-Node: Q3.0.7\7f101527
-Node: Q3.0.8\7f102191
-Node: Q3.0.9\7f103149
-Node: Q3.1.1\7f103710
-Node: Q3.1.2\7f104447
-Node: Q3.1.3\7f104878
-Node: Q3.1.4\7f105067
-Node: Q3.1.5\7f105256
-Node: Q3.1.6\7f105640
-Node: Q3.1.7\7f106349
-Node: Q3.1.8\7f108573
-Node: Q3.2.1\7f109115
-Node: Q3.2.2\7f110768
-Node: Q3.2.3\7f111567
-Node: Q3.2.4\7f112169
-Node: Q3.2.5\7f113203
-Node: Q3.2.6\7f113670
-Node: Q3.3.1\7f114595
-Node: Q3.3.2\7f115025
-Node: Q3.3.3\7f115656
-Node: Q3.3.4\7f116037
-Node: Q3.3.5\7f117138
-Node: Q3.4.1\7f118632
-Node: Q3.4.2\7f119275
-Node: Q3.5.1\7f119787
-Node: Q3.5.2\7f121236
-Node: Q3.5.3\7f121654
-Node: Q3.5.4\7f122492
-Node: Q3.5.5\7f123324
-Node: Q3.5.6\7f124464
-Node: Q3.5.7\7f125454
-Node: Q3.5.8\7f126894
-Node: Q3.5.9\7f127641
-Node: Q3.5.10\7f128421
-Node: Q3.5.11\7f129057
-Node: Q3.6.1\7f129610
-Node: Q3.6.2\7f130355
-Node: Q3.6.3\7f130783
-Node: Q3.7.1\7f131283
-Node: Q3.7.2\7f132171
-Node: Q3.7.3\7f132830
-Node: Q3.7.4\7f133252
-Node: Q3.7.5\7f133595
-Node: Q3.7.6\7f134063
-Node: Q3.7.7\7f134778
-Node: Q3.7.8\7f135798
-Node: Q3.8.1\7f136217
-Node: Q3.8.2\7f136677
-Node: Q3.8.3\7f137140
-Node: Q3.8.4\7f137746
-Node: Q3.8.5\7f138465
-Node: Q3.9.1\7f139250
-Node: Q3.9.2\7f140190
-Node: Q3.9.3\7f140788
-Node: Q3.9.4\7f141450
-Node: Q3.10.1\7f142329
-Node: Q3.10.2\7f143147
-Node: Q3.10.3\7f144152
-Node: Q3.10.4\7f144880
-Node: Q3.10.5\7f145263
-Node: Subsystems\7f146315
-Node: Q4.0.1\7f148802
-Node: Q4.0.2\7f149327
-Node: Q4.0.3\7f149885
-Node: Q4.0.4\7f150206
-Node: Q4.0.5\7f150448
-Node: Q4.0.6\7f150679
-Node: Q4.0.7\7f151267
-Node: Q4.0.8\7f151592
-Node: Q4.0.9\7f152819
-Node: Q4.0.10\7f154857
-Node: Q4.0.11\7f155346
-Node: Q4.0.12\7f156224
-Node: Q4.1.1\7f157197
-Node: Q4.1.2\7f157600
-Node: Q4.1.3\7f157927
-Node: Q4.2.1\7f158236
-Node: Q4.2.2\7f158866
-Node: Q4.2.3\7f159106
-Node: Q4.2.4\7f159650
-Node: Q4.3.1\7f160303
-Node: Q4.3.2\7f160887
-Node: Q4.3.3\7f162368
-Node: Q4.3.4\7f162640
-Node: Q4.3.5\7f163317
-Node: Q4.4.1\7f163945
-Node: Q4.4.2\7f165431
-Node: Q4.5.1\7f166635
-Node: Q4.6.1\7f167404
-Node: Q4.7.1\7f172664
-Node: Q4.7.2\7f173619
-Node: Q4.7.3\7f173916
-Node: Q4.7.4\7f174102
-Node: Q4.7.5\7f174986
-Node: Q4.7.6\7f176627
-Node: Miscellaneous\7f176916
-Node: Q5.0.1\7f180333
-Node: Q5.0.2\7f181072
-Node: Q5.0.3\7f181926
-Node: Q5.0.4\7f182628
-Node: Q5.0.5\7f183567
-Node: Q5.0.6\7f185547
-Node: Q5.0.7\7f186204
-Node: Q5.0.8\7f186809
-Node: Q5.0.9\7f187328
-Node: Q5.0.10\7f187842
-Node: Q5.0.11\7f188090
-Node: Q5.0.12\7f188628
-Node: Q5.0.13\7f189545
-Node: Q5.0.14\7f190229
-Node: Q5.0.15\7f190994
-Node: Q5.0.16\7f191291
-Node: Q5.0.17\7f191803
-Node: Q5.0.18\7f192068
-Node: Q5.0.19\7f192262
-Node: Q5.0.20\7f192686
-Node: Q5.1.1\7f193601
-Node: Q5.1.2\7f195670
-Node: Q5.1.3\7f196406
-Node: Q5.1.4\7f199800
-Node: Q5.1.5\7f200335
-Node: Q5.1.6\7f202459
-Node: Q5.1.7\7f203945
-Node: Q5.1.8\7f205546
-Node: Q5.1.9\7f206098
-Node: Q5.1.10\7f206983
-Node: Q5.1.11\7f208114
-Node: Q5.2.1\7f208663
-Node: Q5.2.2\7f209233
-Node: Q5.2.3\7f209650
-Node: Q5.2.4\7f209885
-Node: Q5.3.1\7f210795
-Node: Q5.3.2\7f212016
-Node: Q5.3.3\7f212792
-Node: Q5.3.4\7f213276
-Node: Q5.3.5\7f213943
-Node: Q5.3.6\7f214812
-Node: Q5.3.7\7f215057
-Node: Q5.3.8\7f217247
-Node: Q5.3.9\7f217494
-Node: Q5.3.10\7f218447
-Node: Q5.3.11\7f220531
-Node: Q5.3.12\7f222122
-Node: MS Windows\7f223396
-Node: Q6.0.1\7f224873
-Node: Q6.0.2\7f225620
-Node: Q6.0.3\7f226085
-Node: Q6.0.4\7f226365
-Node: Q6.1.1\7f228644
-Node: Q6.1.2\7f229515
-Node: Q6.1.3\7f229796
-Node: Q6.1.4\7f230078
-Node: Q6.1.5\7f230456
-Node: Q6.1.6\7f231288
-Node: Q6.2.1\7f231872
-Node: Q6.2.2\7f232773
-Node: Q6.2.3\7f233185
-Node: Q6.3.1\7f233474
-Node: Q6.3.2\7f234568
-Node: Q6.3.3\7f237749
-Node: Q6.4.1\7f238018
-Node: Current Events\7f239106
-Node: Q7.0.1\7f239760
-Node: Q7.0.2\7f240399
-Node: Q7.0.3\7f241472
-Node: Q7.0.4\7f241700
+Node: Customization\7f92734
+Node: Q3.0.1\7f97572
+Node: Q3.0.2\7f98278
+Node: Q3.0.3\7f98842
+Node: Q3.0.4\7f99259
+Node: Q3.0.5\7f100092
+Node: Q3.0.6\7f100873
+Node: Q3.0.7\7f101453
+Node: Q3.0.8\7f102117
+Node: Q3.0.9\7f103075
+Node: Q3.1.1\7f103636
+Node: Q3.1.2\7f104373
+Node: Q3.1.3\7f104804
+Node: Q3.1.4\7f104993
+Node: Q3.1.5\7f105182
+Node: Q3.1.6\7f105566
+Node: Q3.1.7\7f106275
+Node: Q3.1.8\7f108499
+Node: Q3.2.1\7f109041
+Node: Q3.2.2\7f110694
+Node: Q3.2.3\7f111493
+Node: Q3.2.4\7f112095
+Node: Q3.2.5\7f113129
+Node: Q3.2.6\7f113596
+Node: Q3.3.1\7f114521
+Node: Q3.3.2\7f114951
+Node: Q3.3.3\7f115582
+Node: Q3.3.4\7f115963
+Node: Q3.3.5\7f117064
+Node: Q3.4.1\7f118558
+Node: Q3.4.2\7f119201
+Node: Q3.5.1\7f119713
+Node: Q3.5.2\7f121162
+Node: Q3.5.3\7f121580
+Node: Q3.5.4\7f122418
+Node: Q3.5.5\7f123250
+Node: Q3.5.6\7f124390
+Node: Q3.5.7\7f125380
+Node: Q3.5.8\7f126820
+Node: Q3.5.9\7f127567
+Node: Q3.5.10\7f128347
+Node: Q3.5.11\7f128983
+Node: Q3.6.1\7f129536
+Node: Q3.6.2\7f130281
+Node: Q3.6.3\7f130709
+Node: Q3.7.1\7f131209
+Node: Q3.7.2\7f132097
+Node: Q3.7.3\7f132756
+Node: Q3.7.4\7f133178
+Node: Q3.7.5\7f133521
+Node: Q3.7.6\7f133989
+Node: Q3.7.7\7f134704
+Node: Q3.7.8\7f135724
+Node: Q3.8.1\7f136143
+Node: Q3.8.2\7f136603
+Node: Q3.8.3\7f137066
+Node: Q3.8.4\7f137672
+Node: Q3.8.5\7f138391
+Node: Q3.9.1\7f139176
+Node: Q3.9.2\7f140116
+Node: Q3.9.3\7f140714
+Node: Q3.9.4\7f141376
+Node: Q3.10.1\7f142255
+Node: Q3.10.2\7f143073
+Node: Q3.10.3\7f144078
+Node: Q3.10.4\7f144806
+Node: Q3.10.5\7f145189
+Node: Subsystems\7f146241
+Node: Q4.0.1\7f148728
+Node: Q4.0.2\7f149253
+Node: Q4.0.3\7f149811
+Node: Q4.0.4\7f150132
+Node: Q4.0.5\7f150374
+Node: Q4.0.6\7f150605
+Node: Q4.0.7\7f151193
+Node: Q4.0.8\7f151518
+Node: Q4.0.9\7f152745
+Node: Q4.0.10\7f154783
+Node: Q4.0.11\7f155272
+Node: Q4.0.12\7f156150
+Node: Q4.1.1\7f157123
+Node: Q4.1.2\7f157526
+Node: Q4.1.3\7f157853
+Node: Q4.2.1\7f158162
+Node: Q4.2.2\7f158792
+Node: Q4.2.3\7f159032
+Node: Q4.2.4\7f159576
+Node: Q4.3.1\7f160229
+Node: Q4.3.2\7f160813
+Node: Q4.3.3\7f162294
+Node: Q4.3.4\7f162566
+Node: Q4.3.5\7f163243
+Node: Q4.4.1\7f163871
+Node: Q4.4.2\7f165357
+Node: Q4.5.1\7f166561
+Node: Q4.6.1\7f167330
+Node: Q4.7.1\7f172590
+Node: Q4.7.2\7f173545
+Node: Q4.7.3\7f173842
+Node: Q4.7.4\7f174028
+Node: Q4.7.5\7f174912
+Node: Q4.7.6\7f176553
+Node: Miscellaneous\7f176842
+Node: Q5.0.1\7f180259
+Node: Q5.0.2\7f180998
+Node: Q5.0.3\7f181852
+Node: Q5.0.4\7f182554
+Node: Q5.0.5\7f183493
+Node: Q5.0.6\7f185473
+Node: Q5.0.7\7f186130
+Node: Q5.0.8\7f186735
+Node: Q5.0.9\7f187254
+Node: Q5.0.10\7f187768
+Node: Q5.0.11\7f188016
+Node: Q5.0.12\7f188554
+Node: Q5.0.13\7f189471
+Node: Q5.0.14\7f190155
+Node: Q5.0.15\7f190920
+Node: Q5.0.16\7f191217
+Node: Q5.0.17\7f191729
+Node: Q5.0.18\7f191994
+Node: Q5.0.19\7f192188
+Node: Q5.0.20\7f192612
+Node: Q5.1.1\7f193527
+Node: Q5.1.2\7f195596
+Node: Q5.1.3\7f196332
+Node: Q5.1.4\7f199726
+Node: Q5.1.5\7f200261
+Node: Q5.1.6\7f202385
+Node: Q5.1.7\7f203871
+Node: Q5.1.8\7f205472
+Node: Q5.1.9\7f206024
+Node: Q5.1.10\7f206909
+Node: Q5.1.11\7f208040
+Node: Q5.2.1\7f208589
+Node: Q5.2.2\7f209159
+Node: Q5.2.3\7f209576
+Node: Q5.2.4\7f209811
+Node: Q5.3.1\7f210721
+Node: Q5.3.2\7f211942
+Node: Q5.3.3\7f212718
+Node: Q5.3.4\7f213202
+Node: Q5.3.5\7f213869
+Node: Q5.3.6\7f214738
+Node: Q5.3.7\7f214983
+Node: Q5.3.8\7f217173
+Node: Q5.3.9\7f217420
+Node: Q5.3.10\7f218373
+Node: Q5.3.11\7f220457
+Node: Q5.3.12\7f222048
+Node: MS Windows\7f223322
+Node: Q6.0.1\7f224799
+Node: Q6.0.2\7f225546
+Node: Q6.0.3\7f226011
+Node: Q6.0.4\7f226291
+Node: Q6.1.1\7f228570
+Node: Q6.1.2\7f229441
+Node: Q6.1.3\7f229722
+Node: Q6.1.4\7f230004
+Node: Q6.1.5\7f230382
+Node: Q6.1.6\7f231214
+Node: Q6.2.1\7f231798
+Node: Q6.2.2\7f232699
+Node: Q6.2.3\7f233111
+Node: Q6.3.1\7f233400
+Node: Q6.3.2\7f234494
+Node: Q6.3.3\7f237675
+Node: Q6.4.1\7f237944
+Node: Current Events\7f239032
+Node: Q7.0.1\7f239686
+Node: Q7.0.2\7f240325
+Node: Q7.0.3\7f241398
+Node: Q7.0.4\7f241626
 \1f
 End Tag Table
index b07abd2..fca60a8 100644 (file)
@@ -1095,8 +1095,6 @@ File: xemacs-faq.info,  Node: Q2.1.24,  Prev: Q2.1.23,  Up: Installation
 Q2.1.24:  XEmacs won't start without network. (NEW)
 ---------------------------------------------------
 
-   Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
-
    If XEmacs starts when you're on the network, but fails when you're
 not on the network, you may be missing a "localhost" entry in your
 `/etc/hosts' file.  The file should contain an entry like:
index 2615c4a..4204c58 100644 (file)
@@ -1,3 +1,19 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-19  Martin Buchholz  <martin@xemacs.org>
+
+       * gnuclient.c (initialize_signals): Always use full ANSI prototypes.
+
+2000-04-06  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+       * i.c: New file, source for the i utility.
+
+2000-03-22  Mike Alexander  <mta@arbortext.com>
+
+       * make-dump-id.c (gettimeofday): new (Windows only)
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
index b2f5c19..6d96b47 100644 (file)
@@ -121,7 +121,7 @@ pass_signal_to_emacs (int sig)
 }
 
 void
-initialize_signals ()
+initialize_signals (void)
 {
   /* Set up signal handler to pass relevant signals to emacs process.
      We used to send SIGSEGV, SIGBUS, SIGPIPE, SIGILL and others to
index dba2a9c..81df7da 100644 (file)
@@ -23,6 +23,26 @@ Boston, MA 02111-1307, USA.  */
 #include <stdlib.h>
 #include "../src/systime.h"
 
+#ifdef WINDOWSNT
+#include <sys/timeb.h>
+
+/* Emulate gettimeofday (Ulrich Leodolter, 1/11/95).  */
+void 
+gettimeofday (struct timeval *tv, struct timezone *tz)
+{
+  struct _timeb tb;
+  _ftime (&tb);
+
+  tv->tv_sec = tb.time;
+  tv->tv_usec = tb.millitm * 1000L;
+  if (tz) 
+    {
+      tz->tz_minuteswest = tb.timezone;        /* minutes west of Greenwich  */
+      tz->tz_dsttime = tb.dstflag;     /* type of dst correction  */
+    }
+}
+#endif
+
 /* Generates an (extremely) pseudo random number for the dump-id */
 static unsigned int
 generate_dump_id (void)
index f3de4f8..bc53514 100644 (file)
@@ -1,3 +1,354 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-29  Martin Buchholz  <martin@xemacs.org>
+
+       * dialog.el (yes-or-no-p-dialog-box): 
+       Fix docstring.
+       Fix following horrible bug in X11 mode with focus-follows-mouse: 
+         1. Visit two files in two different frames.
+         2. do File->Revert Buffer in one of those frames.
+         3. Dialog box appears.
+         4. Arrange things so that the mouse passes over the *other*
+            frame, then to the dialog box, and click on "Yes".
+         5. The file contents end up in the *wrong* buffer!
+       Add TODO comment.
+       
+2000-04-28  Ben Wing  <ben@xemacs.org>
+
+       * help.el (describe-installation): correct typo introduced
+       in last patch: boundp -> fboundp.
+
+       * etags.el (buffer-tag-table-list):
+       canonicalize filenames to Unix format so that tag-table-alist
+       searching works under Windows.
+       
+       * autoload.el:
+       Bowdlerize the supposedly objectionable words
+       "who couldn't quite manage to cleanly modify batch-update-autoloads".
+       
+       * gutter-items.el (set-progress-display-style):
+       * gutter-items.el (search-dialog-callback):
+       * gutter-items.el (make-search-dialog):
+       Change to new callback-ex api.
+
+2000-04-26  Björn Torkelsson  <torkel@hpc2n.umu.se>
+
+       * help.el: (describe-installation): decode-coding-string is not
+       defined in a non MULE environment.
+
+2000-04-28  Ben Wing  <ben@xemacs.org>
+
+       * gutter-items.el (buffer-list-changed-hook):
+       use it, not record-buffer-hook.
+
+       * subr.el (record-buffer-hook): Removed.
+
+2000-04-27  Ben Wing  <ben@xemacs.org>
+
+       * gutter-items.el (buffers-tab-switch-to-buffer): do not
+       use NORECORD option.  Andy will not like this, but the existing
+       gutter behavior is just wrong, as per this comment:
+
+       ;; this used to add the norecord flag to both calls below.
+        ;; this is bogus because it is a pervasive assumption in XEmacs
+        ;; that the current buffer is at the front of the buffers list.
+        ;; for example, select an item and then do M-C-l
+        ;; (switch-to-other-buffer).  Things get way confused.
+        ;;
+        ;; Andy, if you want to maintain the current look, you must
+        ;;  *uncouple* the gutter order and buffers order.
+
+       * loaddefs.el (completion-ignored-extensions): unfuckify.
+
+       * bytecomp.el (batch-byte-compile-one-file): new function, used in
+       xemacs.mak.
+
+       * autoload.el (batch-update-one-directory): new function, used in
+       xemacs.mak.
+
+       * loadup.el: set gc-cons-threshold very high unless dumping --
+       loadup during update-elc is much much much faster.  also do this
+       when quick-building.
+
+       add commented-out code for profiling loadup.
+       
+
+       * update-elc.el (preloaded-file-list): add bytecomp.el, since it
+       is required in order to build xemacs.
+
+2000-04-26  Ben Wing  <ben@xemacs.org>
+
+       * loadup.el: don't garbage collect during loadup if quick-build
+       compile-time option is set.
+
+2000-04-23  Ben Wing  <ben@xemacs.org>
+
+       * update-elc.el: compute whether any dumped .el or .elc files
+       are newer than the dumped exe, and touch the file ../src/NEEDTODUMP
+       if so.
+       
+       * update-elc.el (update-elc-files-to-compile): always change
+       NOBYTECOMPILE in the src directory rather than current dir,
+       so it will work under NT.
+
+       * autoload.el (autoload-trim-file-name): canonicalize to slashes so
+       the form of this file is identical between Unix and Windows.
+       (autoload-target-directory): Fixed to be lisp/ not lisp/prim/.
+       Added comment.
+       (update-autoloads-from-directory): updated doc string.
+       updated doc strings in a few other places.
+
+2000-04-18  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * bytecomp.el (byte-force-recompile): Fix argument to
+       byte-recompile-directory.
+
+2000-04-17  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * gutter-items.el (progress-display-clear-when-idle): Use
+       add-one-shot-hook.
+       * gutter-items.el (clear-progress-display): Adjust number of
+       arguments.
+
+2000-04-13  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * dumped-lisp.el (preloaded-file-list): Always dump select.el.
+
+2000-04-16  Ben Wing  <ben@xemacs.org>
+
+       * printer.el: New file.
+       
+       * dumped-lisp.el (preloaded-file-list): Declare printer.el.
+       
+       * help.el (describe-installation): Fix decoding for Windows.
+       
+       * menubar-items.el:
+       * menubar-items.el (default-menubar):
+       * menubar-items.el (tutorials-menu-filter): New.
+       * menubar-items.el (popup-menubar-menu):
+       Add authorship.  Redo Help menu and Tutorials filter.
+       
+       * menubar.el: Correct comment.
+       
+       * modeline.el (modeline-buffer-identification): Correct doc string.
+       
+       * simple.el:
+       * simple.el (printing): Removed.
+       * simple.el (printer-name): Removed.
+       * simple.el (generic-print-buffer): Removed.
+       * simple.el (generic-print-region): Removed.
+       Move generic print code to printer.el.
+
+2000-04-15  Ben Wing  <ben@xemacs.org>
+
+       * simple.el (generic-print-region): New.
+       make this function actually work.
+       (generic-print-buffer): call generic-print-region.
+
+2000-04-14  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (make-search-dialog): avoid unneccessary futzing
+       by using the new widget-callback-current-channel.
+       (search-dialog-callback): ditto.
+
+2000-04-12  Andy Piper  <andy@xemacs.org>
+
+       * gutter.el (default-gutter-position): moved from gutter-items.el.
+       (default-gutter-position-changed-hook): ditto.
+       (gutter-element-visibility-changed-hook): ditto.
+       (set-gutter-element): ditto.
+       (remove-gutter-element): ditto.
+       (set-gutter-element-visible-p): ditto. 
+       (gutter-element-visible-p): ditto.
+       (init-gutter): ditto.
+
+       * dialog.el (make-dialog-box): renamed and moved from
+       gutter-items.el
+
+       * gutter-items.el: move various functions elsewhere.
+
+2000-04-13  Katsumi Yamaoka  <yamaoka@jpl.org>
+
+       * menubar-items.el: Fixed place of parenthesis.
+
+2000-04-12  Ben Wing  <ben@xemacs.org>
+
+       * etags.el (find-tag-at-point): New.  Lets you do find-tag
+               without constantly being prompted for the tag.
+       * simple.el: Added a number of section headings, to clarify the
+               organization of this file.
+       * simple.el (activate-region): 
+       * simple.el (region-exists-p): 
+       * simple.el (region-active-p): 
+               Moved these three function down to the other side of
+               the case-changing functions, so they join the rest of
+               the region code.
+       * simple.el (printing): New.
+       * simple.el (printer-name): New.
+       * simple.el (generic-print-buffer): New.
+               New functions, a very simple prototype for a unified
+               printing interface.
+       
+       * process.el (call-process-internal): Real fix for null BUFFER,
+               other problems with BUFFER specs.
+       
+       * menubar-items.el:
+               Fixed up File->Print to use new printing functions.
+               Various corrections and expansions to Grep/Compile menus.
+               New options for Printing.
+               New options for SMTP Mail, the way to send mail under
+                 MS Windows. (There's also a package patch to make SMTP
+                 Mail be the default under MSWin.)
+
+2000-04-09  Jeff Miller <jmiller@cablespeed.com>
+
+       * menubar-items.el: Selecting Rectangle Mousing from menubar
+       did not work.  Needed to quote mouse-track-rectangle-p.
+
+2000-04-06  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * cl-compat.el (keywordp): Removed.
+
+2000-04-05  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (progress-layout-glyph): don't initialize here.
+       (progress-gauge-glyph): use dynamic sizing.
+       (set-progress-display-style): new function. Set progress glyphs
+       appropriately depending on the style.
+       (progress-display-style): new variable. Custom version of
+       set-progress-display-style.
+       (progress-abort-glyph): switch to dynamic sizes.
+       (search-dialog-text): make the edit field active.
+
+2000-04-04  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (make-search-dialog): need to make the search
+       dialog visible after creation.
+
+       * menubar-items.el (default-menubar): use the search dialog for
+       searching. Remove some extraneous search menu items.
+
+       * gutter-items.el (set-gutter-element): allow glyphs to be used as
+       well as strings.
+       (make-gutter-only-dialog-frame): allow the user to create the
+       frame unmapped. Allow the gutter spec to be given as a glyph.
+       (search-dialog-direction): new variable.
+       (search-dialog-text): new variable.
+       (search-dialog-callback): new function. Callback for the search
+       dialog action.
+       (make-search-dialog): new function. Create a user-friendly search
+       dialog.
+
+2000-04-04  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * faces.el (set-face-stipple): Use mswindows-bitmap-file-path
+       under Windows.
+
+2000-04-01  Andy Piper  <andy@xemacs.org>
+
+       * font-lock.el (font-lock-fontify-keywords-region): Calculate
+       progress more accurately.
+
+2000-02-02  Hirokazu FUKUI  <hfukui@sannet.ne.jp>
+
+       * finder.el (finder-compile-keywords): Process readable files only.
+       Because error in process of .#finder-inf.el when compile xemacs
+       with --with-clash-detection option.
+
+2000-03-31  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (append-progress-display): don't delay after a
+       successful font-lock.
+       (make-gutter-only-dialog-frame): new function. Allow users to
+       create gutter-only dialogs.
+
+2000-03-27  Mike Alexander  <mta@arbortext.com>
+
+       * process.el (call-process-internal): Handle a null BUFFER
+       parameter correctly.
+
+2000-03-28  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (abort-progress-display): put strings in the
+       gutter not extents.
+       (progress-layout-glyph): signal special 'quit callback.
+       (progress-display-quit-function): deleted.
+       (progress-display-stop-callback): deleted.
+       (progress-display-dispatch-command-events): deleted.
+       (append-progress-display): remove calls to
+       progress-display-dispatch-command-events.
+       (raw-append-progress-display): ditto.
+
+2000-03-23  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * faces.el (set-face-stipple): Rewrite to correctly handle PIXMAP
+       being a list.  Actually define `stipple-pixmap-p' which is used as
+       an error predicate.  Correctly handle PIXMAP being either relative
+       or absolute file name.
+
+2000-03-24  Andy Piper  <andy@xemacs.org>
+
+       * gutter-items.el (add-tab-to-gutter): use copy-sequence.
+       (abort-progress-display): ditto. Don't delete the created extent.
+       (raw-append-progress-display): ditto.
+       (progress-display-dispatch-non-command-events): new
+       function. Encapsulates what we want to do when no command input is
+       required.
+       (progress-display-dispatch-command-events): likewise, but disable
+       for now since it causes too many problems.
+       (append-progress-display): use them.
+       (raw-append-progress-display): ditto.
+       (default-gutter-position-changed-hook): set this rather than
+       default-gutter-position-changed.
+       (default-gutter-position-changed-hook): lambda with zero arguments
+       rather than one.
+       (raw-append-progress-display): trap errors in pending input since
+       allowing them to signal will hose the gauge well and
+       truly. Ideally we would like to delay these until we are more able
+       to cope.
+       (append-progress-display): ditto.
+
+2000-03-20  Jeff Miller <jmiller@cablespeed.com>
+       
+       * lisp/make-docfile.el: call-process-internal is now implemented
+       in process.el.
+
+2000-03-21  Ben Wing  <ben@xemacs.org>
+
+       * mule\mule-cmds.el (set-language-info-alist): 
+       Fix to correspond to new menu arrangement.
+
+2000-03-21  Ben Wing  <ben@xemacs.org>
+
+       * process.el:
+       * process.el (call-process-internal): New.
+       New implementation of call-process.  Only enabled under NT, so far.
+       stderr handling not implemented yet in CVS'd C code.
+
+2000-03-20  Ben Wing  <ben@xemacs.org>
+
+       * lisp-mode.el:
+       * lisp-mode.el (lisp-interaction-mode-menubar-menu): New.
+       * lisp-mode.el (lisp-interaction-mode):
+       Put back Lisp Interaction menubar for Jan V's sake.
+       
+       * simple.el:
+       * simple.el (mark-ring):
+       * simple.el (dont-record-current-mark): New.
+       * simple.el (in-shifted-motion-command): New.
+       * simple.el (mark-ring-unrecorded-commands): New.
+       * simple.el (mark-ring-max):
+       * simple.el (set-mark-command):
+       * simple.el (push-mark):
+       * simple.el (handle-pre-motion-command):
+       Implement scheme for not recording unimportant marks.
+       
+       * subr.el:
+       * subr.el (function-allows-args): New.
+       New function function-allows-args.
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
 
        * minibuf.el (read-variable): Allow symbol to default argument.
 
->>>>>>> 1.156.2.301
 2000-02-27  Andy Piper  <andy@xemacs.org>
 
        * gutter-items.el (update-tab-hook): new function to be used for
index 8a9b351..5447edf 100644 (file)
@@ -1,81 +1,7 @@
 ;;; DO NOT MODIFY THIS FILE
 (if (featurep 'lisp-autoloads) (error "Already loaded"))
 \f
-;;;### (autoloads nil "abbrev" "lisp/abbrev.el")
-
-;;;***
-\f
-;;;### (autoloads (about-xemacs) "about" "lisp/about.el")
-
-(autoload 'about-xemacs "about" "\
-Describe the True Editor and its minions." t nil)
-
-;;;***
-\f
-;;;### (autoloads (set-modified-alist modify-alist remove-alist set-alist del-alist put-alist vassoc) "alist" "lisp/alist.el")
-
-(autoload 'vassoc "alist" "\
-Search VALIST for a vector whose first element is equal to KEY.
-See also `assoc'." nil nil)
-
-(autoload 'put-alist "alist" "\
-Modify ALIST to set VALUE to ITEM.
-If there is a pair whose car is ITEM, replace its cdr by VALUE.
-If there is not such pair, create new pair (ITEM . VALUE) and
-return new alist whose car is the new pair and cdr is ALIST.
-[tomo's ELIS like function]" nil nil)
-
-(autoload 'del-alist "alist" "\
-If there is a pair whose key is ITEM, delete it from ALIST.
-[tomo's ELIS emulating function]" nil nil)
-
-(autoload 'set-alist "alist" "\
-Modify a alist indicated by SYMBOL to set VALUE to ITEM." nil nil)
-
-(autoload 'remove-alist "alist" "\
-Remove ITEM from the alist indicated by SYMBOL." nil nil)
-
-(autoload 'modify-alist "alist" "\
-Modify alist DEFAULT into alist MODIFIER." nil nil)
-
-(autoload 'set-modified-alist "alist" "\
-Modify a value of a symbol SYM into alist MODIFIER.
-The symbol SYM should be alist. If it is not bound,
-its value regard as nil." nil nil)
-
-;;;***
-\f
-;;;### (autoloads (apropos-documentation apropos-value apropos apropos-command) "apropos" "lisp/apropos.el")
-
-(fset 'command-apropos 'apropos-command)
-
-(autoload 'apropos-command "apropos" "\
-Shows commands (interactively callable functions) that match REGEXP.
-With optional prefix ARG or if `apropos-do-all' is non-nil, also show
-variables." t nil)
-
-(autoload 'apropos "apropos" "\
-Show all bound symbols whose names match REGEXP.
-With optional prefix ARG or if `apropos-do-all' is non-nil, also show unbound
-symbols and key bindings, which is a little more time-consuming.
-Returns list of symbols and documentation found." t nil)
-
-(autoload 'apropos-value "apropos" "\
-Show all symbols whose value's printed image matches REGEXP.
-With optional prefix ARG or if `apropos-do-all' is non-nil, also looks
-at the function and at the names and values of properties.
-Returns list of symbols and values found." t nil)
-
-(autoload 'apropos-documentation "apropos" "\
-Show symbols whose documentation contain matches for REGEXP.
-With optional prefix ARG or if `apropos-do-all' is non-nil, also use
-documentation that is not stored in the documentation file and show key
-bindings.
-Returns list of symbols and documentation found." t nil)
-
-;;;***
-\f
-;;;### (autoloads (batch-update-directory batch-update-autoloads update-autoloads-from-directory update-autoloads-here update-file-autoloads generate-file-autoloads) "autoload" "lisp/autoload.el")
+;;;### (autoloads (batch-update-one-directory batch-update-directory batch-update-autoloads update-autoloads-from-directory update-autoloads-here update-file-autoloads generate-file-autoloads) "autoload" "lisp/autoload.el")
 
 (autoload 'generate-file-autoloads "autoload" "\
 Insert at point a loaddefs autoload section for FILE.
@@ -95,7 +21,9 @@ Update sections of the current buffer generated by `update-file-autoloads'." t n
 (autoload 'update-autoloads-from-directory "autoload" "\
 Update `generated-autoload-file' with all the current autoloads from DIR.
 This runs `update-file-autoloads' on each .el file in DIR.
-Obsolete autoload entries for files that no longer exist are deleted." t nil)
+Obsolete autoload entries for files that no longer exist are deleted.
+Note that, if this function is called from `batch-update-directory',
+`generated-autoload-file' was rebound in that function." t nil)
 
 (autoload 'batch-update-autoloads "autoload" "\
 Update the autoloads for the files or directories on the command line.
@@ -107,21 +35,18 @@ The directory to which the auto-autoloads.el file must be the first parameter
 on the command line." nil nil)
 
 (autoload 'batch-update-directory "autoload" "\
-Update the autoloads for the directory on the command line.
-Runs `update-file-autoloads' on each file in the given directory, must
-be used only with -batch and kills XEmacs on completion." nil nil)
-
-;;;***
-\f
-;;;### (autoloads nil "buff-menu" "lisp/buff-menu.el")
-
-(defvar list-buffers-directory nil)
+Update the autoloads for the directories on the command line.
+Runs `update-file-autoloads' on each file in the given directory, and must
+be used only with -batch." nil nil)
 
-(make-variable-buffer-local 'list-buffers-directory)
+(autoload 'batch-update-one-directory "autoload" "\
+Update the autoloads for a single directory on the command line.
+Runs `update-file-autoloads' on each file in the given directory, and must
+be used only with -batch." nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (batch-byte-recompile-directory batch-byte-recompile-directory-norecurse batch-byte-compile display-call-tree byte-compile-sexp byte-compile compile-defun byte-compile-buffer byte-compile-and-load-file byte-compile-file byte-recompile-file byte-recompile-directory byte-force-recompile) "bytecomp" "lisp/bytecomp.el")
+;;;### (autoloads (batch-byte-recompile-directory batch-byte-recompile-directory-norecurse batch-byte-compile-one-file batch-byte-compile display-call-tree byte-compile-sexp byte-compile compile-defun byte-compile-buffer byte-compile-and-load-file byte-compile-file byte-recompile-file byte-recompile-directory byte-force-recompile) "bytecomp" "lisp/bytecomp.el")
 
 (autoload 'byte-force-recompile "bytecomp" "\
 Recompile every `.el' file in DIRECTORY that already has a `.elc' file.
@@ -198,6 +123,11 @@ it won't work in an interactive Emacs.
 Each file is processed even if an error occurred previously.
 For example, invoke \"xemacs -batch -f batch-byte-compile $emacs/ ~/*.el\"" nil nil)
 
+(autoload 'batch-byte-compile-one-file "bytecomp" "\
+Run `byte-compile-file' on a single file remaining on the command line.
+Use this from the command line, with `-batch';
+it won't work in an interactive Emacs." nil nil)
+
 (autoload 'batch-byte-recompile-directory-norecurse "bytecomp" "\
 Same as `batch-byte-recompile-directory' but without recursion." nil nil)
 
@@ -208,1612 +138,1679 @@ For example, invoke `xemacs -batch -f batch-byte-recompile-directory .'." nil ni
 
 ;;;***
 \f
-;;;### (autoloads (compiler-macroexpand define-compiler-macro ignore-file-errors ignore-errors assert check-type typep deftype cl-struct-setf-expander defstruct define-modify-macro callf2 callf letf* letf rotatef shiftf remf cl-do-pop psetf setf get-setf-method defsetf define-setf-method declare the locally multiple-value-setq multiple-value-bind lexical-let* lexical-let symbol-macrolet macrolet labels flet progv psetq do-all-symbols do-symbols dotimes dolist do* do loop return-from return block etypecase typecase ecase case load-time-value eval-when destructuring-bind function* defmacro* defun* gentemp gensym cl-compile-time-init) "cl-macs" "lisp/cl-macs.el")
+;;;### (autoloads (pop-tag-mark tags-apropos list-tags tags-query-replace tags-search tags-loop-continue next-file tag-complete-symbol find-tag-other-window find-tag find-tag-at-point visit-tags-table) "etags" "lisp/etags.el")
 
-(autoload 'cl-compile-time-init "cl-macs" nil nil nil)
+(autoload 'visit-tags-table "etags" "\
+Tell tags commands to use tags table file FILE when all else fails.
+FILE should be the name of a file created with the `etags' program.
+A directory name is ok too; it means file TAGS in that directory." t nil)
 
-(autoload 'gensym "cl-macs" "\
-Generate a new uninterned symbol.
-The name is made by appending a number to PREFIX, default \"G\"." nil nil)
+(autoload 'find-tag-at-point "etags" "\
+*Find tag whose name contains TAGNAME.
+Identical to `find-tag' but does not prompt for tag when called interactively;
+instead, uses tag around or before point." t nil)
 
-(autoload 'gentemp "cl-macs" "\
-Generate a new interned symbol with a unique name.
-The name is made by appending a number to PREFIX, default \"G\"." nil nil)
+(autoload 'find-tag "etags" "\
+*Find tag whose name contains TAGNAME.
+ Selects the buffer that the tag is contained in
+and puts point at its definition.
+ If TAGNAME is a null string, the expression in the buffer
+around or before point is used as the tag name.
+ If called interactively with a numeric argument, searches for the next tag
+in the tag table that matches the tagname used in the previous find-tag.
+ If second arg OTHER-WINDOW is non-nil, uses another window to display
+the tag.
 
-(autoload 'defun* "cl-macs" "\
-(defun* NAME ARGLIST [DOCSTRING] BODY...): define NAME as a function.
-Like normal `defun', except ARGLIST allows full Common Lisp conventions,
-and BODY is implicitly surrounded by (block NAME ...)." nil 'macro)
+This version of this function supports multiple active tags tables,
+and completion.
 
-(autoload 'defmacro* "cl-macs" "\
-(defmacro* NAME ARGLIST [DOCSTRING] BODY...): define NAME as a macro.
-Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
-and BODY is implicitly surrounded by (block NAME ...)." nil 'macro)
+Variables of note:
 
-(autoload 'function* "cl-macs" "\
-(function* SYMBOL-OR-LAMBDA): introduce a function.
-Like normal `function', except that if argument is a lambda form, its
-ARGLIST allows full Common Lisp conventions." nil 'macro)
+  tag-table-alist              controls which tables apply to which buffers
+  tags-file-name               a default tags table
+  tags-build-completion-table   controls completion behavior
+  buffer-tag-table             another way of specifying a buffer-local table
+  make-tags-files-invisible    whether tags tables should be very hidden
+  tag-mark-stack-max           how many tags-based hops to remember" t nil)
 
-(autoload 'destructuring-bind "cl-macs" nil nil 'macro)
+(autoload 'find-tag-other-window "etags" "\
+*Find tag whose name contains TAGNAME, in another window.
+ Selects the buffer that the tag is contained in in another window
+and puts point at its definition.
+ If TAGNAME is a null string, the expression in the buffer
+around or before point is used as the tag name.
+ If second arg NEXT is non-nil (interactively, with prefix arg),
+searches for the next tag in the tag table
+that matches the tagname used in the previous find-tag.
 
-(autoload 'eval-when "cl-macs" "\
-(eval-when (WHEN...) BODY...): control when BODY is evaluated.
-If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
-If `load' is in WHEN, BODY is evaluated when loaded after top-level compile.
-If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level." nil 'macro)
+This version of this function supports multiple active tags tables,
+and completion.
 
-(autoload 'load-time-value "cl-macs" "\
-Like `progn', but evaluates the body at load time.
-The result of the body appears to the compiler as a quoted constant." nil 'macro)
+Variables of note:
 
-(autoload 'case "cl-macs" "\
-(case EXPR CLAUSES...): evals EXPR, chooses from CLAUSES on that value.
-Each clause looks like (KEYLIST BODY...).  EXPR is evaluated and compared
-against each key in each KEYLIST; the corresponding BODY is evaluated.
-If no clause succeeds, case returns nil.  A single atom may be used in
-place of a KEYLIST of one atom.  A KEYLIST of `t' or `otherwise' is
-allowed only in the final clause, and matches if no other keys match.
-Key values are compared by `eql'." nil 'macro)
+  tag-table-alist              controls which tables apply to which buffers
+  tags-file-name               a default tags table
+  tags-build-completion-table   controls completion behavior
+  buffer-tag-table             another way of specifying a buffer-local table
+  make-tags-files-invisible    whether tags tables should be very hidden
+  tag-mark-stack-max           how many tags-based hops to remember" t nil)
 
-(autoload 'ecase "cl-macs" "\
-(ecase EXPR CLAUSES...): like `case', but error if no case fits.
-`otherwise'-clauses are not allowed." nil 'macro)
+(autoload 'tag-complete-symbol "etags" "\
+The function used to do tags-completion (using 'tag-completion-predicate)." t nil)
 
-(autoload 'typecase "cl-macs" "\
-(typecase EXPR CLAUSES...): evals EXPR, chooses from CLAUSES on that value.
-Each clause looks like (TYPE BODY...).  EXPR is evaluated and, if it
-satisfies TYPE, the corresponding BODY is evaluated.  If no clause succeeds,
-typecase returns nil.  A TYPE of `t' or `otherwise' is allowed only in the
-final clause, and matches if no other keys match." nil 'macro)
+(autoload 'next-file "etags" "\
+Select next file among files in current tag table(s).
 
-(autoload 'etypecase "cl-macs" "\
-(etypecase EXPR CLAUSES...): like `typecase', but error if no case fits.
-`otherwise'-clauses are not allowed." nil 'macro)
+A first argument of t (prefix arg, if interactive) initializes to the
+beginning of the list of files in the (first) tags table.  If the argument
+is neither nil nor t, it is evalled to initialize the list of files.
 
-(autoload 'block "cl-macs" "\
-(block NAME BODY...): define a lexically-scoped block named NAME.
-NAME may be any symbol.  Code inside the BODY forms can call `return-from'
-to jump prematurely out of the block.  This differs from `catch' and `throw'
-in two respects:  First, the NAME is an unevaluated symbol rather than a
-quoted symbol or other form; and second, NAME is lexically rather than
-dynamically scoped:  Only references to it within BODY will work.  These
-references may appear inside macro expansions, but not inside functions
-called from BODY." nil 'macro)
+Non-nil second argument NOVISIT means use a temporary buffer
+to save time and avoid uninteresting warnings.
 
-(autoload 'return "cl-macs" "\
-(return [RESULT]): return from the block named nil.
-This is equivalent to `(return-from nil RESULT)'." nil 'macro)
+Value is nil if the file was already visited;
+if the file was newly read in, the value is the filename." t nil)
 
-(autoload 'return-from "cl-macs" "\
-(return-from NAME [RESULT]): return from the block named NAME.
-This jumps out to the innermost enclosing `(block NAME ...)' form,
-returning RESULT from that form (or nil if RESULT is omitted).
-This is compatible with Common Lisp, but note that `defun' and
-`defmacro' do not create implicit blocks as they do in Common Lisp." nil 'macro)
+(autoload 'tags-loop-continue "etags" "\
+Continue last \\[tags-search] or \\[tags-query-replace] command.
+Used noninteractively with non-nil argument to begin such a command (the
+argument is passed to `next-file', which see).
+Two variables control the processing we do on each file:
+the value of `tags-loop-scan' is a form to be executed on each file
+to see if it is interesting (it returns non-nil if so)
+and `tags-loop-operate' is a form to execute to operate on an interesting file
+If the latter returns non-nil, we exit; otherwise we scan the next file." t nil)
 
-(autoload 'loop "cl-macs" "\
-(loop CLAUSE...): The Common Lisp `loop' macro.
-Valid clauses are:
-  for VAR from/upfrom/downfrom NUM to/upto/downto/above/below NUM by NUM,
-  for VAR in LIST by FUNC, for VAR on LIST by FUNC, for VAR = INIT then EXPR,
-  for VAR across ARRAY, repeat NUM, with VAR = INIT, while COND, until COND,
-  always COND, never COND, thereis COND, collect EXPR into VAR,
-  append EXPR into VAR, nconc EXPR into VAR, sum EXPR into VAR,
-  count EXPR into VAR, maximize EXPR into VAR, minimize EXPR into VAR,
-  if COND CLAUSE [and CLAUSE]... else CLAUSE [and CLAUSE...],
-  unless COND CLAUSE [and CLAUSE]... else CLAUSE [and CLAUSE...],
-  do EXPRS..., initially EXPRS..., finally EXPRS..., return EXPR,
-  finally return EXPR, named NAME." nil 'macro)
+(autoload 'tags-search "etags" "\
+Search through all files listed in tags table for match for REGEXP.
+Stops when a match is found.
+To continue searching for next match, use command \\[tags-loop-continue].
 
-(autoload 'do "cl-macs" "\
-The Common Lisp `do' loop.
-Format is: (do ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil 'macro)
+See documentation of variable `tag-table-alist'." t nil)
 
-(autoload 'do* "cl-macs" "\
-The Common Lisp `do*' loop.
-Format is: (do* ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil 'macro)
+(autoload 'tags-query-replace "etags" "\
+Query-replace-regexp FROM with TO through all files listed in tags table.
+Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
+If you exit (\\[keyboard-quit] or ESC), you can resume the query-replace
+with the command \\[tags-loop-continue].
 
-(autoload 'dolist "cl-macs" "\
-(dolist (VAR LIST [RESULT]) BODY...): loop over a list.
-Evaluate BODY with VAR bound to each `car' from LIST, in turn.
-Then evaluate RESULT to get return value, default nil." nil 'macro)
+See documentation of variable `tag-table-alist'." t nil)
 
-(autoload 'dotimes "cl-macs" "\
-(dotimes (VAR COUNT [RESULT]) BODY...): loop a certain number of times.
-Evaluate BODY with VAR bound to successive integers from 0, inclusive,
-to COUNT, exclusive.  Then evaluate RESULT to get return value, default
-nil." nil 'macro)
+(autoload 'list-tags "etags" "\
+Display list of tags in FILE." t nil)
 
-(autoload 'do-symbols "cl-macs" "\
-(dosymbols (VAR [OBARRAY [RESULT]]) BODY...): loop over all symbols.
-Evaluate BODY with VAR bound to each interned symbol, or to each symbol
-from OBARRAY." nil 'macro)
+(autoload 'tags-apropos "etags" "\
+Display list of all tags in tag table REGEXP matches." t nil)
+(define-key esc-map "*" 'pop-tag-mark)
 
-(autoload 'do-all-symbols "cl-macs" nil nil 'macro)
+(autoload 'pop-tag-mark "etags" "\
+Go to last tag position.
+`find-tag' maintains a mark-stack seperate from the \\[set-mark-command] mark-stack.
+This function pops (and moves to) the tag at the top of this stack." t nil)
 
-(autoload 'psetq "cl-macs" "\
-(psetq SYM VAL SYM VAL ...): set SYMs to the values VALs in parallel.
-This is like `setq', except that all VAL forms are evaluated (in order)
-before assigning any symbols SYM to the corresponding values." nil 'macro)
-
-(autoload 'progv "cl-macs" "\
-(progv SYMBOLS VALUES BODY...): bind SYMBOLS to VALUES dynamically in BODY.
-The forms SYMBOLS and VALUES are evaluated, and must evaluate to lists.
-Each SYMBOL in the first list is bound to the corresponding VALUE in the
-second list (or made unbound if VALUES is shorter than SYMBOLS); then the
-BODY forms are executed and their result is returned.  This is much like
-a `let' form, except that the list of symbols can be computed at run-time." nil 'macro)
+;;;***
+\f
+;;;### (autoloads (finder-by-keyword) "finder" "lisp/finder.el")
 
-(autoload 'flet "cl-macs" "\
-(flet ((FUNC ARGLIST BODY...) ...) FORM...): make temporary function defns.
-This is an analogue of `let' that operates on the function cell of FUNC
-rather than its value cell.  The FORMs are evaluated with the specified
-function definitions in place, then the definitions are undone (the FUNCs
-go back to their previous definitions, or lack thereof)." nil 'macro)
+(autoload 'finder-by-keyword "finder" "\
+Find packages matching a given keyword." t nil)
 
-(autoload 'labels "cl-macs" "\
-(labels ((FUNC ARGLIST BODY...) ...) FORM...): make temporary func bindings.
-This is like `flet', except the bindings are lexical instead of dynamic.
-Unlike `flet', this macro is fully compliant with the Common Lisp standard." nil 'macro)
+;;;***
+\f
+;;;### (autoloads (font-lock-set-defaults-1 font-lock-fontify-buffer turn-off-font-lock turn-on-font-lock font-lock-mode) "font-lock" "lisp/font-lock.el")
 
-(autoload 'macrolet "cl-macs" "\
-(macrolet ((NAME ARGLIST BODY...) ...) FORM...): make temporary macro defns.
-This is like `flet', but for macros instead of functions." nil 'macro)
+(defcustom font-lock-auto-fontify t "*Whether font-lock should automatically fontify files as they're loaded.\nThis will only happen if font-lock has fontifying keywords for the major\nmode of the file.  You can get finer-grained control over auto-fontification\nby using this variable in combination with `font-lock-mode-enable-list' or\n`font-lock-mode-disable-list'." :type 'boolean :group 'font-lock)
 
-(autoload 'symbol-macrolet "cl-macs" "\
-(symbol-macrolet ((NAME EXPANSION) ...) FORM...): make symbol macro defns.
-Within the body FORMs, references to the variable NAME will be replaced
-by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...)." nil 'macro)
+(defcustom font-lock-mode-enable-list nil "*List of modes to auto-fontify, if `font-lock-auto-fontify' is nil." :type '(repeat (symbol :tag "Mode")) :group 'font-lock)
 
-(autoload 'lexical-let "cl-macs" "\
-(lexical-let BINDINGS BODY...): like `let', but lexically scoped.
-The main visible difference is that lambdas inside BODY will create
-lexical closures as in Common Lisp." nil 'macro)
+(defcustom font-lock-mode-disable-list nil "*List of modes not to auto-fontify, if `font-lock-auto-fontify' is t." :type '(repeat (symbol :tag "Mode")) :group 'font-lock)
 
-(autoload 'lexical-let* "cl-macs" "\
-(lexical-let* BINDINGS BODY...): like `let*', but lexically scoped.
-The main visible difference is that lambdas inside BODY will create
-lexical closures as in Common Lisp." nil 'macro)
+(defcustom font-lock-use-colors '(color) "*Specification for when Font Lock will set up color defaults.\nNormally this should be '(color), meaning that Font Lock will set up\ncolor defaults that are only used on color displays.  Set this to nil\nif you don't want Font Lock to set up color defaults at all.  This\nshould be one of\n\n-- a list of valid tags, meaning that the color defaults will be used\n   when all of the tags apply. (e.g. '(color x))\n-- a list whose first element is 'or and whose remaining elements are\n   lists of valid tags, meaning that the defaults will be used when\n   any of the tag lists apply.\n-- nil, meaning that the defaults should not be set up at all.\n\n(If you specify face values in your init file, they will override any\nthat Font Lock specifies, regardless of whether you specify the face\nvalues before or after loading Font Lock.)\n\nSee also `font-lock-use-fonts'.  If you want more control over the faces\nused for fontification, see the documentation of `font-lock-mode' for\nhow to do it." :type 'sexp :group 'font-lock)
 
-(autoload 'multiple-value-bind "cl-macs" "\
-(multiple-value-bind (SYM SYM...) FORM BODY): collect multiple return values.
-FORM must return a list; the BODY is then executed with the first N elements
-of this list bound (`let'-style) to each of the symbols SYM in turn.  This
-is analogous to the Common Lisp `multiple-value-bind' macro, using lists to
-simulate true multiple return values.  For compatibility, (values A B C) is
-a synonym for (list A B C)." nil 'macro)
+(defcustom font-lock-use-fonts '(or (mono) (grayscale)) "*Specification for when Font Lock will set up non-color defaults.\n\nNormally this should be '(or (mono) (grayscale)), meaning that Font\nLock will set up non-color defaults that are only used on either mono\nor grayscale displays.  Set this to nil if you don't want Font Lock to\nset up non-color defaults at all.  This should be one of\n\n-- a list of valid tags, meaning that the non-color defaults will be used\n   when all of the tags apply. (e.g. '(grayscale x))\n-- a list whose first element is 'or and whose remaining elements are\n   lists of valid tags, meaning that the defaults will be used when\n   any of the tag lists apply.\n-- nil, meaning that the defaults should not be set up at all.\n\n(If you specify face values in your init file, they will override any\nthat Font Lock specifies, regardless of whether you specify the face\nvalues before or after loading Font Lock.)\n\nSee also `font-lock-use-colors'.  If you want more control over the faces\nused for fontification, see the documentation of `font-lock-mode' for\nhow to do it." :type 'sexp :group 'font-lock)
 
-(autoload 'multiple-value-setq "cl-macs" "\
-(multiple-value-setq (SYM SYM...) FORM): collect multiple return values.
-FORM must return a list; the first N elements of this list are stored in
-each of the symbols SYM in turn.  This is analogous to the Common Lisp
-`multiple-value-setq' macro, using lists to simulate true multiple return
-values.  For compatibility, (values A B C) is a synonym for (list A B C)." nil 'macro)
+(defcustom font-lock-maximum-decoration t "*If non-nil, the maximum decoration level for fontifying.\nIf nil, use the minimum decoration (equivalent to level 0).\nIf t, use the maximum decoration available.\nIf a number, use that level of decoration (or if not available the maximum).\nIf a list, each element should be a cons pair of the form (MAJOR-MODE . LEVEL),\nwhere MAJOR-MODE is a symbol or t (meaning the default).  For example:\n ((c++-mode . 2) (c-mode . t) (t . 1))\nmeans use level 2 decoration for buffers in `c++-mode', the maximum decoration\navailable for buffers in `c-mode', and level 1 decoration otherwise." :type '(choice (const :tag "default" nil) (const :tag "maximum" t) (integer :tag "level" 1) (repeat :menu-tag "mode specific" :tag "mode specific" :value ((t . t)) (cons :tag "Instance" (radio :tag "Mode" (const :tag "all" t) (symbol :tag "name")) (radio :tag "Decoration" (const :tag "default" nil) (const :tag "maximum" t) (integer :tag "level" 1))))) :group 'font-lock)
 
-(autoload 'locally "cl-macs" nil nil 'macro)
+(define-obsolete-variable-alias 'font-lock-use-maximal-decoration 'font-lock-maximum-decoration)
 
-(autoload 'the "cl-macs" nil nil 'macro)
+(defcustom font-lock-maximum-size (* 250 1024) "*If non-nil, the maximum size for buffers for fontifying.\nOnly buffers less than this can be fontified when Font Lock mode is turned on.\nIf nil, means size is irrelevant.\nIf a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),\nwhere MAJOR-MODE is a symbol or t (meaning the default).  For example:\n ((c++-mode . 256000) (c-mode . 256000) (rmail-mode . 1048576))\nmeans that the maximum size is 250K for buffers in `c++-mode' or `c-mode', one\nmegabyte for buffers in `rmail-mode', and size is irrelevant otherwise." :type '(choice (const :tag "none" nil) (integer :tag "size") (repeat :menu-tag "mode specific" :tag "mode specific" :value ((t)) (cons :tag "Instance" (radio :tag "Mode" (const :tag "all" t) (symbol :tag "name")) (radio :tag "Size" (const :tag "none" nil) (integer :tag "size"))))) :group 'font-lock)
 
-(autoload 'declare "cl-macs" nil nil 'macro)
+(defvar font-lock-keywords nil "\
+A list of the keywords to highlight.
+Each element should be of the form:
 
-(autoload 'define-setf-method "cl-macs" "\
-(define-setf-method NAME ARGLIST BODY...): define a `setf' method.
-This method shows how to handle `setf's to places of the form (NAME ARGS...).
-The argument forms ARGS are bound according to ARGLIST, as if NAME were
-going to be expanded as a macro, then the BODY forms are executed and must
-return a list of five elements: a temporary-variables list, a value-forms
-list, a store-variables list (of length one), a store-form, and an access-
-form.  See `defsetf' for a simpler way to define most setf-methods." nil 'macro)
+ MATCHER
+ (MATCHER . MATCH)
+ (MATCHER . FACENAME)
+ (MATCHER . HIGHLIGHT)
+ (MATCHER HIGHLIGHT ...)
+ (eval . FORM)
 
-(autoload 'defsetf "cl-macs" "\
-(defsetf NAME FUNC): define a `setf' method.
-This macro is an easy-to-use substitute for `define-setf-method' that works
-well for simple place forms.  In the simple `defsetf' form, `setf's of
-the form (setf (NAME ARGS...) VAL) are transformed to function or macro
-calls of the form (FUNC ARGS... VAL).  Example: (defsetf aref aset).
-Alternate form: (defsetf NAME ARGLIST (STORE) BODY...).
-Here, the above `setf' call is expanded by binding the argument forms ARGS
-according to ARGLIST, binding the value form VAL to STORE, then executing
-BODY, which must return a Lisp form that does the necessary `setf' operation.
-Actually, ARGLIST and STORE may be bound to temporary variables which are
-introduced automatically to preserve proper execution order of the arguments.
-Example: (defsetf nth (n x) (v) (list 'setcar (list 'nthcdr n x) v))." nil 'macro)
+where HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED.
 
-(autoload 'get-setf-method "cl-macs" "\
-Return a list of five values describing the setf-method for PLACE.
-PLACE may be any Lisp form which can appear as the PLACE argument to
-a macro like `setf' or `incf'." nil nil)
+FORM is an expression, whose value should be a keyword element,
+evaluated when the keyword is (first) used in a buffer.  This feature
+can be used to provide a keyword that can only be generated when Font
+Lock mode is actually turned on.
 
-(autoload 'setf "cl-macs" "\
-(setf PLACE VAL PLACE VAL ...): set each PLACE to the value of its VAL.
-This is a generalized version of `setq'; the PLACEs may be symbolic
-references such as (car x) or (aref x i), as well as plain symbols.
-For example, (setf (cadar x) y) is equivalent to (setcar (cdar x) y).
-The return value is the last VAL in the list." nil 'macro)
+For highlighting single items, typically only MATCH-HIGHLIGHT is required.
+However, if an item or (typically) items is to be highlighted following the
+instance of another item (the anchor) then MATCH-ANCHORED may be required.
 
-(autoload 'psetf "cl-macs" "\
-(psetf PLACE VAL PLACE VAL ...): set PLACEs to the values VALs in parallel.
-This is like `setf', except that all VAL forms are evaluated (in order)
-before assigning any PLACEs to the corresponding values." nil 'macro)
+MATCH-HIGHLIGHT should be of the form:
 
-(autoload 'cl-do-pop "cl-macs" nil nil nil)
+ (MATCH FACENAME OVERRIDE LAXMATCH)
 
-(autoload 'remf "cl-macs" "\
-(remf PLACE TAG): remove TAG from property list PLACE.
-PLACE may be a symbol, or any generalized variable allowed by `setf'.
-The form returns true if TAG was found and removed, nil otherwise." nil 'macro)
+Where MATCHER can be either the regexp to search for, a variable
+containing the regexp to search for, or the function to call to make
+the search (called with one argument, the limit of the search).  MATCH
+is the subexpression of MATCHER to be highlighted.  FACENAME is either
+a symbol naming a face, or an expression whose value is the face name
+to use.  If you want FACENAME to be a symbol that evaluates to a face,
+use a form like \"(progn sym)\".
 
-(autoload 'shiftf "cl-macs" "\
-(shiftf PLACE PLACE... VAL): shift left among PLACEs.
-Example: (shiftf A B C) sets A to B, B to C, and returns the old A.
-Each PLACE may be a symbol, or any generalized variable allowed by `setf'." nil 'macro)
+OVERRIDE and LAXMATCH are flags.  If OVERRIDE is t, existing fontification may
+be overwritten.  If `keep', only parts not already fontified are highlighted.
+If `prepend' or `append', existing fontification is merged with the new, in
+which the new or existing fontification, respectively, takes precedence.
+If LAXMATCH is non-nil, no error is signalled if there is no MATCH in MATCHER.
 
-(autoload 'rotatef "cl-macs" "\
-(rotatef PLACE...): rotate left among PLACEs.
-Example: (rotatef A B C) sets A to B, B to C, and C to A.  It returns nil.
-Each PLACE may be a symbol, or any generalized variable allowed by `setf'." nil 'macro)
+For example, an element of the form highlights (if not already highlighted):
 
-(autoload 'letf "cl-macs" "\
-(letf ((PLACE VALUE) ...) BODY...): temporarily bind to PLACEs.
-This is the analogue of `let', but with generalized variables (in the
-sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
-VALUE, then the BODY forms are executed.  On exit, either normally or
-because of a `throw' or error, the PLACEs are set back to their original
-values.  Note that this macro is *not* available in Common Lisp.
-As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
-the PLACE is not modified before executing BODY." nil 'macro)
+ \"\\\\\\=<foo\\\\\\=>\"               Discrete occurrences of \"foo\" in the value of the
+                       variable `font-lock-keyword-face'.
+ (\"fu\\\\(bar\\\\)\" . 1)     Substring \"bar\" within all occurrences of \"fubar\" in
+                       the value of `font-lock-keyword-face'.
+ (\"fubar\" . fubar-face)      Occurrences of \"fubar\" in the value of `fubar-face'.
+ (\"foo\\\\|bar\" 0 foo-bar-face t)
+                       Occurrences of either \"foo\" or \"bar\" in the value
+                       of `foo-bar-face', even if already highlighted.
 
-(autoload 'letf* "cl-macs" "\
-(letf* ((PLACE VALUE) ...) BODY...): temporarily bind to PLACEs.
-This is the analogue of `let*', but with generalized variables (in the
-sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
-VALUE, then the BODY forms are executed.  On exit, either normally or
-because of a `throw' or error, the PLACEs are set back to their original
-values.  Note that this macro is *not* available in Common Lisp.
-As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
-the PLACE is not modified before executing BODY." nil 'macro)
+MATCH-ANCHORED should be of the form:
 
-(autoload 'callf "cl-macs" "\
-(callf FUNC PLACE ARGS...): set PLACE to (FUNC PLACE ARGS...).
-FUNC should be an unquoted function name.  PLACE may be a symbol,
-or any generalized variable allowed by `setf'." nil 'macro)
+ (MATCHER PRE-MATCH-FORM POST-MATCH-FORM MATCH-HIGHLIGHT ...)
 
-(autoload 'callf2 "cl-macs" "\
-(callf2 FUNC ARG1 PLACE ARGS...): set PLACE to (FUNC ARG1 PLACE ARGS...).
-Like `callf', but PLACE is the second argument of FUNC, not the first." nil 'macro)
+Where MATCHER is as for MATCH-HIGHLIGHT with one exception; see below.
+PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after
+the last, instance MATCH-ANCHORED's MATCHER is used.  Therefore they can be
+used to initialize before, and cleanup after, MATCHER is used.  Typically,
+PRE-MATCH-FORM is used to move to some position relative to the original
+MATCHER, before starting with MATCH-ANCHORED's MATCHER.  POST-MATCH-FORM might
+be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER.
 
-(autoload 'define-modify-macro "cl-macs" "\
-(define-modify-macro NAME ARGLIST FUNC): define a `setf'-like modify macro.
-If NAME is called, it combines its PLACE argument with the other arguments
-from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)" nil 'macro)
+For example, an element of the form highlights (if not already highlighted):
 
-(autoload 'defstruct "cl-macs" "\
-(defstruct (NAME OPTIONS...) (SLOT SLOT-OPTS...)...): define a struct type.
-This macro defines a new Lisp data type called NAME, which contains data
-stored in SLOTs.  This defines a `make-NAME' constructor, a `copy-NAME'
-copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors." nil 'macro)
+ (\"\\\\\\=<anchor\\\\\\=>\" (0 anchor-face) (\"\\\\\\=<item\\\\\\=>\" nil nil (0 item-face)))
 
-(autoload 'cl-struct-setf-expander "cl-macs" nil nil nil)
+ Discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent
+ discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
+ (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil.  Therefore \"item\" is
+ initially searched for starting from the end of the match of \"anchor\", and
+ searching for subsequent instance of \"anchor\" resumes from where searching
+ for \"item\" concluded.)
 
-(autoload 'deftype "cl-macs" "\
-(deftype NAME ARGLIST BODY...): define NAME as a new data type.
-The type name can then be used in `typecase', `check-type', etc." nil 'macro)
+The above-mentioned exception is as follows.  The limit of the MATCHER search
+defaults to the end of the line after PRE-MATCH-FORM is evaluated.
+However, if PRE-MATCH-FORM returns a position greater than the position after
+PRE-MATCH-FORM is evaluated, that position is used as the limit of the search.
+It is generally a bad idea to return a position greater than the end of the
+line, i.e., cause the MATCHER search to span lines.
 
-(autoload 'typep "cl-macs" "\
-Check that OBJECT is of type TYPE.
-TYPE is a Common Lisp-style type specifier." nil nil)
+Note that the MATCH-ANCHORED feature is experimental; in the future, we may
+replace it with other ways of providing this functionality.
 
-(autoload 'check-type "cl-macs" "\
-Verify that FORM is of type TYPE; signal an error if not.
-STRING is an optional description of the desired type." nil 'macro)
+These regular expressions should not match text which spans lines.  While
+\\[font-lock-fontify-buffer] handles multi-line patterns correctly, updating
+when you edit the buffer does not, since it considers text one line at a time.
 
-(autoload 'assert "cl-macs" "\
-Verify that FORM returns non-nil; signal an error if not.
-Second arg SHOW-ARGS means to include arguments of FORM in message.
-Other args STRING and ARGS... are arguments to be passed to `error'.
-They are not evaluated unless the assertion fails.  If STRING is
-omitted, a default message listing FORM itself is used." nil 'macro)
+Be very careful composing regexps for this list;
+the wrong pattern can dramatically slow things down!")
 
-(autoload 'ignore-errors "cl-macs" "\
-Execute FORMS; if an error occurs, return nil.
-Otherwise, return result of last FORM." nil 'macro)
+(make-variable-buffer-local 'font-lock-keywords)
 
-(autoload 'ignore-file-errors "cl-macs" "\
-Execute FORMS; if an error of type `file-error' occurs, return nil.
-Otherwise, return result of last FORM." nil 'macro)
+(defcustom font-lock-mode nil "Non nil means `font-lock-mode' is on" :group 'font-lock :type 'boolean :initialize 'custom-initialize-default :require 'font-lock :set (function (lambda (var val) (font-lock-mode (or val 0)))))
 
-(autoload 'define-compiler-macro "cl-macs" "\
-(define-compiler-macro FUNC ARGLIST BODY...): Define a compiler-only macro.
-This is like `defmacro', but macro expansion occurs only if the call to
-FUNC is compiled (i.e., not interpreted).  Compiler macros should be used
-for optimizing the way calls to FUNC are compiled; the form returned by
-BODY should do the same thing as a call to the normal function called
-FUNC, though possibly more efficiently.  Note that, like regular macros,
-compiler macros are expanded repeatedly until no further expansions are
-possible.  Unlike regular macros, BODY can decide to \"punt\" and leave the
-original function call alone by declaring an initial `&whole foo' parameter
-and then returning foo." nil 'macro)
+(defvar font-lock-mode-hook nil "\
+Function or functions to run on entry to font-lock-mode.")
 
-(autoload 'compiler-macroexpand "cl-macs" nil nil nil)
+(autoload 'font-lock-mode "font-lock" "\
+Toggle Font Lock Mode.
+With arg, turn font-lock mode on if and only if arg is positive.
 
-;;;***
-\f
-;;;### (autoloads (batch-remove-old-elc) "cleantree" "lisp/cleantree.el")
+When Font Lock mode is enabled, text is fontified as you type it:
 
-(autoload 'batch-remove-old-elc "cleantree" nil nil nil)
+ - Comments are displayed in `font-lock-comment-face';
+ - Strings are displayed in `font-lock-string-face';
+ - Documentation strings (in Lisp-like languages) are displayed in
+   `font-lock-doc-string-face';
+ - Language keywords (\"reserved words\") are displayed in
+   `font-lock-keyword-face';
+ - Function names in their defining form are displayed in
+   `font-lock-function-name-face';
+ - Variable names in their defining form are displayed in
+   `font-lock-variable-name-face';
+ - Type names are displayed in `font-lock-type-face';
+ - References appearing in help files and the like are displayed
+   in `font-lock-reference-face';
+ - Preprocessor declarations are displayed in
+  `font-lock-preprocessor-face';
 
-;;;***
-\f
-;;;### (autoloads (config-value config-value-hash-table) "config" "lisp/config.el")
+   and
 
-(autoload 'config-value-hash-table "config" "\
-Return hash table of configuration parameters and their values." nil nil)
+ - Certain other expressions are displayed in other faces according
+   to the value of the variable `font-lock-keywords'.
 
-(autoload 'config-value "config" "\
-Return the value of the configuration parameter CONFIG_SYMBOL." nil nil)
+Where modes support different levels of fontification, you can use the variable
+`font-lock-maximum-decoration' to specify which level you generally prefer.
+When you turn Font Lock mode on/off the buffer is fontified/defontified, though
+fontification occurs only if the buffer is less than `font-lock-maximum-size'.
+To fontify a buffer without turning on Font Lock mode, and regardless of buffer
+size, you can use \\[font-lock-fontify-buffer].
 
-;;;***
-\f
-;;;### (autoloads (Custom-make-dependencies) "cus-dep" "lisp/cus-dep.el")
+See the variable `font-lock-keywords' for customization." t nil)
 
-(autoload 'Custom-make-dependencies "cus-dep" "\
-Extract custom dependencies from .el files in SUBDIRS.
-SUBDIRS is a list of directories.  If it is nil, the command-line
-arguments are used.  If it is a string, only that directory is
-processed.  This function is especially useful in batch mode.
+(autoload 'turn-on-font-lock "font-lock" "\
+Unconditionally turn on Font Lock mode." nil nil)
 
-Batch usage: xemacs -batch -l cus-dep.el -f Custom-make-dependencies DIRS" t nil)
+(autoload 'turn-off-font-lock "font-lock" "\
+Unconditionally turn off Font Lock mode." nil nil)
 
-;;;***
-\f
-;;;### (autoloads (customize-menu-create custom-menu-create custom-save-all customize-save-customized customize-browse custom-buffer-create-other-window custom-buffer-create customize-apropos-groups customize-apropos-faces customize-apropos-options customize-apropos customize-saved customize-customized customize-face-other-window customize-face customize-option-other-window customize-changed-options customize-variable customize-other-window customize customize-save-variable customize-set-variable customize-set-value) "cus-edit" "lisp/cus-edit.el")
+(autoload 'font-lock-fontify-buffer "font-lock" "\
+Fontify the current buffer the way `font-lock-mode' would.
+See `font-lock-mode' for details.
 
-(autoload 'customize-set-value "cus-edit" "\
-Set VARIABLE to VALUE.  VALUE is a Lisp object.
+This can take a while for large buffers." t nil)
 
-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.
+(autoload 'font-lock-set-defaults-1 "font-lock" nil nil nil)
 
-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.
+(add-minor-mode 'font-lock-mode " Font")
 
-If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
+;;;***
+\f
+;;;### (autoloads (gnuserv-start gnuserv-running-p) "gnuserv" "lisp/gnuserv.el")
 
-(autoload 'customize-set-variable "cus-edit" "\
-Set the default for VARIABLE to VALUE.  VALUE is a Lisp object.
+(defcustom gnuserv-frame nil "*The frame to be used to display all edited files.\nIf nil, then a new frame is created for each file edited.\nIf t, then the currently selected frame will be used.\nIf a function, then this will be called with a symbol `x' or `tty' as the\nonly argument, and its return value will be interpreted as above." :tag "Gnuserv Frame" :type '(radio (const :tag "Create new frame each time" nil) (const :tag "Use selected frame" t) (function-item :tag "Use main Emacs frame" gnuserv-main-frame-function) (function-item :tag "Use visible frame, otherwise create new" gnuserv-visible-frame-function) (function-item :tag "Create special Gnuserv frame and use it" gnuserv-special-frame-function) (function :tag "Other")) :group 'gnuserv :group 'frames)
 
-If VARIABLE has a `custom-set' property, that is used for setting
-VARIABLE, otherwise `set-default' is used.
+(autoload 'gnuserv-running-p "gnuserv" "\
+Return non-nil if a gnuserv process is running from this XEmacs session." nil nil)
 
-The `customized-value' property of the VARIABLE will be set to a list
-with a quoted VALUE as its sole list member.
+(autoload 'gnuserv-start "gnuserv" "\
+Allow this Emacs process to be a server for client processes.
+This starts a gnuserv communications subprocess through which
+client \"editors\" (gnuclient and gnudoit) can send editing commands to
+this Emacs job.  See the gnuserv(1) manual page for more details.
 
-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.
+Prefix arg means just kill any existing server communications subprocess." t nil)
 
-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.
+;;;***
+\f
+;;;### (autoloads nil "help-macro" "lisp/help-macro.el")
 
-If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
+(defcustom three-step-help t "*Non-nil means give more info about Help command in three steps.\nThe three steps are simple prompt, prompt with all options,\nand window listing and describing the options.\nA value of nil means skip the middle step, so that\n\\[help-command] \\[help-command] gives the window that lists the options." :type 'boolean :group 'help-appearance)
 
-(autoload 'customize-save-variable "cus-edit" "\
-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.
+;;;***
+\f
+;;;### (autoloads (hyper-apropos-popup-menu hyper-apropos-set-variable hyper-set-variable hyper-apropos-read-variable-symbol hyper-describe-function hyper-where-is hyper-describe-variable hyper-describe-face hyper-describe-key-briefly hyper-describe-key hyper-apropos) "hyper-apropos" "lisp/hyper-apropos.el")
 
-The `customized-value' property of the VARIABLE will be set to a list
-with a quoted VALUE as its sole list member.
+(autoload 'hyper-apropos "hyper-apropos" "\
+Display lists of functions and variables matching REGEXP
+in buffer \"*Hyper Apropos*\".  If optional prefix arg is given, then the
+value of `hyper-apropos-programming-apropos' is toggled for this search.
+See also `hyper-apropos-mode'." t nil)
 
-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.
+(autoload 'hyper-describe-key "hyper-apropos" nil t nil)
 
-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.
+(autoload 'hyper-describe-key-briefly "hyper-apropos" nil t nil)
 
-If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
+(autoload 'hyper-describe-face "hyper-apropos" "\
+Describe face..
+See also `hyper-apropos' and `hyper-describe-function'." t nil)
 
-(autoload 'customize "cus-edit" "\
-Select a customization buffer which you can use to set user options.
-User options are structured into \"groups\".
-The default group is `Emacs'." t nil)
+(autoload 'hyper-describe-variable "hyper-apropos" "\
+Hypertext drop-in replacement for `describe-variable'.
+See also `hyper-apropos' and `hyper-describe-function'." t nil)
 
-(defalias 'customize-group 'customize)
+(autoload 'hyper-where-is "hyper-apropos" "\
+Print message listing key sequences that invoke specified command." t nil)
 
-(autoload 'customize-other-window "cus-edit" "\
-Customize SYMBOL, which must be a customization group." t nil)
+(autoload 'hyper-describe-function "hyper-apropos" "\
+Hypertext replacement for `describe-function'.  Unlike `describe-function'
+in that the symbol under the cursor is the default if it is a function.
+See also `hyper-apropos' and `hyper-describe-variable'." t nil)
 
-(defalias 'customize-group-other-window 'customize-other-window)
+(autoload 'hyper-apropos-read-variable-symbol "hyper-apropos" "\
+Hypertext drop-in replacement for `describe-variable'.
+See also `hyper-apropos' and `hyper-describe-function'." nil nil)
 
-(defalias 'customize-option 'customize-variable)
+(define-obsolete-function-alias 'hypropos-read-variable-symbol 'hyper-apropos-read-variable-symbol)
 
-(autoload 'customize-variable "cus-edit" "\
-Customize SYMBOL, which must be a user option variable." t nil)
+(define-obsolete-function-alias 'hypropos-get-doc 'hyper-apropos-get-doc)
 
-(autoload 'customize-changed-options "cus-edit" "\
-Customize all user option variables whose default values changed recently.
-This means, in other words, variables defined with a `:version' keyword." t nil)
+(autoload 'hyper-set-variable "hyper-apropos" nil t nil)
 
-(defalias 'customize-variable-other-window 'customize-option-other-window)
+(autoload 'hyper-apropos-set-variable "hyper-apropos" "\
+Interactively set the variable on the current line." t nil)
 
-(autoload 'customize-option-other-window "cus-edit" "\
-Customize SYMBOL, which must be a user option variable.
-Show the buffer in another window, but don't select it." t nil)
+(define-obsolete-function-alias 'hypropos-set-variable 'hyper-apropos-set-variable)
 
-(autoload 'customize-face "cus-edit" "\
-Customize SYMBOL, which should be a face name or nil.
-If SYMBOL is nil, customize all faces." t nil)
+(autoload 'hyper-apropos-popup-menu "hyper-apropos" nil t nil)
 
-(autoload 'customize-face-other-window "cus-edit" "\
-Show customization buffer for FACE in other window." t nil)
+(define-obsolete-function-alias 'hypropos-popup-menu 'hyper-apropos-popup-menu)
 
-(autoload 'customize-customized "cus-edit" "\
-Customize all user options set since the last save in this session." t nil)
+;;;***
+\f
+;;;### (autoloads (Info-elisp-ref Info-emacs-key Info-goto-emacs-key-command-node Info-goto-emacs-command-node Info-emacs-command Info-search Info-visit-file Info-goto-node Info-batch-rebuild-dir Info-query info) "info" "lisp/info.el")
 
-(autoload 'customize-saved "cus-edit" "\
-Customize all already saved user options." t nil)
+(defvar Info-directory-list nil "\
+List of directories to search for Info documentation files.
 
-(autoload 'customize-apropos "cus-edit" "\
-Customize all user options matching REGEXP.
-If ALL is `options', include only options.
-If ALL is `faces', include only faces.
-If ALL is `groups', include only groups.
-If ALL is t (interactively, with prefix arg), include options which are not
-user-settable, as well as faces and groups." t nil)
+The first directory in this list, the \"dir\" file there will become
+the (dir)Top node of the Info documentation tree.
 
-(autoload 'customize-apropos-options "cus-edit" "\
-Customize all user options matching REGEXP.
-With prefix arg, include options which are not user-settable." t nil)
+Note: DO NOT use the `customize' interface to change the value of this
+variable.  Its value is created dynamically on each startup, depending
+on XEmacs packages installed on the system.  If you want to change the
+search path, make the needed modifications on the variable's value
+from .emacs.  For instance:
 
-(autoload 'customize-apropos-faces "cus-edit" "\
-Customize all user faces matching REGEXP." t nil)
+    (setq Info-directory-list (cons \"~/info\" Info-directory-list))")
 
-(autoload 'customize-apropos-groups "cus-edit" "\
-Customize all user groups matching REGEXP." t nil)
+(autoload 'info "info" "\
+Enter Info, the documentation browser.
+Optional argument FILE specifies the file to examine;
+the default is the top-level directory of Info.
 
-(autoload 'custom-buffer-create "cus-edit" "\
-Create a buffer containing OPTIONS.
-Optional NAME is the name of the buffer.
-OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
-SYMBOL is a customization option, and WIDGET is a widget for editing
-that option." nil nil)
+In interactive use, a prefix argument directs this command
+to read a file name from the minibuffer." t nil)
 
-(autoload 'custom-buffer-create-other-window "cus-edit" "\
-Create a buffer containing OPTIONS.
-Optional NAME is the name of the buffer.
-OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
-SYMBOL is a customization option, and WIDGET is a widget for editing
-that option." nil nil)
+(autoload 'Info-query "info" "\
+Enter Info, the documentation browser.  Prompt for name of Info file." t nil)
 
-(autoload 'customize-browse "cus-edit" "\
-Create a tree browser for the customize hierarchy." t nil)
+(autoload 'Info-batch-rebuild-dir "info" "\
+(Re)build info `dir' files in the directories remaining on the command line.
+Use this from the command line, with `-batch';
+it won't work in an interactive Emacs.
+Each file is processed even if an error occurred previously.
+For example, invoke \"xemacs -batch -f Info-batch-rebuild-dir /usr/local/info\"" nil nil)
 
-(defcustom custom-file "~/.emacs" "File used for storing customization information.\nIf you change this from the default \"~/.emacs\" you need to\nexplicitly load that file for the settings to take effect." :type 'file :group 'customize)
+(autoload 'Info-goto-node "info" "\
+Go to info node named NAME.  Give just NODENAME or (FILENAME)NODENAME.
+Actually, the following interpretations of NAME are tried in order:
+    (FILENAME)NODENAME
+    (FILENAME)     (using Top node)
+    NODENAME       (in current file)
+    TAGNAME        (see below)
+    FILENAME       (using Top node)
+where TAGNAME is a string that appears in quotes: \"TAGNAME\", in an
+annotation for any node of any file.  (See `a' and `x' commands.)" t nil)
 
-(autoload 'customize-save-customized "cus-edit" "\
-Save all user options which have been set in this session." t nil)
+(autoload 'Info-visit-file "info" "\
+Directly visit an info file." t nil)
 
-(autoload 'custom-save-all "cus-edit" "\
-Save all customizations in `custom-file'." nil nil)
+(autoload 'Info-search "info" "\
+Search for REGEXP, starting from point, and select node it's found in." t nil)
 
-(autoload 'custom-menu-create "cus-edit" "\
-Create menu for customization group SYMBOL.
-The menu is in a format applicable to `easy-menu-define'." nil nil)
+(autoload 'Info-emacs-command "info" "\
+Look up an Emacs command in the Emacs manual in the Info system.
+This command is designed to be used whether you are already in Info or not." t nil)
 
-(autoload 'customize-menu-create "cus-edit" "\
-Return a customize menu for customization group SYMBOL.
-If optional NAME is given, use that as the name of the menu.
-Otherwise the menu will be named `Customize'.
-The format is suitable for use with `easy-menu-define'." nil nil)
+(autoload 'Info-goto-emacs-command-node "info" "\
+Look up an Emacs command in the Emacs manual in the Info system.
+This command is designed to be used whether you are already in Info or not." t nil)
 
-;;;***
-\f
-;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-theme-face-value custom-theme-set-faces custom-set-faces custom-set-face-update-spec custom-declare-face) "cus-face" "lisp/cus-face.el")
+(autoload 'Info-goto-emacs-key-command-node "info" "\
+Look up an Emacs key sequence in the Emacs manual in the Info system.
+This command is designed to be used whether you are already in Info or not." t nil)
 
-(autoload 'custom-declare-face "cus-face" "\
-Like `defface', but FACE is evaluated as a normal argument." nil nil)
-
-(autoload 'custom-set-face-update-spec "cus-face" "\
-Customize the FACE for display types matching DISPLAY, merging
-  in the new items from PLIST" nil nil)
-
-(autoload 'custom-set-faces "cus-face" "\
-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:
+(autoload 'Info-emacs-key "info" "\
+Look up an Emacs key sequence in the Emacs manual in the Info system.
+This command is designed to be used whether you are already in Info or not." t nil)
 
-  (FACE SPEC [NOW [COMMENT]])
+(autoload 'Info-elisp-ref "info" "\
+Look up an Emacs Lisp function in the Elisp manual in the Info system.
+This command is designed to be used whether you are already in Info or not." t nil)
 
-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.
+;;;***
+\f
+;;;### (autoloads nil "itimer-autosave" "lisp/itimer-autosave.el")
 
-See `defface' for the format of SPEC." nil nil)
+;;;***
+\f
+;;;### (autoloads nil "loaddefs" "lisp/loaddefs.el")
 
-(autoload 'custom-theme-set-faces "cus-face" "\
-Initialize faces according to settings specified by args.
-Records the settings as belonging to THEME.
+;;;***
+\f
+;;;### (autoloads nil "loadhist" "lisp/loadhist.el")
 
-See `custom-set-faces' for a description of the arguments ARGS." nil nil)
+;;;***
+\f
+;;;### (autoloads (mswindows-reset-device-font-menus) "msw-font-menu" "lisp/msw-font-menu.el")
 
-(autoload 'custom-theme-face-value "cus-face" "\
-Return spec of FACE in THEME if the THEME modifies the
-FACE.  Nil otherwise." nil nil)
+(autoload 'mswindows-reset-device-font-menus "msw-font-menu" "\
+Generates the `Font', `Size', and `Weight' submenus for the Options menu.
+This is run the first time that a font-menu is needed for each device.
+If you don't like the lazy invocation of this function, you can add it to
+`create-device-hook' and that will make the font menus respond more quickly
+when they are selected for the first time.  If you add fonts to your system, 
+or if you change your font path, you can call this to re-initialize the menus." nil nil)
 
-(autoload 'custom-theme-reset-faces "cus-face" nil nil nil)
+(defun* mswindows-font-menu-font-data (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) (selected-device))) (name (font-instance-name (face-font-instance face domain))) (truename (font-instance-truename (face-font-instance face domain (if (featurep 'mule) 'ascii)))) family size weight entry slant) (when (string-match mswindows-font-regexp name) (setq family (match-string 1 name)) (setq entry (vassoc family (aref dcache 0)))) (when (and (null entry) (string-match mswindows-font-regexp truename)) (setq family (match-string 1 truename)) (setq entry (vassoc family (aref dcache 0)))) (when (null entry) (return-from mswindows-font-menu-font-data (make-vector 5 nil))) (when (string-match mswindows-font-regexp name) (setq weight (match-string 2 name)) (setq size (string-to-int (match-string 4 name)))) (when (string-match mswindows-font-regexp truename) (when (not (member weight (aref entry 1))) (setq weight (match-string 2 truename))) (when (not (member size (aref entry 2))) (setq size (string-to-int (match-string 4 truename)))) (setq slant (match-string 5 truename))) (vector entry family size weight slant)))
 
-(autoload 'custom-reset-faces "cus-face" "\
-Reset the value of the face to values previously defined.
-Assosiate this setting with the 'user' theme.
+;;;***
+\f
+;;;### (autoloads (mwheel-install) "mwheel" "lisp/mwheel.el")
 
-ARGS is defined as for `custom-theme-reset-faces'" nil nil)
+(autoload 'mwheel-install "mwheel" "\
+Enable mouse wheel support." nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (disassemble) "disass" "lisp/disass.el")
+;;;### (autoloads (package-admin-add-binary-package package-admin-add-single-file-package) "package-admin" "lisp/package-admin.el")
 
-(autoload 'disassemble "disass" "\
-Print disassembled code for OBJECT in (optional) BUFFER.
-OBJECT can be a symbol defined as a function, or a function itself
-\(a lambda expression or a compiled-function object).
-If OBJECT is not already compiled, we compile it, but do not
-redefine OBJECT if it is a symbol." t nil)
+(autoload 'package-admin-add-single-file-package "package-admin" "\
+Install a single file Lisp package into XEmacs package hierarchy.
+`file' should be the full path to the lisp file to install.
+`destdir' should be a simple directory name.
+The optional `pkg-dir' can be used to override the default package hierarchy
+\(car (last late-packages))." t nil)
+
+(autoload 'package-admin-add-binary-package "package-admin" "\
+Install a pre-bytecompiled XEmacs package into package hierarchy." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (standard-display-european standard-display-underline standard-display-graphic standard-display-g1 standard-display-ascii standard-display-default standard-display-8bit make-display-table describe-current-display-table) "disp-table" "lisp/disp-table.el")
+;;;### (autoloads (package-get-custom package-get-package-provider package-get package-get-dependencies package-get-all package-get-update-all package-get-delete-package package-get-save-base package-get-update-base-from-buffer package-get-update-base package-get-update-base-entry package-get-require-base package-get-download-menu) "package-get" "lisp/package-get.el")
 
-(autoload 'describe-current-display-table "disp-table" "\
-Describe the display table in use in the selected window and buffer." t nil)
+(defvar package-get-base nil "\
+List of packages that are installed at this site.
+For each element in the alist,  car is the package name and the cdr is
+a plist containing information about the package.   Typical fields
+kept in the plist are:
 
-(autoload 'make-display-table "disp-table" "\
-Return a new, empty display table." nil nil)
+version                - version of this package
+provides       - list of symbols provided
+requires       - list of symbols that are required.
+                 These in turn are provided by other packages.
+filename       - name of the file.
+size           - size of the file (aka the bundled package)
+md5sum         - computed md5 checksum
+description    - What this package is for.
+type           - Whether this is a 'binary (default) or 'single file package
 
-(autoload 'standard-display-8bit "disp-table" "\
-Display characters in the range L to H literally." nil nil)
+More fields may be added as needed.  An example:
 
-(autoload 'standard-display-default "disp-table" "\
-Display characters in the range L to H using the default notation." nil nil)
+'(
+ (name
+  (version \"<version 2>\"
+   file \"filename\"
+   description \"what this package is about.\"
+   provides (<list>)
+   requires (<list>)
+   size <integer-bytes>
+   md5sum \"<checksum\"
+   type single
+   )
+  (version \"<version 1>\"
+   file \"filename\"
+   description \"what this package is about.\"
+   provides (<list>)
+   requires (<list>)
+   size <integer-bytes>
+   md5sum \"<checksum\"
+   type single
+   )
+   ...
+   ))
 
-(autoload 'standard-display-ascii "disp-table" "\
-Display character C using printable string S." nil nil)
+For version information, it is assumed things are listed in most
+recent to least recent -- in other words, the version names don't have to
+be lexically ordered.  It is debatable if it makes sense to have more than
+one version of a package available.")
 
-(autoload 'standard-display-g1 "disp-table" "\
-Display character C as character SC in the g1 character set.
-This function assumes that your terminal uses the SO/SI characters;
-it is meaningless for an X frame." nil nil)
+(defcustom package-get-download-sites '(("xemacs.org" "ftp.xemacs.org" "pub/xemacs/packages") ("crc.ca (Canada)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("ualberta.ca (Canada)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages") ("uiuc.edu (United States)" "uiarchive.uiuc.edu" "pub/packages/xemacs/packages") ("unc.edu (United States)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("utk.edu (United States)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") ("unicamp.br (Brazil)" "ftp.unicamp.br" "pub/xemacs/packages") ("tuwien.ac.at (Austria)" "gd.tuwien.ac.at" "editors/xemacs/packages") ("auc.dk (Denmark)" "sunsite.auc.dk" "pub/emacs/xemacs/packages") ("doc.ic.ac.uk (England)" "sunsite.doc.ic.ac.uk" "packages/xemacs/packages") ("funet.fi (Finland)" "ftp.funet.fi" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("cenatls.cena.dgac.fr (France)" "ftp.cenatls.cena.dgac.fr" "Emacs/xemacs/packages") ("pasteur.fr (France)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("tu-darmstadt.de (Germany)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("kfki.hu (Hungary)" "ftp.kfki.hu" "pub/packages/xemacs/packages") ("eunet.ie (Ireland)" "ftp.eunet.ie" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("uniroma2.it (Italy)" "ftp.uniroma2.it" "unix/misc/dist/XEMACS/packages") ("uio.no (Norway)" "sunsite.uio.no" "pub/xemacs/packages") ("icm.edu.pl (Poland)" "ftp.icm.edu.pl" "pub/unix/editors/xemacs/packages") ("srcc.msu.su (Russia)" "ftp.srcc.msu.su" "mirror/ftp.xemacs.org/packages") ("sunet.se (Sweden)" "ftp.sunet.se" "pub/gnu/xemacs/packages") ("cnlab-switch.ch (Switzerland)" "sunsite.cnlab-switch.ch" "mirror/xemacs/packages") ("aist.go.jp (Japan)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("asahi-net.or.jp (Japan)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("dti.ad.jp (Japan)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("jaist.ac.jp (Japan)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("nucba.ac.jp (Japan)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("sut.ac.jp (Japan)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("tsukuba.ac.jp (Japan)" "ftp.netlab.is.tsukuba.ac.jp" "pub/GNU/xemacs/packages") ("kreonet.re.kr (Korea)" "ftp.kreonet.re.kr" "pub/tools/emacs/xemacs/packages") ("nctu.edu.tw (Taiwan)" "coda.nctu.edu.tw" "Editors/xemacs/packages") ("sun.ac.za (South Africa)" "ftp.sun.ac.za" "xemacs/packages") ("isu.net.sa (Saudi Arabia)" "ftp.isu.net.sa" "pub/mirrors/ftp.xemacs.org/packages") ("aarnet.edu.au (Australia)" "mirror.aarnet.edu.au" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
 
-(autoload 'standard-display-graphic "disp-table" "\
-Display character C as character GC in graphics character set.
-This function assumes VT100-compatible escapes; it is meaningless for an
-X frame." nil nil)
+(autoload 'package-get-download-menu "package-get" "\
+Build the `Add Download Site' menu." nil nil)
 
-(autoload 'standard-display-underline "disp-table" "\
-Display character C as character UC plus underlining." nil nil)
+(autoload 'package-get-require-base "package-get" "\
+Require that a package-get database has been loaded.
+If the optional FORCE-CURRENT argument or the value of
+`package-get-always-update' is Non-nil, try to update the database
+from a location in `package-get-remote'. Otherwise a local copy is used
+if available and remote access is never done.
 
-(autoload 'standard-display-european "disp-table" "\
-Toggle display of European characters encoded with ISO 8859.
-When enabled, characters in the range of 160 to 255 display not
-as octal escapes, but as accented characters.
-With prefix argument, enable European character display iff arg is positive." t nil)
+Please use FORCE-CURRENT only when the user is explictly dealing with packages
+and remote access is likely in the near future." nil nil)
 
-;;;***
-\f
-;;;### (autoloads nil "easymenu" "lisp/easymenu.el")
+(autoload 'package-get-update-base-entry "package-get" "\
+Update an entry in `package-get-base'." nil nil)
 
-;;;***
-\f
-;;;### (autoloads (pop-tag-mark tags-apropos list-tags tags-query-replace tags-search tags-loop-continue next-file tag-complete-symbol find-tag-other-window find-tag visit-tags-table) "etags" "lisp/etags.el")
+(autoload 'package-get-update-base "package-get" "\
+Update the package-get database file with entries from DB-FILE.
+Unless FORCE-CURRENT is non-nil never try to update the database." t nil)
 
-(autoload 'visit-tags-table "etags" "\
-Tell tags commands to use tags table file FILE when all else fails.
-FILE should be the name of a file created with the `etags' program.
-A directory name is ok too; it means file TAGS in that directory." t nil)
+(autoload 'package-get-update-base-from-buffer "package-get" "\
+Update the package-get database with entries from BUFFER.
+BUFFER defaults to the current buffer.  This command can be
+used interactively, for example from a mail or news buffer." t nil)
 
-(autoload 'find-tag "etags" "\
-*Find tag whose name contains TAGNAME.
- Selects the buffer that the tag is contained in
-and puts point at its definition.
- If TAGNAME is a null string, the expression in the buffer
-around or before point is used as the tag name.
- If called interactively with a numeric argument, searches for the next tag
-in the tag table that matches the tagname used in the previous find-tag.
- If second arg OTHER-WINDOW is non-nil, uses another window to display
-the tag.
+(autoload 'package-get-save-base "package-get" "\
+Write the package-get database to FILE.
 
-This version of this function supports multiple active tags tables,
-and completion.
+Note: This database will be unsigned of course." t nil)
 
-Variables of note:
+(autoload 'package-get-delete-package "package-get" "\
+Delete an installation of PACKAGE below directory PKG-TOPDIR.
+PACKAGE is a symbol, not a string.
+This is just an interactive wrapper for `package-admin-delete-binary-package'." t nil)
 
-  tag-table-alist              controls which tables apply to which buffers
-  tags-file-name               a default tags table
-  tags-build-completion-table   controls completion behavior
-  buffer-tag-table             another way of specifying a buffer-local table
-  make-tags-files-invisible    whether tags tables should be very hidden
-  tag-mark-stack-max           how many tags-based hops to remember" t nil)
+(autoload 'package-get-update-all "package-get" "\
+Fetch and install the latest versions of all currently installed packages." t nil)
 
-(autoload 'find-tag-other-window "etags" "\
-*Find tag whose name contains TAGNAME, in another window.
- Selects the buffer that the tag is contained in in another window
-and puts point at its definition.
- If TAGNAME is a null string, the expression in the buffer
-around or before point is used as the tag name.
- If second arg NEXT is non-nil (interactively, with prefix arg),
-searches for the next tag in the tag table
-that matches the tagname used in the previous find-tag.
+(autoload 'package-get-all "package-get" "\
+Fetch PACKAGE with VERSION and all other required packages.
+Uses `package-get-base' to determine just what is required and what
+package provides that functionality.  If VERSION is nil, retrieves
+latest version.  Optional argument FETCHED-PACKAGES is used to keep
+track of packages already fetched.  Optional argument INSTALL-DIR,
+if non-nil, specifies the package directory where fetched packages
+should be installed.
 
-This version of this function supports multiple active tags tables,
-and completion.
+Returns nil upon error." t nil)
 
-Variables of note:
+(autoload 'package-get-dependencies "package-get" "\
+Compute dependencies for PACKAGES.
+Uses `package-get-base' to determine just what is required and what
+package provides that functionality.  Returns the list of packages
+required by PACKAGES." nil nil)
 
-  tag-table-alist              controls which tables apply to which buffers
-  tags-file-name               a default tags table
-  tags-build-completion-table   controls completion behavior
-  buffer-tag-table             another way of specifying a buffer-local table
-  make-tags-files-invisible    whether tags tables should be very hidden
-  tag-mark-stack-max           how many tags-based hops to remember" t nil)
+(autoload 'package-get "package-get" "\
+Fetch PACKAGE from remote site.
+Optional arguments VERSION indicates which version to retrieve, nil
+means most recent version.  CONFLICT indicates what happens if the
+package is already installed.  Valid values for CONFLICT are:
+'always        always retrieve the package even if it is already installed
+'never do not retrieve the package if it is installed.
+INSTALL-DIR, if non-nil, specifies the package directory where
+fetched packages should be installed.
 
-(autoload 'tag-complete-symbol "etags" "\
-The function used to do tags-completion (using 'tag-completion-predicate)." t nil)
+The value of `package-get-base' is used to determine what files should
+be retrieved.  The value of `package-get-remote' is used to determine
+where a package should be retrieved from.  The sites are tried in
+order so one is better off listing easily reached sites first.
 
-(autoload 'next-file "etags" "\
-Select next file among files in current tag table(s).
+Once the package is retrieved, its md5 checksum is computed.  If that
+sum does not match that stored in `package-get-base' for this version
+of the package, an error is signalled.
 
-A first argument of t (prefix arg, if interactive) initializes to the
-beginning of the list of files in the (first) tags table.  If the argument
-is neither nil nor t, it is evalled to initialize the list of files.
+Returns `t' upon success, the symbol `error' if the package was
+successfully installed but errors occurred during initialization, or
+`nil' upon error." t nil)
 
-Non-nil second argument NOVISIT means use a temporary buffer
-to save time and avoid uninteresting warnings.
-
-Value is nil if the file was already visited;
-if the file was newly read in, the value is the filename." t nil)
-
-(autoload 'tags-loop-continue "etags" "\
-Continue last \\[tags-search] or \\[tags-query-replace] command.
-Used noninteractively with non-nil argument to begin such a command (the
-argument is passed to `next-file', which see).
-Two variables control the processing we do on each file:
-the value of `tags-loop-scan' is a form to be executed on each file
-to see if it is interesting (it returns non-nil if so)
-and `tags-loop-operate' is a form to execute to operate on an interesting file
-If the latter returns non-nil, we exit; otherwise we scan the next file." t nil)
+(autoload 'package-get-package-provider "package-get" "\
+Search for a package that provides SYM and return the name and
+  version.  Searches in `package-get-base' for SYM.   If SYM is a
+  consp, then it must match a corresponding (provide (SYM VERSION)) from
+  the package.
 
-(autoload 'tags-search "etags" "\
-Search through all files listed in tags table for match for REGEXP.
-Stops when a match is found.
-To continue searching for next match, use command \\[tags-loop-continue].
+If FORCE-CURRENT is non-nil make sure the database is up to date. This might
+lead to Emacs accessing remote sites." t nil)
 
-See documentation of variable `tag-table-alist'." t nil)
+(autoload 'package-get-custom "package-get" "\
+Fetch and install the latest versions of all customized packages." t nil)
 
-(autoload 'tags-query-replace "etags" "\
-Query-replace-regexp FROM with TO through all files listed in tags table.
-Third arg DELIMITED (prefix arg) means replace only word-delimited matches.
-If you exit (\\[keyboard-quit] or ESC), you can resume the query-replace
-with the command \\[tags-loop-continue].
+;;;***
+\f
+;;;### (autoloads (pui-list-packages pui-add-install-directory package-ui-add-site) "package-ui" "lisp/package-ui.el")
 
-See documentation of variable `tag-table-alist'." t nil)
+(autoload 'package-ui-add-site "package-ui" "\
+Add site to package-get-remote and possibly offer to update package list." nil nil)
 
-(autoload 'list-tags "etags" "\
-Display list of tags in FILE." t nil)
+(autoload 'pui-add-install-directory "package-ui" "\
+Add a new package binary directory to the head of `package-get-remote'.
+Note that no provision is made for saving any changes made by this function.
+It exists mainly as a convenience for one-time package installations from
+disk." t nil)
 
-(autoload 'tags-apropos "etags" "\
-Display list of all tags in tag table REGEXP matches." t nil)
-(define-key esc-map "*" 'pop-tag-mark)
+(autoload 'pui-list-packages "package-ui" "\
+List all packages and package information.
+The package name, version, and description are displayed.  From the displayed
+buffer, the user can see which packages are installed, which are not, and
+which are out-of-date (a newer version is available).  The user can then
+select packages for installation via the keyboard or mouse." t nil)
 
-(autoload 'pop-tag-mark "etags" "\
-Go to last tag position.
-`find-tag' maintains a mark-stack seperate from the \\[set-mark-command] mark-stack.
-This function pops (and moves to) the tag at the top of this stack." t nil)
+(defalias 'list-packages 'pui-list-packages)
 
 ;;;***
 \f
-;;;### (autoloads (finder-by-keyword) "finder" "lisp/finder.el")
+;;;### (autoloads (picture-mode) "picture" "lisp/picture.el")
 
-(autoload 'finder-by-keyword "finder" "\
-Find packages matching a given keyword." t nil)
+(autoload 'picture-mode "picture" "\
+Switch to Picture mode, in which a quarter-plane screen model is used.
+Printing characters replace instead of inserting themselves with motion
+afterwards settable by these commands:
+  C-c <          Move left after insertion.
+  C-c >          Move right after insertion.
+  C-c ^          Move up after insertion.
+  C-c .          Move down after insertion.
+  C-c `          Move northwest (nw) after insertion.
+  C-c '          Move northeast (ne) after insertion.
+  C-c /          Move southwest (sw) after insertion.
+  C-c \\   Move southeast (se) after insertion.
+The current direction is displayed in the modeline.  The initial
+direction is right.  Whitespace is inserted and tabs are changed to
+spaces when required by movement.  You can move around in the buffer
+with these commands:
+  \\[picture-move-down]          Move vertically to SAME column in previous line.
+  \\[picture-move-up]    Move vertically to SAME column in next line.
+  \\[picture-end-of-line]        Move to column following last non-whitespace character.
+  \\[picture-forward-column]     Move right inserting spaces if required.
+  \\[picture-backward-column]    Move left changing tabs to spaces if required.
+  C-c C-f Move in direction of current picture motion.
+  C-c C-b Move in opposite direction of current picture motion.
+  Return  Move to beginning of next line.
+You can edit tabular text with these commands:
+  M-Tab          Move to column beneath (or at) next interesting character.
+           `Indents' relative to a previous line.
+  Tab    Move to next stop in tab stop list.
+  C-c Tab Set tab stops according to context of this line.
+           With ARG resets tab stops to default (global) value.
+           See also documentation of variable  picture-tab-chars
+           which defines \"interesting character\".  You can manually
+           change the tab stop list with command \\[edit-tab-stops].
+You can manipulate text with these commands:
+  C-d    Clear (replace) ARG columns after point without moving.
+  C-c C-d Delete char at point - the command normally assigned to C-d.
+  \\[picture-backward-clear-column]  Clear (replace) ARG columns before point, moving back over them.
+  \\[picture-clear-line]         Clear ARG lines, advancing over them.  The cleared
+           text is saved in the kill ring.
+  \\[picture-open-line]          Open blank line(s) beneath current line.
+You can manipulate rectangles with these commands:
+  C-c C-k Clear (or kill) a rectangle and save it.
+  C-c C-w Like C-c C-k except rectangle is saved in named register.
+  C-c C-y Overlay (or insert) currently saved rectangle at point.
+  C-c C-x Like C-c C-y except rectangle is taken from named register.
+  \\[copy-rectangle-to-register]   Copies a rectangle to a register.
+  \\[advertised-undo]   Can undo effects of rectangle overlay commands
+           commands if invoked soon enough.
+You can return to the previous mode with:
+  C-c C-c Which also strips trailing whitespace from every line.
+           Stripping is suppressed by supplying an argument.
+
+Entry to this mode calls the value of  picture-mode-hook  if non-nil.
+
+Note that Picture mode commands will work outside of Picture mode, but
+they are not defaultly assigned to keys." t nil)
+
+(defalias 'edit-picture 'picture-mode)
 
 ;;;***
 \f
-;;;### (autoloads (font-lock-set-defaults-1 font-lock-fontify-buffer turn-off-font-lock turn-on-font-lock font-lock-mode) "font-lock" "lisp/font-lock.el")
+;;;### (autoloads (clear-rectangle string-rectangle open-rectangle insert-rectangle yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle delete-rectangle) "rect" "lisp/rect.el")
 
-(defcustom font-lock-auto-fontify t "*Whether font-lock should automatically fontify files as they're loaded.\nThis will only happen if font-lock has fontifying keywords for the major\nmode of the file.  You can get finer-grained control over auto-fontification\nby using this variable in combination with `font-lock-mode-enable-list' or\n`font-lock-mode-disable-list'." :type 'boolean :group 'font-lock)
+(autoload 'delete-rectangle "rect" "\
+Delete the text in the region-rectangle without saving it.
+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.
 
-(defcustom font-lock-mode-enable-list nil "*List of modes to auto-fontify, if `font-lock-auto-fontify' is nil." :type '(repeat (symbol :tag "Mode")) :group 'font-lock)
+When called from a program, the rectangle's corners are START and END.
+With a prefix (or FILL) argument, also fill lines where nothing has to be
+deleted." t nil)
 
-(defcustom font-lock-mode-disable-list nil "*List of modes not to auto-fontify, if `font-lock-auto-fontify' is t." :type '(repeat (symbol :tag "Mode")) :group 'font-lock)
+(autoload 'delete-extract-rectangle "rect" "\
+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.
 
-(defcustom font-lock-use-colors '(color) "*Specification for when Font Lock will set up color defaults.\nNormally this should be '(color), meaning that Font Lock will set up\ncolor defaults that are only used on color displays.  Set this to nil\nif you don't want Font Lock to set up color defaults at all.  This\nshould be one of\n\n-- a list of valid tags, meaning that the color defaults will be used\n   when all of the tags apply. (e.g. '(color x))\n-- a list whose first element is 'or and whose remaining elements are\n   lists of valid tags, meaning that the defaults will be used when\n   any of the tag lists apply.\n-- nil, meaning that the defaults should not be set up at all.\n\n(If you specify face values in your init file, they will override any\nthat Font Lock specifies, regardless of whether you specify the face\nvalues before or after loading Font Lock.)\n\nSee also `font-lock-use-fonts'.  If you want more control over the faces\nused for fontification, see the documentation of `font-lock-mode' for\nhow to do it." :type 'sexp :group 'font-lock)
+With an optional FILL argument, also fill lines where nothing has to be
+deleted." nil nil)
 
-(defcustom font-lock-use-fonts '(or (mono) (grayscale)) "*Specification for when Font Lock will set up non-color defaults.\n\nNormally this should be '(or (mono) (grayscale)), meaning that Font\nLock will set up non-color defaults that are only used on either mono\nor grayscale displays.  Set this to nil if you don't want Font Lock to\nset up non-color defaults at all.  This should be one of\n\n-- a list of valid tags, meaning that the non-color defaults will be used\n   when all of the tags apply. (e.g. '(grayscale x))\n-- a list whose first element is 'or and whose remaining elements are\n   lists of valid tags, meaning that the defaults will be used when\n   any of the tag lists apply.\n-- nil, meaning that the defaults should not be set up at all.\n\n(If you specify face values in your init file, they will override any\nthat Font Lock specifies, regardless of whether you specify the face\nvalues before or after loading Font Lock.)\n\nSee also `font-lock-use-colors'.  If you want more control over the faces\nused for fontification, see the documentation of `font-lock-mode' for\nhow to do it." :type 'sexp :group 'font-lock)
+(autoload 'extract-rectangle "rect" "\
+Return the contents of the rectangle with corners at START and END,
+as a list of strings, one for each line of the rectangle." nil nil)
 
-(defcustom font-lock-maximum-decoration t "*If non-nil, the maximum decoration level for fontifying.\nIf nil, use the minimum decoration (equivalent to level 0).\nIf t, use the maximum decoration available.\nIf a number, use that level of decoration (or if not available the maximum).\nIf a list, each element should be a cons pair of the form (MAJOR-MODE . LEVEL),\nwhere MAJOR-MODE is a symbol or t (meaning the default).  For example:\n ((c++-mode . 2) (c-mode . t) (t . 1))\nmeans use level 2 decoration for buffers in `c++-mode', the maximum decoration\navailable for buffers in `c-mode', and level 1 decoration otherwise." :type '(choice (const :tag "default" nil) (const :tag "maximum" t) (integer :tag "level" 1) (repeat :menu-tag "mode specific" :tag "mode specific" :value ((t . t)) (cons :tag "Instance" (radio :tag "Mode" (const :tag "all" t) (symbol :tag "name")) (radio :tag "Decoration" (const :tag "default" nil) (const :tag "maximum" t) (integer :tag "level" 1))))) :group 'font-lock)
+(defvar killed-rectangle nil "\
+Rectangle for `yank-rectangle' to insert.")
 
-(define-obsolete-variable-alias 'font-lock-use-maximal-decoration 'font-lock-maximum-decoration)
+(autoload 'kill-rectangle "rect" "\
+Delete the region-rectangle and save it as the last killed one.
+You might prefer to use `delete-extract-rectangle' from a program.
 
-(defcustom font-lock-maximum-size (* 250 1024) "*If non-nil, the maximum size for buffers for fontifying.\nOnly buffers less than this can be fontified when Font Lock mode is turned on.\nIf nil, means size is irrelevant.\nIf a list, each element should be a cons pair of the form (MAJOR-MODE . SIZE),\nwhere MAJOR-MODE is a symbol or t (meaning the default).  For example:\n ((c++-mode . 256000) (c-mode . 256000) (rmail-mode . 1048576))\nmeans that the maximum size is 250K for buffers in `c++-mode' or `c-mode', one\nmegabyte for buffers in `rmail-mode', and size is irrelevant otherwise." :type '(choice (const :tag "none" nil) (integer :tag "size") (repeat :menu-tag "mode specific" :tag "mode specific" :value ((t)) (cons :tag "Instance" (radio :tag "Mode" (const :tag "all" t) (symbol :tag "name")) (radio :tag "Size" (const :tag "none" nil) (integer :tag "size"))))) :group 'font-lock)
+When called from a program, the rectangle's corners are START and END.
+With a prefix (or FILL) argument, also fill lines where nothing has to be
+deleted." t nil)
 
-(defvar font-lock-keywords nil "\
-A list of the keywords to highlight.
-Each element should be of the form:
+(autoload 'yank-rectangle "rect" "\
+Yank the last killed rectangle with upper left corner at point." t nil)
 
- MATCHER
- (MATCHER . MATCH)
- (MATCHER . FACENAME)
- (MATCHER . HIGHLIGHT)
- (MATCHER HIGHLIGHT ...)
- (eval . FORM)
+(autoload 'insert-rectangle "rect" "\
+Insert text of RECTANGLE with upper left corner at point.
+RECTANGLE's first line is inserted at point, its second
+line is inserted at a point vertically under point, etc.
+RECTANGLE should be a list of strings.
+After this command, the mark is at the upper left corner
+and point is at the lower right corner." nil nil)
 
-where HIGHLIGHT should be either MATCH-HIGHLIGHT or MATCH-ANCHORED.
+(autoload 'open-rectangle "rect" "\
+Blank out the region-rectangle, shifting text right.
 
-FORM is an expression, whose value should be a keyword element,
-evaluated when the keyword is (first) used in a buffer.  This feature
-can be used to provide a keyword that can only be generated when Font
-Lock mode is actually turned on.
+When called from a program, the rectangle's corners are START and END.
+With a prefix (or FILL) argument, fill with blanks even if there is no text
+on the right side of the rectangle." t nil)
 
-For highlighting single items, typically only MATCH-HIGHLIGHT is required.
-However, if an item or (typically) items is to be highlighted following the
-instance of another item (the anchor) then MATCH-ANCHORED may be required.
+(autoload 'string-rectangle "rect" "\
+Insert STRING on each line of the region-rectangle, shifting text right.
+The left edge of the rectangle specifies the column for insertion.
 
-MATCH-HIGHLIGHT should be of the form:
+If `pending-delete-mode' is active the string replace the region.
+Otherwise this command does not delete or overwrite any existing text.
 
- (MATCH FACENAME OVERRIDE LAXMATCH)
+When called from a program, the rectangle's corners are START and END." t nil)
 
-Where MATCHER can be either the regexp to search for, a variable
-containing the regexp to search for, or the function to call to make
-the search (called with one argument, the limit of the search).  MATCH
-is the subexpression of MATCHER to be highlighted.  FACENAME is either
-a symbol naming a face, or an expression whose value is the face name
-to use.  If you want FACENAME to be a symbol that evaluates to a face,
-use a form like \"(progn sym)\".
+(autoload 'clear-rectangle "rect" "\
+Blank out the region-rectangle.
+The text previously in the region is overwritten with blanks.
 
-OVERRIDE and LAXMATCH are flags.  If OVERRIDE is t, existing fontification may
-be overwritten.  If `keep', only parts not already fontified are highlighted.
-If `prepend' or `append', existing fontification is merged with the new, in
-which the new or existing fontification, respectively, takes precedence.
-If LAXMATCH is non-nil, no error is signalled if there is no MATCH in MATCHER.
+When called from a program, the rectangle's corners are START and END.
+With a prefix (or FILL) argument, also fill with blanks the parts of the
+rectangle which were empty." t nil)
 
-For example, an element of the form highlights (if not already highlighted):
+;;;***
+\f
+;;;### (autoloads (list-load-path-shadows) "shadow" "lisp/shadow.el")
 
- \"\\\\\\=<foo\\\\\\=>\"               Discrete occurrences of \"foo\" in the value of the
-                       variable `font-lock-keyword-face'.
- (\"fu\\\\(bar\\\\)\" . 1)     Substring \"bar\" within all occurrences of \"fubar\" in
-                       the value of `font-lock-keyword-face'.
- (\"fubar\" . fubar-face)      Occurrences of \"fubar\" in the value of `fubar-face'.
- (\"foo\\\\|bar\" 0 foo-bar-face t)
-                       Occurrences of either \"foo\" or \"bar\" in the value
-                       of `foo-bar-face', even if already highlighted.
+(autoload 'list-load-path-shadows "shadow" "\
+Display a list of Emacs Lisp files that shadow other files.
 
-MATCH-ANCHORED should be of the form:
+This function lists potential load-path problems.  Directories in the
+`load-path' variable are searched, in order, for Emacs Lisp
+files.  When a previously encountered file name is found again, a
+message is displayed indicating that the later file is \"hidden\" by
+the earlier.
 
- (MATCHER PRE-MATCH-FORM POST-MATCH-FORM MATCH-HIGHLIGHT ...)
+For example, suppose `load-path' is set to
 
-Where MATCHER is as for MATCH-HIGHLIGHT with one exception; see below.
-PRE-MATCH-FORM and POST-MATCH-FORM are evaluated before the first, and after
-the last, instance MATCH-ANCHORED's MATCHER is used.  Therefore they can be
-used to initialize before, and cleanup after, MATCHER is used.  Typically,
-PRE-MATCH-FORM is used to move to some position relative to the original
-MATCHER, before starting with MATCH-ANCHORED's MATCHER.  POST-MATCH-FORM might
-be used to move, before resuming with MATCH-ANCHORED's parent's MATCHER.
+\(\"/usr/gnu/emacs/site-lisp\" \"/usr/gnu/emacs/share/emacs/19.30/lisp\")
 
-For example, an element of the form highlights (if not already highlighted):
+and that each of these directories contains a file called XXX.el.  Then
+XXX.el in the site-lisp directory is referred to by all of:
+\(require 'XXX), (autoload .... \"XXX\"), (load-library \"XXX\") etc.
 
- (\"\\\\\\=<anchor\\\\\\=>\" (0 anchor-face) (\"\\\\\\=<item\\\\\\=>\" nil nil (0 item-face)))
+The first XXX.el file prevents emacs from seeing the second (unless
+the second is loaded explicitly via load-file).
 
- Discrete occurrences of \"anchor\" in the value of `anchor-face', and subsequent
- discrete occurrences of \"item\" (on the same line) in the value of `item-face'.
- (Here PRE-MATCH-FORM and POST-MATCH-FORM are nil.  Therefore \"item\" is
- initially searched for starting from the end of the match of \"anchor\", and
- searching for subsequent instance of \"anchor\" resumes from where searching
- for \"item\" concluded.)
-
-The above-mentioned exception is as follows.  The limit of the MATCHER search
-defaults to the end of the line after PRE-MATCH-FORM is evaluated.
-However, if PRE-MATCH-FORM returns a position greater than the position after
-PRE-MATCH-FORM is evaluated, that position is used as the limit of the search.
-It is generally a bad idea to return a position greater than the end of the
-line, i.e., cause the MATCHER search to span lines.
-
-Note that the MATCH-ANCHORED feature is experimental; in the future, we may
-replace it with other ways of providing this functionality.
+When not intended, such shadowings can be the source of subtle
+problems.  For example, the above situation may have arisen because the
+XXX package was not distributed with versions of emacs prior to
+19.30.  An emacs maintainer downloaded XXX from elsewhere and installed
+it.  Later, XXX was updated and included in the emacs distribution.
+Unless the emacs maintainer checks for this, the new version of XXX
+will be hidden behind the old (which may no longer work with the new
+emacs version).
 
-These regular expressions should not match text which spans lines.  While
-\\[font-lock-fontify-buffer] handles multi-line patterns correctly, updating
-when you edit the buffer does not, since it considers text one line at a time.
+This function performs these checks and flags all possible
+shadowings.  Because a .el file may exist without a corresponding .elc
+\(or vice-versa), these suffixes are essentially ignored.  A file
+XXX.elc in an early directory (that does not contain XXX.el) is
+considered to shadow a later file XXX.el, and vice-versa.
 
-Be very careful composing regexps for this list;
-the wrong pattern can dramatically slow things down!")
+When run interactively, the shadowings (if any) are displayed in a
+buffer called `*Shadows*'.  Shadowings are located by calling the
+\(non-interactive) companion function, `find-emacs-lisp-shadows'." t nil)
 
-(make-variable-buffer-local 'font-lock-keywords)
+;;;***
+\f
+;;;### (autoloads (load-default-sounds load-sound-file) "sound" "lisp/sound.el")
 
-(defcustom font-lock-mode nil "Non nil means `font-lock-mode' is on" :group 'font-lock :type 'boolean :initialize 'custom-initialize-default :require 'font-lock :set (function (lambda (var val) (font-lock-mode (or val 0)))))
+(or sound-alist (setq sound-alist '((ready nil) (warp nil))))
 
-(defvar font-lock-mode-hook nil "\
-Function or functions to run on entry to font-lock-mode.")
+(autoload 'load-sound-file "sound" "\
+Read in an audio-file and add it to the sound-alist.
 
-(autoload 'font-lock-mode "font-lock" "\
-Toggle Font Lock Mode.
-With arg, turn font-lock mode on if and only if arg is positive.
+You can only play sound files if you are running on display 0 of the
+console of a machine with native sound support or running a NetAudio
+server and XEmacs has the necessary sound support compiled in.
 
-When Font Lock mode is enabled, text is fontified as you type it:
+The sound file must be in the Sun/NeXT U-LAW format, except on Linux,
+where .wav files are also supported by the sound card drivers." t nil)
 
- - Comments are displayed in `font-lock-comment-face';
- - Strings are displayed in `font-lock-string-face';
- - Documentation strings (in Lisp-like languages) are displayed in
-   `font-lock-doc-string-face';
- - Language keywords (\"reserved words\") are displayed in
-   `font-lock-keyword-face';
- - Function names in their defining form are displayed in
-   `font-lock-function-name-face';
- - Variable names in their defining form are displayed in
-   `font-lock-variable-name-face';
- - Type names are displayed in `font-lock-type-face';
- - References appearing in help files and the like are displayed
-   in `font-lock-reference-face';
- - Preprocessor declarations are displayed in
-  `font-lock-preprocessor-face';
+(autoload 'load-default-sounds "sound" "\
+Load and install some sound files as beep-types, using
+`load-sound-file'.  This only works if you're on display 0 of the
+console of a machine with native sound support or running a NetAudio
+server and XEmacs has the necessary sound support compiled in." t nil)
 
-   and
+;;;***
+\f
+;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) "userlock" "lisp/userlock.el")
 
- - Certain other expressions are displayed in other faces according
-   to the value of the variable `font-lock-keywords'.
+(autoload 'ask-user-about-lock "userlock" "\
+Ask user what to do when he wants to edit FILE but it is locked by USER.
+This function has a choice of three things to do:
+  do (signal 'file-locked (list FILE USER))
+    to refrain from editing the file
+  return t (grab the lock on the file)
+  return nil (edit the file even though it is locked).
+You can rewrite it to use any criterion you like to choose which one to do." nil nil)
 
-Where modes support different levels of fontification, you can use the variable
-`font-lock-maximum-decoration' to specify which level you generally prefer.
-When you turn Font Lock mode on/off the buffer is fontified/defontified, though
-fontification occurs only if the buffer is less than `font-lock-maximum-size'.
-To fontify a buffer without turning on Font Lock mode, and regardless of buffer
-size, you can use \\[font-lock-fontify-buffer].
+(autoload 'ask-user-about-supersession-threat "userlock" "\
+Ask a user who is about to modify an obsolete buffer what to do.
+This function has two choices: it can return, in which case the modification
+of the buffer will proceed, or it can (signal 'file-supersession (file)),
+in which case the proposed buffer modification will not be made.
 
-See the variable `font-lock-keywords' for customization." t nil)
+You can rewrite this to use any criterion you like to choose which one to do.
+The buffer in question is current when this function is called." nil nil)
 
-(autoload 'turn-on-font-lock "font-lock" "\
-Unconditionally turn on Font Lock mode." nil nil)
+;;;***
+\f
+;;;### (autoloads (toggle-truncate-lines auto-view-mode view-major-mode view-mode view-minor-mode view-buffer-other-window view-file-other-window view-buffer view-file) "view-less" "lisp/view-less.el")
 
-(autoload 'turn-off-font-lock "font-lock" "\
-Unconditionally turn off Font Lock mode." nil nil)
+(defvar view-minor-mode-map (let ((map (make-keymap))) (set-keymap-name map 'view-minor-mode-map) (suppress-keymap map) (define-key map "-" 'negative-argument) (define-key map " " 'scroll-up) (define-key map "f" 'scroll-up) (define-key map "b" 'scroll-down) (define-key map 'backspace 'scroll-down) (define-key map 'delete 'scroll-down) (define-key map "\r" 'view-scroll-lines-up) (define-key map "\n" 'view-scroll-lines-up) (define-key map "e" 'view-scroll-lines-up) (define-key map "j" 'view-scroll-lines-up) (define-key map "y" 'view-scroll-lines-down) (define-key map "k" 'view-scroll-lines-down) (define-key map "d" 'view-scroll-some-lines-up) (define-key map "u" 'view-scroll-some-lines-down) (define-key map "r" 'recenter) (define-key map "t" 'toggle-truncate-lines) (define-key map "N" 'view-buffer) (define-key map "E" 'view-file) (define-key map "P" 'view-buffer) (define-key map "!" 'shell-command) (define-key map "|" 'shell-command-on-region) (define-key map "=" 'what-line) (define-key map "?" 'view-search-backward) (define-key map "h" 'view-mode-describe) (define-key map "s" 'view-repeat-search) (define-key map "n" 'view-repeat-search) (define-key map "/" 'view-search-forward) (define-key map "\\" 'view-search-backward) (define-key map "g" 'view-goto-line) (define-key map "G" 'view-last-windowful) (define-key map "%" 'view-goto-percent) (define-key map "p" 'view-goto-percent) (define-key map "m" 'point-to-register) (define-key map "'" 'register-to-point) (define-key map "C" 'view-cleanup-backspaces) (define-key map "\ 3\ 3" 'view-quit) (define-key map "\18\11" 'view-quit-toggle-ro) (define-key map "q" 'view-quit) map))
 
-(autoload 'font-lock-fontify-buffer "font-lock" "\
-Fontify the current buffer the way `font-lock-mode' would.
-See `font-lock-mode' for details.
+(defvar view-mode-map (let ((map (copy-keymap view-minor-mode-map))) (set-keymap-name map 'view-mode-map) map))
 
-This can take a while for large buffers." t nil)
+(autoload 'view-file "view-less" "\
+Find FILE, enter view mode.  With prefix arg OTHER-P, use other window." t nil)
 
-(autoload 'font-lock-set-defaults-1 "font-lock" nil nil nil)
+(autoload 'view-buffer "view-less" "\
+Switch to BUF, enter view mode.  With prefix arg use other window." t nil)
 
-(add-minor-mode 'font-lock-mode " Font")
+(autoload 'view-file-other-window "view-less" "\
+Find FILE in other window, and enter view mode." t nil)
 
-;;;***
-\f
-;;;### (autoloads (font-menu-weight-constructor font-menu-size-constructor font-menu-family-constructor reset-device-font-menus) "font-menu" "lisp/font-menu.el")
+(autoload 'view-buffer-other-window "view-less" "\
+Switch to BUFFER in another window, and enter view mode." t nil)
 
-(defcustom font-menu-ignore-scaled-fonts nil "*If non-nil, then the font menu will try to show only bitmap fonts." :type 'boolean :group 'font-menu)
+(autoload 'view-minor-mode "view-less" "\
+Minor mode for viewing text, with bindings like `less'.
+Commands are:
+\\<view-minor-mode-map>
+0..9   prefix args
+-      prefix minus
+\\[scroll-up]  page forward
+\\[scroll-down]        page back
+\\[view-scroll-lines-up]       scroll prefix-arg lines forward, default 1.
+\\[view-scroll-lines-down]     scroll prefix-arg lines backward, default 1.
+\\[view-scroll-some-lines-down]        scroll prefix-arg lines backward, default 10.
+\\[view-scroll-some-lines-up]  scroll prefix-arg lines forward, default 10.
+\\[what-line]  print line number
+\\[view-mode-describe] print this help message
+\\[view-search-forward]        regexp search, uses previous string if you just hit RET
+\\[view-search-backward]       as above but searches backward
+\\[view-repeat-search] repeat last search
+\\[view-goto-line]     goto line prefix-arg, default 1
+\\[view-last-windowful]        goto line prefix-arg, default last line
+\\[view-goto-percent]  goto a position by percentage
+\\[toggle-truncate-lines]      toggle truncate-lines
+\\[view-file]  view another file
+\\[view-buffer]        view another buffer
+\\[view-cleanup-backspaces]    cleanup backspace constructions
+\\[shell-command]      execute a shell command
+\\[shell-command-on-region]    execute a shell command with the region as input
+\\[view-quit]  exit view-mode, and bury the current buffer.
 
-(defcustom font-menu-this-frame-only-p nil "*If non-nil, then changing the default font from the font menu will only\naffect one frame instead of all frames." :type 'boolean :group 'font-menu)
+If invoked with the optional (prefix) arg non-nil, view-mode cleans up
+backspace constructions.
 
-(fset 'install-font-menus 'reset-device-font-menus)
+More precisely:
+\\{view-minor-mode-map}" t nil)
 
-(autoload 'reset-device-font-menus "font-menu" "\
-Generates the `Font', `Size', and `Weight' submenus for the Options menu.
-This is run the first time that a font-menu is needed for each device.
-If you don't like the lazy invocation of this function, you can add it to
-`create-device-hook' and that will make the font menus respond more quickly
-when they are selected for the first time.  If you add fonts to your system, 
-or if you change your font path, you can call this to re-initialize the menus." nil nil)
+(autoload 'view-mode "view-less" "\
+View the current buffer using view-minor-mode.  This exists to be 99.9%
+compatible with the implementations of `view-mode' in view.el and older
+versions of view-less.el." t nil)
 
-(autoload 'font-menu-family-constructor "font-menu" nil nil nil)
+(autoload 'view-major-mode "view-less" "\
+View the current buffer using view-mode, as a major mode.
+This function has a nonstandard name because `view-mode' is wrongly
+named but is like this for compatibility reasons." t nil)
 
-(autoload 'font-menu-size-constructor "font-menu" nil nil nil)
+(autoload 'auto-view-mode "view-less" "\
+If the file of the current buffer is not writable, call view-mode.
+This is meant to be added to `find-file-hooks'." nil nil)
 
-(autoload 'font-menu-weight-constructor "font-menu" nil nil nil)
+(autoload 'toggle-truncate-lines "view-less" "\
+Toggles the values of truncate-lines.
+Positive prefix arg sets, negative disables." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-encoding-for-device font-default-registry-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "lisp/font.el")
+;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse widget-browse-at) "wid-browse" "lisp/wid-browse.el")
 
-(autoload 'font-create-object "font" nil nil nil)
+(autoload 'widget-browse-at "wid-browse" "\
+Browse the widget under point." t nil)
 
-(autoload 'font-default-font-for-device "font" nil nil nil)
+(autoload 'widget-browse "wid-browse" "\
+Create a widget browser for WIDGET." t nil)
 
-(autoload 'font-default-object-for-device "font" nil nil nil)
+(autoload 'widget-browse-other-window "wid-browse" "\
+Show widget browser for WIDGET in other window." t nil)
 
-(autoload 'font-default-family-for-device "font" nil nil nil)
+(autoload 'widget-minor-mode "wid-browse" "\
+Togle minor mode for traversing widgets.
+With arg, turn widget mode on if and only if arg is positive." t nil)
 
-(autoload 'font-default-registry-for-device "font" nil nil nil)
+;;;***
+\f
+;;;### (autoloads (widget-delete widget-create widget-prompt-value) "wid-edit" "lisp/wid-edit.el")
 
-(autoload 'font-default-encoding-for-device "font" nil nil nil)
+(autoload 'widget-prompt-value "wid-edit" "\
+Prompt for a value matching WIDGET, using PROMPT.
+The current value is assumed to be VALUE, unless UNBOUND is non-nil." nil nil)
 
-(autoload 'font-default-size-for-device "font" nil nil nil)
+(autoload 'widget-create "wid-edit" "\
+Create widget of TYPE.
+The optional ARGS are additional keyword arguments." nil nil)
 
-(autoload 'x-font-build-cache "font" nil nil nil)
+(autoload 'widget-delete "wid-edit" "\
+Delete WIDGET." nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (gnuserv-start gnuserv-running-p) "gnuserv" "lisp/gnuserv.el")
+;;;### (autoloads (x-reset-device-font-menus) "x-font-menu" "lisp/x-font-menu.el")
 
-(defcustom gnuserv-frame nil "*The frame to be used to display all edited files.\nIf nil, then a new frame is created for each file edited.\nIf t, then the currently selected frame will be used.\nIf a function, then this will be called with a symbol `x' or `tty' as the\nonly argument, and its return value will be interpreted as above." :tag "Gnuserv Frame" :type '(radio (const :tag "Create new frame each time" nil) (const :tag "Use selected frame" t) (function-item :tag "Use main Emacs frame" gnuserv-main-frame-function) (function-item :tag "Use visible frame, otherwise create new" gnuserv-visible-frame-function) (function-item :tag "Create special Gnuserv frame and use it" gnuserv-special-frame-function) (function :tag "Other")) :group 'gnuserv :group 'frames)
+(autoload 'x-reset-device-font-menus "x-font-menu" "\
+Generates the `Font', `Size', and `Weight' submenus for the Options menu.
+This is run the first time that a font-menu is needed for each device.
+If you don't like the lazy invocation of this function, you can add it to
+`create-device-hook' and that will make the font menus respond more quickly
+when they are selected for the first time.  If you add fonts to your system, 
+or if you change your font path, you can call this to re-initialize the menus." nil nil)
 
-(autoload 'gnuserv-running-p "gnuserv" "\
-Return non-nil if a gnuserv process is running from this XEmacs session." nil nil)
+(defun* x-font-menu-font-data (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) (selected-device))) (name (font-instance-name (face-font-instance face domain))) (truename (font-instance-truename (face-font-instance face domain (if (featurep 'mule) 'ascii)))) family size weight entry slant) (when (string-match x-font-regexp-foundry-and-family name) (setq family (capitalize (match-string 1 name))) (setq entry (vassoc family (aref dcache 0)))) (when (and (null entry) (string-match x-font-regexp-foundry-and-family truename)) (setq family (capitalize (match-string 1 truename))) (setq entry (vassoc family (aref dcache 0)))) (when (null entry) (return-from x-font-menu-font-data (make-vector 5 nil))) (when (string-match x-font-regexp name) (setq weight (capitalize (match-string 1 name))) (setq size (string-to-int (match-string 6 name)))) (when (string-match x-font-regexp truename) (when (not (member weight (aref entry 1))) (setq weight (capitalize (match-string 1 truename)))) (when (not (member size (aref entry 2))) (setq size (string-to-int (match-string 6 truename)))) (setq slant (capitalize (match-string 2 truename)))) (vector entry family size weight slant)))
 
-(autoload 'gnuserv-start "gnuserv" "\
-Allow this Emacs process to be a server for client processes.
-This starts a gnuserv communications subprocess through which
-client \"editors\" (gnuclient and gnudoit) can send editing commands to
-this Emacs job.  See the gnuserv(1) manual page for more details.
+;;;***
+\f
+;;;### (autoloads (x-win-init-sun) "x-win-sun" "lisp/x-win-sun.el")
 
-Prefix arg means just kill any existing server communications subprocess." t nil)
+(autoload 'x-win-init-sun "x-win-sun" nil nil nil)
 
 ;;;***
 \f
-;;;### (autoloads nil "help-macro" "lisp/help-macro.el")
+;;;### (autoloads (x-win-init-xfree86) "x-win-xfree86" "lisp/x-win-xfree86.el")
 
-(defcustom three-step-help t "*Non-nil means give more info about Help command in three steps.\nThe three steps are simple prompt, prompt with all options,\nand window listing and describing the options.\nA value of nil means skip the middle step, so that\n\\[help-command] \\[help-command] gives the window that lists the options." :type 'boolean :group 'help-appearance)
+(autoload 'x-win-init-xfree86 "x-win-xfree86" nil nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (hyper-apropos-popup-menu hyper-apropos-set-variable hyper-set-variable hyper-apropos-read-variable-symbol hyper-describe-function hyper-where-is hyper-describe-variable hyper-describe-face hyper-describe-key-briefly hyper-describe-key hyper-apropos) "hyper-apropos" "lisp/hyper-apropos.el")
-
-(autoload 'hyper-apropos "hyper-apropos" "\
-Display lists of functions and variables matching REGEXP
-in buffer \"*Hyper Apropos*\".  If optional prefix arg is given, then the
-value of `hyper-apropos-programming-apropos' is toggled for this search.
-See also `hyper-apropos-mode'." t nil)
+;;;### (autoloads nil "abbrev" "lisp\\abbrev.el")
 
-(autoload 'hyper-describe-key "hyper-apropos" nil t nil)
+;;;***
+\f
+;;;### (autoloads (about-xemacs) "about" "lisp\\about.el")
 
-(autoload 'hyper-describe-key-briefly "hyper-apropos" nil t nil)
+(autoload 'about-xemacs "about" "\
+Describe the True Editor and its minions." t nil)
 
-(autoload 'hyper-describe-face "hyper-apropos" "\
-Describe face..
-See also `hyper-apropos' and `hyper-describe-function'." t nil)
+;;;***
+\f
+;;;### (autoloads (set-modified-alist modify-alist remove-alist set-alist del-alist put-alist vassoc) "alist" "lisp\\alist.el")
 
-(autoload 'hyper-describe-variable "hyper-apropos" "\
-Hypertext drop-in replacement for `describe-variable'.
-See also `hyper-apropos' and `hyper-describe-function'." t nil)
+(autoload 'vassoc "alist" "\
+Search VALIST for a vector whose first element is equal to KEY.
+See also `assoc'." nil nil)
 
-(autoload 'hyper-where-is "hyper-apropos" "\
-Print message listing key sequences that invoke specified command." t nil)
+(autoload 'put-alist "alist" "\
+Modify ALIST to set VALUE to ITEM.
+If there is a pair whose car is ITEM, replace its cdr by VALUE.
+If there is not such pair, create new pair (ITEM . VALUE) and
+return new alist whose car is the new pair and cdr is ALIST.
+[tomo's ELIS like function]" nil nil)
 
-(autoload 'hyper-describe-function "hyper-apropos" "\
-Hypertext replacement for `describe-function'.  Unlike `describe-function'
-in that the symbol under the cursor is the default if it is a function.
-See also `hyper-apropos' and `hyper-describe-variable'." t nil)
+(autoload 'del-alist "alist" "\
+If there is a pair whose key is ITEM, delete it from ALIST.
+[tomo's ELIS emulating function]" nil nil)
 
-(autoload 'hyper-apropos-read-variable-symbol "hyper-apropos" "\
-Hypertext drop-in replacement for `describe-variable'.
-See also `hyper-apropos' and `hyper-describe-function'." nil nil)
+(autoload 'set-alist "alist" "\
+Modify a alist indicated by SYMBOL to set VALUE to ITEM." nil nil)
 
-(define-obsolete-function-alias 'hypropos-read-variable-symbol 'hyper-apropos-read-variable-symbol)
+(autoload 'remove-alist "alist" "\
+Remove ITEM from the alist indicated by SYMBOL." nil nil)
 
-(define-obsolete-function-alias 'hypropos-get-doc 'hyper-apropos-get-doc)
+(autoload 'modify-alist "alist" "\
+Modify alist DEFAULT into alist MODIFIER." nil nil)
 
-(autoload 'hyper-set-variable "hyper-apropos" nil t nil)
+(autoload 'set-modified-alist "alist" "\
+Modify a value of a symbol SYM into alist MODIFIER.
+The symbol SYM should be alist. If it is not bound,
+its value regard as nil." nil nil)
 
-(autoload 'hyper-apropos-set-variable "hyper-apropos" "\
-Interactively set the variable on the current line." t nil)
+;;;***
+\f
+;;;### (autoloads (apropos-documentation apropos-value apropos apropos-command) "apropos" "lisp\\apropos.el")
 
-(define-obsolete-function-alias 'hypropos-set-variable 'hyper-apropos-set-variable)
+(fset 'command-apropos 'apropos-command)
 
-(autoload 'hyper-apropos-popup-menu "hyper-apropos" nil t nil)
+(autoload 'apropos-command "apropos" "\
+Shows commands (interactively callable functions) that match REGEXP.
+With optional prefix ARG or if `apropos-do-all' is non-nil, also show
+variables." t nil)
 
-(define-obsolete-function-alias 'hypropos-popup-menu 'hyper-apropos-popup-menu)
+(autoload 'apropos "apropos" "\
+Show all bound symbols whose names match REGEXP.
+With optional prefix ARG or if `apropos-do-all' is non-nil, also show unbound
+symbols and key bindings, which is a little more time-consuming.
+Returns list of symbols and documentation found." t nil)
+
+(autoload 'apropos-value "apropos" "\
+Show all symbols whose value's printed image matches REGEXP.
+With optional prefix ARG or if `apropos-do-all' is non-nil, also looks
+at the function and at the names and values of properties.
+Returns list of symbols and values found." t nil)
+
+(autoload 'apropos-documentation "apropos" "\
+Show symbols whose documentation contain matches for REGEXP.
+With optional prefix ARG or if `apropos-do-all' is non-nil, also use
+documentation that is not stored in the documentation file and show key
+bindings.
+Returns list of symbols and documentation found." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (Info-elisp-ref Info-emacs-key Info-goto-emacs-key-command-node Info-goto-emacs-command-node Info-emacs-command Info-search Info-visit-file Info-goto-node Info-batch-rebuild-dir Info-query info) "info" "lisp/info.el")
-
-(defvar Info-directory-list nil "\
-List of directories to search for Info documentation files.
+;;;### (autoloads nil "buff-menu" "lisp\\buff-menu.el")
 
-The first directory in this list, the \"dir\" file there will become
-the (dir)Top node of the Info documentation tree.
+(defvar list-buffers-directory nil)
 
-Note: DO NOT use the `customize' interface to change the value of this
-variable.  Its value is created dynamically on each startup, depending
-on XEmacs packages installed on the system.  If you want to change the
-search path, make the needed modifications on the variable's value
-from .emacs.  For instance:
+(make-variable-buffer-local 'list-buffers-directory)
 
-    (setq Info-directory-list (cons \"~/info\" Info-directory-list))")
+;;;***
+\f
+;;;### (autoloads (compiler-macroexpand define-compiler-macro ignore-file-errors ignore-errors assert check-type typep deftype cl-struct-setf-expander defstruct define-modify-macro callf2 callf letf* letf rotatef shiftf remf cl-do-pop psetf setf get-setf-method defsetf define-setf-method declare the locally multiple-value-setq multiple-value-bind lexical-let* lexical-let symbol-macrolet macrolet labels flet progv psetq do-all-symbols do-symbols dotimes dolist do* do loop return-from return block etypecase typecase ecase case load-time-value eval-when destructuring-bind function* defmacro* defun* cl-compile-time-init) "cl-macs" "lisp\\cl-macs.el")
 
-(autoload 'info "info" "\
-Enter Info, the documentation browser.
-Optional argument FILE specifies the file to examine;
-the default is the top-level directory of Info.
+(autoload 'cl-compile-time-init "cl-macs" nil nil nil)
 
-In interactive use, a prefix argument directs this command
-to read a file name from the minibuffer." t nil)
+(autoload 'defun* "cl-macs" "\
+(defun* NAME ARGLIST [DOCSTRING] BODY...): define NAME as a function.
+Like normal `defun', except ARGLIST allows full Common Lisp conventions,
+and BODY is implicitly surrounded by (block NAME ...)." nil 'macro)
 
-(autoload 'Info-query "info" "\
-Enter Info, the documentation browser.  Prompt for name of Info file." t nil)
+(autoload 'defmacro* "cl-macs" "\
+(defmacro* NAME ARGLIST [DOCSTRING] BODY...): define NAME as a macro.
+Like normal `defmacro', except ARGLIST allows full Common Lisp conventions,
+and BODY is implicitly surrounded by (block NAME ...)." nil 'macro)
 
-(autoload 'Info-batch-rebuild-dir "info" "\
-(Re)build info `dir' files in the directories remaining on the command line.
-Use this from the command line, with `-batch';
-it won't work in an interactive Emacs.
-Each file is processed even if an error occurred previously.
-For example, invoke \"xemacs -batch -f Info-batch-rebuild-dir /usr/local/info\"" nil nil)
+(autoload 'function* "cl-macs" "\
+(function* SYMBOL-OR-LAMBDA): introduce a function.
+Like normal `function', except that if argument is a lambda form, its
+ARGLIST allows full Common Lisp conventions." nil 'macro)
 
-(autoload 'Info-goto-node "info" "\
-Go to info node named NAME.  Give just NODENAME or (FILENAME)NODENAME.
-Actually, the following interpretations of NAME are tried in order:
-    (FILENAME)NODENAME
-    (FILENAME)     (using Top node)
-    NODENAME       (in current file)
-    TAGNAME        (see below)
-    FILENAME       (using Top node)
-where TAGNAME is a string that appears in quotes: \"TAGNAME\", in an
-annotation for any node of any file.  (See `a' and `x' commands.)" t nil)
+(autoload 'destructuring-bind "cl-macs" nil nil 'macro)
 
-(autoload 'Info-visit-file "info" "\
-Directly visit an info file." t nil)
+(autoload 'eval-when "cl-macs" "\
+(eval-when (WHEN...) BODY...): control when BODY is evaluated.
+If `compile' is in WHEN, BODY is evaluated when compiled at top-level.
+If `load' is in WHEN, BODY is evaluated when loaded after top-level compile.
+If `eval' is in WHEN, BODY is evaluated when interpreted or at non-top-level." nil 'macro)
 
-(autoload 'Info-search "info" "\
-Search for REGEXP, starting from point, and select node it's found in." t nil)
+(autoload 'load-time-value "cl-macs" "\
+Like `progn', but evaluates the body at load time.
+The result of the body appears to the compiler as a quoted constant." nil 'macro)
 
-(autoload 'Info-emacs-command "info" "\
-Look up an Emacs command in the Emacs manual in the Info system.
-This command is designed to be used whether you are already in Info or not." t nil)
+(autoload 'case "cl-macs" "\
+(case EXPR CLAUSES...): evals EXPR, chooses from CLAUSES on that value.
+Each clause looks like (KEYLIST BODY...).  EXPR is evaluated and compared
+against each key in each KEYLIST; the corresponding BODY is evaluated.
+If no clause succeeds, case returns nil.  A single atom may be used in
+place of a KEYLIST of one atom.  A KEYLIST of `t' or `otherwise' is
+allowed only in the final clause, and matches if no other keys match.
+Key values are compared by `eql'." nil 'macro)
 
-(autoload 'Info-goto-emacs-command-node "info" "\
-Look up an Emacs command in the Emacs manual in the Info system.
-This command is designed to be used whether you are already in Info or not." t nil)
+(autoload 'ecase "cl-macs" "\
+(ecase EXPR CLAUSES...): like `case', but error if no case fits.
+`otherwise'-clauses are not allowed." nil 'macro)
 
-(autoload 'Info-goto-emacs-key-command-node "info" "\
-Look up an Emacs key sequence in the Emacs manual in the Info system.
-This command is designed to be used whether you are already in Info or not." t nil)
+(autoload 'typecase "cl-macs" "\
+(typecase EXPR CLAUSES...): evals EXPR, chooses from CLAUSES on that value.
+Each clause looks like (TYPE BODY...).  EXPR is evaluated and, if it
+satisfies TYPE, the corresponding BODY is evaluated.  If no clause succeeds,
+typecase returns nil.  A TYPE of `t' or `otherwise' is allowed only in the
+final clause, and matches if no other keys match." nil 'macro)
 
-(autoload 'Info-emacs-key "info" "\
-Look up an Emacs key sequence in the Emacs manual in the Info system.
-This command is designed to be used whether you are already in Info or not." t nil)
+(autoload 'etypecase "cl-macs" "\
+(etypecase EXPR CLAUSES...): like `typecase', but error if no case fits.
+`otherwise'-clauses are not allowed." nil 'macro)
 
-(autoload 'Info-elisp-ref "info" "\
-Look up an Emacs Lisp function in the Elisp manual in the Info system.
-This command is designed to be used whether you are already in Info or not." t nil)
+(autoload 'block "cl-macs" "\
+(block NAME BODY...): define a lexically-scoped block named NAME.
+NAME may be any symbol.  Code inside the BODY forms can call `return-from'
+to jump prematurely out of the block.  This differs from `catch' and `throw'
+in two respects:  First, the NAME is an unevaluated symbol rather than a
+quoted symbol or other form; and second, NAME is lexically rather than
+dynamically scoped:  Only references to it within BODY will work.  These
+references may appear inside macro expansions, but not inside functions
+called from BODY." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads nil "itimer-autosave" "lisp/itimer-autosave.el")
+(autoload 'return "cl-macs" "\
+(return [RESULT]): return from the block named nil.
+This is equivalent to `(return-from nil RESULT)'." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads nil "loaddefs" "lisp/loaddefs.el")
+(autoload 'return-from "cl-macs" "\
+(return-from NAME [RESULT]): return from the block named NAME.
+This jumps out to the innermost enclosing `(block NAME ...)' form,
+returning RESULT from that form (or nil if RESULT is omitted).
+This is compatible with Common Lisp, but note that `defun' and
+`defmacro' do not create implicit blocks as they do in Common Lisp." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads nil "loadhist" "lisp/loadhist.el")
+(autoload 'loop "cl-macs" "\
+(loop CLAUSE...): The Common Lisp `loop' macro.
+Valid clauses are:
+  for VAR from/upfrom/downfrom NUM to/upto/downto/above/below NUM by NUM,
+  for VAR in LIST by FUNC, for VAR on LIST by FUNC, for VAR = INIT then EXPR,
+  for VAR across ARRAY, repeat NUM, with VAR = INIT, while COND, until COND,
+  always COND, never COND, thereis COND, collect EXPR into VAR,
+  append EXPR into VAR, nconc EXPR into VAR, sum EXPR into VAR,
+  count EXPR into VAR, maximize EXPR into VAR, minimize EXPR into VAR,
+  if COND CLAUSE [and CLAUSE]... else CLAUSE [and CLAUSE...],
+  unless COND CLAUSE [and CLAUSE]... else CLAUSE [and CLAUSE...],
+  do EXPRS..., initially EXPRS..., finally EXPRS..., return EXPR,
+  finally return EXPR, named NAME." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads (mswindows-reset-device-font-menus) "msw-font-menu" "lisp/msw-font-menu.el")
+(autoload 'do "cl-macs" "\
+The Common Lisp `do' loop.
+Format is: (do ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil 'macro)
 
-(autoload 'mswindows-reset-device-font-menus "msw-font-menu" "\
-Generates the `Font', `Size', and `Weight' submenus for the Options menu.
-This is run the first time that a font-menu is needed for each device.
-If you don't like the lazy invocation of this function, you can add it to
-`create-device-hook' and that will make the font menus respond more quickly
-when they are selected for the first time.  If you add fonts to your system, 
-or if you change your font path, you can call this to re-initialize the menus." nil nil)
+(autoload 'do* "cl-macs" "\
+The Common Lisp `do*' loop.
+Format is: (do* ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)" nil 'macro)
 
-(defun* mswindows-font-menu-font-data (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) (selected-device))) (name (font-instance-name (face-font-instance face domain))) (truename (font-instance-truename (face-font-instance face domain (if (featurep 'mule) 'ascii)))) family size weight entry slant) (when (string-match mswindows-font-regexp name) (setq family (match-string 1 name)) (setq entry (vassoc family (aref dcache 0)))) (when (and (null entry) (string-match mswindows-font-regexp truename)) (setq family (match-string 1 truename)) (setq entry (vassoc family (aref dcache 0)))) (when (null entry) (return-from mswindows-font-menu-font-data (make-vector 5 nil))) (when (string-match mswindows-font-regexp name) (setq weight (match-string 2 name)) (setq size (string-to-int (match-string 4 name)))) (when (string-match mswindows-font-regexp truename) (when (not (member weight (aref entry 1))) (setq weight (match-string 2 truename))) (when (not (member size (aref entry 2))) (setq size (string-to-int (match-string 4 truename)))) (setq slant (match-string 5 truename))) (vector entry family size weight slant)))
+(autoload 'dolist "cl-macs" "\
+(dolist (VAR LIST [RESULT]) BODY...): loop over a list.
+Evaluate BODY with VAR bound to each `car' from LIST, in turn.
+Then evaluate RESULT to get return value, default nil." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads (mwheel-install) "mwheel" "lisp/mwheel.el")
+(autoload 'dotimes "cl-macs" "\
+(dotimes (VAR COUNT [RESULT]) BODY...): loop a certain number of times.
+Evaluate BODY with VAR bound to successive integers from 0, inclusive,
+to COUNT, exclusive.  Then evaluate RESULT to get return value, default
+nil." nil 'macro)
 
-(autoload 'mwheel-install "mwheel" "\
-Enable mouse wheel support." nil nil)
+(autoload 'do-symbols "cl-macs" "\
+(dosymbols (VAR [OBARRAY [RESULT]]) BODY...): loop over all symbols.
+Evaluate BODY with VAR bound to each interned symbol, or to each symbol
+from OBARRAY." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads (package-admin-add-binary-package package-admin-add-single-file-package) "package-admin" "lisp/package-admin.el")
+(autoload 'do-all-symbols "cl-macs" nil nil 'macro)
 
-(autoload 'package-admin-add-single-file-package "package-admin" "\
-Install a single file Lisp package into XEmacs package hierarchy.
-`file' should be the full path to the lisp file to install.
-`destdir' should be a simple directory name.
-The optional `pkg-dir' can be used to override the default package hierarchy
-\(car (last late-packages))." t nil)
+(autoload 'psetq "cl-macs" "\
+(psetq SYM VAL SYM VAL ...): set SYMs to the values VALs in parallel.
+This is like `setq', except that all VAL forms are evaluated (in order)
+before assigning any symbols SYM to the corresponding values." nil 'macro)
 
-(autoload 'package-admin-add-binary-package "package-admin" "\
-Install a pre-bytecompiled XEmacs package into package hierarchy." t nil)
+(autoload 'progv "cl-macs" "\
+(progv SYMBOLS VALUES BODY...): bind SYMBOLS to VALUES dynamically in BODY.
+The forms SYMBOLS and VALUES are evaluated, and must evaluate to lists.
+Each SYMBOL in the first list is bound to the corresponding VALUE in the
+second list (or made unbound if VALUES is shorter than SYMBOLS); then the
+BODY forms are executed and their result is returned.  This is much like
+a `let' form, except that the list of symbols can be computed at run-time." nil 'macro)
 
-;;;***
-\f
-;;;### (autoloads (package-get-custom package-get-package-provider package-get package-get-dependencies package-get-all package-get-update-all package-get-delete-package package-get-save-base package-get-update-base-from-buffer package-get-update-base package-get-update-base-entry package-get-require-base package-get-download-menu) "package-get" "lisp/package-get.el")
+(autoload 'flet "cl-macs" "\
+(flet ((FUNC ARGLIST BODY...) ...) FORM...): make temporary function defns.
+This is an analogue of `let' that operates on the function cell of FUNC
+rather than its value cell.  The FORMs are evaluated with the specified
+function definitions in place, then the definitions are undone (the FUNCs
+go back to their previous definitions, or lack thereof)." nil 'macro)
 
-(defvar package-get-base nil "\
-List of packages that are installed at this site.
-For each element in the alist,  car is the package name and the cdr is
-a plist containing information about the package.   Typical fields
-kept in the plist are:
+(autoload 'labels "cl-macs" "\
+(labels ((FUNC ARGLIST BODY...) ...) FORM...): make temporary func bindings.
+This is like `flet', except the bindings are lexical instead of dynamic.
+Unlike `flet', this macro is fully compliant with the Common Lisp standard." nil 'macro)
 
-version                - version of this package
-provides       - list of symbols provided
-requires       - list of symbols that are required.
-                 These in turn are provided by other packages.
-filename       - name of the file.
-size           - size of the file (aka the bundled package)
-md5sum         - computed md5 checksum
-description    - What this package is for.
-type           - Whether this is a 'binary (default) or 'single file package
+(autoload 'macrolet "cl-macs" "\
+(macrolet ((NAME ARGLIST BODY...) ...) FORM...): make temporary macro defns.
+This is like `flet', but for macros instead of functions." nil 'macro)
 
-More fields may be added as needed.  An example:
+(autoload 'symbol-macrolet "cl-macs" "\
+(symbol-macrolet ((NAME EXPANSION) ...) FORM...): make symbol macro defns.
+Within the body FORMs, references to the variable NAME will be replaced
+by EXPANSION, and (setq NAME ...) will act like (setf EXPANSION ...)." nil 'macro)
 
-'(
- (name
-  (version \"<version 2>\"
-   file \"filename\"
-   description \"what this package is about.\"
-   provides (<list>)
-   requires (<list>)
-   size <integer-bytes>
-   md5sum \"<checksum\"
-   type single
-   )
-  (version \"<version 1>\"
-   file \"filename\"
-   description \"what this package is about.\"
-   provides (<list>)
-   requires (<list>)
-   size <integer-bytes>
-   md5sum \"<checksum\"
-   type single
-   )
-   ...
-   ))
+(autoload 'lexical-let "cl-macs" "\
+(lexical-let BINDINGS BODY...): like `let', but lexically scoped.
+The main visible difference is that lambdas inside BODY will create
+lexical closures as in Common Lisp." nil 'macro)
 
-For version information, it is assumed things are listed in most
-recent to least recent -- in other words, the version names don't have to
-be lexically ordered.  It is debatable if it makes sense to have more than
-one version of a package available.")
+(autoload 'lexical-let* "cl-macs" "\
+(lexical-let* BINDINGS BODY...): like `let*', but lexically scoped.
+The main visible difference is that lambdas inside BODY will create
+lexical closures as in Common Lisp." nil 'macro)
 
-(defcustom package-get-download-sites '(("xemacs.org" "ftp.xemacs.org" "pub/xemacs/packages") ("crc.ca (Canada)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") ("ualberta.ca (Canada)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packages") ("uiuc.edu (United States)" "uiarchive.uiuc.edu" "pub/packages/xemacs/packages") ("unc.edu (United States)" "metalab.unc.edu" "pub/packages/editors/xemacs/packages") ("utk.edu (United States)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") ("unicamp.br (Brazil)" "ftp.unicamp.br" "pub/xemacs/packages") ("tuwien.ac.at (Austria)" "gd.tuwien.ac.at" "editors/xemacs/packages") ("auc.dk (Denmark)" "sunsite.auc.dk" "pub/emacs/xemacs/packages") ("doc.ic.ac.uk (England)" "sunsite.doc.ic.ac.uk" "packages/xemacs/packages") ("funet.fi (Finland)" "ftp.funet.fi" "pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/packages") ("cenatls.cena.dgac.fr (France)" "ftp.cenatls.cena.dgac.fr" "Emacs/xemacs/packages") ("pasteur.fr (France)" "ftp.pasteur.fr" "pub/computing/xemacs/packages") ("tu-darmstadt.de (Germany)" "ftp.tu-darmstadt.de" "pub/editors/xemacs/packages") ("kfki.hu (Hungary)" "ftp.kfki.hu" "pub/packages/xemacs/packages") ("eunet.ie (Ireland)" "ftp.eunet.ie" "mirrors/ftp.xemacs.org/pub/xemacs/packages") ("uniroma2.it (Italy)" "ftp.uniroma2.it" "unix/misc/dist/XEMACS/packages") ("uio.no (Norway)" "sunsite.uio.no" "pub/xemacs/packages") ("icm.edu.pl (Poland)" "ftp.icm.edu.pl" "pub/unix/editors/xemacs/packages") ("srcc.msu.su (Russia)" "ftp.srcc.msu.su" "mirror/ftp.xemacs.org/packages") ("sunet.se (Sweden)" "ftp.sunet.se" "pub/gnu/xemacs/packages") ("cnlab-switch.ch (Switzerland)" "sunsite.cnlab-switch.ch" "mirror/xemacs/packages") ("aist.go.jp (Japan)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("asahi-net.or.jp (Japan)" "ring.asahi-net.or.jp" "pub/text/xemacs/packages") ("dti.ad.jp (Japan)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") ("jaist.ac.jp (Japan)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("nucba.ac.jp (Japan)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("sut.ac.jp (Japan)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/packages") ("tsukuba.ac.jp (Japan)" "ftp.netlab.is.tsukuba.ac.jp" "pub/GNU/xemacs/packages") ("kreonet.re.kr (Korea)" "ftp.kreonet.re.kr" "pub/tools/emacs/xemacs/packages") ("nctu.edu.tw (Taiwan)" "coda.nctu.edu.tw" "Editors/xemacs/packages") ("sun.ac.za (South Africa)" "ftp.sun.ac.za" "xemacs/packages") ("isu.net.sa (Saudi Arabia)" "ftp.isu.net.sa" "pub/mirrors/ftp.xemacs.org/packages") ("aarnet.edu.au (Australia)" "mirror.aarnet.edu.au" "pub/xemacs/packages")) "*List of remote sites available for downloading packages.\nList format is '(site-description site-name directory-on-site).\nSITE-DESCRIPTION is a textual description of the site.  SITE-NAME\nis the internet address of the download site.  DIRECTORY-ON-SITE\nis the directory on the site in which packages may be found.\nThis variable is used to initialize `package-get-remote', the\nvariable actually used to specify package download sites." :tag "Package download sites" :type '(repeat (list (string :tag "Name") host-name directory)) :group 'package-get)
+(autoload 'multiple-value-bind "cl-macs" "\
+(multiple-value-bind (SYM SYM...) FORM BODY): collect multiple return values.
+FORM must return a list; the BODY is then executed with the first N elements
+of this list bound (`let'-style) to each of the symbols SYM in turn.  This
+is analogous to the Common Lisp `multiple-value-bind' macro, using lists to
+simulate true multiple return values.  For compatibility, (values A B C) is
+a synonym for (list A B C)." nil 'macro)
 
-(autoload 'package-get-download-menu "package-get" "\
-Build the `Add Download Site' menu." nil nil)
+(autoload 'multiple-value-setq "cl-macs" "\
+(multiple-value-setq (SYM SYM...) FORM): collect multiple return values.
+FORM must return a list; the first N elements of this list are stored in
+each of the symbols SYM in turn.  This is analogous to the Common Lisp
+`multiple-value-setq' macro, using lists to simulate true multiple return
+values.  For compatibility, (values A B C) is a synonym for (list A B C)." nil 'macro)
 
-(autoload 'package-get-require-base "package-get" "\
-Require that a package-get database has been loaded.
-If the optional FORCE-CURRENT argument or the value of
-`package-get-always-update' is Non-nil, try to update the database
-from a location in `package-get-remote'. Otherwise a local copy is used
-if available and remote access is never done.
+(autoload 'locally "cl-macs" nil nil 'macro)
 
-Please use FORCE-CURRENT only when the user is explictly dealing with packages
-and remote access is likely in the near future." nil nil)
+(autoload 'the "cl-macs" nil nil 'macro)
 
-(autoload 'package-get-update-base-entry "package-get" "\
-Update an entry in `package-get-base'." nil nil)
+(autoload 'declare "cl-macs" nil nil 'macro)
 
-(autoload 'package-get-update-base "package-get" "\
-Update the package-get database file with entries from DB-FILE.
-Unless FORCE-CURRENT is non-nil never try to update the database." t nil)
+(autoload 'define-setf-method "cl-macs" "\
+(define-setf-method NAME ARGLIST BODY...): define a `setf' method.
+This method shows how to handle `setf's to places of the form (NAME ARGS...).
+The argument forms ARGS are bound according to ARGLIST, as if NAME were
+going to be expanded as a macro, then the BODY forms are executed and must
+return a list of five elements: a temporary-variables list, a value-forms
+list, a store-variables list (of length one), a store-form, and an access-
+form.  See `defsetf' for a simpler way to define most setf-methods." nil 'macro)
 
-(autoload 'package-get-update-base-from-buffer "package-get" "\
-Update the package-get database with entries from BUFFER.
-BUFFER defaults to the current buffer.  This command can be
-used interactively, for example from a mail or news buffer." t nil)
+(autoload 'defsetf "cl-macs" "\
+(defsetf NAME FUNC): define a `setf' method.
+This macro is an easy-to-use substitute for `define-setf-method' that works
+well for simple place forms.  In the simple `defsetf' form, `setf's of
+the form (setf (NAME ARGS...) VAL) are transformed to function or macro
+calls of the form (FUNC ARGS... VAL).  Example: (defsetf aref aset).
+Alternate form: (defsetf NAME ARGLIST (STORE) BODY...).
+Here, the above `setf' call is expanded by binding the argument forms ARGS
+according to ARGLIST, binding the value form VAL to STORE, then executing
+BODY, which must return a Lisp form that does the necessary `setf' operation.
+Actually, ARGLIST and STORE may be bound to temporary variables which are
+introduced automatically to preserve proper execution order of the arguments.
+Example: (defsetf nth (n x) (v) (list 'setcar (list 'nthcdr n x) v))." nil 'macro)
 
-(autoload 'package-get-save-base "package-get" "\
-Write the package-get database to FILE.
+(autoload 'get-setf-method "cl-macs" "\
+Return a list of five values describing the setf-method for PLACE.
+PLACE may be any Lisp form which can appear as the PLACE argument to
+a macro like `setf' or `incf'." nil nil)
 
-Note: This database will be unsigned of course." t nil)
+(autoload 'setf "cl-macs" "\
+(setf PLACE VAL PLACE VAL ...): set each PLACE to the value of its VAL.
+This is a generalized version of `setq'; the PLACEs may be symbolic
+references such as (car x) or (aref x i), as well as plain symbols.
+For example, (setf (cadar x) y) is equivalent to (setcar (cdar x) y).
+The return value is the last VAL in the list." nil 'macro)
 
-(autoload 'package-get-delete-package "package-get" "\
-Delete an installation of PACKAGE below directory PKG-TOPDIR.
-PACKAGE is a symbol, not a string.
-This is just an interactive wrapper for `package-admin-delete-binary-package'." t nil)
+(autoload 'psetf "cl-macs" "\
+(psetf PLACE VAL PLACE VAL ...): set PLACEs to the values VALs in parallel.
+This is like `setf', except that all VAL forms are evaluated (in order)
+before assigning any PLACEs to the corresponding values." nil 'macro)
 
-(autoload 'package-get-update-all "package-get" "\
-Fetch and install the latest versions of all currently installed packages." t nil)
+(autoload 'cl-do-pop "cl-macs" nil nil nil)
 
-(autoload 'package-get-all "package-get" "\
-Fetch PACKAGE with VERSION and all other required packages.
-Uses `package-get-base' to determine just what is required and what
-package provides that functionality.  If VERSION is nil, retrieves
-latest version.  Optional argument FETCHED-PACKAGES is used to keep
-track of packages already fetched.  Optional argument INSTALL-DIR,
-if non-nil, specifies the package directory where fetched packages
-should be installed.
+(autoload 'remf "cl-macs" "\
+(remf PLACE TAG): remove TAG from property list PLACE.
+PLACE may be a symbol, or any generalized variable allowed by `setf'.
+The form returns true if TAG was found and removed, nil otherwise." nil 'macro)
 
-Returns nil upon error." t nil)
+(autoload 'shiftf "cl-macs" "\
+(shiftf PLACE PLACE... VAL): shift left among PLACEs.
+Example: (shiftf A B C) sets A to B, B to C, and returns the old A.
+Each PLACE may be a symbol, or any generalized variable allowed by `setf'." nil 'macro)
 
-(autoload 'package-get-dependencies "package-get" "\
-Compute dependencies for PACKAGES.
-Uses `package-get-base' to determine just what is required and what
-package provides that functionality.  Returns the list of packages
-required by PACKAGES." nil nil)
+(autoload 'rotatef "cl-macs" "\
+(rotatef PLACE...): rotate left among PLACEs.
+Example: (rotatef A B C) sets A to B, B to C, and C to A.  It returns nil.
+Each PLACE may be a symbol, or any generalized variable allowed by `setf'." nil 'macro)
+
+(autoload 'letf "cl-macs" "\
+(letf ((PLACE VALUE) ...) BODY...): temporarily bind to PLACEs.
+This is the analogue of `let', but with generalized variables (in the
+sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
+VALUE, then the BODY forms are executed.  On exit, either normally or
+because of a `throw' or error, the PLACEs are set back to their original
+values.  Note that this macro is *not* available in Common Lisp.
+As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
+the PLACE is not modified before executing BODY." nil 'macro)
+
+(autoload 'letf* "cl-macs" "\
+(letf* ((PLACE VALUE) ...) BODY...): temporarily bind to PLACEs.
+This is the analogue of `let*', but with generalized variables (in the
+sense of `setf') for the PLACEs.  Each PLACE is set to the corresponding
+VALUE, then the BODY forms are executed.  On exit, either normally or
+because of a `throw' or error, the PLACEs are set back to their original
+values.  Note that this macro is *not* available in Common Lisp.
+As a special case, if `(PLACE)' is used instead of `(PLACE VALUE)',
+the PLACE is not modified before executing BODY." nil 'macro)
+
+(autoload 'callf "cl-macs" "\
+(callf FUNC PLACE ARGS...): set PLACE to (FUNC PLACE ARGS...).
+FUNC should be an unquoted function name.  PLACE may be a symbol,
+or any generalized variable allowed by `setf'." nil 'macro)
+
+(autoload 'callf2 "cl-macs" "\
+(callf2 FUNC ARG1 PLACE ARGS...): set PLACE to (FUNC ARG1 PLACE ARGS...).
+Like `callf', but PLACE is the second argument of FUNC, not the first." nil 'macro)
+
+(autoload 'define-modify-macro "cl-macs" "\
+(define-modify-macro NAME ARGLIST FUNC): define a `setf'-like modify macro.
+If NAME is called, it combines its PLACE argument with the other arguments
+from ARGLIST using FUNC: (define-modify-macro incf (&optional (n 1)) +)" nil 'macro)
+
+(autoload 'defstruct "cl-macs" "\
+(defstruct (NAME OPTIONS...) (SLOT SLOT-OPTS...)...): define a struct type.
+This macro defines a new Lisp data type called NAME, which contains data
+stored in SLOTs.  This defines a `make-NAME' constructor, a `copy-NAME'
+copier, a `NAME-p' predicate, and setf-able `NAME-SLOT' accessors." nil 'macro)
+
+(autoload 'cl-struct-setf-expander "cl-macs" nil nil nil)
+
+(autoload 'deftype "cl-macs" "\
+(deftype NAME ARGLIST BODY...): define NAME as a new data type.
+The type name can then be used in `typecase', `check-type', etc." nil 'macro)
+
+(autoload 'typep "cl-macs" "\
+Check that OBJECT is of type TYPE.
+TYPE is a Common Lisp-style type specifier." nil nil)
+
+(autoload 'check-type "cl-macs" "\
+Verify that FORM is of type TYPE; signal an error if not.
+STRING is an optional description of the desired type." nil 'macro)
+
+(autoload 'assert "cl-macs" "\
+Verify that FORM returns non-nil; signal an error if not.
+Second arg SHOW-ARGS means to include arguments of FORM in message.
+Other args STRING and ARGS... are arguments to be passed to `error'.
+They are not evaluated unless the assertion fails.  If STRING is
+omitted, a default message listing FORM itself is used." nil 'macro)
+
+(autoload 'ignore-errors "cl-macs" "\
+Execute FORMS; if an error occurs, return nil.
+Otherwise, return result of last FORM." nil 'macro)
+
+(autoload 'ignore-file-errors "cl-macs" "\
+Execute FORMS; if an error of type `file-error' occurs, return nil.
+Otherwise, return result of last FORM." nil 'macro)
+
+(autoload 'define-compiler-macro "cl-macs" "\
+(define-compiler-macro FUNC ARGLIST BODY...): Define a compiler-only macro.
+This is like `defmacro', but macro expansion occurs only if the call to
+FUNC is compiled (i.e., not interpreted).  Compiler macros should be used
+for optimizing the way calls to FUNC are compiled; the form returned by
+BODY should do the same thing as a call to the normal function called
+FUNC, though possibly more efficiently.  Note that, like regular macros,
+compiler macros are expanded repeatedly until no further expansions are
+possible.  Unlike regular macros, BODY can decide to \"punt\" and leave the
+original function call alone by declaring an initial `&whole foo' parameter
+and then returning foo." nil 'macro)
+
+(autoload 'compiler-macroexpand "cl-macs" nil nil nil)
+
+;;;***
+\f
+;;;### (autoloads (batch-remove-old-elc) "cleantree" "lisp\\cleantree.el")
 
-(autoload 'package-get "package-get" "\
-Fetch PACKAGE from remote site.
-Optional arguments VERSION indicates which version to retrieve, nil
-means most recent version.  CONFLICT indicates what happens if the
-package is already installed.  Valid values for CONFLICT are:
-'always        always retrieve the package even if it is already installed
-'never do not retrieve the package if it is installed.
-INSTALL-DIR, if non-nil, specifies the package directory where
-fetched packages should be installed.
+(autoload 'batch-remove-old-elc "cleantree" nil nil nil)
 
-The value of `package-get-base' is used to determine what files should
-be retrieved.  The value of `package-get-remote' is used to determine
-where a package should be retrieved from.  The sites are tried in
-order so one is better off listing easily reached sites first.
+;;;***
+\f
+;;;### (autoloads (config-value config-value-hash-table) "config" "lisp\\config.el")
 
-Once the package is retrieved, its md5 checksum is computed.  If that
-sum does not match that stored in `package-get-base' for this version
-of the package, an error is signalled.
+(autoload 'config-value-hash-table "config" "\
+Return hash table of configuration parameters and their values." nil nil)
 
-Returns `t' upon success, the symbol `error' if the package was
-successfully installed but errors occurred during initialization, or
-`nil' upon error." t nil)
+(autoload 'config-value "config" "\
+Return the value of the configuration parameter CONFIG_SYMBOL." nil nil)
 
-(autoload 'package-get-package-provider "package-get" "\
-Search for a package that provides SYM and return the name and
-  version.  Searches in `package-get-base' for SYM.   If SYM is a
-  consp, then it must match a corresponding (provide (SYM VERSION)) from
-  the package.
+;;;***
+\f
+;;;### (autoloads (Custom-make-dependencies) "cus-dep" "lisp\\cus-dep.el")
 
-If FORCE-CURRENT is non-nil make sure the database is up to date. This might
-lead to Emacs accessing remote sites." t nil)
+(autoload 'Custom-make-dependencies "cus-dep" "\
+Extract custom dependencies from .el files in SUBDIRS.
+SUBDIRS is a list of directories.  If it is nil, the command-line
+arguments are used.  If it is a string, only that directory is
+processed.  This function is especially useful in batch mode.
 
-(autoload 'package-get-custom "package-get" "\
-Fetch and install the latest versions of all customized packages." t nil)
+Batch usage: xemacs -batch -l cus-dep.el -f Custom-make-dependencies DIRS" t nil)
 
 ;;;***
 \f
-;;;### (autoloads (pui-list-packages pui-add-install-directory package-ui-add-site) "package-ui" "lisp/package-ui.el")
+;;;### (autoloads (customize-menu-create custom-menu-create custom-save-all customize-save-customized customize-browse custom-buffer-create-other-window custom-buffer-create customize-apropos-groups customize-apropos-faces customize-apropos-options customize-apropos customize-saved customize-customized customize-face-other-window customize-face customize-option-other-window customize-changed-options customize-variable customize-other-window customize customize-save-variable customize-set-variable customize-set-value) "cus-edit" "lisp\\cus-edit.el")
 
-(autoload 'package-ui-add-site "package-ui" "\
-Add site to package-get-remote and possibly offer to update package list." nil nil)
+(autoload 'customize-set-value "cus-edit" "\
+Set VARIABLE to VALUE.  VALUE is a Lisp object.
 
-(autoload 'pui-add-install-directory "package-ui" "\
-Add a new package binary directory to the head of `package-get-remote'.
-Note that no provision is made for saving any changes made by this function.
-It exists mainly as a convenience for one-time package installations from
-disk." t nil)
+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.
 
-(autoload 'pui-list-packages "package-ui" "\
-List all packages and package information.
-The package name, version, and description are displayed.  From the displayed
-buffer, the user can see which packages are installed, which are not, and
-which are out-of-date (a newer version is available).  The user can then
-select packages for installation via the keyboard or mouse." t nil)
+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.
 
-(defalias 'list-packages 'pui-list-packages)
+If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
 
-;;;***
-\f
-;;;### (autoloads (picture-mode) "picture" "lisp/picture.el")
+(autoload 'customize-set-variable "cus-edit" "\
+Set the default for VARIABLE to VALUE.  VALUE is a Lisp object.
 
-(autoload 'picture-mode "picture" "\
-Switch to Picture mode, in which a quarter-plane screen model is used.
-Printing characters replace instead of inserting themselves with motion
-afterwards settable by these commands:
-  C-c <          Move left after insertion.
-  C-c >          Move right after insertion.
-  C-c ^          Move up after insertion.
-  C-c .          Move down after insertion.
-  C-c `          Move northwest (nw) after insertion.
-  C-c '          Move northeast (ne) after insertion.
-  C-c /          Move southwest (sw) after insertion.
-  C-c \\   Move southeast (se) after insertion.
-The current direction is displayed in the modeline.  The initial
-direction is right.  Whitespace is inserted and tabs are changed to
-spaces when required by movement.  You can move around in the buffer
-with these commands:
-  \\[picture-move-down]          Move vertically to SAME column in previous line.
-  \\[picture-move-up]    Move vertically to SAME column in next line.
-  \\[picture-end-of-line]        Move to column following last non-whitespace character.
-  \\[picture-forward-column]     Move right inserting spaces if required.
-  \\[picture-backward-column]    Move left changing tabs to spaces if required.
-  C-c C-f Move in direction of current picture motion.
-  C-c C-b Move in opposite direction of current picture motion.
-  Return  Move to beginning of next line.
-You can edit tabular text with these commands:
-  M-Tab          Move to column beneath (or at) next interesting character.
-           `Indents' relative to a previous line.
-  Tab    Move to next stop in tab stop list.
-  C-c Tab Set tab stops according to context of this line.
-           With ARG resets tab stops to default (global) value.
-           See also documentation of variable  picture-tab-chars
-           which defines \"interesting character\".  You can manually
-           change the tab stop list with command \\[edit-tab-stops].
-You can manipulate text with these commands:
-  C-d    Clear (replace) ARG columns after point without moving.
-  C-c C-d Delete char at point - the command normally assigned to C-d.
-  \\[picture-backward-clear-column]  Clear (replace) ARG columns before point, moving back over them.
-  \\[picture-clear-line]         Clear ARG lines, advancing over them.  The cleared
-           text is saved in the kill ring.
-  \\[picture-open-line]          Open blank line(s) beneath current line.
-You can manipulate rectangles with these commands:
-  C-c C-k Clear (or kill) a rectangle and save it.
-  C-c C-w Like C-c C-k except rectangle is saved in named register.
-  C-c C-y Overlay (or insert) currently saved rectangle at point.
-  C-c C-x Like C-c C-y except rectangle is taken from named register.
-  \\[copy-rectangle-to-register]   Copies a rectangle to a register.
-  \\[advertised-undo]   Can undo effects of rectangle overlay commands
-           commands if invoked soon enough.
-You can return to the previous mode with:
-  C-c C-c Which also strips trailing whitespace from every line.
-           Stripping is suppressed by supplying an argument.
+If VARIABLE has a `custom-set' property, that is used for setting
+VARIABLE, otherwise `set-default' is used.
 
-Entry to this mode calls the value of  picture-mode-hook  if non-nil.
+The `customized-value' property of the VARIABLE will be set to a list
+with a quoted VALUE as its sole list member.
 
-Note that Picture mode commands will work outside of Picture mode, but
-they are not defaultly assigned to keys." t nil)
+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.
 
-(defalias 'edit-picture 'picture-mode)
+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.
 
-;;;***
-\f
-;;;### (autoloads (clear-rectangle string-rectangle open-rectangle insert-rectangle yank-rectangle kill-rectangle extract-rectangle delete-extract-rectangle delete-rectangle) "rect" "lisp/rect.el")
+If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
 
-(autoload 'delete-rectangle "rect" "\
-Delete the text in the region-rectangle without saving it.
-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.
+(autoload 'customize-save-variable "cus-edit" "\
+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.
 
-When called from a program, the rectangle's corners are START and END.
-With a prefix (or FILL) argument, also fill lines where nothing has to be
-deleted." t nil)
+The `customized-value' property of the VARIABLE will be set to a list
+with a quoted VALUE as its sole list member.
 
-(autoload 'delete-extract-rectangle "rect" "\
-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.
+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.
 
-With an optional FILL argument, also fill lines where nothing has to be
-deleted." nil nil)
+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.
 
-(autoload 'extract-rectangle "rect" "\
-Return the contents of the rectangle with corners at START and END,
-as a list of strings, one for each line of the rectangle." nil nil)
+If given a prefix (or a COMMENT argument), also prompt for a comment." t nil)
 
-(defvar killed-rectangle nil "\
-Rectangle for `yank-rectangle' to insert.")
+(autoload 'customize "cus-edit" "\
+Select a customization buffer which you can use to set user options.
+User options are structured into \"groups\".
+The default group is `Emacs'." t nil)
 
-(autoload 'kill-rectangle "rect" "\
-Delete the region-rectangle and save it as the last killed one.
-You might prefer to use `delete-extract-rectangle' from a program.
+(defalias 'customize-group 'customize)
 
-When called from a program, the rectangle's corners are START and END.
-With a prefix (or FILL) argument, also fill lines where nothing has to be
-deleted." t nil)
+(autoload 'customize-other-window "cus-edit" "\
+Customize SYMBOL, which must be a customization group." t nil)
 
-(autoload 'yank-rectangle "rect" "\
-Yank the last killed rectangle with upper left corner at point." t nil)
+(defalias 'customize-group-other-window 'customize-other-window)
 
-(autoload 'insert-rectangle "rect" "\
-Insert text of RECTANGLE with upper left corner at point.
-RECTANGLE's first line is inserted at point, its second
-line is inserted at a point vertically under point, etc.
-RECTANGLE should be a list of strings.
-After this command, the mark is at the upper left corner
-and point is at the lower right corner." nil nil)
+(defalias 'customize-option 'customize-variable)
 
-(autoload 'open-rectangle "rect" "\
-Blank out the region-rectangle, shifting text right.
+(autoload 'customize-variable "cus-edit" "\
+Customize SYMBOL, which must be a user option variable." t nil)
 
-When called from a program, the rectangle's corners are START and END.
-With a prefix (or FILL) argument, fill with blanks even if there is no text
-on the right side of the rectangle." t nil)
+(autoload 'customize-changed-options "cus-edit" "\
+Customize all user option variables whose default values changed recently.
+This means, in other words, variables defined with a `:version' keyword." t nil)
 
-(autoload 'string-rectangle "rect" "\
-Insert STRING on each line of the region-rectangle, shifting text right.
-The left edge of the rectangle specifies the column for insertion.
+(defalias 'customize-variable-other-window 'customize-option-other-window)
 
-If `pending-delete-mode' is active the string replace the region.
-Otherwise this command does not delete or overwrite any existing text.
+(autoload 'customize-option-other-window "cus-edit" "\
+Customize SYMBOL, which must be a user option variable.
+Show the buffer in another window, but don't select it." t nil)
 
-When called from a program, the rectangle's corners are START and END." t nil)
+(autoload 'customize-face "cus-edit" "\
+Customize SYMBOL, which should be a face name or nil.
+If SYMBOL is nil, customize all faces." t nil)
 
-(autoload 'clear-rectangle "rect" "\
-Blank out the region-rectangle.
-The text previously in the region is overwritten with blanks.
+(autoload 'customize-face-other-window "cus-edit" "\
+Show customization buffer for FACE in other window." t nil)
 
-When called from a program, the rectangle's corners are START and END.
-With a prefix (or FILL) argument, also fill with blanks the parts of the
-rectangle which were empty." t nil)
+(autoload 'customize-customized "cus-edit" "\
+Customize all user options set since the last save in this session." t nil)
 
-;;;***
-\f
-;;;### (autoloads (list-load-path-shadows) "shadow" "lisp/shadow.el")
+(autoload 'customize-saved "cus-edit" "\
+Customize all already saved user options." t nil)
 
-(autoload 'list-load-path-shadows "shadow" "\
-Display a list of Emacs Lisp files that shadow other files.
+(autoload 'customize-apropos "cus-edit" "\
+Customize all user options matching REGEXP.
+If ALL is `options', include only options.
+If ALL is `faces', include only faces.
+If ALL is `groups', include only groups.
+If ALL is t (interactively, with prefix arg), include options which are not
+user-settable, as well as faces and groups." t nil)
 
-This function lists potential load-path problems.  Directories in the
-`load-path' variable are searched, in order, for Emacs Lisp
-files.  When a previously encountered file name is found again, a
-message is displayed indicating that the later file is \"hidden\" by
-the earlier.
+(autoload 'customize-apropos-options "cus-edit" "\
+Customize all user options matching REGEXP.
+With prefix arg, include options which are not user-settable." t nil)
+
+(autoload 'customize-apropos-faces "cus-edit" "\
+Customize all user faces matching REGEXP." t nil)
+
+(autoload 'customize-apropos-groups "cus-edit" "\
+Customize all user groups matching REGEXP." t nil)
+
+(autoload 'custom-buffer-create "cus-edit" "\
+Create a buffer containing OPTIONS.
+Optional NAME is the name of the buffer.
+OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
+SYMBOL is a customization option, and WIDGET is a widget for editing
+that option." nil nil)
 
-For example, suppose `load-path' is set to
+(autoload 'custom-buffer-create-other-window "cus-edit" "\
+Create a buffer containing OPTIONS.
+Optional NAME is the name of the buffer.
+OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
+SYMBOL is a customization option, and WIDGET is a widget for editing
+that option." nil nil)
 
-\(\"/usr/gnu/emacs/site-lisp\" \"/usr/gnu/emacs/share/emacs/19.30/lisp\")
+(autoload 'customize-browse "cus-edit" "\
+Create a tree browser for the customize hierarchy." t nil)
 
-and that each of these directories contains a file called XXX.el.  Then
-XXX.el in the site-lisp directory is referred to by all of:
-\(require 'XXX), (autoload .... \"XXX\"), (load-library \"XXX\") etc.
+(defcustom custom-file "~/.emacs" "File used for storing customization information.\nIf you change this from the default \"~/.emacs\" you need to\nexplicitly load that file for the settings to take effect." :type 'file :group 'customize)
 
-The first XXX.el file prevents emacs from seeing the second (unless
-the second is loaded explicitly via load-file).
+(autoload 'customize-save-customized "cus-edit" "\
+Save all user options which have been set in this session." t nil)
 
-When not intended, such shadowings can be the source of subtle
-problems.  For example, the above situation may have arisen because the
-XXX package was not distributed with versions of emacs prior to
-19.30.  An emacs maintainer downloaded XXX from elsewhere and installed
-it.  Later, XXX was updated and included in the emacs distribution.
-Unless the emacs maintainer checks for this, the new version of XXX
-will be hidden behind the old (which may no longer work with the new
-emacs version).
+(autoload 'custom-save-all "cus-edit" "\
+Save all customizations in `custom-file'." nil nil)
 
-This function performs these checks and flags all possible
-shadowings.  Because a .el file may exist without a corresponding .elc
-\(or vice-versa), these suffixes are essentially ignored.  A file
-XXX.elc in an early directory (that does not contain XXX.el) is
-considered to shadow a later file XXX.el, and vice-versa.
+(autoload 'custom-menu-create "cus-edit" "\
+Create menu for customization group SYMBOL.
+The menu is in a format applicable to `easy-menu-define'." nil nil)
 
-When run interactively, the shadowings (if any) are displayed in a
-buffer called `*Shadows*'.  Shadowings are located by calling the
-\(non-interactive) companion function, `find-emacs-lisp-shadows'." t nil)
+(autoload 'customize-menu-create "cus-edit" "\
+Return a customize menu for customization group SYMBOL.
+If optional NAME is given, use that as the name of the menu.
+Otherwise the menu will be named `Customize'.
+The format is suitable for use with `easy-menu-define'." nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (load-default-sounds load-sound-file) "sound" "lisp/sound.el")
+;;;### (autoloads (custom-reset-faces custom-theme-reset-faces custom-theme-face-value custom-theme-set-faces custom-set-faces custom-set-face-update-spec custom-declare-face) "cus-face" "lisp\\cus-face.el")
 
-(or sound-alist (setq sound-alist '((ready nil) (warp nil))))
+(autoload 'custom-declare-face "cus-face" "\
+Like `defface', but FACE is evaluated as a normal argument." nil nil)
 
-(autoload 'load-sound-file "sound" "\
-Read in an audio-file and add it to the sound-alist.
+(autoload 'custom-set-face-update-spec "cus-face" "\
+Customize the FACE for display types matching DISPLAY, merging
+  in the new items from PLIST" nil nil)
 
-You can only play sound files if you are running on display 0 of the
-console of a machine with native sound support or running a NetAudio
-server and XEmacs has the necessary sound support compiled in.
+(autoload 'custom-set-faces "cus-face" "\
+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:
 
-The sound file must be in the Sun/NeXT U-LAW format, except on Linux,
-where .wav files are also supported by the sound card drivers." t nil)
+  (FACE SPEC [NOW [COMMENT]])
 
-(autoload 'load-default-sounds "sound" "\
-Load and install some sound files as beep-types, using
-`load-sound-file'.  This only works if you're on display 0 of the
-console of a machine with native sound support or running a NetAudio
-server and XEmacs has the necessary sound support compiled in." t nil)
+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.
 
-;;;***
-\f
-;;;### (autoloads (ask-user-about-supersession-threat ask-user-about-lock) "userlock" "lisp/userlock.el")
+See `defface' for the format of SPEC." nil nil)
 
-(autoload 'ask-user-about-lock "userlock" "\
-Ask user what to do when he wants to edit FILE but it is locked by USER.
-This function has a choice of three things to do:
-  do (signal 'file-locked (list FILE USER))
-    to refrain from editing the file
-  return t (grab the lock on the file)
-  return nil (edit the file even though it is locked).
-You can rewrite it to use any criterion you like to choose which one to do." nil nil)
+(autoload 'custom-theme-set-faces "cus-face" "\
+Initialize faces according to settings specified by args.
+Records the settings as belonging to THEME.
 
-(autoload 'ask-user-about-supersession-threat "userlock" "\
-Ask a user who is about to modify an obsolete buffer what to do.
-This function has two choices: it can return, in which case the modification
-of the buffer will proceed, or it can (signal 'file-supersession (file)),
-in which case the proposed buffer modification will not be made.
+See `custom-set-faces' for a description of the arguments ARGS." nil nil)
 
-You can rewrite this to use any criterion you like to choose which one to do.
-The buffer in question is current when this function is called." nil nil)
+(autoload 'custom-theme-face-value "cus-face" "\
+Return spec of FACE in THEME if the THEME modifies the
+FACE.  Nil otherwise." nil nil)
 
-;;;***
-\f
-;;;### (autoloads (toggle-truncate-lines auto-view-mode view-major-mode view-mode view-minor-mode view-buffer-other-window view-file-other-window view-buffer view-file) "view-less" "lisp/view-less.el")
+(autoload 'custom-theme-reset-faces "cus-face" nil nil nil)
 
-(defvar view-minor-mode-map (let ((map (make-keymap))) (set-keymap-name map 'view-minor-mode-map) (suppress-keymap map) (define-key map "-" 'negative-argument) (define-key map " " 'scroll-up) (define-key map "f" 'scroll-up) (define-key map "b" 'scroll-down) (define-key map 'backspace 'scroll-down) (define-key map 'delete 'scroll-down) (define-key map "\r" 'view-scroll-lines-up) (define-key map "\n" 'view-scroll-lines-up) (define-key map "e" 'view-scroll-lines-up) (define-key map "j" 'view-scroll-lines-up) (define-key map "y" 'view-scroll-lines-down) (define-key map "k" 'view-scroll-lines-down) (define-key map "d" 'view-scroll-some-lines-up) (define-key map "u" 'view-scroll-some-lines-down) (define-key map "r" 'recenter) (define-key map "t" 'toggle-truncate-lines) (define-key map "N" 'view-buffer) (define-key map "E" 'view-file) (define-key map "P" 'view-buffer) (define-key map "!" 'shell-command) (define-key map "|" 'shell-command-on-region) (define-key map "=" 'what-line) (define-key map "?" 'view-search-backward) (define-key map "h" 'view-mode-describe) (define-key map "s" 'view-repeat-search) (define-key map "n" 'view-repeat-search) (define-key map "/" 'view-search-forward) (define-key map "\\" 'view-search-backward) (define-key map "g" 'view-goto-line) (define-key map "G" 'view-last-windowful) (define-key map "%" 'view-goto-percent) (define-key map "p" 'view-goto-percent) (define-key map "m" 'point-to-register) (define-key map "'" 'register-to-point) (define-key map "C" 'view-cleanup-backspaces) (define-key map "\ 3\ 3" 'view-quit) (define-key map "\18\11" 'view-quit-toggle-ro) (define-key map "q" 'view-quit) map))
+(autoload 'custom-reset-faces "cus-face" "\
+Reset the value of the face to values previously defined.
+Assosiate this setting with the 'user' theme.
 
-(defvar view-mode-map (let ((map (copy-keymap view-minor-mode-map))) (set-keymap-name map 'view-mode-map) map))
+ARGS is defined as for `custom-theme-reset-faces'" nil nil)
 
-(autoload 'view-file "view-less" "\
-Find FILE, enter view mode.  With prefix arg OTHER-P, use other window." t nil)
+;;;***
+\f
+;;;### (autoloads (disassemble) "disass" "lisp\\disass.el")
 
-(autoload 'view-buffer "view-less" "\
-Switch to BUF, enter view mode.  With prefix arg use other window." t nil)
+(autoload 'disassemble "disass" "\
+Print disassembled code for OBJECT in (optional) BUFFER.
+OBJECT can be a symbol defined as a function, or a function itself
+\(a lambda expression or a compiled-function object).
+If OBJECT is not already compiled, we compile it, but do not
+redefine OBJECT if it is a symbol." t nil)
 
-(autoload 'view-file-other-window "view-less" "\
-Find FILE in other window, and enter view mode." t nil)
+;;;***
+\f
+;;;### (autoloads (standard-display-european standard-display-underline standard-display-graphic standard-display-g1 standard-display-ascii standard-display-default standard-display-8bit make-display-table describe-current-display-table) "disp-table" "lisp\\disp-table.el")
 
-(autoload 'view-buffer-other-window "view-less" "\
-Switch to BUFFER in another window, and enter view mode." t nil)
+(autoload 'describe-current-display-table "disp-table" "\
+Describe the display table in use in the selected window and buffer." t nil)
 
-(autoload 'view-minor-mode "view-less" "\
-Minor mode for viewing text, with bindings like `less'.
-Commands are:
-\\<view-minor-mode-map>
-0..9   prefix args
--      prefix minus
-\\[scroll-up]  page forward
-\\[scroll-down]        page back
-\\[view-scroll-lines-up]       scroll prefix-arg lines forward, default 1.
-\\[view-scroll-lines-down]     scroll prefix-arg lines backward, default 1.
-\\[view-scroll-some-lines-down]        scroll prefix-arg lines backward, default 10.
-\\[view-scroll-some-lines-up]  scroll prefix-arg lines forward, default 10.
-\\[what-line]  print line number
-\\[view-mode-describe] print this help message
-\\[view-search-forward]        regexp search, uses previous string if you just hit RET
-\\[view-search-backward]       as above but searches backward
-\\[view-repeat-search] repeat last search
-\\[view-goto-line]     goto line prefix-arg, default 1
-\\[view-last-windowful]        goto line prefix-arg, default last line
-\\[view-goto-percent]  goto a position by percentage
-\\[toggle-truncate-lines]      toggle truncate-lines
-\\[view-file]  view another file
-\\[view-buffer]        view another buffer
-\\[view-cleanup-backspaces]    cleanup backspace constructions
-\\[shell-command]      execute a shell command
-\\[shell-command-on-region]    execute a shell command with the region as input
-\\[view-quit]  exit view-mode, and bury the current buffer.
+(autoload 'make-display-table "disp-table" "\
+Return a new, empty display table." nil nil)
 
-If invoked with the optional (prefix) arg non-nil, view-mode cleans up
-backspace constructions.
+(autoload 'standard-display-8bit "disp-table" "\
+Display characters in the range L to H literally." nil nil)
 
-More precisely:
-\\{view-minor-mode-map}" t nil)
+(autoload 'standard-display-default "disp-table" "\
+Display characters in the range L to H using the default notation." nil nil)
 
-(autoload 'view-mode "view-less" "\
-View the current buffer using view-minor-mode.  This exists to be 99.9%
-compatible with the implementations of `view-mode' in view.el and older
-versions of view-less.el." t nil)
+(autoload 'standard-display-ascii "disp-table" "\
+Display character C using printable string S." nil nil)
 
-(autoload 'view-major-mode "view-less" "\
-View the current buffer using view-mode, as a major mode.
-This function has a nonstandard name because `view-mode' is wrongly
-named but is like this for compatibility reasons." t nil)
+(autoload 'standard-display-g1 "disp-table" "\
+Display character C as character SC in the g1 character set.
+This function assumes that your terminal uses the SO/SI characters;
+it is meaningless for an X frame." nil nil)
 
-(autoload 'auto-view-mode "view-less" "\
-If the file of the current buffer is not writable, call view-mode.
-This is meant to be added to `find-file-hooks'." nil nil)
+(autoload 'standard-display-graphic "disp-table" "\
+Display character C as character GC in graphics character set.
+This function assumes VT100-compatible escapes; it is meaningless for an
+X frame." nil nil)
 
-(autoload 'toggle-truncate-lines "view-less" "\
-Toggles the values of truncate-lines.
-Positive prefix arg sets, negative disables." t nil)
+(autoload 'standard-display-underline "disp-table" "\
+Display character C as character UC plus underlining." nil nil)
+
+(autoload 'standard-display-european "disp-table" "\
+Toggle display of European characters encoded with ISO 8859.
+When enabled, characters in the range of 160 to 255 display not
+as octal escapes, but as accented characters.
+With prefix argument, enable European character display iff arg is positive." t nil)
 
 ;;;***
 \f
-;;;### (autoloads (widget-minor-mode widget-browse-other-window widget-browse widget-browse-at) "wid-browse" "lisp/wid-browse.el")
-
-(autoload 'widget-browse-at "wid-browse" "\
-Browse the widget under point." t nil)
-
-(autoload 'widget-browse "wid-browse" "\
-Create a widget browser for WIDGET." t nil)
-
-(autoload 'widget-browse-other-window "wid-browse" "\
-Show widget browser for WIDGET in other window." t nil)
-
-(autoload 'widget-minor-mode "wid-browse" "\
-Togle minor mode for traversing widgets.
-With arg, turn widget mode on if and only if arg is positive." t nil)
+;;;### (autoloads nil "easymenu" "lisp\\easymenu.el")
 
 ;;;***
 \f
-;;;### (autoloads (widget-delete widget-create widget-prompt-value) "wid-edit" "lisp/wid-edit.el")
-
-(autoload 'widget-prompt-value "wid-edit" "\
-Prompt for a value matching WIDGET, using PROMPT.
-The current value is assumed to be VALUE, unless UNBOUND is non-nil." nil nil)
+;;;### (autoloads (font-menu-weight-constructor font-menu-size-constructor font-menu-family-constructor reset-device-font-menus) "font-menu" "lisp\\font-menu.el")
 
-(autoload 'widget-create "wid-edit" "\
-Create widget of TYPE.
-The optional ARGS are additional keyword arguments." nil nil)
+(defcustom font-menu-ignore-scaled-fonts nil "*If non-nil, then the font menu will try to show only bitmap fonts." :type 'boolean :group 'font-menu)
 
-(autoload 'widget-delete "wid-edit" "\
-Delete WIDGET." nil nil)
+(defcustom font-menu-this-frame-only-p nil "*If non-nil, then changing the default font from the font menu will only\naffect one frame instead of all frames." :type 'boolean :group 'font-menu)
 
-;;;***
-\f
-;;;### (autoloads (x-reset-device-font-menus) "x-font-menu" "lisp/x-font-menu.el")
+(fset 'install-font-menus 'reset-device-font-menus)
 
-(autoload 'x-reset-device-font-menus "x-font-menu" "\
+(autoload 'reset-device-font-menus "font-menu" "\
 Generates the `Font', `Size', and `Weight' submenus for the Options menu.
 This is run the first time that a font-menu is needed for each device.
 If you don't like the lazy invocation of this function, you can add it to
@@ -1821,19 +1818,31 @@ If you don't like the lazy invocation of this function, you can add it to
 when they are selected for the first time.  If you add fonts to your system, 
 or if you change your font path, you can call this to re-initialize the menus." nil nil)
 
-(defun* x-font-menu-font-data (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) (selected-device))) (name (font-instance-name (face-font-instance face domain))) (truename (font-instance-truename (face-font-instance face domain (if (featurep 'mule) 'ascii)))) family size weight entry slant) (when (string-match x-font-regexp-foundry-and-family name) (setq family (capitalize (match-string 1 name))) (setq entry (vassoc family (aref dcache 0)))) (when (and (null entry) (string-match x-font-regexp-foundry-and-family truename)) (setq family (capitalize (match-string 1 truename))) (setq entry (vassoc family (aref dcache 0)))) (when (null entry) (return-from x-font-menu-font-data (make-vector 5 nil))) (when (string-match x-font-regexp name) (setq weight (capitalize (match-string 1 name))) (setq size (string-to-int (match-string 6 name)))) (when (string-match x-font-regexp truename) (when (not (member weight (aref entry 1))) (setq weight (capitalize (match-string 1 truename)))) (when (not (member size (aref entry 2))) (setq size (string-to-int (match-string 6 truename)))) (setq slant (capitalize (match-string 2 truename)))) (vector entry family size weight slant)))
+(autoload 'font-menu-family-constructor "font-menu" nil nil nil)
 
-;;;***
-\f
-;;;### (autoloads (x-win-init-sun) "x-win-sun" "lisp/x-win-sun.el")
+(autoload 'font-menu-size-constructor "font-menu" nil nil nil)
 
-(autoload 'x-win-init-sun "x-win-sun" nil nil nil)
+(autoload 'font-menu-weight-constructor "font-menu" nil nil nil)
 
 ;;;***
 \f
-;;;### (autoloads (x-win-init-xfree86) "x-win-xfree86" "lisp/x-win-xfree86.el")
+;;;### (autoloads (x-font-build-cache font-default-size-for-device font-default-encoding-for-device font-default-registry-for-device font-default-family-for-device font-default-object-for-device font-default-font-for-device font-create-object) "font" "lisp\\font.el")
 
-(autoload 'x-win-init-xfree86 "x-win-xfree86" nil nil nil)
+(autoload 'font-create-object "font" nil nil nil)
+
+(autoload 'font-default-font-for-device "font" nil nil nil)
+
+(autoload 'font-default-object-for-device "font" nil nil nil)
+
+(autoload 'font-default-family-for-device "font" nil nil nil)
+
+(autoload 'font-default-registry-for-device "font" nil nil nil)
+
+(autoload 'font-default-encoding-for-device "font" nil nil nil)
+
+(autoload 'font-default-size-for-device "font" nil nil nil)
+
+(autoload 'x-font-build-cache "font" nil nil nil)
 
 ;;;***
 
index 2862234..b9b0a60 100644 (file)
@@ -114,10 +114,12 @@ the section of autoloads for a file.")
 (defun autoload-trim-file-name (file)
   "Returns a relative pathname of FILE including the last directory."
   (setq file (expand-file-name file))
-  (file-relative-name file (file-name-directory
-                           (directory-file-name
-                            (file-name-directory file)))))
-
+  (replace-in-string
+   (file-relative-name file (file-name-directory
+                            (directory-file-name
+                             (file-name-directory file))))
+   "\\\\" "/"))
+  
 ;;;###autoload
 (defun generate-file-autoloads (file &optional funlist)
   "Insert at point a loaddefs autoload section for FILE.
@@ -339,7 +341,7 @@ are used."
   "Generic filename to put autoloads into.
 Unless you are an XEmacs maintainer, it is probably unwise to change this.")
 
-(defvar autoload-target-directory "../lisp/prim/"
+(defvar autoload-target-directory "../lisp/"
   "Directory to put autoload declaration file into.
 Unless you know what you're doing, don't mess with this.")
 
@@ -349,7 +351,11 @@ Unless you know what you're doing, don't mess with this.")
                    data-directory)
   "*File `update-file-autoloads' puts autoloads into.
 A .el file can set this in its local variables section to make its
-autoloads go somewhere else.")
+autoloads go somewhere else.
+
+Note that `batch-update-directory' binds this variable to its own value,
+generally the file named `autoload-file-name' in the directory being
+updated.")
 
 (defconst cusload-file-name "custom-load.el"
   "Generic filename ot put custom loads into.
@@ -458,7 +464,9 @@ This function refuses to update autoloads files."
 (defun update-autoloads-from-directory (dir)
   "Update `generated-autoload-file' with all the current autoloads from DIR.
 This runs `update-file-autoloads' on each .el file in DIR.
-Obsolete autoload entries for files that no longer exist are deleted."
+Obsolete autoload entries for files that no longer exist are deleted.
+Note that, if this function is called from `batch-update-directory',
+`generated-autoload-file' was rebound in that function."
   (interactive "DUpdate autoloads for directory: ")
   (setq dir (expand-file-name dir))
   (let ((simple-dir (file-name-as-directory
@@ -534,18 +542,24 @@ on the command line."
 
 (defvar autoload-package-name nil)
 
+;; #### this function is almost identical, but subtly different,
+;; from batch-update-autoloads.  Steve, it's your responsibility to
+;; clean this up.  The two should be merged, but I'm not sure what
+;; package-creation scripts out there might be using this. --ben
+
 ;;;###autoload
 (defun batch-update-directory ()
-  "Update the autoloads for the directory on the command line.
-Runs `update-file-autoloads' on each file in the given directory, must
-be used only with -batch and kills XEmacs on completion."
+  "Update the autoloads for the directories on the command line.
+Runs `update-file-autoloads' on each file in the given directory, and must
+be used only with -batch."
   (unless noninteractive
     (error "batch-update-directory is to be used only with -batch"))
   (let ((defdir default-directory)
        (enable-local-eval nil))        ; Don't query in batch mode.
     (dolist (arg command-line-args-left)
       (setq arg (expand-file-name arg defdir))
-      (let ((generated-autoload-file (concat arg "/" autoload-file-name)))
+      (let ((generated-autoload-file (expand-file-name autoload-file-name
+                                                       arg)))
        (cond
         ((file-directory-p arg)
          (message "Updating autoloads in directory %s..." arg)
@@ -561,6 +575,36 @@ be used only with -batch and kills XEmacs on completion."
       )
     (setq command-line-args-left nil)))
 
+;; #### i created the following.  this one and the last should be merged into
+;; batch-update-autoloads. --ben
+
+;;;###autoload
+(defun batch-update-one-directory ()
+  "Update the autoloads for a single directory on the command line.
+Runs `update-file-autoloads' on each file in the given directory, and must
+be used only with -batch."
+  (unless noninteractive
+    (error "batch-update-directory is to be used only with -batch"))
+  (let ((defdir default-directory)
+       (enable-local-eval nil))        ; Don't query in batch mode.
+    (let ((arg (car command-line-args-left)))
+      (setq command-line-args-left (cdr command-line-args-left))
+      (setq arg (expand-file-name arg defdir))
+      (let ((generated-autoload-file (expand-file-name autoload-file-name
+                                                       arg)))
+       (cond
+        ((file-directory-p arg)
+         (message "Updating autoloads in directory %s..." arg)
+         (update-autoloads-from-directory arg))
+        (t (error "No such file or directory: %s" arg)))
+       (fixup-autoload-buffer (concat (if autoload-package-name
+                                          autoload-package-name
+                                        (file-name-nondirectory arg))
+                               "-autoloads"))
+       (save-some-buffers t))
+      ;; (message "Done")
+      )))
+
 (provide 'autoload)
 
 ;;; autoload.el ends here
index e3b7318..28ad928 100644 (file)
@@ -1355,7 +1355,7 @@ otherwise pop it")
   "Recompile every `.el' file in DIRECTORY that already has a `.elc' file.
 Files in subdirectories of DIRECTORY are processed also."
   (interactive "DByte force recompile (directory): ")
-  (byte-recompile-directory directory nil t))
+  (byte-recompile-directory directory nil nil t))
 
 ;;;###autoload
 (defun byte-recompile-directory (directory &optional arg norecursion force)
@@ -4037,27 +4037,42 @@ For example, invoke \"xemacs -batch -f batch-byte-compile $emacs/ ~/*.el\""
       (error "`batch-byte-compile' is to be used only with -batch"))
   (let ((error nil))
     (while command-line-args-left
-      (if (file-directory-p (expand-file-name (car command-line-args-left)))
-         (let ((files (directory-files (car command-line-args-left)))
-               source dest)
-           (while files
-             (if (and (string-match emacs-lisp-file-regexp (car files))
-                      (not (auto-save-file-name-p (car files)))
-                      (setq source (expand-file-name
-                                    (car files)
-                                    (car command-line-args-left)))
-                      (setq dest (byte-compile-dest-file source))
-                      (file-exists-p dest)
-                      (file-newer-than-file-p source dest))
-                 (if (null (batch-byte-compile-1 source))
-                     (setq error t)))
-             (setq files (cdr files))))
-       (if (null (batch-byte-compile-1 (car command-line-args-left)))
-           (setq error t)))
-      (setq command-line-args-left (cdr command-line-args-left)))
+      (if (null (batch-byte-compile-one-file))
+         (setq error t)))
     (message "Done")
     (kill-emacs (if error 1 0))))
 
+;;;###autoload
+(defun batch-byte-compile-one-file ()
+  "Run `byte-compile-file' on a single file remaining on the command line.
+Use this from the command line, with `-batch';
+it won't work in an interactive Emacs."
+  ;; command-line-args-left is what is left of the command line (from
+  ;; startup.el)
+  (defvar command-line-args-left)      ;Avoid 'free variable' warning
+  (if (not noninteractive)
+      (error "`batch-byte-compile-one-file' is to be used only with -batch"))
+  (let (error
+       (file-to-process (car command-line-args-left)))
+    (setq command-line-args-left (cdr command-line-args-left))
+    (if (file-directory-p (expand-file-name file-to-process))
+       (let ((files (directory-files file-to-process))
+             source dest)
+         (while files
+           (if (and (string-match emacs-lisp-file-regexp (car files))
+                    (not (auto-save-file-name-p (car files)))
+                    (setq source (expand-file-name
+                                  (car files)
+                                  file-to-process))
+                    (setq dest (byte-compile-dest-file source))
+                    (file-exists-p dest)
+                    (file-newer-than-file-p source dest))
+               (if (null (batch-byte-compile-1 source))
+                   (setq error t)))
+           (setq files (cdr files)))
+         (null error))
+      (batch-byte-compile-1 file-to-process))))
+
 (defun batch-byte-compile-1 (file)
   (condition-case err
       (progn (byte-compile-file file) t)
index 82ba291..960a1ea 100644 (file)
 (defmacro defkeyword (x &optional doc)
   (list* 'defconst x (list 'quote x) (and doc (list doc))))
 
-(defun keywordp (sym)
-  (and (symbolp sym) (eq (aref (symbol-name sym) 0) ?\:) (set sym sym)))
+;; XEmacs change.
+;; We have built-in function.
+;;(defun keywordp (sym)
+;;  (and (symbolp sym) (eq (aref (symbol-name sym) 0) ?\:) (set sym sym)))
 
 (defun keyword-of (sym)
   (or (keywordp sym) (keywordp (intern (format ":%s" sym)))))
index 543ca8b..242478a 100644 (file)
@@ -15,7 +15,7 @@
 (custom-add-loads 'menu '("menubar-items"))
 (custom-add-loads 'minibuffer '("simple" "minibuf"))
 (custom-add-loads 'log-message '("simple"))
-(custom-add-loads 'environment '("frame" "keydefs" "minibuf" "modeline" "window-xemacs" "menubar" "gutter-items" "x-init" "toolbar-items" "cus-edit" "gnuserv" "sound"))
+(custom-add-loads 'environment '("frame" "keydefs" "minibuf" "modeline" "window-xemacs" "menubar" "gutter" "toolbar-items" "cus-edit" "gnuserv" "sound" "x-init"))
 (custom-add-loads 'sound '("sound"))
 (custom-add-loads 'pui '("package-ui"))
 (custom-add-loads 'terminals '("gnuserv"))
@@ -47,6 +47,7 @@
 (custom-add-loads 'custom-browse '("cus-edit"))
 (custom-add-loads 'abbrev '("abbrev" "files"))
 (custom-add-loads 'programming '("cus-edit"))
+(custom-add-loads 'printing '("printer"))
 (custom-add-loads 'toolbar '("toolbar-items"))
 (custom-add-loads 'dired '("files"))
 (custom-add-loads 'dnd-debug '("dragdrop"))
@@ -62,7 +63,7 @@
 (custom-add-loads 'external '("process" "cus-edit"))
 (custom-add-loads 'development '("process" "lisp-mode" "cus-edit"))
 (custom-add-loads 'gnuserv '("gnuserv"))
-(custom-add-loads 'gutter '("gutter-items"))
+(custom-add-loads 'gutter '("gutter" "gutter-items"))
 (custom-add-loads 'fill-comments '("simple"))
 (custom-add-loads 'windows '("window" "window-xemacs"))
 (custom-add-loads 'widget-faces '("wid-edit"))
 (custom-add-loads 'fill '("simple" "fill"))
 (custom-add-loads 'custom-magic-faces '("cus-edit"))
 (custom-add-loads 'display '("toolbar" "scrollbar" "auto-show"))
-(custom-add-loads 'faces '("faces" "cus-edit" "font-lock" "font" "hyper-apropos" "info" "wid-edit"))
+(custom-add-loads 'faces '("faces" "font" "cus-edit" "font-lock" "hyper-apropos" "info" "wid-edit"))
 (custom-add-loads 'emacs '("faces" "help" "files" "cus-edit" "package-get"))
 (custom-add-loads 'processes '("process" "gnuserv"))
 (custom-add-loads 'hyper-apropos '("hyper-apropos"))
-(custom-add-loads 'wp '("cus-edit"))
+(custom-add-loads 'wp '("printer" "cus-edit"))
 (custom-add-loads 'vc '("files"))
 (custom-add-loads 'isearch '("isearch-mode"))
 (custom-add-loads 'font-lock-faces '("font-lock"))
 (custom-add-loads 'modeline '("modeline"))
-(custom-add-loads 'editing '("simple" "abbrev" "fill" "mouse" "cus-edit" "dragdrop"))
+(custom-add-loads 'editing '("simple" "abbrev" "fill" "mouse" "dragdrop" "cus-edit"))
 (custom-add-loads 'matching '("simple" "isearch-mode" "hyper-apropos"))
 (custom-add-loads 'i18n '("cus-edit"))
 (custom-add-loads 'info '("toolbar-items" "info"))
index 32f6e01..bd94eaa 100644 (file)
 
 ;; This file is dumped with XEmacs (when dialog boxes are compiled in).
 
+;; Dialog boxes are non-modal at the C level, but made modal at the
+;; Lisp level via hacks in functions such as yes-or-no-p-dialog-box
+;; below.  Perhaps there should be truly modal dialog boxes
+;; implemented at the C level for safety.  All code using dialog boxes
+;; should be careful to assume that the environment, for example the
+;; current buffer, might be completely different after returning from
+;; yes-or-no-p-dialog-box, but such code is difficult to write and test.
+
 ;;; Code:
 (defun yes-or-no-p-dialog-box (prompt)
-  "Ask user a \"y or n\" question with a popup dialog box.
-Returns t if answer is \"yes\".
+  "Ask user a yes-or-no question with a popup dialog box.
+Return t if the answer is \"yes\".
 Takes one argument, which is the string to display to ask the question."
-  (let ((echo-keystrokes 0)
-       event)   
+  (save-selected-frame
     (popup-dialog-box
-     ;; "Non-violent language please!" says Robin.
-     (cons prompt '(["%_Yes" yes t] ["%_No" no t] nil ["%_Cancel" abort t])))
-;     (cons prompt '(["%_Yes" yes t] ["%_No" no t] nil ["A%_bort" abort t])))
-    (catch 'ynp-done
-      (while t
-       (setq event (next-command-event event))
-       (cond ((and (misc-user-event-p event) (eq (event-object event) 'yes))
-              (throw 'ynp-done t))
-             ((and (misc-user-event-p event) (eq (event-object event) 'no))
-              (throw 'ynp-done nil))
-             ((and (misc-user-event-p event)
-                   (or (eq (event-object event) 'abort)
-                       (eq (event-object event) 'menu-no-selection-hook)))
-              (signal 'quit nil))
-             ((button-release-event-p event) ;; don't beep twice
-              nil)
-             (t
-              (beep)
-              (message "please answer the dialog box")))))))
+     (list prompt ["Yes" yes t] ["No" no t] nil ["Cancel" cancel t]))
+    (let (event)
+      (catch 'ynp-done
+       (while t
+         (setq event (next-command-event event))
+         (when (misc-user-event-p event)
+           (message "%s" (event-object event))
+           (case (event-object event)
+             ((yes) (throw 'ynp-done t))
+             ((no)  (throw 'ynp-done nil))
+             ((cancel menu-no-selection-hook) (signal 'quit nil))))
+         (unless (button-release-event-p event) ; don't beep twice
+           (beep)
+           (message "please answer the dialog box")))))))
 
 (defun yes-or-no-p-maybe-dialog-box (prompt)
   "Ask user a yes-or-no question.  Return t if answer is yes.
@@ -78,10 +80,9 @@ Also accepts Space to mean yes, or Delete to mean no."
       (yes-or-no-p-dialog-box prompt)
     (y-or-n-p-minibuf prompt)))
 
-(if (fboundp 'popup-dialog-box)
-    (progn
-      (fset 'yes-or-no-p 'yes-or-no-p-maybe-dialog-box)
-      (fset 'y-or-n-p 'y-or-n-p-maybe-dialog-box)))
+(when (fboundp 'popup-dialog-box)
+  (fset 'yes-or-no-p 'yes-or-no-p-maybe-dialog-box)
+  (fset 'y-or-n-p 'y-or-n-p-maybe-dialog-box))
 
 ;; this is call-compatible with the horribly-named FSF Emacs function
 ;; `x-popup-dialog'.  I refuse to use that name.
@@ -154,4 +155,63 @@ minibuffer contents show."
       (apply 'message-box fmt args)
     (apply 'message fmt args)))
 
+(defun make-dialog-box (&optional spec props parent)
+  "Create a frame suitable for use as a general dialog box.
+The frame is made a child of PARENT (defaults to the selected frame),
+and has additional properties PROPS, as well as `dialog-frame-plist'.
+SPEC is a string or glyph to be placed in the gutter. If INVISIBLE is
+non-nil then the frame is initially unmapped.
+Normally the created frame has no modelines, menubars, scrollbars,
+minibuffer or toolbars and is entirely covered by its gutter."
+  (or parent (setq parent (selected-frame)))
+  (let* ((ftop (frame-property parent 'top))
+        (fleft (frame-property parent 'left))
+        (fwidth (frame-pixel-width parent))
+        (fheight (frame-pixel-height parent))
+        (fonth (font-height (face-font 'default)))
+        (fontw (font-width (face-font 'default)))
+        (props (append props dialog-frame-plist))
+        (dfheight (plist-get props 'height))
+        (dfwidth (plist-get props 'width))
+        (unmapped (plist-get props 'initially-unmapped))
+        (gutter-spec spec)
+        (name (or (plist-get props 'name) "XEmacs"))
+        (frame nil))
+    (plist-remprop props 'initially-unmapped)
+    ;; allow the user to just provide a glyph
+    (when (glyphp spec)
+      (setq gutter-spec (copy-sequence "\n"))
+      (set-extent-begin-glyph (make-extent 0 1 gutter-spec) spec))
+    ;; under FVWM at least, if I don't specify the initial position,
+    ;; it ends up always at (0, 0).  xwininfo doesn't tell me
+    ;; that there are any program-specified position hints, so
+    ;; it must be an FVWM bug.  So just be smashing and position
+    ;; in the center of the selected frame.
+    (setq frame (make-frame
+                (append props
+                        `(popup ,parent initially-unmapped t
+                                menubar-visible-p nil
+                                has-modeline-p nil
+                                default-toolbar-visible-p nil
+                                top-gutter-visible-p t
+                                top-gutter-height ,(* dfheight fonth)
+                                top-gutter ,gutter-spec
+                                minibuffer none
+                                name ,name
+                                modeline-shadow-thickness 0
+                                vertical-scrollbar-visible-p nil
+                                horizontal-scrollbar-visible-p nil
+                                unsplittable t
+                                left ,(+ fleft (- (/ fwidth 2)
+                                                  (/ (* dfwidth fontw)
+                                                     2)))
+                                top ,(+ ftop (- (/ fheight 2)
+                                                (/ (* dfheight fonth)
+                                                   2)))))))
+    (set-face-foreground 'modeline [default foreground] frame)
+    (set-face-background 'modeline [default background] frame)
+    (unless unmapped (make-frame-visible frame))
+    frame))
+
+
 ;;; dialog.el ends here
index acfb9f8..a5e65ed 100644 (file)
@@ -85,6 +85,7 @@
        "itimer"                ; for vars auto-save-timeout and
                                ; auto-gc-threshold
        "itimer-autosave"
+       "printer"
        (when-feature toolbar "toolbar")
        (when-feature scrollbar "scrollbar")
        (when-feature menubar "menubar")
 ;; Moved to sunpro-load.el - the default only for Sun.
 ;;(pureload "mime-setup")
 ;;; mule-load.el ends here
+       (when-feature (and gutter window-system) "gutter")
        (when-feature window-system "gui")
        (when-feature window-system "mode-motion")
        (when-feature window-system "mouse")
-       (when-feature window-system "select")
+       "select"
        (when-feature dragdrop-api "dragdrop")
 ;; preload the X code, for faster startup.
        (when-feature (and (not infodock)
index f68527b..c3245d7 100644 (file)
@@ -190,9 +190,12 @@ the current buffer."
       (when (file-readable-p parent-tag-file)
        (push parent-tag-file result)))
     ;; tag-table-alist
-    (let ((key (or buffer-file-name
-                  (concat default-directory (buffer-name))))
-         expression)
+    (let* ((key (or buffer-file-name
+                   (concat default-directory (buffer-name))))
+          (key (if (eq system-type 'windows-nt)
+                   (replace-in-string key "\\\\" "/")
+                 key))
+          expression)
       (dolist (item tag-table-alist)
        (setq expression (car item))
        ;; If the car of the alist item is a string, apply it as a regexp
@@ -735,6 +738,16 @@ If it returns non-nil, this file needs processing by evalling
       (cons buf startpos))))
 
 ;;;###autoload
+(defun find-tag-at-point (tagname &optional other-window)
+  "*Find tag whose name contains TAGNAME.
+Identical to `find-tag' but does not prompt for tag when called interactively;
+instead, uses tag around or before point."
+  (interactive (if current-prefix-arg
+                  '(nil nil)
+                (list (find-tag-default) nil)))
+  (find-tag tagname other-window))
+
+;;;###autoload
 (defun find-tag (tagname &optional other-window)
   "*Find tag whose name contains TAGNAME.
  Selects the buffer that the tag is contained in
index 4fa87b9..616c510 100644 (file)
@@ -1589,14 +1589,17 @@ you want to add code to do stuff like this, use the create-device-hook."
                         nil 'append))
   )
 
-;; New function with 20.1, suggested by Per Abrahamsen, coded by Kyle Jones.
+;; New function with 20.1, suggested by Per Abrahamsen, coded by Kyle
+;; Jones and Hrvoje Niksic.
 (defun set-face-stipple (face pixmap &optional frame)
   "Change the stipple pixmap of FACE to PIXMAP.
 This is an Emacs compatibility function; consider using
 set-face-background-pixmap instead.
 
 PIXMAP should be a string, the name of a file of pixmap data.
-The directories listed in the `x-bitmap-file-path' variable are searched.
+The directories listed in the variables `x-bitmap-file-path' and
+`mswindows-bitmap-file-path' under X and MS Windows respectively
+are searched.
 
 Alternatively, PIXMAP may be a list of the form (WIDTH HEIGHT
 DATA) where WIDTH and HEIGHT are the size in pixels, and DATA is
@@ -1607,20 +1610,33 @@ If the optional FRAME argument is provided, change only
 in that frame; otherwise change each frame."
   (while (not (find-face face))
     (setq face (signal 'wrong-type-argument (list 'facep face))))
-  (locate-file pixmap x-bitmap-file-path '(".xbm" ""))
-  (while (cond ((stringp pixmap)
-               (unless (file-readable-p pixmap)
-                 (setq pixmap `[xbm :file ,pixmap]))
-               nil)
-              ((and (consp pixmap) (= (length pixmap) 3))
-               (setq pixmap `[xbm :data ,pixmap])
-               nil)
-              (t t))
-    (setq pixmap (signal 'wrong-type-argument
-                        (list 'stipple-pixmap-p pixmap))))
-  (while (and frame (not (framep frame)))
-    (setq frame (signal 'wrong-type-argument (list 'framep frame))))
-  (set-face-background-pixmap face pixmap frame))
+  (let ((bitmap-path (ecase (console-type)
+                      (x         x-bitmap-file-path)
+                      (mswindows mswindows-bitmap-file-path)))
+       instantiator)
+    (while
+       (null
+        (setq instantiator
+              (cond ((stringp pixmap)
+                     (let ((file (if (file-name-absolute-p pixmap)
+                                     pixmap
+                                   (locate-file pixmap bitmap-path
+                                                '(".xbm" "")))))
+                       (and file
+                            `[xbm :file ,file])))
+                    ((and (listp pixmap) (= (length pixmap) 3))
+                     `[xbm :data ,pixmap])
+                    (t nil))))
+      ;; We're signaling a continuable error; let's make sure the
+      ;; function `stipple-pixmap-p' at least exists.
+      (flet ((stipple-pixmap-p (pixmap)
+              (or (stringp pixmap)
+                  (and (listp pixmap) (= (length pixmap) 3)))))
+       (setq pixmap (signal 'wrong-type-argument
+                            (list 'stipple-pixmap-p pixmap)))))
+    (while (and frame (not (framep frame)))
+      (setq frame (signal 'wrong-type-argument (list 'framep frame))))
+    (set-face-background-pixmap face instantiator frame)))
 
 \f
 ;; Create the remaining standard faces now.  This way, packages that we dump
index b0fa4de..503b7f8 100644 (file)
@@ -167,7 +167,7 @@ arguments compiles from `load-path'."
        (lambda (d)
         (mapcar
          (lambda (f) 
-           (when (not (member f processed))
+           (when (and (not (member f processed)) (file-readable-p f))
              (let (summary keystart keywords)
                (setq processed (cons f processed))
                (if (not finder-compile-keywords-quiet)
index d5e26d8..3969793 100644 (file)
@@ -1496,17 +1496,22 @@ LIMIT can be modified by the value of its PRE-MATCH-FORM."
 START should be at the beginning of a line."
   (let ((loudly (and font-lock-verbose
                     (>= (- end start) font-lock-message-threshold))))
-    (let ((case-fold-search font-lock-keywords-case-fold-search)
-         (keywords (cdr (if (eq (car-safe font-lock-keywords) t)
-                            font-lock-keywords
-                          (font-lock-compile-keywords))))
-         (bufname (buffer-name)) (count 5)
-         keyword matcher highlights)
+    (let* ((case-fold-search font-lock-keywords-case-fold-search)
+          (keywords (cdr (if (eq (car-safe font-lock-keywords) t)
+                             font-lock-keywords
+                           (font-lock-compile-keywords))))
+          (bufname (buffer-name)) 
+          (progress 5) (old-progress 5)
+          (iter 0)
+          (nkeywords (length keywords))
+          keyword matcher highlights)
       ;;
       ;; Fontify each item in `font-lock-keywords' from `start' to `end'.
+      ;; In order to measure progress accurately we need to know how
+      ;; many keywords we have and how big the region is. Then progress
+      ;; is ((pos - start)/ (end - start) * nkeywords 
+      ;;       + iteration / nkeywords) * 100
       (while keywords
-       (when loudly (lprogress-display 'font-lock "Fontifying %s... (regexps)"
-                               (setq count (+ count 5)) bufname))
        ;;
        ;; Find an occurrence of `matcher' from `start' to `end'.
        (setq keyword (car keywords) matcher (car keyword))
@@ -1515,6 +1520,14 @@ START should be at the beginning of a line."
                    (if (stringp matcher)
                        (re-search-forward matcher end t)
                      (funcall matcher end)))
+         ;; calculate progress
+         (setq progress
+               (+ (/ (* (- (point) start) 95) (* (- end start) nkeywords))
+                  (/ (* iter 95) nkeywords) 5))
+         (when (and loudly (> progress old-progress))
+           (lprogress-display 'font-lock "Fontifying %s... (regexps)"
+                              progress bufname))
+         (setq old-progress progress)
          ;; Apply each highlight to this instance of `matcher', which may be
          ;; specific highlights or more keywords anchored to `matcher'.
          (setq highlights (cdr keyword))
@@ -1528,6 +1541,7 @@ START should be at the beginning of a line."
                  (and end (goto-char end)))
              (font-lock-fontify-anchored-keywords (car highlights) end))
            (setq highlights (cdr highlights))))
+       (setq iter (1+ iter))
        (setq keywords (cdr keywords))))
     (if loudly (lprogress-display 'font-lock "Fontifying %s... " 100 (buffer-name)))))
 
index 8a83ed5..d9e8fd3 100644 (file)
 ;; Boston, MA 02111-1307, USA.
 
 ;; Some of this is taken from the buffer-menu stuff in menubar-items.el
-;; and the custom specs in toolbar.el.
-
-(defgroup gutter nil
-  "Input from the gutters."
-  :group 'environment)
-
-;; Although these customizations appear bogus, they are neccessary in
-;; order to be able to save options through the options menu.
-(defcustom default-gutter-position
-  (default-gutter-position)
-  "The location of the default gutter. It can be 'top, 'bottom, 'left or
-'right. This option should be customized through the options menu.
-To set the gutter position explicitly use `set-default-gutter-position'"
-  :group 'gutter
-  :type '(choice (const :tag "top" top)
-                (const :tag "bottom" bottom)
-                (const :tag "left" left)
-                (const :tag "right" right))
-  :set #'(lambda (var val)
-          (set-default-gutter-position val)
-          (setq default-gutter-position val)))
-
-;;; Gutter helper functions
-
-;; called by Fset_default_gutter_position()
-(defvar default-gutter-position-changed-hook nil
-  "Function or functions to be called when the gutter position is changed.
-The value of this variable may be buffer-local.")
-
-;; called by set-gutter-element-visible-p
-(defvar gutter-element-visibility-changed-hook nil
-  "Function or functions to be called when the visibility of an
-element in the gutter changes.  The value of this variable may be
-buffer-local. The gutter element symbol is passed as an argument to
-the hook, as is the visibility flag.")
-
-(defun set-gutter-element (gutter-specifier prop val &optional locale tag-set)
-  "Set GUTTER-SPECIFIER gutter element PROP to VAL in optional LOCALE.
-This is a convenience function for setting gutter elements."
-  (map-extents #'(lambda (extent arg) 
-                  (set-extent-property extent 'duplicable t)) val)
-  (modify-specifier-instances gutter-specifier #'plist-put (list prop val)
-                              'force nil locale tag-set))
-
-(defun remove-gutter-element (gutter-specifier prop &optional locale tag-set)
-  "Remove gutter element PROP from GUTTER-SPECIFIER in optional LOCALE.
-This is a convenience function for removing gutter elements."
-  (modify-specifier-instances gutter-specifier #'plist-remprop (list prop)
-                              'force nil locale tag-set))
-
-(defun set-gutter-element-visible-p (gutter-visible-specifier-p
-                                    prop &optional visible-p
-                                    locale tag-set)
-  "Change the visibility of gutter elements.
-Set the visibility of element PROP to VISIBLE-P for
-GUTTER-SPECIFIER-VISIBLE-P in optional LOCALE.  
-This is a convenience function for hiding and showing gutter elements."
-  (modify-specifier-instances 
-   gutter-visible-specifier-p #'(lambda (spec prop visible-p)
-                                 (if (consp spec)
-                                     (if visible-p 
-                                         (if (memq prop spec) spec  
-                                           (cons prop spec))
-                                       (delq prop spec))
-                                   (if visible-p (list prop))))
-   (list prop visible-p)
-   'force nil locale tag-set)
-  (run-hook-with-args 'gutter-element-visibility-changed-hook prop visible-p))
-
-(defun gutter-element-visible-p (gutter-visible-specifier-p
-                                prop &optional domain)
-  "Determine whether a gutter element is visible.
-Given GUTTER-VISIBLE-SPECIFIER-P and gutter element PROP, return
-non-nil if it is visible in optional DOMAIN."
-  (let ((spec (specifier-instance gutter-visible-specifier-p domain)))
-    (or (and (listp spec) (memq 'buffers-tab spec))
-       spec)))
-
-(defun init-gutter ()
-  "Initialize the gutter."
-  ;; do nothing as yet.
-  )
 
 ;;; The Buffers tab
 
@@ -125,7 +43,8 @@ This option should be set through the options menu."
   :group 'buffers-tab
   :type 'boolean
   :set #'(lambda (var val)
-          (set-gutter-element-visible-p default-gutter-visible-p 'buffers-tab val)
+          (set-gutter-element-visible-p default-gutter-visible-p 
+                                        'buffers-tab val)
           (setq gutter-buffers-tab-visible-p val)))
 
 (defvar gutter-buffers-tab-orientation 'top
@@ -231,9 +150,17 @@ If this is 0, then the full buffer name will be shown."
 (defun buffers-tab-switch-to-buffer (buffer)
   "For use as a value for `buffers-tab-switch-to-buffer-function'."
   (unless (eq (window-buffer) buffer)
+    ;; this used to add the norecord flag to both calls below.
+    ;; this is bogus because it is a pervasive assumption in XEmacs
+    ;; that the current buffer is at the front of the buffers list.
+    ;; for example, select an item and then do M-C-l
+    ;; (switch-to-other-buffer).  Things get way confused.
+    ;;
+    ;; Andy, if you want to maintain the current look, you must
+    ;; *uncouple* the gutter order and buffers order.
     (if (> (length (windows-of-buffer buffer)) 0)
-       (select-window (car (windows-of-buffer buffer)) t)
-      (switch-to-buffer buffer t))))
+       (select-window (car (windows-of-buffer buffer)))
+      (switch-to-buffer buffer))))
 
 (defun select-buffers-tab-buffers-by-mode (buf1 buf2)
   "For use as a value of `buffers-tab-selection-function'.
@@ -345,7 +272,7 @@ items by redefining the function `format-buffers-menu-line'."
 (defun add-tab-to-gutter ()
   "Put a tab control in the gutter area to hold the most recent buffers."
   (setq gutter-buffers-tab-orientation (default-gutter-position))
-  (let ((gutter-string "\n"))
+  (let ((gutter-string (copy-sequence "\n")))
     (unless gutter-buffers-tab-extent
       (setq gutter-buffers-tab-extent (make-extent 0 1 gutter-string)))
     (set-extent-begin-glyph 
@@ -434,10 +361,10 @@ items by redefining the function `format-buffers-menu-line'."
 (add-hook 'create-frame-hook 
          #'(lambda (frame)
              (when gutter-buffers-tab (update-tab-in-gutter frame t))))
-(add-hook 'record-buffer-hook 'update-tab-in-gutter)
-(add-hook 'default-gutter-position-changed 
-         #'(lambda (arg)
-             (when gutter-buffers-tab (update-tab-in-gutter arg))))
+(add-hook 'buffer-list-changed-hook 'update-tab-in-gutter)
+(add-hook 'default-gutter-position-changed-hook
+         #'(lambda ()
+             (when gutter-buffers-tab (update-tab-in-gutter))))
 (add-hook 'gutter-element-visibility-changed-hook
          #'(lambda (prop visible-p)
              (when (and (eq prop 'buffers-tab) visible-p)
@@ -455,67 +382,83 @@ textual and displayed in the echo area."
   :type 'boolean
   :group 'gutter)
 
-(defvar progress-stack nil
-  "An alist of label/string pairs representing active progress gauges.
-The first element in the list is currently displayed in the gutter area.
-Do not modify this directly--use the `progress-display' or
-`display-progress-display'/`clear-progress-display' functions.")
-
 (defvar progress-glyph-height 32
   "Height of the gutter area for progress messages.")
 
-(defvar progress-display-stop-callback 'progress-display-quit-function
-  "Function to call to stop the progress operation.")
-
 (defvar progress-display-popup-period 0.5
   "The time that the progress gauge should remain up after completion")
 
-(defun progress-display-quit-function ()
-  "Default function to call for the stop button in a progress gauge.
-This just removes the progress gauge and calls quit."
-  (interactive)
-  (clear-progress-display)
-  (keyboard-quit))
-
 ;; private variables
-(defvar progress-gauge-glyph
-  (make-glyph
-   (vector 'progress-gauge
-          :pixel-height (- progress-glyph-height 8)
-          :pixel-width 250
-          :descriptor "Progress")))
-
 (defvar progress-text-glyph
   (make-glyph [string :data ""]))
 
-(defvar progress-layout-glyph
+(defvar progress-layout-glyph nil)
+(defvar progress-gauge-glyph
   (make-glyph
-   (vector 
-    'layout :orientation 'vertical :justify 'left
-    :items (list 
-           progress-text-glyph
-           (make-glyph
-            (vector 
-             'layout :pixel-height progress-glyph-height 
-             :orientation 'horizontal
-             :items (list 
-                     progress-gauge-glyph
-                     (vector 
-                      'button :pixel-height (- progress-glyph-height 8)
-                      :descriptor " Stop "
-                      :callback '(funcall progress-display-stop-callback)))))))))
+   `[progress-gauge
+     :pixel-height (- progress-glyph-height 8)
+     :pixel-width 250
+     :descriptor "Progress"]))
+
+(defun set-progress-display-style (style)
+  "Control the appearance of the progress gauge.
+If STYLE is 'large, the default, then the progress-display text is
+displayed above the gauge itself. If STYLE is 'small then the gauge
+and text are arranged side-by-side."  
+  (cond
+   ((eq style 'small)
+    (setq progress-glyph-height 24)
+    (setq progress-layout-glyph
+         (make-glyph
+          `[layout
+            :orientation horizontal
+            :items (,progress-gauge-glyph
+                    [button
+                     :pixel-height (- progress-glyph-height 8)
+                     ;; 'quit is special and acts "asynchronously".
+                     :descriptor "Stop" :callback 'quit]
+                    ,progress-text-glyph)])))
+   (t 
+    (setq progress-glyph-height 32)
+    (setq progress-layout-glyph
+         (make-glyph
+          `[layout 
+            :orientation vertical :justify left
+            :items (,progress-text-glyph
+                    [layout 
+                     :pixel-height (eval progress-glyph-height)
+                     :orientation horizontal
+                     :items (,progress-gauge-glyph
+                             [button 
+                              :pixel-height (- progress-glyph-height 8)
+                              :descriptor " Stop "
+                              ;; 'quit is special and acts "asynchronously".
+                              :callback 'quit])])])))))
+
+(defcustom progress-display-style 'large
+  "*Control the appearance of the progress gauge.
+If 'large, the default, then the progress-display text is displayed
+above the gauge itself. If 'small then the gauge and text are arranged
+side-by-side."
+  :group 'gutter
+  :type '(choice (const :tag "large" large)
+                (const :tag "small" small))
+  :set #'(lambda (var val)
+          (set-progress-display-style val)))
+
+(defvar progress-stack nil
+  "An alist of label/string pairs representing active progress gauges.
+The first element in the list is currently displayed in the gutter area.
+Do not modify this directly--use the `progress-display' or
+`display-progress-display'/`clear-progress-display' functions.")
 
 (defvar progress-abort-glyph
   (make-glyph
-   (vector 'layout :orientation 'vertical :justify 'left
-          :items (list progress-text-glyph
-                       (make-glyph 
-                        (vector 'layout 
-                                :pixel-height progress-glyph-height
-                                :orientation 'horizontal))))))
-
-(defvar progress-extent-text "\n")
-(defvar progress-extent nil)
+   `[layout :orientation vertical :justify left
+           :items (,progress-text-glyph
+                   [layout
+                    :pixel-height progress-glyph-height
+                    :orientation horizontal])]))
 
 (defun progress-displayed-p (&optional return-string frame)
   "Return a non-nil value if a progress gauge is presently displayed in the
@@ -551,7 +494,7 @@ you should just use (progress nil)."
        nil                     ; just preparing to put another msg up
       (if progress-stack
          (let ((oldmsg (cdr (car progress-stack))))
-           (raw-append-progress-display oldmsg frame)
+           (raw-append-progress-display oldmsg nil frame)
            oldmsg)
        ;; nothing to display so get rid of the gauge
        (set-specifier bottom-gutter-border-width 0 frame)
@@ -559,11 +502,9 @@ you should just use (progress nil)."
                                      'progress nil frame)))))
 
 (defun progress-display-clear-when-idle (&optional label)
-  (add-hook 'pre-idle-hook
-           (defun progress-display-clear-pre-idle-hook ()
-             (clear-progress-display label)
-             (remove-hook 'pre-idle-hook 
-                          'progress-display-clear-pre-idle-hook))))
+  (add-one-shot-hook 'pre-idle-hook
+                    `(lambda ()
+                       (clear-progress-display ',label))))
 
 (defun remove-progress-display (&optional label frame)
   ;; If label is nil, we want to remove all matching progress gauges.
@@ -579,6 +520,14 @@ you should just use (progress nil)."
              (setcdr s (cdr (cdr s))))
          (setq s (cdr s)))))))
 
+(defun progress-display-dispatch-non-command-events ()
+  ;; don't allow errors to hose things
+  (condition-case t 
+      ;; (sit-for 0) is too agressive and cause more display than we
+      ;; want.
+      (dispatch-non-command-events)
+    nil))
+
 (defun append-progress-display (label message &optional value frame)
   (or frame (setq frame (selected-frame)))
   ;; Add a new entry to the message-stack, or modify an existing one
@@ -589,18 +538,17 @@ you should just use (progress nil)."
          (setcdr top message)
          (if (equal tmsg message)
              (set-image-instance-property 
-              (glyph-image-instance progress-gauge-glyph)
-              :percent value)
+              (glyph-image-instance progress-gauge-glyph
+                                    (frame-selected-window frame))
+              :value value)
            (raw-append-progress-display message value frame))
          (redisplay-gutter-area))
       (push (cons label message) progress-stack)
       (raw-append-progress-display message value frame))
-    (dispatch-non-command-events)
+    (progress-display-dispatch-non-command-events)
     ;; either get command events or sit waiting for them
-    (if (not (eq value 100))
-       (when (input-pending-p)
-         (dispatch-event (next-command-event)))
-      (sit-for progress-display-popup-period nil)
+    (when (eq value 100)
+;      (sit-for progress-display-popup-period nil)
       (clear-progress-display label))))
 
 (defun abort-progress-display (label message &optional frame)
@@ -617,18 +565,16 @@ you should just use (progress nil)."
        (push (cons label message) progress-stack))
       (unless (equal message "")
        (insert-string message (get-buffer-create " *Gutter Area*"))
-       ;; Do what the device is able to cope with.
-       ;; do some funky display here.
-       (unless progress-extent
-         (setq progress-extent (make-extent 0 1 progress-extent-text)))
-       (let ((bglyph (extent-begin-glyph progress-extent)))
-         (set-extent-begin-glyph progress-extent progress-abort-glyph)
+       (let* ((gutter-string (copy-sequence "\n"))
+              (ext (make-extent 0 1 gutter-string)))
+         ;; do some funky display here.
+         (set-extent-begin-glyph ext progress-abort-glyph)
          ;; fixup the gutter specifiers
-         (set-gutter-element bottom-gutter 
-                             'progress progress-extent-text frame)
+         (set-gutter-element bottom-gutter 'progress gutter-string frame)
          (set-specifier bottom-gutter-border-width 2 frame)
          (set-image-instance-property 
-          (glyph-image-instance progress-text-glyph) :data message)
+          (glyph-image-instance progress-text-glyph
+                                (frame-selected-window frame)) :data message)
          (set-specifier bottom-gutter-height 'autodetect frame)
          (set-gutter-element-visible-p bottom-gutter-visible-p 
                                        'progress t frame)
@@ -636,38 +582,40 @@ you should just use (progress nil)."
          ;; redisplay-gutter-area performs optimally.
          (redisplay-gutter-area)
          (sit-for progress-display-popup-period nil)
-         (clear-progress-display label)
-         (set-extent-begin-glyph progress-extent bglyph)
+         (clear-progress-display label frame)
+         (set-extent-begin-glyph ext progress-layout-glyph)
+         (set-gutter-element bottom-gutter 'progress gutter-string frame)
          )))))
 
 (defun raw-append-progress-display (message &optional value frame)
   (unless (equal message "")
-    (let ((inhibit-read-only t)
+    (let* ((inhibit-read-only t)
          (zmacs-region-stays zmacs-region-stays)
-         (val (or value 0)))
+         (val (or value 0))
+         (gutter-string (copy-sequence "\n"))
+         (ext (make-extent 0 1 gutter-string)))
       (insert-string message (get-buffer-create " *Gutter Area*"))
       ;; do some funky display here.
-      (unless progress-extent
-       (setq progress-extent (make-extent 0 1 progress-extent-text))
-       (set-extent-begin-glyph progress-extent progress-layout-glyph))
+      (set-extent-begin-glyph ext progress-layout-glyph)
       ;; fixup the gutter specifiers
-      (set-gutter-element bottom-gutter 'progress progress-extent-text frame)
+      (set-gutter-element bottom-gutter 'progress gutter-string frame)
       (set-specifier bottom-gutter-border-width 2 frame)
       (set-image-instance-property 
-       (glyph-image-instance progress-gauge-glyph) :percent val)
+       (glyph-image-instance progress-gauge-glyph 
+                            (frame-selected-window frame))
+       :value val)
       (set-image-instance-property 
-       (glyph-image-instance progress-text-glyph) :data message)
+       (glyph-image-instance progress-text-glyph (frame-selected-window frame))
+       :data message)
       (if (and (eq (specifier-instance bottom-gutter-height frame)
                   'autodetect)
               (gutter-element-visible-p bottom-gutter-visible-p
                                         'progress frame))
+         ;; if the gauge is already visible then just draw the gutter
+         ;; checking for user events
          (progn
-           ;; if the gauge is already visible then just draw the gutter
-           ;; checking for user events
            (redisplay-gutter-area)
-           (dispatch-non-command-events)
-           (when (input-pending-p)
-             (dispatch-event (next-command-event))))
+           (progress-display-dispatch-non-command-events))
        ;; otherwise make the gutter visible and redraw the frame
        (set-specifier bottom-gutter-height 'autodetect frame)
        (set-gutter-element-visible-p bottom-gutter-visible-p
@@ -675,8 +623,8 @@ you should just use (progress nil)."
        ;; we have to do this so redisplay is up-to-date and so
        ;; redisplay-gutter-area performs optimally. This may also
        ;; make sure the frame geometry looks ok.
-       (dispatch-non-command-events)
-       (redisplay-frame)
+       (progress-display-dispatch-non-command-events)
+       (redisplay-frame frame)
        ))))
 
 (defun display-progress-display (label message &optional value frame)
@@ -731,5 +679,70 @@ arguments are the same as to `format'."
        (display-progress-display label str value)
        str))))
 
+;;
+;; Simple search dialog
+;;
+(defvar search-dialog-direction t)
+(defvar search-dialog-text 
+  (make-glyph 
+   [edit-field :width 15 :descriptor "" :active t :face default]))
+
+(defun search-dialog-callback (parent image-instance event)
+  (save-selected-frame
+    (select-frame parent)
+    (funcall (if search-dialog-direction
+                'search-forward 'search-backward)
+            (image-instance-property
+             (glyph-image-instance search-dialog-text 
+                                   (frame-selected-window 
+                                    (event-channel event))) :text))
+    (isearch-highlight (match-beginning 0) (match-end 0))))
+  
+(defun make-search-dialog ()
+  "Popup a search dialog box."
+  (interactive)
+  (let* ((parent (selected-frame)))
+    (set-buffer-dedicated-frame 
+     (get-buffer-create "Dialog")
+     (make-dialog-box 
+      (make-glyph
+       `[layout 
+        :orientation horizontal :justify left
+        :height 10 :width 40
+        :border [string :data "Search"]
+        :items 
+        ([layout :orientation vertical :justify left
+                 :items 
+                 ([string :data "Search for:"]
+                  [button :descriptor "Match case"
+                          :style toggle
+                          :selected (not case-fold-search)
+                          :callback (setq case-fold-search
+                                          (not case-fold-search))]
+                  [button :descriptor "Forwards"
+                          :style radio
+                          :selected search-dialog-direction
+                          :callback (setq search-dialog-direction t)]
+                  [button :descriptor "Backwards"
+                          :style radio
+                          :selected (not search-dialog-direction)
+                          :callback (setq search-dialog-direction nil)]
+                  )]
+         [layout :orientation vertical :justify left
+                 :items 
+                 (search-dialog-text
+                  [button :width 10 :descriptor "Find Next"
+                          :callback-ex
+                          (lambda (image-instance event)
+                            (search-dialog-callback ,parent
+                                                    image-instance event))]
+                  [button :width 10 :descriptor "Cancel"
+                          :callback-ex
+                          (lambda (image-instance event)
+                            (isearch-dehighlight)
+                            (delete-frame 
+                             (event-channel event)))])])])
+      '(height 10 width 40)))))
+
 (provide 'gutter-items)
 ;;; gutter-items.el ends here.
index e2a7a0d..901724b 100644 (file)
@@ -730,7 +730,10 @@ of the key sequence that ran this command."
           (stringp Installation-string))
       (with-displaying-help-buffer
        (lambda ()
-        (princ Installation-string))
+        (princ
+         (if (fboundp 'decode-coding-string)
+             (decode-coding-string Installation-string 'automatic-conversion)
+           Installation-string)))
        "Installation")
     (error "No Installation information available.")))
 
index 2772387..502a93c 100644 (file)
@@ -90,8 +90,9 @@
 
 ;Don't have a menubar entry in Lisp Interaction mode.  Otherwise, the
 ;*scratch* buffer has a Lisp menubar item!  Very confusing.
-;(defvar lisp-interaction-mode-menubar-menu
-;  (purecopy (cons "Lisp" (cdr lisp-interaction-mode-popup-menu))))
+;Jan Vroonhof really wants this, so it's back.  --ben
+(defvar lisp-interaction-mode-menubar-menu
+  (purecopy (cons "%_Lisp" (cdr lisp-interaction-mode-popup-menu))))
 
 (defvar emacs-lisp-mode-menubar-menu
   (purecopy (cons "%_Lisp" (cdr emacs-lisp-mode-popup-menu))))
@@ -363,7 +364,13 @@ if that value is non-nil."
   (setq major-mode 'lisp-interaction-mode)
   (setq mode-name "Lisp Interaction")
   (setq mode-popup-menu lisp-interaction-mode-popup-menu)
-
+  (if (and (featurep 'menubar)
+           current-menubar)
+      (progn
+       ;; make a local copy of the menubar, so our modes don't
+       ;; change the global menubar
+       (set-buffer-menubar current-menubar)
+       (add-submenu nil lisp-interaction-mode-menubar-menu)))
   (set-syntax-table emacs-lisp-mode-syntax-table)
   (lisp-mode-variables nil)
   (run-hooks 'lisp-interaction-mode-hook))
index 7217ae7..52458c3 100644 (file)
 ;; making it more likely you will get a unique match.
 (setq completion-ignored-extensions
       (mapcar 'purecopy
-             '(".o" ".elc" "~" ".bin" ".lbin" ".fasl"
-               ".dvi" ".toc" ;".log"
-               ".aux" ".a" ".ln"
-               ".lof" ".blg" ".bbl" ".glo" ".idx" ".lot" ".fmt"
-               ".diff" ".oi" ".class")))
+             ;; this is way way way bogus.
+             ;; completely wtf?
+             ;; the only things that should be here are those that are
+             ;; (a) universally recognizable, and
+             ;; (b) obvious backup files, or
+             ;; (c) obvious binary files that are generated on a
+             ;;     PER-SOURCE-FILE basis, so that they will actually
+             ;;     cause annoyance.  This includes .exe files, e.g.
+;            '(".o" ".elc" "~" ".bin" ".lbin" ".fasl"
+;              ".dvi" ".toc" ;".log"
+;              ".aux" ".a" ".ln"
+;              ".lof" ".blg" ".bbl" ".glo" ".idx" ".lot" ".fmt"
+;              ".diff" ".oi" ".class")))
+             '(".o" ".obj" ".elc" "~"
+               ".bin" ".lbin" ;; #### these are doubtful, esp. the latter.
+               ".dvi";; possibly doubtful, too.
+               ".class")))
 
 \f
 ;; This needs to be redone better. -slb
index 964cd54..df70360 100644 (file)
 (defvar Installation-string nil
   "Description of XEmacs installation.")
 
-(let ((gc-cons-threshold 30000))
+;(start-profiling)
+
+(let ((gc-cons-threshold
+       ;; setting it low makes loadup incredibly fucking slow.
+       ;; no need to do it when not dumping.
+       (if (and purify-flag
+               (not (memq 'quick-build internal-error-checking)))
+          30000 3000000)))
   
 ;; This is awfully damn early to be getting an error, right?
 (call-with-condition-handler 'really-early-error-handler
            (if full-path
                (prog1
                  (load full-path)
-                 (garbage-collect))
+                 ;; but garbage collection really slows down loading.
+                 (unless (memq 'quick-build internal-error-checking)
+                   (garbage-collect)))
              (external-debugging-output (format "\nLoad file %s: not found\n"
                                                 file))
              ;; Uncomment in case of trouble
 ;; is generated.  For VMS, you must edit ../../vms/makedoc.com.
 ;; For other systems, you must edit ../../src/Makefile.in.in.
 (when (load "site-load" t)
-  (garbage-collect))
+  (garbage-collect)
+)
 
 ;;FSFmacs randomness
 ;;(if (fboundp 'x-popup-menu)
 
 ) ;; frequent garbage collection
 
+;(stop-profiling)
+
+;; yuck!  need to insert the function def here, and rewrite the dolist
+;; loop below.
+
+;(defun loadup-profile-results (&optional info stream)
+;  "Print profiling info INFO to STREAM in a pretty format.
+;If INFO is omitted, the current profiling info is retrieved using
+; `get-profiling-info'.
+;If STREAM is omitted, either a *Profiling Results* buffer or standard
+; output are used, depending on whether the function was called
+; interactively or not."
+;  (interactive)
+;  (setq info (if info
+;               (copy-alist info)
+;             (get-profiling-info)))
+;  (when (and (not stream)
+;           (interactive-p))
+;    (pop-to-buffer (get-buffer-create "*Profiling Results*"))
+;    (erase-buffer))
+;  (let ((standard-output (or stream (if (interactive-p)
+;                                      (current-buffer)
+;                                    standard-output)))
+;      ;; Calculate the longest function
+;      (maxfunlen (apply #'max
+;                        (length "Function Name")
+;                        (mapcar
+;                         (lambda (el)
+;                           ;; Functions longer than 50 characters (usually
+;                           ;; anonymous functions) don't qualify
+;                           (let ((l (length (format "%s" (car el)))))
+;                             (if (< l 50)
+;                                 l 0)))
+;                         info))))
+;    (princ (format "%-*s    Ticks    %%/Total   Call Count\n"
+;                 maxfunlen "Function Name"))
+;    (princ (make-string maxfunlen ?=))
+;    (princ "    =====    =======   ==========\n")
+;    (let ((sum (float (apply #'+ (mapcar #'cdr info)))))
+;      (let (entry
+;          (entry-list (nreverse (sort info #'cdr-less-than-cdr))))
+;      (while entry-list
+;        (setq entry (car entry-list))
+;        (princ (format "%-*s    %-5d    %-6.3f    %s\n"
+;                       maxfunlen (car entry) (cdr entry)
+;                       (* 100 (/ (cdr entry) sum))
+;                       (or (gethash (car entry) call-count-profile-table)
+;                           "")))
+;        (setq entry-list (cdr entry-list))))
+;      (princ (make-string maxfunlen ?-))
+;      (princ "---------------------------------\n")
+;      (princ (format "%-*s    %-5d    %-6.2f\n" maxfunlen "Total" sum 100.0))
+;      (princ (format "\n\nOne tick = %g ms\n"
+;                   (/ default-profiling-interval 1000.0)))
+;      (and (boundp 'internal-error-checking)
+;         internal-error-checking
+;         (princ "
+;WARNING: Error checking is turned on in this XEmacs.  This might make
+;         the measurements very unreliable.\n"))))
+;  (when (and (not stream)
+;           (interactive-p))
+;    (goto-char (point-min))))
+
+;(loadup-profile-results nil 'external-debugging-output)
+
 ;; Dump into the name `xemacs' (only)
 (when (member "dump" command-line-args)
   (message "Dumping under the name xemacs")
index 7a9365c..730a941 100644 (file)
@@ -86,6 +86,8 @@
 (load "packages.el")
 (load "setup-paths.el")
 (load "dump-paths.el")
+(require 'custom)
+(load "process")
 
 (let (preloaded-file-list)
   (load (expand-file-name "../lisp/dumped-lisp.el"))
index 984d80f..eda0c93 100644 (file)
@@ -4,7 +4,7 @@
 ;; Copyright (C) 1995 Tinker Systems and INS Engineering Corp.
 ;; Copyright (C) 1995 Sun Microsystems.
 ;; Copyright (C) 1995, 1996, 2000 Ben Wing.
-;; Copyright (C) 1997 MORIOKA Tomohiko
+;; Copyright (C) 1997 MORIOKA Tomohiko.
 
 ;; Maintainer: XEmacs Development Team
 ;; Keywords: frames, extensions, internal, dumped
 ;; Free Software Foundation, 59 Temple Place - Suite 330,
 ;; Boston, MA 02111-1307, USA.
 
+;;; Authorship:
+
+;; Created c. 1991 for Lucid Emacs.  Originally called x-menubar.el.
+;;   Contained four menus -- File, Edit, Buffers, Help.
+;;   Dynamic menu changes possible only through activate-menubar-hook.
+;;   Also contained menu manipulation funs, e.g. find-menu-item, add-menu.
+;; Options menu added for 19.9 by Jamie Zawinski, late 1993.
+;; Major reorganization c. 1994 by Ben Wing; added many items and moved
+;;   some items to two new menus, Apps and Tools. (for 19.10?)
+;; Generic menubar functions moved to new file, menubar.el, by Ben Wing,
+;;   1995, for 19.12; also, creation of current buffers menu options,
+;;   and buffers menu changed from purely most-recent to sorted alphabetical,
+;;   by mode.  Also added mode-popup-menu support.
+;; New API (add-submenu, add-menu-button) and menu filter support added
+;;   late summer 1995 by Stig, for 19.13.  Also popup-menubar-menu.
+;; Renamed to menubar-items.el c. 1998, with MS Win support.
+;; Options menu rewritten to use custom c. 1999 by ? (Jan Vroonhof?).
+;; Major reorganization Mar. 2000 by Ben Wing; added many items and changed
+;;   top-level menus to File, Edit, View, Cmds, Tools, Options, Buffers.
+;; Accelerator spec functionality added Mar. 2000 by Ben Wing.
+
 ;;; Commentary:
 
 ;; This file is dumped with XEmacs (when window system and menubar support is
@@ -126,8 +147,10 @@ which will not be used as accelerators."
       ["Save %_As..." write-file]
       ["Save So%_me Buffers" save-some-buffers]
       "-----"
-      ["%_Print Buffer" lpr-buffer
-       :active (fboundp 'lpr-buffer)
+      ["%_Print Buffer" generic-print-buffer
+       :active (or (valid-specifier-tag-p 'msprinter)
+                  (and (not (eq system-type 'windows-nt))
+                       (fboundp 'lpr-buffer)))
        :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
       ["Prett%_y-Print Buffer" ps-print-buffer-with-faces
        :active (fboundp 'ps-print-buffer-with-faces)
@@ -173,13 +196,12 @@ which will not be used as accelerators."
       ["Select %_All" mark-whole-buffer]
       ["Select %_Page" mark-page]
       "----"
-      ["%_1 Search..." isearch-forward]
-      ["%_2 Search Backward..." isearch-backward]
-      ["%_3 Replace..." query-replace]
+      ["%_Search..." make-search-dialog]
+      ["%_1 Replace..." query-replace]
       "----"
-      ["%_4 Search (Regexp)..." isearch-forward-regexp]
-      ["%_5 Search Backward (Regexp)..." isearch-backward-regexp]
-      ["%_6 Replace (Regexp)..." query-replace-regexp]
+      ["%_2 Search (Regexp)..." isearch-forward-regexp]
+      ["%_3 Search Backward (Regexp)..." isearch-backward-regexp]
+      ["%_4 Replace (Regexp)..." query-replace-regexp]
 
       ,@(when (featurep 'mule)
         '("----"
@@ -336,8 +358,8 @@ which will not be used as accelerators."
        ["%_Open Rectangle" open-rectangle]
        ["%_Prefix Rectangle..." string-rectangle]
        ["Rectangle %_Mousing"
-       (customize-set-variable
-        mouse-track-rectangle-p (not mouse-track-rectangle-p))
+       (customize-set-variable 'mouse-track-rectangle-p
+                               (not mouse-track-rectangle-p))
        :style toggle :selected mouse-track-rectangle-p]
        )
       ("%_Sort"
@@ -396,7 +418,6 @@ which will not be used as accelerators."
                           (menu-truncate-list grep-history 10)))))
             (append menu '("---") items))))
        ["%_Grep..." grep :active (fboundp 'grep)]
-       ["%_Repeat Grep" recompile :active (fboundp 'recompile)]
        ["%_Kill Grep" kill-compilation
        :active (and (fboundp 'kill-compilation)
                     (fboundp 'compilation-find-buffer)
@@ -409,28 +430,71 @@ which will not be used as accelerators."
        (progn
          (require 'compile)
          (let ((grep-command
-                (cons (concat grep-command " *") (length grep-command))))
+                (cons (concat grep-command " *")
+                      (length grep-command))))
+           (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+       ["Grep %_C and C Header Files in Current Directory..."
+       (progn
+         (require 'compile)
+         (let ((grep-command
+                (cons (concat grep-command " *.[chCH]"
+                                       ; i wanted to also use *.cc and *.hh.
+                                       ; see long comment below under Perl.
+                              )
+                      (length grep-command))))
            (call-interactively 'grep)))
        :active (fboundp 'grep)]
-       ["Grep %_C Files in Current Directory..."
+       ["Grep C Hea%_der Files in Current Directory..."
        (progn
          (require 'compile)
          (let ((grep-command
-                (cons (concat grep-command " *.[ch]") (length grep-command))))
+                (cons (concat grep-command " *.[hH]"
+                                       ; i wanted to also use *.hh.
+                                       ; see long comment below under Perl.
+                              )
+                      (length grep-command))))
            (call-interactively 'grep)))
        :active (fboundp 'grep)]
        ["Grep %_E-Lisp Files in Current Directory..."
        (progn
          (require 'compile)
          (let ((grep-command
-                (cons (concat grep-command " *.el") (length grep-command))))
+                (cons (concat grep-command " *.el")
+                      (length grep-command))))
+           (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+       ["Grep %_Perl Files in Current Directory..."
+       (progn
+         (require 'compile)
+         (let ((grep-command
+                (cons (concat grep-command " *.pl"
+                                       ; i wanted to use this:
+                                       ; " *.pl *.pm *.am"
+                                       ; but grep complains if it can't
+                                       ; match anything in a glob, and
+                                       ; that screws other things up.
+                                       ; perhaps we need to first scan
+                                       ; each separate glob in the directory
+                                       ; to see if there are any files in
+                                       ; that glob, and if not, omit it.
+                              )
+                      (length grep-command))))
+           (call-interactively 'grep)))
+       :active (fboundp 'grep)]
+       ["Grep %_HTML Files in Current Directory..."
+       (progn
+         (require 'compile)
+         (let ((grep-command
+                (cons (concat grep-command " *.*htm*")
+                      (length grep-command))))
            (call-interactively 'grep)))
        :active (fboundp 'grep)]
        "---"
        ["%_Next Match" next-error
        :active (and (fboundp 'compilation-errors-exist-p)
                     (compilation-errors-exist-p))]
-       ["%_Previous Match" previous-error
+       ["Pre%_vious Match" previous-error
        :active (and (fboundp 'compilation-errors-exist-p)
                     (compilation-errors-exist-p))]
        ["%_First Match" first-error
@@ -474,7 +538,7 @@ which will not be used as accelerators."
        ["%_Next Error" next-error
        :active (and (fboundp 'compilation-errors-exist-p)
                     (compilation-errors-exist-p))]
-       ["%_Previous Error" previous-error
+       ["Pre%_vious Error" previous-error
        :active (and (fboundp 'compilation-errors-exist-p)
                     (compilation-errors-exist-p))]
        ["%_First Error" first-error
@@ -700,6 +764,11 @@ which will not be used as accelerators."
        )
       
       ("%_Printing"
+       ["Set Printer %_Name for Generic Print Support..."
+       (customize-set-variable
+        'printer-name
+        (read-string "Set printer name: " printer-name))]
+       "---"
        ["Command-Line %_Switches for `lpr'/`lp'..."
        ;; better to directly open a customization buffer, since the value
        ;; must be a list of strings, which is somewhat complex to prompt for.
@@ -808,6 +877,23 @@ which will not be used as accelerators."
        (customize-set-variable
         'mail-host-address
         (read-string "Set machine email name: " mail-host-address))]
+       ["Set %_SMTP Server..."
+       (progn
+         (require 'smtpmail)
+         (customize-set-variable
+          'smtpmail-smtp-server
+          (read-string "Set SMTP server: " smtpmail-smtp-server)))
+       :active (and (boundp 'send-mail-function)
+                    (eq send-mail-function 'smtpmail-send-it))]
+       ["SMTP %_Debug Info"
+       (progn
+         (require 'smtpmail)
+         (customize-set-variable 'smtpmail-debug-info
+                                 (not smtpmail-debug-info)))
+       :style toggle
+       :selected (and (boundp 'smtpmail-debug-info) smtpmail-debug-info)
+       :active (and (boundp 'send-mail-function)
+                    (eq send-mail-function 'smtpmail-send-it))]
        "---"
        ("%_Open URLs With"
        ["%_Emacs-W3"
@@ -1307,69 +1393,34 @@ which will not be used as accelerators."
 
      ("%_Help"
       ["%_About XEmacs..." about-xemacs]
-      ("%_Basics"
-       ["%_Installation" describe-installation
-       :active (boundp 'Installation-string)]
-       ;; Tutorials.
-       ,(if (featurep 'mule)
-           ;; Mule tutorials.
-           (let ((lang language-info-alist) (n 0)
-                 submenu tut)
-             (while lang
-             (setq n (1+ n))
-               (and (setq tut (assq 'tutorial (car lang)))
-                    (not (string= (caar lang) "ASCII"))
-                    (setq
-                     submenu
-                     (cons
-                      `[,(concat (menu-item-generate-accelerator-spec n)
-                                 (caar lang))
-                        (help-with-tutorial nil ,(cdr tut))]
-                      submenu)))
-               (setq lang (cdr lang)))
-             (append `("%_Tutorials"
-                       :filter tutorials-menu-filter
-                       ["%_Default" help-with-tutorial t
-                        ,(concat "(" current-language-environment ")")])
-                     submenu))
-         ;; Non mule tutorials.
-         (let ((lang tutorial-supported-languages)
-               (n 0)
-               submenu)
-           (while lang
-             (setq n (1+ n))
-             (setq submenu
-                   (cons
-                    `[,(concat (menu-item-generate-accelerator-spec n)
-                               (caar lang))
-                      (help-with-tutorial ,(format "TUTORIAL.%s"
-                                                   (cadr (car lang))))]
-                    submenu))
-             (setq lang (cdr lang)))
-           (append '("%_Tutorials"
-                     ["%_English" help-with-tutorial])
-                   submenu)))
-       ["%_News" view-emacs-news]
-       ["%_Packages" finder-by-keyword]
-       ["%_Splash" xemacs-splash-buffer])
       "-----"
+      ["XEmacs %_News" view-emacs-news]
+      ["%_Obtaining XEmacs" describe-distribution]
+      "-----"
+      ("%_Info (Online Docs)"
+       ["%_Info Contents" info]
+       ["Lookup %_Key Binding..." Info-goto-emacs-key-command-node]
+       ["Lookup %_Command..." Info-goto-emacs-command-node]
+       ["Lookup %_Function..." Info-elisp-ref]
+       ["Lookup %_Topic..." Info-query])
       ("XEmacs %_FAQ"
        ["%_FAQ (local)" xemacs-local-faq]
-       ["FAQ via %_WWW" xemacs-www-faq (boundp 'browse-url-browser-function)]
-       ["%_Home Page" xemacs-www-page          (boundp 'browse-url-browser-function)])
+       ["FAQ via %_WWW" xemacs-www-faq
+       :active (boundp 'browse-url-browser-function)]
+       ["%_Home Page" xemacs-www-page
+       :active (boundp 'browse-url-browser-function)])
+      ("%_Tutorials"
+       :filter tutorials-menu-filter)
       ("%_Samples"
-       ["Sample .%_emacs" (find-file (locate-data-file "sample.emacs")) (locate-data-file "sample.emacs")]
-       ["Sample .%_Xdefaults" (find-file (locate-data-file "sample.Xdefaults")) (locate-data-file "sample.Xdefaults")]
-       ["Sample e%_nriched" (find-file (locate-data-file "enriched.doc")) (locate-data-file "enriched.doc")])
-      "-----"
-      ("Lookup in %_Info"
-       ["%_Key Binding..." Info-goto-emacs-key-command-node]
-       ["%_Command..." Info-goto-emacs-command-node]
-       ["%_Function..." Info-elisp-ref]
-       ["%_Topic..." Info-query])
-      ("%_Manuals"
-       ["%_Info" info]
-       ["%_Unix Manual..." manual-entry])
+       ["Sample .%_emacs"
+       (find-file (locate-data-file "sample.emacs"))
+       :active (locate-data-file "sample.emacs")]
+       ["Sample .%_Xdefaults"
+       (find-file (locate-data-file "sample.Xdefaults"))
+       :active (locate-data-file "sample.Xdefaults")]
+       ["Sample e%_nriched"
+       (find-file (locate-data-file "enriched.doc"))
+       :active (locate-data-file "enriched.doc")])
       ("%_Commands & Keys"
        ["%_Mode" describe-mode]
        ["%_Apropos..." hyper-apropos]
@@ -1386,10 +1437,14 @@ which will not be used as accelerators."
       "-----"
       ["%_Recent Messages" view-lossage]
       ("%_Misc"
+       ["%_Current Installation Info" describe-installation
+       :active (boundp 'Installation-string)]
        ["%_No Warranty" describe-no-warranty]
        ["XEmacs %_License" describe-copying]
-       ["The Latest %_Version" describe-distribution])
-      ["%_Send Bug Report..." report-emacs-bug
+       ["Find %_Packages" finder-by-keyword]
+       ["View %_Splash Screen" xemacs-splash-buffer]
+       ["%_Unix Manual..." manual-entry])
+      ["Send %_Bug Report..." report-emacs-bug
        :active (fboundp 'report-emacs-bug)]))))
 
 \f
@@ -1790,22 +1845,34 @@ If this is a relative filename, it is put into the same directory as your
 \f
 ;;; The Help menu
 
-(if (featurep 'mule)
-    (defun tutorials-menu-filter (menu-items)
-      ;; If there's a tutorial for the current language environment, make it
-      ;; appear first as the default one. Otherwise, use the english one.
-      (let* ((menu menu-items)
-            (item (pop menu-items)))
-       (aset
-        item 3
-        (concat "("
-                (if (assoc
-                     'tutorial
-                     (assoc current-language-environment language-info-alist))
-                    current-language-environment
-                  "English")
-                ")"))
-       menu)))
+(defun tutorials-menu-filter (menu-items)
+   (append
+    (if (featurep 'mule)
+       (if (assq 'tutorial
+                 (assoc current-language-environment language-info-alist))
+           `([,(concat "%_Default (" current-language-environment ")")
+              help-with-tutorial]))
+      '(["%_English" help-with-tutorial]))
+    (submenu-generate-accelerator-spec
+     (if (featurep 'mule)
+        ;; Mule tutorials.
+        (mapcan #'(lambda (lang)
+                    (let ((tut (assq 'tutorial lang)))
+                      (and tut
+                           (not (string= (car lang) "ASCII"))
+                           ;; skip current language, since we already
+                           ;; included it first
+                           (not (string= (car lang)
+                                         current-language-environment))
+                           `([,(car lang)
+                              (help-with-tutorial nil ,(cdr tut))]))))
+                language-info-alist))
+     ;; Non mule tutorials.
+     (mapcar #'(lambda (lang)
+                `[,(car lang)
+                  (help-with-tutorial ,(format "TUTORIAL.%s"
+                                               (cadr lang)))])
+            tutorial-supported-languages))))
 
 \f
 (set-menubar default-menubar)
@@ -1907,8 +1974,7 @@ The menu is computed by combining `global-popup-menu' and `mode-popup-menu'."
     (popup-menu bmenu)))
 
 (defun popup-menubar-menu (event)
-  "Pop up a copy of menu that also appears in the menubar"
-  ;; by Stig@hackvan.com
+  "Pop up a copy of menu that also appears in the menubar."
   (interactive "e")
   (let ((window (and (event-over-text-area-p event) (event-window event)))
        popup-menubar)
index 3b58c86..cdf247b 100644 (file)
@@ -30,7 +30,7 @@
 
 ;; This file is dumped with XEmacs (when menubar support is compiled in).
 
-;; Some stuff in FSF menu-bar.el is in x-menubar.el
+;; Some stuff in FSF menu-bar.el is in menubar-items.el
 
 ;;; Code:
 
index c5e428d..18baacd 100644 (file)
@@ -575,8 +575,13 @@ parentheses on the modeline."
                                        ; this used to be "XEmacs:"
        (cons modeline-buffer-id-right-extent (purecopy " %17b")))
   "Modeline control for identifying the buffer being displayed.
-Its default value is \"XEmacs: %17b\" (NOT!).  Major modes that edit things
-other than ordinary files may change this (e.g. Info, Dired,...)")
+Its default value is
+
+  (list (cons modeline-buffer-id-left-extent (purecopy \"XEmacs%N:\"))
+       (cons modeline-buffer-id-right-extent (purecopy \" %17b\")))
+
+Major modes that edit things other than ordinary files may change this
+(e.g. Info, Dired,...).")
 (make-variable-buffer-local 'modeline-buffer-identification)
 
 ;; These are for the sake of minor mode menu.  #### All of this is
index 1222b27..546dd8c 100644 (file)
@@ -611,7 +611,8 @@ ALIST is an alist of KEY and INFO values.  See the documentation of
          (eval-after-load
              "menubar-items.elc"
            `(add-menu-button
-             '("Mule" "Describe Language Support")
+             '("%_Edit" "%_Multilingual (\"Mule\")"
+               "%_Describe Language Support")
              (vector ,lang-env
                      '(describe-language-environment ,lang-env)
                      t))))
@@ -622,11 +623,12 @@ ALIST is an alist of KEY and INFO values.  See the documentation of
       (eval-after-load
          "menubar-items.elc"
        `(add-menu-button
-         '("Mule" "Set Language Environment")
+         '("%_Edit" "%_Multilingual (\"Mule\")"
+           "%_Set Language Environment")
          (vector ,lang-env
                  '(set-language-environment ,lang-env)
                  t))))
-
+    
     (while alist
       (set-language-info lang-env (car (car alist)) (cdr (car alist)))
       (setq alist (cdr alist)))))
index 0c7b46a..c0602de 100644 (file)
@@ -1,7 +1,7 @@
 ;;; process.el --- commands for subprocesses; split out of simple.el
 
 ;; Copyright (C) 1985-7, 1993,4, 1997 Free Software Foundation, Inc.
-;; Copyright (C) 1995 Ben Wing.
+;; Copyright (C) 1995, 2000 Ben Wing.
 
 ;; Author: Ben Wing
 ;; Maintainer: XEmacs Development Team
 
 ;;; Synched up with: FSF 19.30.
 
+;;; Authorship:
+
+;; Created 1995 by Ben Wing during Mule work -- some commands split out
+;; of simple.el and wrappers of *-internal functions created so they could
+;; be redefined in a Mule world.
+;; Lisp definition of call-process-internal added Mar. 2000 by Ben Wing.
+
 ;;; Commentary:
 
 ;; This file is dumped with XEmacs.
@@ -67,6 +74,108 @@ Wildcards and redirection are handled as usual in the shell."
   (start-process name buffer shell-file-name shell-command-switch
                 (mapconcat #'identity args " ")))
 
+(defun call-process-internal (program &optional infile buffer display &rest args)
+  "Call PROGRAM synchronously in separate process, with coding-system specified.
+Arguments are
+ (PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS).
+The program's input comes from file INFILE (nil means `/dev/null').
+Insert output in BUFFER before point; t means current buffer;
+ nil for BUFFER means discard it; 0 means discard and don't wait.
+BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case,
+REAL-BUFFER says what to do with standard output, as above,
+while STDERR-FILE says what to do with standard error in the child.
+STDERR-FILE may be nil (discard standard error output),
+t (mix it with ordinary output), or a file name string.
+
+Fourth arg DISPLAY non-nil means redisplay buffer as output is inserted.
+Remaining arguments are strings passed as command arguments to PROGRAM.
+
+If BUFFER is 0, `call-process' returns immediately with value nil.
+Otherwise it waits for PROGRAM to terminate and returns a numeric exit status
+ or a signal description string.
+If you quit, the process is killed with SIGINT, or SIGKILL if you
+ quit again."
+  ;; #### remove windows-nt check when this is ready for prime time.
+  (if (or (noninteractive) (not (eq 'windows-nt system-type)))
+      (apply 'old-call-process-internal program infile buffer display args)
+    (let (proc inbuf errbuf discard)
+      (unwind-protect
+         (progn
+           (when infile
+             (setq infile (expand-file-name infile))
+             (setq inbuf (generate-new-buffer "*call-process*"))
+             (with-current-buffer inbuf
+               (insert-file-contents-internal infile nil nil nil nil
+                                              coding-system-for-read)))
+           (let ((stderr (if (consp buffer) (second buffer) t)))
+             (if (consp buffer) (setq buffer (car buffer)))
+             (setq buffer
+                   (cond ((null buffer) nil)
+                         ((eq buffer t) (current-buffer))
+                         ;; use integerp for compatibility with existing
+                         ;; call-process rmsism.
+                         ((integerp buffer) (setq discard t) nil)
+                         (t (get-buffer-create buffer))))
+             (when (and stderr (not (eq t stderr)))
+               (setq stderr (expand-file-name stderr))
+               (setq errbuf (generate-new-buffer "*call-process*")))
+             (setq proc
+                   (apply 'start-process-internal "*call-process*"
+                          buffer
+                          ;#### not implemented until my new process
+                          ;changes go in.
+                          ;(if (eq t stderr) buffer (list buffer errbuf))
+                          program args))
+             (if buffer
+                 (set-marker (process-mark proc) (point buffer) buffer))
+             (unwind-protect
+                 (progn
+                   (catch 'call-process-done
+                     (when (not discard)
+                       (set-process-sentinel
+                        proc
+                        #'(lambda (proc status)
+                            (cond ((eq 'exit (process-status proc))
+                                   (set-process-sentinel proc nil)
+                                   (throw 'call-process-done
+                                          (process-exit-status proc)))
+                                  ((eq 'signal (process-status proc))
+                                   (set-process-sentinel proc nil)
+                                   (throw 'call-process-done status))))))
+                     (when inbuf
+                       (process-send-region proc 1
+                                            (1+ (buffer-size inbuf)) inbuf))
+                     (process-send-eof proc)
+                     (when discard
+                       ;; we're trying really really hard to emulate
+                       ;; the old call-process.
+                       (if errbuf
+                           (set-process-sentinel
+                            proc
+                            `(lambda (proc status)
+                               (write-region-internal
+                                1 (1+ (buffer-size))
+                                ,stderr
+                                nil 'major-rms-kludge-city nil
+                                coding-system-for-write))))
+                       (setq errbuf nil)
+                       (setq proc nil)
+                       (throw 'call-process-done nil))
+                     (while t
+                       (accept-process-output proc)
+                       (if display (sit-for 0))))
+                   (when errbuf
+                     (with-current-buffer errbuf
+                       (write-region-internal 1 (1+ (buffer-size)) stderr
+                                              nil 'major-rms-kludge-city nil
+                                              coding-system-for-write))))
+               (if proc (set-process-sentinel proc nil)))))
+       (if inbuf (kill-buffer inbuf))
+       (if errbuf (kill-buffer errbuf))
+       (condition-case nil
+           (if (and proc (process-live-p proc)) (kill-process proc))
+         (error nil))))))
+
 (defun call-process (program &optional infile buffer displayp &rest args)
   "Call PROGRAM synchronously in separate process.
 The program's input comes from file INFILE (nil means `/dev/null').
index 5b306a1..cf2652a 100644 (file)
@@ -1667,10 +1667,71 @@ store it in a Lisp variable.  Example:
 ;    (set-marker (mark-marker) nil)))
 
 (defvar mark-ring nil
-  "The list of former marks of the current buffer, most recent first.")
+  "The list of former marks of the current buffer, most recent first.
+This variable is automatically buffer-local.")
 (make-variable-buffer-local 'mark-ring)
 (put 'mark-ring 'permanent-local t)
 
+(defvar dont-record-current-mark nil
+  "If set to t, the current mark value should not be recorded on the mark ring.
+This is set by commands that manipulate the mark incidentally, to avoid
+cluttering the mark ring unnecessarily.  Under most circumstances, you do
+not need to set this directly; it is automatically reset each time
+`push-mark' is called, according to `mark-ring-unrecorded-commands'.  This
+variable is automatically buffer-local.")
+(make-variable-buffer-local 'dont-record-current-mark)
+(put 'dont-record-current-mark 'permanent-local t)
+
+;; a conspiracy between push-mark and handle-pre-motion-command
+(defvar in-shifted-motion-command nil)
+
+(defcustom mark-ring-unrecorded-commands '(shifted-motion-commands
+                                          yank
+                                          mark-beginning-of-buffer
+                                          mark-bob
+                                          mark-defun
+                                          mark-end-of-buffer
+                                          mark-end-of-line
+                                          mark-end-of-sentence
+                                          mark-eob
+                                          mark-marker
+                                          mark-page
+                                          mark-paragraph
+                                          mark-sexp
+                                          mark-whole-buffer
+                                          mark-word)
+  "*List of commands whose marks should not be recorded on the mark stack.
+Many commands set the mark as part of their action.  Normally, all such
+marks get recorded onto the mark stack.  However, this tends to clutter up
+the mark stack unnecessarily.  You can control this by putting a command
+onto this list.  Then, any marks set by the function will not be recorded.
+
+The special value `shifted-motion-commands' causes marks set as a result
+of selection using any shifted motion commands to not be recorded.
+
+The value `yank' affects all yank-like commands, as well as just `yank'."
+  :type '(repeat (choice (const :tag "shifted motion commands"
+                               'shifted-motion-commands)
+                        (const :tag "functions that select text"
+                               :inline t
+                               '(mark-beginning-of-buffer
+                                 mark-bob
+                                 mark-defun
+                                 mark-end-of-buffer
+                                 mark-end-of-line
+                                 mark-end-of-sentence
+                                 mark-eob
+                                 mark-marker
+                                 mark-page
+                                 mark-paragraph
+                                 mark-sexp
+                                 mark-whole-buffer
+                                 mark-word))
+                        (const :tag "functions that paste text"
+                               'yank)
+                        function))
+  :group 'killing)
+
 (defcustom mark-ring-max 16
   "*Maximum size of mark ring.  Start discarding off end if gets this big."
   :type 'integer
@@ -1692,6 +1753,14 @@ ring, and push mark on global mark ring.
 With argument, jump to mark, and pop a new position for mark off the ring
 \(does not affect global mark ring\).
 
+The mark ring is a per-buffer stack of marks, most recent first.  Its
+maximum length is controlled by `mark-ring-max'.  Generally, when new
+marks are set, the current mark is pushed onto the stack.  You can pop
+marks off the stack using \\[universal-argument] \\[set-mark-command].  The term \"ring\" is used because when
+you pop a mark off the stack, the current mark value is pushed onto the
+far end of the stack.  If this is confusing, just think of the mark ring
+as a stack.
+
 Novice Emacs Lisp programmers often try to use the mark for the wrong
 purposes.  See the documentation of `set-mark' for more information."
   (interactive "P")
@@ -1699,6 +1768,7 @@ purposes.  See the documentation of `set-mark' for more information."
       (push-mark nil nil t)
     (if (null (mark t))
        (error "No mark set in this buffer")
+      (if dont-record-current-mark (pop-mark))
       (goto-char (mark t))
       (pop-mark))))
 
@@ -1713,7 +1783,7 @@ Activate mark if optional third arg ACTIVATE-REGION non-nil.
 Novice Emacs Lisp programmers often try to use the mark for the wrong
 purposes.  See the documentation of `set-mark' for more information."
   (setq buffer (decode-buffer buffer)) ; XEmacs
-  (if (null (mark t buffer)) ; XEmacs
+  (if (or dont-record-current-mark (null (mark t buffer))) ; XEmacs
       nil
     ;; The save-excursion / set-buffer is necessary because mark-ring
     ;; is a buffer local variable
@@ -1727,8 +1797,9 @@ purposes.  See the documentation of `set-mark' for more information."
   (set-mark (or location (point buffer)) buffer)
 ; (set-marker (mark-marker) (or location (point)) (current-buffer)) ; FSF
   ;; Now push the mark on the global mark ring.
-  (if (or (null global-mark-ring)
-          (not (eq (marker-buffer (car global-mark-ring)) buffer)))
+  (if (and (not dont-record-current-mark)
+          (or (null global-mark-ring)
+              (not (eq (marker-buffer (car global-mark-ring)) buffer))))
       ;; The last global mark pushed wasn't in this same buffer.
       (progn
         (setq global-mark-ring (cons (copy-marker (mark-marker t buffer))
@@ -1738,7 +1809,13 @@ purposes.  See the documentation of `set-mark' for more information."
               (move-marker (car (nthcdr global-mark-ring-max global-mark-ring))
                            nil buffer)
               (setcdr (nthcdr (1- global-mark-ring-max) global-mark-ring) nil)))))
-  (or nomsg executing-kbd-macro (> (minibuffer-depth) 0)
+  (setq dont-record-current-mark
+       (not (not (or (and in-shifted-motion-command
+                          (memq 'shifted-motion-commands
+                                mark-ring-unrecorded-commands))
+                     (memq this-command mark-ring-unrecorded-commands)))))
+  (or dont-record-current-mark nomsg executing-kbd-macro
+      (> (minibuffer-depth) 0)
       (display-message 'command "Mark set"))
   (if activate-region
       (progn
@@ -1877,7 +1954,8 @@ if `shifted-motion-keys-select-region' is nil."
        shifted-motion-keys-select-region
        (not (region-active-p))
        (memq 'shift (event-modifiers last-input-event)))
-      (push-mark nil nil t)))
+      (let ((in-shifted-motion-command t))
+       (push-mark nil nil t))))
 
 (defun handle-post-motion-command ()
   (if
@@ -3276,6 +3354,10 @@ when it is off screen."
     element))
 
 \f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                          mail composition code                        ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defcustom mail-user-agent 'sendmail-user-agent
   "*Your preference for a mail composition package.
 Various Emacs Lisp packages (e.g. reporter) require you to compose an
@@ -3421,6 +3503,10 @@ Each action has the form (FUNCTION . ARGS)."
                'switch-to-buffer-other-frame yank-action send-actions))
 
 \f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                             set variable                              ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun set-variable (var val)
   "Set VARIABLE to VALUE.  VALUE is a Lisp object.
 When using this interactively, supply a Lisp expression for VALUE.
@@ -3463,31 +3549,11 @@ it were the arg to `interactive' (which see) to interactively read the value."
   (if (and (boundp var) (specifierp (symbol-value var)))
       (set-specifier (symbol-value var) val)
     (set var val)))
-\f
-;; XEmacs
-(defun activate-region ()
-  "Activate the region, if `zmacs-regions' is true.
-Setting `zmacs-regions' to true causes LISPM-style active regions to be used.
-This function has no effect if `zmacs-regions' is false."
-  (interactive)
-  (and zmacs-regions (zmacs-activate-region)))
 
-;; XEmacs
-(defsubst region-exists-p ()
-  "Return t if the region exists.
-If active regions are in use (i.e. `zmacs-regions' is true), this means that
- the region is active.  Otherwise, this means that the user has pushed
- a mark in this buffer at some point in the past.
-The functions `region-beginning' and `region-end' can be used to find the
- limits of the region."
-  (not (null (mark))))
-
-;; XEmacs
-(defun region-active-p ()
-  "Return non-nil if the region is active.
-If `zmacs-regions' is true, this is equivalent to `region-exists-p'.
-Otherwise, this function always returns false."
-  (and zmacs-regions zmacs-region-extent))
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                           case changing code                          ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;; A bunch of stuff was moved elsewhere:
 ;; completion-list-mode-map
@@ -3565,12 +3631,42 @@ The words not capitalized are specified in `uncapitalized-title-words'."
            (forward-word 1))
          (setq first nil))))))
 
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                          zmacs active region code                     ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 ;; Most of the zmacs code is now in elisp.  The only thing left in C
 ;; are the variables zmacs-regions, zmacs-region-active-p and
 ;; zmacs-region-stays plus the function zmacs_update_region which
 ;; simply calls the lisp level zmacs-update-region.  It must remain
 ;; for convenience, since it is called by core C code.
 
+;; XEmacs
+(defun activate-region ()
+  "Activate the region, if `zmacs-regions' is true.
+Setting `zmacs-regions' to true causes LISPM-style active regions to be used.
+This function has no effect if `zmacs-regions' is false."
+  (interactive)
+  (and zmacs-regions (zmacs-activate-region)))
+
+;; XEmacs
+(defsubst region-exists-p ()
+  "Return t if the region exists.
+If active regions are in use (i.e. `zmacs-regions' is true), this means that
+ the region is active.  Otherwise, this means that the user has pushed
+ a mark in this buffer at some point in the past.
+The functions `region-beginning' and `region-end' can be used to find the
+ limits of the region."
+  (not (null (mark))))
+
+;; XEmacs
+(defun region-active-p ()
+  "Return non-nil if the region is active.
+If `zmacs-regions' is true, this is equivalent to `region-exists-p'.
+Otherwise, this function always returns false."
+  (and zmacs-regions zmacs-region-extent))
+
 (defvar zmacs-activate-region-hook nil
   "Function or functions called when the region becomes active;
 see the variable `zmacs-regions'.")
@@ -3711,9 +3807,10 @@ when appropriate.  Calling this function will call the hook
                                          (mark-marker t))))
     (run-hooks 'zmacs-update-region-hook)))
 
-;;;;;;
-;;;;;; echo area stuff
-;;;;;;
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                           message logging code                        ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 ;;; #### Should this be moved to a separate file, for clarity?
 ;;; -hniksic
@@ -4034,10 +4131,10 @@ See `display-message' for a list of standard labels."
       (display-message label str)
       str)))
 
-
-;;;;;;
-;;;;;; warning stuff
-;;;;;;
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                              warning code                             ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (defcustom log-warning-minimum-level 'info
   "Minimum level of warnings that should be logged.
@@ -4239,6 +4336,11 @@ The C code calls this periodically, right before redisplay."
       (set-window-start (display-buffer buffer) warning-marker))
     (set-marker warning-marker (point-max buffer) buffer)))
 
+\f
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;                                misc junk                              ;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 (defun emacs-name ()
   "Return the printable name of this instance of Emacs."
   (cond ((featurep 'infodock) "InfoDock")
index f306b44..fa38653 100644 (file)
@@ -319,12 +319,6 @@ other hooks, such as major mode hooks, can do the job."
 The value of this variable may be buffer-local.
 The buffer about to be killed is current when this hook is run.")
 
-;; called by Frecord_buffer()
-(defvar record-buffer-hook nil
-  "Function or functions to be called when a buffer is recorded.
-The value of this variable may be buffer-local.
-The buffer being recorded is passed as an argument to the hook.")
-
 ;; in C in FSFmacs
 (defvar kill-emacs-hook nil
   "Function or functions to be called when `kill-emacs' is called,
@@ -728,6 +722,12 @@ If FUNCTION is not interactive, nil will be returned."
        (t
         (error "Non-funcallable object: %s" function))))
 
+(defun function-allows-args (function n)
+  "Return whether FUNCTION can be called with N arguments."
+  (and (<= (function-min-args function) n)
+       (or (null (function-max-args function))
+          (<= n (function-max-args function)))))
+
 ;; This function used to be an alias to `buffer-substring', except
 ;; that FSF Emacs 20.4 added a BUFFER argument in an incompatible way.
 ;; The new FSF's semantics makes more sense, but we try to support
index f88a853..d9c33c8 100644 (file)
@@ -39,9 +39,6 @@
 ;; (the idea here is that you can bootstrap if your .ELC files
 ;; are missing or badly out-of-date)
 
-;; Currently this code gets the list of files to check passed to it from
-;; src/Makefile.  This must be fixed.  -slb
-
 ;;; Code:
 
 (defvar processed nil)
 
 ;; (print (prin1-to-string update-elc-files-to-compile))
 
-(let (preloaded-file-list site-load-packages)
+(let (preloaded-file-list site-load-packages need-to-dump dumped-exe)
   (load (expand-file-name "../lisp/dumped-lisp.el"))
 
+  (setq dumped-exe
+       (cond ((file-exists-p "../src/xemacs.exe") "../src/xemacs.exe")
+             ((file-exists-p "../src/xemacs") "../src/xemacs")
+             (t nil)))
+
   ;; Path setup
   (let ((package-preloaded-file-list
         (packages-collect-package-dumped-lisps late-package-load-path)))
@@ -94,6 +96,7 @@
     (setq preloaded-file-list
          (append package-preloaded-file-list
                  preloaded-file-list
+                 '("bytecomp")
                  packages-hardcoded-lisp)))
 
   (load (concat default-directory "../site-packages") t t)
   (while preloaded-file-list
     (let ((arg (car preloaded-file-list)))
       ;; (print (prin1-to-string arg))
+
+      ;; now check if .el or .elc is newer than the dumped exe.
+      ;; if so, need to redump.
+      (let ((frob
+            (if (string-match "\\.elc?\\'" arg)
+                (substring arg 0 (match-beginning 0))
+              arg)))
+           (if (and dumped-exe
+                    (or (and (file-exists-p (concat frob ".el"))
+                             (file-newer-than-file-p (concat frob ".el")
+                                                     dumped-exe))
+                        (and (file-exists-p (concat frob ".elc"))
+                             (file-newer-than-file-p (concat frob ".elc")
+                                                     dumped-exe))))
+               (setq need-to-dump t)))
+
       (if (null (member (file-name-nondirectory arg)
                        packages-unbytecompiled-lisp))
          (progn
                     (file-newer-than-file-p (concat arg ".el")
                                             (concat arg ".elc")))
                (setq processed (cons (concat arg ".el") processed)))))
-      (setq preloaded-file-list (cdr preloaded-file-list)))))
+      (setq preloaded-file-list (cdr preloaded-file-list))))
+
+  (if need-to-dump
+      (condition-case nil
+         (write-region-internal "foo" nil "../src/NEEDTODUMP")
+       (file-error nil)))
+
+  )
 
 (setq update-elc-files-to-compile (append update-elc-files-to-compile
                                          processed))
                    update-elc-files-to-compile))
       (load "loadup-el.el"))
   (condition-case nil
-      (delete-file "./NOBYTECOMPILE")
+      (delete-file "../src/NOBYTECOMPILE")
     (file-error nil)))
 
 (kill-emacs)
index 2362b17..bba50dc 100644 (file)
@@ -1,3 +1,43 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-19  Martin Buchholz  <martin@xemacs.org>
+
+       * lwlib.c (lw_destroy_everything): Always use full ANSI prototypes.
+       * lwlib.c (lw_destroy_all_pop_ups): Always use full ANSI prototypes.
+
+2000-04-12  Andy Piper  <andy@xemacs.org>
+
+       * lwlib-Xaw.c (xaw_update_one_widget): no-op for text widgets.
+       (xaw_update_one_value): Get strings safely.
+       (xaw_create_text_field): add some extra properties.
+
+2000-04-05  Andy Piper  <andy@xemacs.org>
+
+       * lwlib-Xaw.c (lw_xaw_widget_p): include asciiTextWidgetClass as
+       an athena widget.
+
+2000-04-05  Andy Piper  <andy@xemacs.org>
+
+       * xlwradio.c (RadioSetValues): resize if position information has
+       changed.
+
+       * lwlib-Xm.c (xm_create_text_field): text fields should be enabled
+       even if there is no callback.
+       * lwlib-Xaw.c (xaw_create_text_field): ditto.
+
+2000-04-03  Andy Piper  <andy@xemacs.org>
+
+       * lwlib.c (merge_widget_value_args): only merge when the two args
+       are actually different.
+
+2000-03-21  Didier Verna  <didier@xemacs.org>
+
+       * config.h.in: move INCLUDE_GLUE_1 and INCLUDE_GLUE_2 to
+       src/config.h.in.
+       * config.h.in (ATHENA_INCLUDE): use the `SMART_INCLUDE' macro.
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
index af8ab48..7537c20 100644 (file)
@@ -31,17 +31,10 @@ Boston, MA 02111-1307, USA.  */
 
 /* The path to the Athena widgets - the usual value is `X11/Xaw' */
 #undef ATHENA_H_PATH
-
-/* For use in #include statements.
-   You can't use macros directly within the <> of a #include statement.
-   The multiply nested macros are necessary to make old gcc's happy.
-   However, those nested macros are too much for AIX xlc to deal with. */
-#if defined(_AIX) && !defined(__GNUC__)
-#define ATHENA_INCLUDE(header_file) <ATHENA_H_PATH/header_file>
+#ifdef ATHENA_H_PATH
+# define ATHENA_INCLUDE(file) SMART_INCLUDE (ATHENA_H_PATH,file)
 #else
-#define INCLUDE_GLUE_2(dirname,basename) <##dirname##/##basename##>
-#define INCLUDE_GLUE_1(dirname,basename) INCLUDE_GLUE_2(dirname,basename)
-#define ATHENA_INCLUDE(header_file) INCLUDE_GLUE_1(ATHENA_H_PATH,header_file)
+# define ATHENA_INCLUDE(file) <file>
 #endif
 
 #endif /* _LWLIB_CONFIG_H_ */
index c51522c..4cf14de 100644 (file)
@@ -69,8 +69,8 @@ lw_xaw_widget_p (Widget widget)
          || XtIsSubclass (widget, labelWidgetClass)
          || XtIsSubclass (widget, toggleWidgetClass)
          || XtIsSubclass (widget, gaugeWidgetClass)
-#if 0
-         || XtIsSubclass (widget, textWidgetClass)
+#ifndef NEED_MOTIF
+         || XtIsSubclass (widget, asciiTextWidgetClass)
 #endif
 #endif
          );
@@ -134,6 +134,13 @@ xaw_update_one_widget (widget_instance *instance, Widget widget,
       xaw_update_scrollbar (instance, widget, val);
     }
 #endif
+#ifdef LWLIB_WIDGETS_ATHENA
+#ifndef NEED_MOTIF
+  else if (XtIsSubclass (widget, asciiTextWidgetClass))
+      {
+      }
+#endif
+#endif
 #ifdef LWLIB_DIALOGS_ATHENA
   else if (XtIsSubclass (widget, dialogWidgetClass))
       {
@@ -220,11 +227,19 @@ xaw_update_one_value (widget_instance *instance, Widget widget,
 #ifndef NEED_MOTIF
   else if (XtIsSubclass (widget, asciiTextWidgetClass))
     {
-      Arg al [1];
+      Arg al [2];
+      String buf = 0;
+      XtSetArg (al [0], XtNstring, &buf);
+      XtGetValues (widget, al, 2);
+
       if (val->value)
-       free (val->value);
-      XtSetArg (al [0], XtNstring, &val->value);
-      XtGetValues (widget, al, 1);
+       {
+         free (val->value);
+         val->value = 0;
+       }
+      /* I don't think this causes a leak. */
+      if (buf)
+       val->value = strdup (buf);
       val->edited = True;
     }
 #endif
@@ -821,6 +836,7 @@ xaw_create_progress (widget_instance *instance)
 }
 
 #ifndef NEED_MOTIF
+#define TEXT_BUFFER_SIZE 128
 static Widget
 xaw_create_text_field (widget_instance *instance)
 {
@@ -829,22 +845,36 @@ xaw_create_text_field (widget_instance *instance)
   Widget text = 0;
   widget_value* val = instance->info->val;
 
-  XtSetArg (al [ac], XtNsensitive, val->enabled && val->call_data);            ac++;
+  XtSetArg (al [ac], XtNsensitive, val->enabled);              ac++;
   XtSetArg (al [ac], XtNmappedWhenManaged, FALSE);     ac++;
   XtSetArg (al [ac], XtNhighlightThickness, (Dimension)0);     ac++;
   XtSetArg (al [ac], XtNtype, XawAsciiString);         ac++;
   XtSetArg (al [ac], XtNeditType, XawtextEdit);                ac++;
+  XtSetArg (al [ac], XtNuseStringInPlace, False);              ac++;
+#if 0
+  XtSetArg (al [ac], XtNlength, TEXT_BUFFER_SIZE);     ac++;
+#endif
+  if (val->value)
+    {
+      XtSetArg (al [ac], XtNstring, val->value);               ac++;
+    }
 
   /* add any args the user supplied for creation time */
   lw_add_value_args_to_args (val, al, &ac);
 
   text = XtCreateManagedWidget (val->name, asciiTextWidgetClass,
                                      instance->parent, al, ac);
+
+  /* add the callback */
+  if (val->call_data)
+    XtAddCallback (text, XtNgetValue, xaw_generic_callback, (XtPointer)instance);
+
   XtManageChild (text);
 
   return text;
 }
 #endif
+
 #endif /* LWLIB_WIDGETS_ATHENA */
 
 widget_creation_entry
index 76d893d..410af34 100644 (file)
@@ -1688,7 +1688,7 @@ xm_create_text_field (widget_instance *instance)
   Widget text = 0;
   widget_value* val = instance->info->val;
 
-  XtSetArg (al [ac], XmNsensitive, val->enabled && val->call_data);            ac++;
+  XtSetArg (al [ac], XmNsensitive, val->enabled);              ac++;
   XtSetArg (al [ac], XmNalignment, XmALIGNMENT_BEGINNING);     ac++;
   XtSetArg (al [ac], XmNuserData, val->call_data);             ac++;
   XtSetArg (al [ac], XmNmappedWhenManaged, FALSE);     ac++;
index 27f7a08..062a452 100644 (file)
@@ -257,7 +257,7 @@ merge_widget_value_args (widget_value *old, widget_value *new)
       lw_copy_widget_value_args (old, new);
       changed = True;
     }
-  else if (new->args && old->args)
+  else if (new->args && old->args && new->args != old->args)
     {
       /* #### Do something more sensible here than just copying the
          new values (like actually merging the values). */
@@ -1048,14 +1048,14 @@ lw_destroy_all_widgets (LWLIB_ID id)
 }
 
 void
-lw_destroy_everything ()
+lw_destroy_everything (void)
 {
   while (all_widget_info)
     lw_destroy_all_widgets (all_widget_info->id);
 }
 
 void
-lw_destroy_all_pop_ups ()
+lw_destroy_all_pop_ups (void)
 {
   widget_info *info;
   widget_info *next;
index 17405c4..1eabcee 100644 (file)
@@ -272,13 +272,13 @@ RadioResize (Widget w)
 
     switch( rw->label.justify ) {
       case XtJustifyLeft:
-       rw->label.label_x += bs(rw) + rw->label.internal_width ;
+       rw->label.label_x += (bs(rw) + rw->label.internal_width) ;
        break ;
       case XtJustifyRight:
        break ;
       case XtJustifyCenter:
       default:
-       rw->label.label_x += (bs(rw) + rw->label.internal_width)/2 ;
+       rw->label.label_x += (bs(rw) + rw->label.internal_width)/2;
        break ;
     }
 }
@@ -374,7 +374,14 @@ RadioSetValues (Widget   current,
     {
       RadioSize(newrw, &newrw->core.width, &newrw->core.height) ;
     }
-
+    
+    /* The label set values routine can resize the widget. We need to 
+     * recalculate if this is true.
+     */
+    if (newrw->label.label_x != oldrw->label.label_x)
+    {
+      RadioResize (new);
+    }
     return FALSE ;
 }
 
index 0ec892f..41ff8e5 100644 (file)
@@ -1,3 +1,18 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-11  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * xemacs-faq.texi (Q2.1.24): Removed wrong header.
+
+2000-04-01  Oscar Figueiredo  <oscar@xemacs.org>
+
+       * lispref/ldap.texi: Documentation of the add/modify/delete and
+         internationalization APIs
+
+       * lispref/lispref.texi: Updated LDAP-related menus
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
index 9195a2b..6e9c686 100644 (file)
@@ -25,7 +25,7 @@ linking to an external LDAP client library.  As of 21.2, XEmacs has been
 successfully built and tested with
 
 @itemize @bullet
-@item OpenLDAP 1.0.3 (@url{http://www.openldap.org/})
+@item OpenLDAP 1.2 (@url{http://www.openldap.org/})
 @item University of Michigan's LDAP 3.3 (@url{http://www.umich.edu/~dirsvcs/ldap/})
 @item LDAP SDK 1.0 from Netscape Corp. (@url{http://developer.netscape.com/})
 @end itemize
@@ -33,7 +33,7 @@ successfully built and tested with
 Other libraries conforming to RFC 1823 will probably work also but may
 require some minor tweaking at C level.
 
-The standard XEmacs configure script autodetects an installed LDAP
+The standard XEmacs configure script auto-detects an installed LDAP
 library provided the library itself and the corresponding header files
 can be found in the library and include paths.  A successful detection
 will be signalled in the final output of the configure script.
@@ -49,13 +49,18 @@ to stay as close as possible to the C API (where practical) and a
 higher-level layer which provides more convenient primitives to
 effectively use LDAP.
 
-As of XEmacs 21.0, only interfaces to basic LDAP search functions are
-provided, broader support is planned in future versions.
+The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only.  The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only).
 
 @menu
 * LDAP Variables::              Lisp variables related to LDAP
 * The High-Level LDAP API::     High-level LDAP lisp functions 
 * The Low-Level LDAP API::      Low-level LDAP lisp primitives
+* LDAP Internationalization::   I18n variables and functions
 @end menu
 
 
@@ -77,7 +82,7 @@ Initialized from the LDAP library. Default value is 389.
 @defvar ldap-default-base
 Default base for LDAP searches.
 This is a string using the syntax of RFC 1779.
-For instance, "o¬ME, cÿ" limits the search to the
+For instance, "o=ACME, c=US" limits the search to the
 Acme organization in the United States.
 @end defvar
 
@@ -92,7 +97,7 @@ properties:
 @table @code
 @item binddn
 The distinguished name of the user to bind as.  This may look like
-@samp{cÿ, o¬me, cnÿnny Bugs}, see RFC 1779 for details.
+@samp{cn=Babs Jensen,o=ACME,c=US}, see RFC 1779 for details.
 @item passwd
 The password to use for authentication.
 @item auth
@@ -127,41 +132,99 @@ The maximum number of matches to return for searches performed on this connectio
 @end table
 @end defvar
 
+@defvar ldap-verbose
+If non-@code{nil}, LDAP operations will echo progress messages. Defaults to @code{nil}.
+@end defvar
 
 
 @node The High-Level LDAP API, The Low-Level LDAP API, LDAP Variables, XEmacs LDAP API
 @comment  node-name,  next,  previous,  up
 @subsection The High-Level LDAP API
 
-As of this writing the high-level Lisp LDAP API only provides for LDAP
-searches.  Further support is planned in the future.
-
-The @code{ldap-search} function provides the most convenient interface
-to perform LDAP searches.  It opens a connection to a host, performs the
-query and cleanly closes the connection thus insulating the user from
-all the details of the low-level interface such as LDAP Lisp objects
-@pxref{The Low-Level LDAP API}
-
-@defun ldap-search filter &optional host attributes attrsonly
+The following functions provide the most convenient interface to perform
+LDAP operations.  All of them open a connection to a host, perform an
+operation (add/search/modify/delete) on one or several entries and
+cleanly close the connection thus insulating the user from all the
+details of the low-level interface such as LDAP Lisp objects @pxref{The
+Low-Level LDAP API}.  
+
+Note that @code{ldap-search} which used to be the name of the high-level
+search function in XEmacs 21.1 is now obsolete.  For consistency  in the 
+naming as well as backward compatibility, that function now acts as a
+wrapper that calls either @code{ldap-search-basic} (low-level search
+function) or @code{ldap-search-entries} (high-level search function)
+according to the actual parameters.  A direct call to one of these two
+functions is preferred since it is faster and unambiguous.
+
+@defun ldap-search-entries filter &optional host attributes attrsonly withdn
 Perform an LDAP search.
 @var{filter} is the search filter @pxref{Syntax of Search Filters}
-@var{host} is the LDAP host on which to perform the search
+@var{host} is the LDAP host on which to perform the search.
 @var{attributes} is the specific attributes to retrieve, @code{nil} means 
-retrieve all
+retrieve all.
 @var{attrsonly} if non-@code{nil} retrieves the attributes only without 
 their associated values.
+If @var{withdn} is non-@code{nil} each entry in the result will be prepended with
+its distinguished name DN.
 Additional search parameters can be specified through 
 @code{ldap-host-parameters-alist}.
+The function returns a list of matching entries.  Each entry is itself
+an alist of attribute/value pairs optionally preceded by the DN of the
+entry according to the value of @var{withdn}.
+@end defun
+
+@defun ldap-add-entries entries &optional host binddn passwd
+Add entries to an LDAP directory.  @var{entries} is a list of entry
+specifications of the form @code{(DN (ATTR . VALUE) (ATTR . VALUE) ...)} 
+where @var{dn} the distinguished name of an entry to add, the following
+are cons cells containing attribute/value string pairs.  @var{host} is
+the LDAP host, defaulting to `ldap-default-host' @var{binddn} is the DN
+to bind as to the server @var{passwd} is the corresponding password.
+@end defun
+
+@defun ldap-modify-entries entry-mods &optional host binddn passwd
+Modify entries of an LDAP directory.
+@var{entry_mods} is a list of entry modifications of the form 
+@code{(DN MOD-SPEC1 MOD-SPEC2 ...)} where @var{dn} is the distinguished name of 
+the entry to modify, the following are modification specifications. 
+A modification specification is itself a list of the form 
+@code{(MOD-OP ATTR VALUE1 VALUE2 ...)} @var{mod-op} and @var{attr} are mandatory, 
+@var{values} are optional depending on @var{mod-op}.
+@var{mod-op} is the type of modification, one of the symbols @code{add}, @code{delete}
+or @code{replace}. @var{attr} is the LDAP attribute type to modify.
+@var{host} is the LDAP host, defaulting to @code{ldap-default-host}
+@var{binddn} is the DN to bind as to the server
+@var{passwd} is the corresponding password"
 @end defun
 
-@node The Low-Level LDAP API,  , The High-Level LDAP API, XEmacs LDAP API
+@defun ldap-delete-entries dn &optional host binddn passwd
+Delete an entry from an LDAP directory.
+@var{dn} is the distinguished name of an entry to delete or 
+a list of those.
+@var{host} is the LDAP host, defaulting to @code{ldap-default-host}
+@var{binddn} is the DN to bind as to the server
+@var{passwd} is the corresponding password.
+@end defun
+
+
+@node The Low-Level LDAP API, LDAP Internationalization, The High-Level LDAP API, XEmacs LDAP API
 @comment  node-name,  next,  previous,  up
 @subsection The Low-Level LDAP API
 
+The low-level API should be used directly for very specific purposes
+(such as multiple operations on a connection) only.  The higher-level
+functions provide a more convenient way to access LDAP directories
+hiding the subtleties of handling the connection, translating arguments
+and ensuring compliance with LDAP internationalization rules and formats
+(currently partly implemented only). See @pxref{The High-Level LDAP API}
+
+Note that the former functions @code{ldap-*-internal} functions have been
+renamed in XEmacs 21.2
+
 @menu
 * The LDAP Lisp Object::        
 * Opening and Closing a LDAP Connection::  
-* Searching on a LDAP Server (Low-level)::  
+* Low-level Operations on a LDAP Server::  
 @end menu
 
 @node The LDAP Lisp Object, Opening and Closing a LDAP Connection, The Low-Level LDAP API, The Low-Level LDAP API
@@ -184,7 +247,7 @@ Return non-@code{nil} if @var{ldap} is an active LDAP connection
 @end defun
 
 
-@node Opening and Closing a LDAP Connection, Searching on a LDAP Server (Low-level), The LDAP Lisp Object, The Low-Level LDAP API
+@node Opening and Closing a LDAP Connection, Low-level Operations on a LDAP Server, The LDAP Lisp Object, The Low-Level LDAP API
 @comment  node-name,  next,  previous,  up
 @subsubsection Opening and Closing a LDAP Connection
 
@@ -202,7 +265,7 @@ library XEmacs was compiled with, they may include @code{simple},
 @code{krbv41} and @code{krbv42}.
 @item binddn
 The distinguished name of the user to bind as.  This may look like
-@samp{cÿ, o¬me, cnÿnny Bugs}, see RFC 1779 for details.
+@samp{c=com, o=Acme, cn=Babs Jensen}, see RFC 1779 for details.
 @item passwd
 The password to use for authentication.
 @item deref
@@ -232,18 +295,17 @@ Close the connection represented by @var{ldap}
 @end defun
 
 
-@node Searching on a LDAP Server (Low-level),  , Opening and Closing a LDAP Connection, The Low-Level LDAP API
+@node Low-level Operations on a LDAP Server,  , Opening and Closing a LDAP Connection, The Low-Level LDAP API
 @comment  node-name,  next,  previous,  up
-@subsubsection Searching on a LDAP Server (Low-level)
+@subsubsection Low-level Operations on a LDAP Server
 
-@code{ldap-search-internal} is the low-level primitive to perform a
+@code{ldap-search-basic} is the low-level primitive to perform a
 search on a LDAP server.  It works directly on an open LDAP connection
 thus requiring a preliminary call to @code{ldap-open}.  Multiple
 searches can be made on the same connection, then the session must be
 closed with @code{ldap-close}.
 
-
-@defun ldap-search-internal ldap filter base scope attrs attrsonly
+@defun ldap-search-basic ldap filter base scope attrs attrsonly
 Perform a search on an open connection @var{ldap} created with @code{ldap-open}.
 @var{filter} is a filter string for the search @pxref{Syntax of Search Filters}
 @var{base} is the distinguished name at which to start the search.
@@ -255,11 +317,137 @@ object, to a single level or to the whole subtree.  The default is
 for each matching entry. If @code{nil} all available attributes are returned.
 If @code{attrsonly} is non-@code{nil} then only the attributes are retrieved, not
 their associated values
-The function returns a list of matching entries.  Each entry being itself
-an alist of attribute/values.
+If @code{withdn} is non-@code{nil} then each entry in the result is prepended with
+its distinguished name DN
+If @code{verbose} is non-@code{nil} then progress messages are echoed
+The function returns a list of matching entries.  Each entry  is itself
+an alist of attribute/value pairs optionally preceded by the DN of the
+entry according to the value of @code{withdn}.
+@end defun
+
+@defun ldap-add ldap dn entry
+Add @var{entry} to a LDAP directory which a connection @var{ldap} has
+been opened to with @code{ldap-open}.
+@var{dn} is the distinguished name of the entry to add.
+@var{entry} is an entry specification, i.e., a list of cons cells
+containing attribute/value string pairs.
+@end defun
+
+@defun ldap-modify ldap dn mods
+Modify an entry in an LDAP directory.
+@var{ldap} is an LDAP connection object created with @code{ldap-open}.
+@var{dn} is the distinguished name of the entry to modify.
+@var{mods} is a list of modifications to apply.
+A modification is a list of the form @code{(MOD-OP ATTR VALUE1 VALUE2 ...)}
+@var{mod-op} and @var{attr} are mandatory, @var{values} are optional depending on @var{mod-op}.
+@var{mod-op} is the type of modification, one of the symbols @code{add}, @code{delete}
+or @code{replace}. @var{attr} is the LDAP attribute type to modify
+@end defun
+
+@defun ldap-delete ldap dn
+Delete an entry to an LDAP directory.
+@var{ldap} is an LDAP connection object created with @code{ldap-open}.
+@var{dn} is the distinguished name of the entry to delete
+@end defun
+
+
+
+@node LDAP Internationalization,  , The Low-Level LDAP API, XEmacs LDAP API
+@comment  node-name,  next,  previous,  up
+@subsection LDAP Internationalization
+
+The XEmacs LDAP API provides basic internationalization features based
+on the LDAP v3 specification (essentially RFC2252 on "LDAP v3 Attribute
+Syntax Definitions").  Unfortunately since there is currently no free
+LDAP v3 server software, this part has not received much testing and
+should be considered experimental.  The framework is in place though.
+
+@defun ldap-decode-attribute attr
+Decode the attribute/value pair @var{attr} according to LDAP rules.
+The attribute name is looked up in @code{ldap-attribute-syntaxes-alist}
+and the corresponding decoder is then retrieved from
+@code{ldap-attribute-syntax-decoders}' and applied on the value(s).
+@end defun
+
+@menu
+* LDAP Internationalization Variables::  
+* Encoder/Decoder Functions::   
+@end menu
+
+@node LDAP Internationalization Variables, Encoder/Decoder Functions, LDAP Internationalization, LDAP Internationalization
+@comment  node-name,  next,  previous,  up
+@subsubsection LDAP Internationalization Variables
+
+@defvar ldap-ignore-attribute-codings
+If non-@code{nil}, no encoding/decoding will be performed LDAP attribute values
+@end defvar
+
+@defvar ldap-coding-system
+Coding system of LDAP string values.
+LDAP v3 specifies the coding system of strings to be UTF-8.  
+You need an XEmacs with Mule support for this.
+@end defvar
+
+@defvar ldap-default-attribute-decoder
+Decoder function to use for attributes whose syntax is unknown.  Such a
+function receives an encoded attribute value as a string and should
+return the decoded value as a string
+@end defvar
+
+@defvar ldap-attribute-syntax-encoders
+A vector of functions used to encode LDAP attribute values.
+The sequence of functions corresponds to the sequence of LDAP attribute syntax
+object identifiers of the form 1.3.6.1.4.1.1466.1115.121.1.* as defined in 
+RFC2252 section 4.3.2. As of this writing, only a few encoder functions
+are available.
+@end defvar
+
+@defvar ldap-attribute-syntax-decoders
+A vector of functions used to decode LDAP attribute values.
+The sequence of functions corresponds to the sequence of LDAP attribute syntax
+object identifiers of the form 1.3.6.1.4.1.1466.1115.121.1.* as defined in 
+RFC2252 section 4.3.2. As of this writing, only a few decoder functions
+are available.
+@end defvar
+
+@defvar ldap-attribute-syntaxes-alist
+A map of LDAP attribute names to their type object id minor number.
+This table is built from RFC2252 Section 5 and RFC2256 Section 5
+@end defvar
+
+@node Encoder/Decoder Functions,  , LDAP Internationalization Variables, LDAP Internationalization
+@comment  node-name,  next,  previous,  up
+@subsubsection Encoder/Decoder Functions
+
+@defun ldap-encode-boolean bool
+A function that encodes an elisp boolean @var{bool} into a LDAP
+boolean string representation
+@end defun
+
+@defun ldap-decode-boolean str
+A function that decodes a LDAP boolean string representation
+@var{str} into an elisp boolean
+@end defun
+
+@defun ldap-decode-string str
+Decode a string @var{str} according to `ldap-coding-system'
 @end defun
 
+@defun ldap-encode-string str
+Encode a string @var{str} according to `ldap-coding-system'
+@end defun
+
+@defun ldap-decode-address str
+Decode an address @var{str} according to `ldap-coding-system' and
+replacing $ signs with newlines as specified by LDAP encoding rules for
+addresses
+@end defun
 
+@defun ldap-encode-address str
+Encode an address @var{str} according to `ldap-coding-system' and
+replacing newlines with $ signs as specified by LDAP encoding rules for
+addresses
+@end defun
 
 
 
@@ -299,6 +487,3 @@ not operators.
 matches records of class @code{Person} containing a @code{mail}
 attribute and corresponding to people whose last name is @code{Smith} or 
 whose first name is @code{John}.
-
-
-
index ac6277b..19e4b5a 100644 (file)
@@ -1099,12 +1099,18 @@ XEmacs LDAP API
 * LDAP Variables::              Lisp variables related to LDAP
 * The High-Level LDAP API::     High-level LDAP lisp functions 
 * The Low-Level LDAP API::      Low-level LDAP lisp primitives
+* LDAP Internationalization::   I18n variables and functions
 
 The Low-Level LDAP API
 
 * The LDAP Lisp Object::        
 * Opening and Closing a LDAP Connection::  
-* Searching on a LDAP Server (Low-level)::  
+* Low-level Operations on a LDAP Server::  
+
+LDAP Internationalization
+
+* LDAP Internationalization Variables::  
+* Encoder/Decoder Functions::   
 
 Internationalization
 
index 5b62a19..5d57229 100644 (file)
@@ -7,7 +7,7 @@
 @finalout
 @titlepage
 @title XEmacs FAQ
-@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/03/07 09:19:02 $
+@subtitle Frequently asked questions about XEmacs @* Last Modified: $Date: 2000/04/26 07:18:27 $
 @sp 1
 @author Tony Rossini <rossini@@biostat.washington.edu>
 @author Ben Wing <ben@@xemacs.org>
@@ -2491,7 +2491,6 @@ and uncomment the line that reads:
 
 @node Q2.1.24,  , Q2.1.23, Installation
 @unnumberedsubsec Q2.1.24:  XEmacs won't start without network. (NEW)
-Q2.1.23:  Movemail on Linux does not work for XEmacs 19.15 and later.
 
 If XEmacs starts when you're on the network, but fails when you're not
 on the network, you may be missing a "localhost" entry in your
index e7ec435..b8bbb4d 100644 (file)
@@ -1,3 +1,77 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
+2000-04-27  Ben Wing  <ben@xemacs.org>
+
+       * xemacs.mak: combine auto-autoloads.el and custom.el update into
+       one call to xemacs.
+
+2000-04-26  Ben Wing  <ben@xemacs.org>
+
+       * xemacs.mak: put in support for QUICK_BUILD.
+
+       * config.inc.samp: put in an entry for QUICK_BUILD.
+
+2000-04-23  Ben Wing  <ben@xemacs.org>
+
+       * xemacs.mak: Modified section that dumps .exe to not dump
+       when nothing has changed.  It does this by relying on a flag
+       set by update-elcs.
+
+       Also in building of auto-autoloads.el, we no longer unconditionally
+       remove the old one.  That was pointless and made the whole build
+       procedure a lot longer -- the autoload code is smart enough to
+       update itself automatically from an out-of-date autoload file.
+
+2000-04-04  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+       * xemacs.mak: Build the i utility and use it to pipe windowed
+       [xt]emacs output to the build console.
+
+2000-03-25  Didier Verna  <didier@xemacs.org>
+
+       * config.h: handle the renaming of `foo_h_path' to `foo_h_file'.
+
+2000-03-22  Mike Alexander  <mta@arbortext.com>
+
+       * xemacs.mak (PROGRAM_DEFINES): Define EMACS_VERSION and
+       EMACS_PROGNAME
+       (DEPEND): Don't try to create $(OUTDIR) if it already exists
+       ($(SRC)\dump-id.c): Make it
+       (DOC_SRC11): Add dumper.c if portable dumping
+       (dump-xemacs): Make portable dumping work again and create
+       dump-id.c and compile it whenever we do a portable dump.
+       (depend): Change $(SRCDIR) to $(SRC)
+
+2000-03-22  Jonathan Harris  <jhar@tardis.ed.ac.uk>
+
+       * .cvsignore: New file, ignores user's config.inc and files
+       containing the user's DevStudio workspace info.
+
+       * config.h.samp: Added DEPEND option. Renamed HAVE_MSW and HAVE_X to
+       HAVE_MS_WINDOWS and HAVE_X_WINDOWS.
+
+       * README: Documented DEPEND option. Other small changes.
+
+       * Todo: Removed - was hopelessly out of date.
+
+       * config.h.samp:
+       * xemacs.mak: Added DEPEND option to control use of dependency
+       information generated by make-src-depend. Requires Perl. Defaults
+       to disabled. Renamed HAVE_MSW and HAVE_X to HAVE_MS_WINDOWS and
+       HAVE_X_WINDOWS as a side-effect.
+       Handles '&' in XEmacs codenames by replacing with 'and'.
+
+       * xemacs.dsp:
+       Correct Output_Dir so that DevStudio finds the xemacs executable
+       by default.
+
+2000-03-20  Ben Wing  <ben@xemacs.org>
+
+       * README: Substantial rewrite.
+       * xemacs.mak: Pdump fix. (not working yet, though)
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
 
 2000-03-12  Ben Wing  <ben@xemacs.org>
 
-        * xemacs.mak (*): 
+        * xemacs.mak (*):
         * config.inc: New.
 
         a) Added a file called config.inc which makes it easier to set
         build options for MS Windows. (Previously, the only way to do this
-        was through command line options to nmake.) 
+        was through command line options to nmake.)
 
         b) Cleaned the file up a bit.
 
         * xemacs.dsp: New.
         For compiling, editing, and debugging XEmacs using the VC++ 5.0
         GUI.  They may well work under other versions of VC++, but I don't
-        have access to them to test them. 
+        have access to them to test them.
 
 2000-03-11  Andy Piper  <andy@xemacs.org>
 
 
        * xemacs.mak (SRCDIR): Make path to xemacs absolute to
        facilitate building info in man subdirs.  Echo all cd commands,
-       not just some of them.  
+       not just some of them.
 
        (makeinfo-test): Test for availability of `texinfo' package to
        build info.  Recommend use of external `makeinfo' program for
 1999-06-05  Norbert Koch <n.koch@delta-ii.de>
 
        * xemacs.mak (mule): remove dependencies from mule-coding.c
-       
+
 1999-06-11  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.16 is released
 1999-05-31  Andy Piper  <andy@xemacs.org>
 
        * xemacs.mak: add select & select-x targets.
-       
+
 1999-05-14  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.14 is released
        report" did.
 
 1999-04-29  Andy Piper  <andy@xemacs.org>
-       
+
        * sys/file.h: conditionalise definition of X_OK.
-       
+
 1999-03-12  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.13 is released
 1998-12-13  Jonathan Harris  <jhar@tardis.ed.ac.uk>
 
        * xemacs.mak:
-         Replaced PACKAGEPATH variable with PACKAGE_PREFIX. 
+         Replaced PACKAGEPATH variable with PACKAGE_PREFIX.
          configure-package-path is initialised to contain
          subdirectories of PACKAGE_PREFIX. The install target makes
          a skeleton package tree under PACKAGE_PREFIX.
 1998-12-07  Martin Buchholz  <martin@xemacs.org>
 
        * xemacs.mak (TEMACS_OBJS):
-       (DOC_SRC4): 
+       (DOC_SRC4):
        - Remove pure.c, pure.obj
 
 1998-11-04  Adrian Aichner  <adrian@xemacs.org>
 
        * xemacs.mak: change "copy" to "xcopy" in install target
 
-1998-08-04  Jeff Sparkes  <jsparkes@internetivity.com> 
+1998-08-04  Jeff Sparkes  <jsparkes@internetivity.com>
 
        * xemacs.mak: Link in PNG, TIFF and JPEG in native build.
 
 
 1998-05-20  Kirill M. Katsnelson  <kkm@kis.ru>
 
-       * xemacs.mak: Unified -nologo compiler switch handling and lib-src 
+       * xemacs.mak: Unified -nologo compiler switch handling and lib-src
        programs build (only make-docfile currently, adding other tools
-       soon). 
+       soon).
 
 1998-05-23  Kirill M. Katsnelson  <kkm@kis.ru>
 
 1998-04-10  Kirill M. Katsnelson  <kkm@kis.ru>
 
        * config.h: Do not USE_ASSERTION when DEBUG_XEMACS is not
-       defined. 
+       defined.
 
        * xemacs.mak: Added new file process-nt.c
 
 
 1998-03-19  Kirill M. Katsnelson  <kkm@kis.ru>
 
-       * xemacs.mak: HAVE_FILE_CODING removed: it is no longer an option, 
+       * xemacs.mak: HAVE_FILE_CODING removed: it is no longer an option,
        since file I/O depends on it, and defined unconditioanlly in
        src/s/windowsnt.h.
        Added -nologo switch to different tools here and there.
@@ -832,7 +906,7 @@ Mon December 08 1997 kkm@kis.ru
        * config.h: removed #define HAVE_UNIXOID_EVENT_LOOP
 
 Thu December 04 1997 jhar@tardis.ed.ac.uk
-       
+
        * xemacs.mak: Define DEBUG_XEMACS when compiling with debug.
 
 Tue November 29 12:29:33 1997 davidh
@@ -850,14 +924,14 @@ Mon December 01 1997 jhar
          - Rewrote timeout code, eliminating "!NILP(rest)" bug.
          - Special processing for 'Ctrl-@' keystroke.
          - Support for some new keysyms.
-       
+
 Mon December 01 1997 jhar
 
        * xemacs.mak:
          - Add PACKAGE_PATH and EMACS_BETA_VERSION defines.
          - Automatically copy changed include files from \nt to \src.
          - Corrected some DOC_SRC* lists.
-  
+
 Tue November 18 21:45:06 1997 davidh
 
        * xemacs.mak updated to remove dependency on startup.elc
@@ -866,7 +940,7 @@ Tue November 18 21:45:06 1997 davidh
 Thu September 25 23:06:44 1997 davidh
 
        * xemacs.mak updated to make the build as simple as typing
-         nmake -f xemacs.mak. Also support for native gui included 
+         nmake -f xemacs.mak. Also support for native gui included
          which should mean the w32 directory is no longer required.
 
        * config.h synced with config.h.in from 20.3-b2
@@ -876,7 +950,7 @@ Thu September 25 23:06:44 1997 davidh
 Thu September 25 23:06:44 1997 davidh
 
        * August Hill provided a patch to xemacs.mak to greatly simplify
-         the build - the DOC file gets created correctly. 
+         the build - the DOC file gets created correctly.
 
 Tue September 22 23:06:44 1997 davidh
 
@@ -902,7 +976,7 @@ Thu June 31 21:16:21 1997 davidh
        * nt/TODO created.
 
        * nt/X11.patch created to help with the X build.
-       
+
        * August Hill provided:
          a patch to fix the _WRETCODE undefined symbol,
          a patch to fix a problem with dired
@@ -915,7 +989,7 @@ Thu June 31 21:16:21 1997 davidh
           use the macro, I decided this would be easiest.
 
        * Modified src/fileio.c to only open files in O_BINARY. This
-         causes files to be opened and written without automatically 
+         causes files to be opened and written without automatically
          writing ^M 's to the end of each line. MULE ought to sort this
           in theory, but I am less than convinced.
 
@@ -956,7 +1030,7 @@ Sun Mar 16 00:32:15 1997  marcpa  (marcpa at MARCPA)
 
 Thu Mar 13 00:19:25 1997  marcpa  (marcpa at MARCPA)
 
-       * At end of compilation, there are some unresolved symbols: 
+       * At end of compilation, there are some unresolved symbols:
 
 link.exe @C:\TEMP\nma00115.
 sysdep.obj : error LNK2001: unresolved external symbol _vfork
@@ -983,12 +1057,11 @@ Wed Mar 12 23:18:53 1997  marcpa  (marcpa at MARCPA)
 @@ -150,8 +150,9 @@
  typedef CARD16                BITS16;
  typedef CARD8         BYTE;
+
 +#ifndef WIN32
  typedef CARD8           BOOL;
 -
 +#endif
 
        * cpp.exe not used: cl.exe from VC++4.2 seems to handle everything
-       properly. 
-
+       properly.
index 67c6889..62ad352 100644 (file)
--- a/nt/README
+++ b/nt/README
@@ -1,12 +1,12 @@
-Building and Installing XEmacs on Windows NT            -*- mode:outline -*-
+Building and Installing XEmacs on Windows 95/98/NT        -*- mode:outline -*-
 
                             David Hobley
-                           Marc Paquette
-                          Jonathan Harris
+                            Marc Paquette
+                           Jonathan Harris
+                              Ben Wing
 
-The port was made much easier by the groundbreaking work of Geoff Voelker
-and others who worked on the GNU Emacs port to NT. Their version is available
-from http://www.cs.washington.edu/homes/voelker/ntemacs.html
+This is a port of XEmacs to Windows 95/98/NT.  If you are looking for a port
+of GNU Emacs, see http://www.cs.washington.edu/homes/voelker/ntemacs.html.
 
 
 * Required tools and sources
@@ -24,17 +24,30 @@ from http://www.cs.washington.edu/homes/voelker/ntemacs.html
     c:\Program Files\DevStudio\VC\bin\ (or wherever you installed it) that you
     can run before building to set up all of these environment variables.
 
-2.  Grab the latest XEmacs source from ftp.xemacs.org if necessary.
+2.  Grab the latest XEmacs source from
 
-    You'll also need the xemacs-base package from the binary-packages
-    subdirectory and you'll probably also want at least the edit-utils,
-    text-modes, fsf-compat, cc-mode, prog-modes and xemacs-devel
-    packages.
+      ftp://ftp.xemacs.org/pub/xemacs/
+
+    or one of its mirrors listed at http://www.xemacs.org/Download/index.html .
+
+    You'll also need the packages.  You probably want to get the unified
+    packages bundle from
 
-    You'll also need the texinfo package unless you have a copy of
-    makeinfo.exe on your machine.
+      ftp://ftp.xemacs.org/pub/xemacs/packages/xemacs-sumo.tar.gz
+
+    Although we don't recommend it, you can also retrieve just the packages
+    you really need if you have an extremely slow net connection or are very
+    short on disk space.  You can find the various packages in
+    ftp://ftp.xemacs.org/pub/xemacs/packages/.  You will need the
+    xemacs-base package.  You'll also need the texinfo package unless you
+    have a copy of makeinfo.exe on your machine.  If you want to download
+    additional or updated packages from within XEmacs you'll need the efs,
+    dired and vm packages.  You'll probably also want at least the
+    edit-utils, text-modes, fsf-compat, cc-mode, prog-modes and xemacs-devel
+    packages.
 
-    Unpack the packages into, say, "c:\Program Files\XEmacs\xemacs-packages".
+    Unpack the packages into "x:\your\choice\XEmacs\xemacs-packages",
+    for example "c:\Program Files\XEmacs\xemacs-packages".
 
 3.  At this point you can choose to build for X and/or for Win32 native GUI.
     If you only want to build for the Win32 native GUI then skip the next
@@ -45,8 +58,8 @@ from http://www.cs.washington.edu/homes/voelker/ntemacs.html
 
 If you want support for X you will also need:
 
-1.  An X server. MI/X is available on the Internet for free; It is 
-    available from: http://www.microimages.com/www/html/freestuf/mixdlfrm.htm
+1.  An X server. MI/X is available on the Internet as trialware; it is 
+    available from: http://www.microimages.com/www/html/mix/
 
 2.  Source for the MIT X11R6.3 libraries, available from: ftp.x.org
 
@@ -64,15 +77,17 @@ If you want support for X you will also need:
 * Optional libraries
 ====================
 
-1.  If you want XPM image and toolbar support grab the latest version of the
-    xpm sources (xpm-3.4k.tar.gz at time of writing) and unpack them somewhere.
+1.  You really want the XPM library.  Grab the latest version of the
+    xpm sources (xpm-3.4k.tar.gz at time of writing) from
+    ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack them somewhere.
     Copy nt\xpm.mak from the xemacs sources to the lib subdirectory of the
     xpm sources, cd to that directory and build xpm with 'nmake -f xpm.mak'.
 
 2.  You probably also want PNG image support. Grab the latest versions of zlib
-    and libpng (zlib-1.1.3 and libpng-1.0.2 at time of writing), unpack them
-    somewhere and read the respective READMEs for details on how to build them.
-    The following build procedure works for zlib-1.1.3 and libpng-1.0.2:
+    and libpng (zlib-1.1.3 and libpng-1.0.2 at time of writing) from
+    ftp://ftp.xemacs.org/pub/xemacs/aux/, unpack them somewhere and read
+    the respective READMEs for details on how to build them.  The following
+    build procedure works for zlib-1.1.3 and libpng-1.0.2:
 
     cd to the zlib directory, type 'copy msdos\makefile.w32 Makefile' and
     then type 'nmake'.
@@ -81,116 +96,161 @@ If you want support for X you will also need:
     and type 'nmake -f scripts\makefile.w32'.
 
 3.  If you want TIFF support, grap the latest version of libtiff (tiff-v3.4
-    at time of writing) and unpack it somewhere. Copy nt\tiff.mak from the 
-    xemacs sources to the contrib\winnt subdirectory of the tiff sources, 
-    cd to that directory and build libtiff with 'nmake -f tiff.mak'. Note:
-    tiff.mak has only been verified to work under WinNT, not Win95 or 98. 
-    However, the lastest distribution of libtiff includes a 
-    contrib\win95\makefile.w95; that might work.
+    at time of writing) from ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack
+    it somewhere. Copy nt\tiff.mak from the xemacs sources to the
+    contrib\winnt subdirectory of the tiff sources, cd to that directory and
+    build libtiff with 'nmake -f tiff.mak'. Note: tiff.mak has only been
+    verified to work under WinNT, not Win95 or 98.  However, the lastest
+    distribution of libtiff includes a contrib\win95\makefile.w95; that might
+    work.
 
 4.  If you want JPEG support grab the latest version of jpegsrc (jpeg-6b at 
-    time of writing) and read the README for details on how to build it.
+    time of writing) from ftp://ftp.xemacs.org/pub/xemacs/aux/ and read the
+    README for details on how to build it.
 
-5.  If you want X-Face support, grab compface distribution and unpack it 
-    somewhere.  Copy nt\compface.mak from xemacs sources to the compface
-    directory.  cd to that directory and build libcompface with 
-    'nmake -f compface.mak'.
+5.  If you want X-Face support, grab the compface distribution from
+    ftp://ftp.xemacs.org/pub/xemacs/aux/ and unpack it somewhere.
+    Copy nt\compface.mak from xemacs sources to the compface directory.
+    cd to that directory and build libcompface with 'nmake -f compface.mak'.
 
 
 * Building
 ==========
 
-1.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
-    `nmake install -f xemacs.mak`, but read on before hitting Enter.
-
-2.  If you're building with XPM support, add this to the nmake command line:
-       HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\sources"
-    and similarly for JPEG and TIFF support.
-
-    If you're building with PNG support, add this to the nmake command line:
-       HAVE_PNG=1 PNG_DIR="x:\location\of\your\png\sources"
-       ZLIB_DIR="x:\location\of\your\zlib\sources"
-
-    If you want to build with GIF support, add this to the nmake command line:
-       HAVE_GIF=1
-
-    If you're building with X-Face support, add this to the nmake command line:
-        HAVE_XFACE=1 COMPFACE_DIR="x:\location\of\your\compface\sources"
-
-    If you're building for X, add this to the nmake command line:
-       HAVE_X=1 X11_DIR=x:\root\directory\of\your\X11\installation
-
-3.  By default, XEmacs will expect to find its packages in the subdirectories
-    "site-packages", "mule-packages" and "xemacs-packages" under the package
-    prefix directory "c:\Program Files\XEmacs". If you want it to look for
-    these subdirectories elsewhere, add this to the nmake command line:
-       PACKAGE_PREFIX="x:\your\package\directory"
-    If you change your mind and want to alter the package prefix directory
-    after you've built XEmacs, delete the file nt\obj\emacs.obj and rebuild
-    with the new PACKAGE_PREFIX setting.
-
-4.  By default, XEmacs will be installed in directories under the directory
-    "c:\Program Files\XEmacs\XEmacs-21.2". If you want to install it
-    elsewhere, add this to the nmake command line:
-       INSTALL_DIR="x:\your\installation\directory"
-
-5.  XEmacs can build its info files more quickly if you have a copy of the
-    makeinfo program. If you have a copy, add this to the nmake command line:
-       MAKEINFO="x:\location\of\makeinfo.exe"
-    If you don't have a copy of makeinfo then you'll need to have installed
-    the XEmacs texinfo package.
-
-6.  Now you can press Enter. nmake will build temacs, the DOC file, update
-    the elc's, dump xemacs and install the relevant files in the directories
-    under the installation directory.
-
-    Unless you set INSTALL_DIR above, the file that you should run to start
-    XEmacs will be installed as
-        "c:\Program Files\XEmacs\XEmacs-21.2\i586-pc-win32\runxemacs.exe".
-    You may want to create a shortcut to that file from your Desktop or
+1.  cd to the nt subdirectory of the xemacs distribution and copy the file
+    config.inc.samp to config.inc.  Make any necessary modifications.  This
+    file controls the options that XEmacs is built with:
+
+    -- If you're building with XPM support, modify the appropriate lines in
+       config.inc as follows:
+
+       HAVE_XPM=1
+       XPM_DIR="x:\location\of\your\xpm\sources"
+    
+       and similarly for JPEG and TIFF support.
+
+    -- If you're building with PNG support, modify the appropriate lines in
+       config.inc as follows:
+
+       HAVE_PNG=1
+       PNG_DIR="x:\location\of\your\png\sources"
+       ZLIB_DIR="x:\location\of\your\zlib\sources"
+
+    -- If you're building with GIF support, modify the appropriate lines in
+       config.inc as follows:
+
+       HAVE_GIF=1
+
+    -- If you're building with X-Face support, modify the appropriate lines in
+       config.inc as follows:
+
+       HAVE_XFACE=1
+       COMPFACE_DIR="x:\location\of\your\compface\sources"
+
+    -- If you're building for X, modify the appropriate lines in config.inc
+       as follows:
+
+       HAVE_X_WINDOWS=1
+       X11_DIR=x:\root\directory\of\your\X11\installation
+
+    -- By default, XEmacs will expect to find its packages in the
+       subdirectories "site-packages", "mule-packages" and "xemacs-packages"
+       under the directory "c:\Program Files\XEmacs". If you want it to look
+       for these subdirectories elsewhere, modify the appropriate lines in
+       config.inc as follows:
+
+       PACKAGE_PREFIX="x:\your\package\directory"
+
+       Make sure that the directory pointed to by PACKAGE_PREFIX contains
+       the xemacs-packages directory into which you installed the packages.
+
+    -- XEmacs can build its info files more quickly if you have a copy of the
+       makeinfo program. If you have a copy, modify the appropriate lines in
+       config.inc as follows:
+
+       MAKEINFO="x:\location\of\makeinfo.exe"
+
+       If you don't have a copy of makeinfo then you'll need to have installed
+       the XEmacs texinfo package.
+
+2.  If you want to install XEmacs when you build it, modify the appropriate
+    lines in config.inc as follows (you can also run XEmacs from its build
+    directory):
+
+       INSTALL_DIR="x:\your\installation\directory"
+
+    (By default, XEmacs will be installed in directories under the directory
+    "c:\Program Files\XEmacs\XEmacs-21.2".)
+
+2.  If you want to build xemacs on the command line, use
+    `nmake install -f xemacs.mak', or just `nmake -f xemacs.mak' if you want
+    to run XEmacs from its build directory.  nmake will build temacs, the DOC
+    file, update the elc's, dump xemacs and (optionally) install the relevant
+    files in the directories under the installation directory.
+
+    If you chose to install XEmacs, the file that you should run to start
+    XEmacs will be installed (by default) as
+        "c:\Program Files\XEmacs\XEmacs-21.2\i586-pc-win32\xemacs.exe".
+
+    To run from the build directory, run the file "nt\xemacs.exe" off of the
+    root of the build directory.
+
+    You may want to create a shortcut to the file from your Desktop or
     Start Menu.
 
+3.  To build using MS Developer Studio, you can use the workspace file
+    `nt/xemacs.dsw'.  This was prepared for Visual C++ 5.0; if you have
+    a different version and this file doesn't work, just open up
+    `nt/xemacs.mak' from within MS Developer Studio and it will offer to
+    wrap this Makefile in a workspace file, from which you can build.
+    Assuming you want to run from the build directory (which you will
+    want to do if you are planning on doing any development work on XEmacs),
+    use the following settings in Project/Settings...:
+
+    Under the General tab:
+
+    Build command line: NMAKE /f xemacs.mak
+    Output file name: ..\src\xemacs.exe
+    Browse info file name: ..\src\temacs.bsc
+
+    Under the Debug tab:
+
+    Executable for debug session: ..\src\xemacs.exe
+
+
+    If you want to install XEmacs when it's built, change the build command
+    line to "NMAKE install /f xemacs.mak". (You will have to make the same
+    change even if you use the provided workspace nt/xemacs.dsw.)
+
 
 * Debugging under MS Developer Studio
 =====================================
 
 The build process always creates debugging and "Source Browser" information
-in the source tree for use with DevStudio. If you actually want to debug
-XEmacs you should probably build a debug version of XEmacs:
-
-1.  Delete the directory nt\obj and it's contents.
+in the source tree for use with DevStudio. However that information is not
+very useful unless you build a debug version of XEmacs:
 
-2.  Add DEBUG_XEMACS=1 to the nmake command line and rebuild. You probably
-    don't want to install your debug build so you should tell nmake to build
-    the 'all' target instead of the 'install' target.
+1.  Set DEBUG_XEMACS=1 and DEPEND=1 in config.inc and rebuild.
 
-3.  To make use of the debugging and "Source Browser" information, create a
-    new "console" project in DevStudio and, under Project/Settings, set:
-       Debug: executable name = full path of src\xemacs.exe
-       Link: output file name = full path of src\temacs.exe
-       Browse Info: browse info file name = full path of src\temacs.bsc
-    Remember to close the Source Browser file in DevStudio before rebuilding.
+2.  See instructions above for obtaining a workspace file for use with
+    MS Developer Studio.  Build and debug your XEmacs this way.
 
-4.  Start XEmacs from within DevStudio or by running src\xemacs.exe so that
-    you get a console window which may contain helpful debugging info.
+3.  To display the contents of a lisp variable, type Shift-F9 (or use the
+    menu) to bring up the QuickWatch window, type debug_print(variable) and
+    click Recalculate. The output will appear in a console window, as well
+    as in the Debug window in MS Developer Studio.
 
-5.  To display the contents of a lisp variable click Debug/QuickWatch, type
-    debug_print(variable) and click Recalculate. The output will appear in
-    the console window.
-
-6.  To view lisp variables in the "Watch" window wrap the variable in one of
-    the helper functions from the file src\console-msw.c. eg type
-    DSTRING(variable) in the "Watch" window to inspect a lisp string.
+4.  To view Lisp variables in the "Watch" window wrap the variable in one of
+    the helper functions from the file src\console-msw.c, for example type
+    DSTRING(variable) in the "Watch" window to inspect a Lisp string.
 
 
 * Known Problems
 ================
 
-Please look at the PROBLEMS file for known problems and at the TODO list for
-the current list of problems and people working on them.
-
-Any other problems you need clarified, please email us and we will endeavour
-to provide any assistance we can:
+Please look at the PROBLEMS file for known problems. Any other problems you
+need clarified, please email us and we will endeavour to provide any
+assistance we can:
 
 The XEmacs NT Mailing List: xemacs-nt@xemacs.org
 Subscribe address:          xemacs-nt-request@xemacs.org
@@ -199,5 +259,6 @@ David Hobley
 Marc Paquette
 August Hill
 Jonathan Harris
+Ben Wing
 
 and others.
index a03e7c6..48528ef 100644 (file)
@@ -21,7 +21,7 @@ Boston, MA 02111-1307, USA.  */
 /* Synched up with: FSF 19.30 (more or less). */
 
 /* No code in XEmacs #includes config.h twice, but some of the code
-   intended to work with other packages as well (like gmalloc.c) 
+   intended to work with other packages as well (like gmalloc.c)
    think they can include it as many times as they like.  */
 #ifndef _SRC_CONFIG_H_
 #define _SRC_CONFIG_H_
@@ -286,7 +286,7 @@ Boston, MA 02111-1307, USA.  */
 /* Define HAVE_BERKELEY_DB if you want to use the BerkDB libraries */
 #undef HAVE_BERKELEY_DB
 /* Full #include file path for Berkeley DB's db.h */
-#undef DB_H_PATH
+#undef DB_H_FILE
 
 #if defined (HAVE_DBM) || defined (HAVE_BERKELEY_DB)
 # define HAVE_DATABASE
@@ -295,8 +295,8 @@ Boston, MA 02111-1307, USA.  */
 /* Define HAVE_NCURSES if -lncurses is present. */
 #undef HAVE_NCURSES
 /* Full #include file paths for ncurses' curses.h and term.h. */
-#undef CURSES_H_PATH
-#undef TERM_H_PATH
+#undef CURSES_H_FILE
+#undef TERM_H_FILE
 
 #define LOWTAGS
 
@@ -486,7 +486,7 @@ Boston, MA 02111-1307, USA.  */
 #undef SUNPRO
 
 /* Sun SparcStations, SGI machines, and HP9000s700s have support for playing
-   different sound files as beeps.  If you are on a SparcStation but do not 
+   different sound files as beeps.  If you are on a SparcStation but do not
    have the sound option installed for some reason, then undefine
    HAVE_NATIVE_SOUND.  (It's usually found in /usr/demo/SOUND/ on SunOS 4
    and Solaris systems; on Solaris, you may need to install the "SUNWaudmo"
@@ -536,7 +536,7 @@ Boston, MA 02111-1307, USA.  */
    uses, mbstowcs() and wcstombs(), are unusable when programs are
    statically linked (as XEmacs must be) because the static version of
    libc.a contains the *dynamic* versions of these functions.  These
-   functions don't seem to be called when XEmacs is running, so it's 
+   functions don't seem to be called when XEmacs is running, so it's
    enough to define stubs for them.
 
    This appears to be fixed in SunOS 4.1.2.
index c49da6b..4946af6 100644 (file)
@@ -12,10 +12,10 @@ PACKAGE_PREFIX=c:\Program Files\XEmacs
 HAVE_MULE=0
 
 # Native MS Windows support.
-HAVE_MSW=1
+HAVE_MS_WINDOWS=1
 
 # X Windows support.
-HAVE_X=0
+HAVE_X_WINDOWS=0
 X11_DIR=
 
 ############################################################################
@@ -58,10 +58,16 @@ MAKEINFO=f:\src\texinfo-4.0\makeinfo\makeinfo.exe
 # Set this to enable some debug code that doesn't slow things down.
 DEBUG_XEMACS=1
 
+# Set this to speed up building, for development purposes.
+QUICK_BUILD=0
+
 # Set this to see exactly which compilation commands are being run (not
 # generally recommended).
 VERBOSECC=0
 
+# Set this to get nmake to use dependency info (requires Perl to be installed)
+DEPEND=0
+
 ############################################################################
 
 # Some technical options.
index f317c9c..f3dc0de 100644 (file)
@@ -36,8 +36,8 @@ CFG=xemacs - Win32 Debug
 # PROP BASE Bsc_Name "xemacs.bsc"
 # PROP BASE Target_Dir ""
 # PROP Use_Debug_Libraries 0
-# PROP Output_Dir "Release"
-# PROP Intermediate_Dir "Release"
+# PROP Output_Dir "..\src"
+# PROP Intermediate_Dir "obj"
 # PROP Cmd_Line "NMAKE /f xemacs.mak"
 # PROP Rebuild_Opt "/a"
 # PROP Target_File "xemacs.exe"
@@ -55,8 +55,8 @@ CFG=xemacs - Win32 Debug
 # PROP BASE Bsc_Name "xemacs.bsc"
 # PROP BASE Target_Dir ""
 # PROP Use_Debug_Libraries 1
-# PROP Output_Dir "Debug"
-# PROP Intermediate_Dir "Debug"
+# PROP Output_Dir "..\src"
+# PROP Intermediate_Dir "obj"
 # PROP Cmd_Line "NMAKE /f xemacs.mak"
 # PROP Rebuild_Opt "/a"
 # PROP Target_File "..\src\xemacs.exe"
index ed5ec7b..ca54812 100644 (file)
@@ -24,6 +24,8 @@
 # Synched up with: Not in FSF.
 #
 
+default: all
+
 XEMACS=..
 LISP=$(XEMACS)\lisp
 LIB_SRC=$(XEMACS)\lib-src
@@ -31,6 +33,7 @@ MODULES=$(XEMACS)\modules
 NT=$(XEMACS)\nt
 OUTDIR=$(NT)\obj
 SRC=$(XEMACS)\src
+LWLIB_SRCDIR=$(XEMACS)\lwlib
 MAKEDIRSTRING=$(MAKEDIR:\=\\)
 XEMACSDIRSTRING=$(MAKEDIRSTRING:\\nt=)
 
@@ -40,7 +43,7 @@ DEL=-del
 
 # Program name and version
 
-!include "..\version.sh"
+!include "$(XEMACS)\version.sh"
 
 !include "config.inc"
 
@@ -53,6 +56,8 @@ INFODOCK_VERSION_STRING=$(infodock_major_version).$(infodock_minor_version).$(in
 PROGRAM_DEFINES=-DINFODOCK                                     \
        -DPATH_VERSION=\"$(INFODOCK_VERSION_STRING)\"           \
        -DPATH_PROGNAME=\"infodock\"                            \
+       -DEMACS_PROGNAME=\"infodock\"                           \
+       -DEMACS_VERSION=\"$(INFODOCK_VERSION_STRING)\"          \
        -DINFODOCK_MAJOR_VERSION=$(infodock_major_version)      \
        -DINFODOCK_MINOR_VERSION=$(infodock_minor_version)      \
        -DINFODOCK_BUILD_VERSION=$(infodock_build_version)
@@ -64,7 +69,9 @@ XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)
 !endif
 PROGRAM_DEFINES=                                               \
        -DPATH_VERSION=\"$(XEMACS_VERSION_STRING)\"             \
-       -DPATH_PROGNAME=\"xemacs\"
+       -DPATH_PROGNAME=\"xemacs\"                              \
+       -DEMACS_VERSION=\"$(XEMACS_VERSION_STRING)\"            \
+       -DEMACS_PROGNAME=\"xemacs\"
 !endif
 
 #
@@ -91,11 +98,11 @@ PACKAGE_PATH=~\.xemacs;;$(PACKAGE_PREFIX)\site-packages;$(PACKAGE_PREFIX)\xemacs
 ! endif
 !endif
 PATH_PACKAGEPATH="$(PACKAGE_PATH:\=\\)"
-!if !defined(HAVE_MSW)
-HAVE_MSW=1
+!if !defined(HAVE_MS_WINDOWS)
+HAVE_MS_WINDOWS=1
 !endif
-!if !defined(HAVE_X)
-HAVE_X=0
+!if !defined(HAVE_X_WINDOWS)
+HAVE_X_WINDOWS=0
 !endif
 !if !defined(HAVE_XPM)
 HAVE_XPM=0
@@ -133,6 +140,9 @@ HAVE_WIDGETS=1
 !if !defined(DEBUG_XEMACS)
 DEBUG_XEMACS=0
 !endif
+!if !defined(QUICK_BUILD)
+QUICK_BUILD=0
+!endif
 !if !defined(USE_UNION_TYPE)
 USE_UNION_TYPE=0
 !endif
@@ -201,67 +211,67 @@ CONFIG_ERROR=1
 !message [[[Developer note: If you want to fix it, read Q112297 first]]]  ####
 CONFIG_ERROR=1
 !endif
-!if !$(HAVE_MSW) && !$(HAVE_X)
-!message Please specify at least one HAVE_MSW=1 and/or HAVE_X=1
+!if !$(HAVE_MS_WINDOWS) && !$(HAVE_X_WINDOWS)
+!message Please specify at least one HAVE_MS_WINDOWS=1 and/or HAVE_X_WINDOWS=1
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_X) && !defined(X11_DIR)
+!if $(HAVE_X_WINDOWS) && !defined(X11_DIR)
 !message Please specify root directory for your X11 installation: X11_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_X) && defined(X11_DIR) && !exist("$(X11_DIR)\LIB\X11.LIB")
+!if $(HAVE_X_WINDOWS) && defined(X11_DIR) && !exist("$(X11_DIR)\LIB\X11.LIB")
 !message Specified X11 directory does not contain "$(X11_DIR)\LIB\X11.LIB"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_XPM) && !defined(XPM_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_XPM) && !defined(XPM_DIR)
 !message Please specify root directory for your XPM installation: XPM_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_XPM) && defined(XPM_DIR) && !exist("$(XPM_DIR)\lib\Xpm.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_XPM) && defined(XPM_DIR) && !exist("$(XPM_DIR)\lib\Xpm.lib")
 !message Specified XPM directory does not contain "$(XPM_DIR)\lib\Xpm.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_PNG) && !defined(PNG_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && !defined(PNG_DIR)
 !message Please specify root directory for your PNG installation: PNG_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_PNG) && defined(PNG_DIR) && !exist("$(PNG_DIR)\libpng.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && defined(PNG_DIR) && !exist("$(PNG_DIR)\libpng.lib")
 !message Specified PNG directory does not contain "$(PNG_DIR)\libpng.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_PNG) && !defined(ZLIB_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && !defined(ZLIB_DIR)
 !message Please specify root directory for your ZLIB installation: ZLIB_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_PNG) && defined(ZLIB_DIR) && !exist("$(ZLIB_DIR)\zlib.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_PNG) && defined(ZLIB_DIR) && !exist("$(ZLIB_DIR)\zlib.lib")
 !message Specified ZLIB directory does not contain "$(ZLIB_DIR)\zlib.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_TIFF) && !defined(TIFF_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_TIFF) && !defined(TIFF_DIR)
 !message Please specify root directory for your TIFF installation: TIFF_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_TIFF) && !exist("$(TIFF_DIR)\libtiff\libtiff.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_TIFF) && !exist("$(TIFF_DIR)\libtiff\libtiff.lib")
 !message Specified TIFF directory does not contain "$(TIFF_DIR)\libtiff\libtiff.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_JPEG) && !defined(JPEG_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_JPEG) && !defined(JPEG_DIR)
 !message Please specify root directory for your JPEG installation: JPEG_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_JPEG) && !exist("$(JPEG_DIR)\libjpeg.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_JPEG) && !exist("$(JPEG_DIR)\libjpeg.lib")
 !message Specified JPEG directory does not contain "$(JPEG_DIR)\libjpeg.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_XFACE) && !defined(COMPFACE_DIR)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_XFACE) && !defined(COMPFACE_DIR)
 !message Please specify root directory for your COMPFACE installation: COMPFACE_DIR=path
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_XFACE) && !exist("$(COMPFACE_DIR)\libcompface.lib")
+!if $(HAVE_MS_WINDOWS) && $(HAVE_XFACE) && !exist("$(COMPFACE_DIR)\libcompface.lib")
 !message Specified COMPFACE directory does not contain "$(COMPFACE_DIR)\libcompface.lib"
 CONFIG_ERROR=1
 !endif
-!if $(HAVE_MSW) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
+!if $(HAVE_MS_WINDOWS) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
 !message Toolbars require XPM support
 CONFIG_ERROR=1
 !endif
@@ -278,6 +288,27 @@ USE_INDEXED_LRECORD_IMPLEMENTATION=$(GUNG_HO)
 !endif
 
 #
+# Whether to use dependency information generated by make-src-depend
+#
+!if !defined(DEPEND)
+DEPEND=0
+!endif
+!if $(DEPEND)
+! if [if not exist $(OUTDIR)\nul mkdir "$(OUTDIR)"]
+! endif
+# generate an nmake-readable version of depend
+! if [perl -p -e "s/^\x23ifdef (.+)/!if defined($$1)/; s/^\x23e/!e/;" \
+       -e "s/([\s=^])([\w\d\.\-^]+\.[ch^])/$$1$(SRC:\=\\)\\$$2/g;" \
+       -e "s/^(.+)\.o:(.+)/$(OUTDIR:\=\\)\\$$1.obj:$$2 $(NT:\=\\)\\config.inc/;" \
+       < $(SRC)\depend > $(OUTDIR)\depend.tmp]
+! endif
+! include "$(OUTDIR)\depend.tmp"
+!else
+! if [echo   WARNING: Compiling without dependency information.]
+! endif
+!endif
+
+#
 # Compiler command echo control. Define VERBOSECC=1 to get verbose compilation.
 #
 !if !defined(VERBOSECC)
@@ -310,13 +341,13 @@ LIBC_LIB=libc.lib
 
 CFLAGS=-nologo -W3 $(OPT) $(C_LIBFLAG)
 
-!if $(HAVE_X)
+!if $(HAVE_X_WINDOWS)
 X_DEFINES=-DHAVE_X_WINDOWS
 X_INCLUDES=-I$(X11_DIR)\include
 X_LIBS=-libpath:$(X11_DIR)\lib Xaw.lib Xmu.lib Xt.lib SM.lib ICE.lib Xext.lib X11.lib
 !endif
 
-!if $(HAVE_MSW)
+!if $(HAVE_MS_WINDOWS)
 MSW_DEFINES=-DHAVE_MS_WINDOWS -DHAVE_SCROLLBARS -DHAVE_MENUBARS
 MSW_INCLUDES=
 MSW_LIBS=
@@ -383,6 +414,10 @@ DEBUG_DEFINES=-DDEBUG_XEMACS -D_DEBUG
 DEBUG_FLAGS=-debug:full
 !endif
 
+!if $(QUICK_BUILD)
+QUICK_DEFINES=-DQUICK_BUILD
+!endif
+
 !if $(USE_MINIMAL_TAGBITS)
 TAGBITS_DEFINES=-DUSE_MINIMAL_TAGBITS
 !endif
@@ -415,18 +450,16 @@ PATH_DEFINES=-DPATH_PREFIX=\"$(PATH_PREFIX)\"
 
 # Generic variables
 
-INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(NT)\inc -I$(SRC) -I$(XEMACS)\lwlib
+INCLUDES=$(X_INCLUDES) $(MSW_INCLUDES) -I$(NT)\inc -I$(SRC) -I$(LWLIB_SRCDIR)
 
 DEFINES=$(X_DEFINES) $(MSW_DEFINES) $(MULE_DEFINES) \
        $(TAGBITS_DEFINES) $(LRECORD_DEFINES) $(UNION_DEFINES) \
-       $(DUMPER_DEFINES) $(MALLOC_DEFINES) \
+       $(DUMPER_DEFINES) $(MALLOC_DEFINES) $(QUICK_DEFINES) \
        -DWIN32 -D_WIN32 -DWIN32_LEAN_AND_MEAN -DWINDOWSNT -Demacs \
        -DHAVE_CONFIG_H $(PROGRAM_DEFINES) $(PATH_DEFINES)
 
 #------------------------------------------------------------------------------
 
-default: $(OUTDIR)\nul all 
-
 $(OUTDIR)\nul:
        -@mkdir $(OUTDIR)
 
@@ -491,13 +524,14 @@ $(LIB_SRC)/minitar.exe : $(NT)/minitar.mak $(NT)/minitar.c
        nmake -nologo -f minitar.mak ZLIB="$(ZLIB_DIR)" NT="$(NT)" LIB_SRC="$(LIB_SRC)"
 
 LIB_SRC_TOOLS = \
-       $(LIB_SRC)/make-docfile.exe     \
+       $(LIB_SRC)/etags.exe            \
        $(LIB_SRC)/hexl.exe             \
-       $(LIB_SRC)/movemail.exe         \
+       $(LIB_SRC)/i.exe                \
+       $(LIB_SRC)/make-docfile.exe     \
        $(LIB_SRC)/mmencode.exe         \
+       $(LIB_SRC)/movemail.exe         \
        $(LIB_SRC)/sorted-doc.exe       \
-       $(LIB_SRC)/wakeup.exe           \
-       $(LIB_SRC)/etags.exe            
+       $(LIB_SRC)/wakeup.exe
 !if $(USE_MINITAR)
 LIB_SRC_TOOLS = \
        $(LIB_SRC_TOOLS) \
@@ -506,6 +540,7 @@ LIB_SRC_TOOLS = \
 !if $(USE_PORTABLE_DUMPER)
 LIB_SRC_TOOLS = \
        $(XEMACS_INCLUDES) \
+       $(LIB_SRC)/make-dump-id.exe \
        $(LIB_SRC_TOOLS)
 !endif
 
@@ -526,6 +561,15 @@ $(LIB_SRC)\run.res: $(LIB_SRC)\run.rc
 
 #------------------------------------------------------------------------------
 
+# dump-id.c file that contains the dump id
+
+$(SRC)\dump-id.c : $(LIB_SRC)/make-dump-id.exe 
+       cd $(SRC)
+       $(LIB_SRC)\make-dump-id.exe 
+       cd $(NT)
+
+#------------------------------------------------------------------------------
+
 # LASTFILE Library
 
 !if !$(USE_SYSTEM_MALLOC) || !$(USE_PORTABLE_DUMPER)
@@ -546,12 +590,11 @@ $(OUTDIR)\lastfile.obj:   $(LASTFILE_SRC)\lastfile.c
 
 #------------------------------------------------------------------------------
 
-!if $(HAVE_X)
+!if $(HAVE_X_WINDOWS)
 
 # LWLIB Library
 
 LWLIB=$(OUTDIR)\lwlib.lib
-LWLIB_SRC=$(XEMACS)\lwlib
 LWLIB_FLAGS=$(CFLAGS) $(INCLUDES) $(DEFINES) \
  -DNEED_ATHENA -DNEED_LUCID \
  -D_WINDOWS -DMENUBARS_LUCID -DSCROLLBARS_LUCID -DDIALOGS_ATHENA \
@@ -568,25 +611,25 @@ LWLIB_OBJS= \
 $(LWLIB): $(LWLIB_OBJS)
        link.exe -lib -nologo -out:$@ $(LWLIB_OBJS)
 
-$(OUTDIR)\lwlib-config.obj:    $(LWLIB_SRC)\lwlib-config.c
+$(OUTDIR)\lwlib-config.obj:    $(LWLIB_SRCDIR)\lwlib-config.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\lwlib-utils.obj:     $(LWLIB_SRC)\lwlib-utils.c
+$(OUTDIR)\lwlib-utils.obj:     $(LWLIB_SRCDIR)\lwlib-utils.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\lwlib-Xaw.obj:       $(LWLIB_SRC)\lwlib-Xaw.c
+$(OUTDIR)\lwlib-Xaw.obj:       $(LWLIB_SRCDIR)\lwlib-Xaw.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\lwlib-Xlw.obj:       $(LWLIB_SRC)\lwlib-Xlw.c
+$(OUTDIR)\lwlib-Xlw.obj:       $(LWLIB_SRCDIR)\lwlib-Xlw.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\lwlib.obj:           $(LWLIB_SRC)\lwlib.c
+$(OUTDIR)\lwlib.obj:           $(LWLIB_SRCDIR)\lwlib.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\xlwmenu.obj:         $(LWLIB_SRC)\xlwmenu.c
+$(OUTDIR)\xlwmenu.obj:         $(LWLIB_SRCDIR)\xlwmenu.c
         $(CCV) $(LWLIB_FLAGS) $**
 
-$(OUTDIR)\xlwscrollbar.obj:    $(LWLIB_SRC)\xlwscrollbar.c
+$(OUTDIR)\xlwscrollbar.obj:    $(LWLIB_SRCDIR)\xlwscrollbar.c
         $(CCV) $(LWLIB_FLAGS) $**
 
 !endif
@@ -685,7 +728,7 @@ DOC_SRC5=\
  $(SRC)\window.c \
  $(SRC)\widget.c
 
-!if $(HAVE_X)
+!if $(HAVE_X_WINDOWS)
 DOC_SRC6=\
  $(SRC)\balloon_help.c \
  $(SRC)\console-x.c \
@@ -710,7 +753,7 @@ DOC_SRC6=\
  $(SRC)\select-x.c 
 !endif
 
-!if $(HAVE_MSW)
+!if $(HAVE_MS_WINDOWS)
 DOC_SRC7=\
  $(SRC)\console-msw.c \
  $(SRC)\device-msw.c  \
@@ -734,7 +777,7 @@ DOC_SRC8=\
  $(SRC)\mule.c \
  $(SRC)\mule-charset.c \
  $(SRC)\mule-ccl.c
-! if $(HAVE_X)
+! if $(HAVE_X_WINDOWS)
  DOC_SRC8=$(DOC_SRC8) $(SRC)\input-method-xlib.c
 ! endif
 !endif
@@ -756,6 +799,9 @@ DOC_SRC10=\
 !if !$(USE_PORTABLE_DUMPER)
 DOC_SRC11=\
  $(SRC)\unexnt.c
+!else
+DOC_SRC11=\
+ $(SRC)\dumper.c
 !endif
 
 #------------------------------------------------------------------------------
@@ -789,11 +835,11 @@ TEMACS_CPP_FLAGS=-c \
  -DEMACS_MAJOR_VERSION=$(emacs_major_version) \
  -DEMACS_MINOR_VERSION=$(emacs_minor_version) \
  $(EMACS_BETA_VERSION) \
- -DXEMACS_CODENAME=\"$(xemacs_codename)\" \
+ -DXEMACS_CODENAME=\"$(xemacs_codename:&=and)\" \
  -DEMACS_CONFIGURATION=\"$(EMACS_CONFIGURATION)\" \
  -DPATH_PACKAGEPATH=\"$(PATH_PACKAGEPATH)\"
 
-!if $(HAVE_X)
+!if $(HAVE_X_WINDOWS)
 TEMACS_X_OBJS=\
        $(OUTDIR)\balloon-x.obj \
        $(OUTDIR)\balloon_help.obj \
@@ -818,7 +864,7 @@ TEMACS_X_OBJS=\
        $(OUTDIR)\select-x.obj
 !endif
 
-!if $(HAVE_MSW)
+!if $(HAVE_MS_WINDOWS)
 TEMACS_MSW_OBJS=\
        $(OUTDIR)\console-msw.obj \
        $(OUTDIR)\device-msw.obj \
@@ -842,7 +888,7 @@ TEMACS_MULE_OBJS=\
        $(OUTDIR)\mule.obj \
        $(OUTDIR)\mule-charset.obj \
        $(OUTDIR)\mule-ccl.obj
-! if $(HAVE_X)
+! if $(HAVE_X_WINDOWS)
 TEMACS_MULE_OBJS=\
        $(TEMACS_MULE_OBJS) $(OUTDIR)\input-method-xlib.obj
 ! endif
@@ -865,6 +911,9 @@ TEMACS_ALLOC_OBJS=\
 !if !$(USE_PORTABLE_DUMPER)
 TEMACS_DUMP_OBJS=\
        $(OUTDIR)\unexnt.obj
+!else
+TEMACS_DUMP_OBJS=\
+       $(OUTDIR)\dumper.obj
 !endif
 
 TEMACS_OBJS= \
@@ -975,6 +1024,8 @@ TEMACS_OBJS= \
        $(CCV) $(TEMACS_CPP_FLAGS) $< -Fo$@
 !endif
 
+$(OUTDIR)\emacs.obj:   $(XEMACS)\version.sh
+
 $(OUTDIR)\TopLevelEmacsShell.obj:      $(TEMACS_SRC)\EmacsShell-sub.c
        $(CCV) $(TEMACS_CPP_FLAGS) -DDEFINE_TOP_LEVEL_EMACS_SHELL $** -Fo$@
 
@@ -996,9 +1047,12 @@ $(TEMACS): $(TEMACS_INCLUDES) $(TEMACS_OBJS) $(OUTDIR)\xemacs.res
        @$(DEL) bscmake.tmp
 !endif
 !if $(USE_PORTABLE_DUMPER)
-       @if exist $(TEMACS_DIR)\xemacs.dmp del $(TEMACS_DIR)\xemacs.dmp
+       @if exist $(SRC)\dump-id.c del $(SRC)\dump-id.c
+# make a new dump id file.  There is probably a better way to do this, but this works
+       @if exist $(OUTDIR)\dump-id.obj del $(OUTDIR)\dump-id.obj
+       nmake -nologo -f xemacs.mak OUTDIR=$(OUTDIR) $(OUTDIR)\dump-id.obj
        link.exe @<<
-  $(TEMACS_LFLAGS) -out:$@ $(TEMACS_OBJS) $(TEMACS_LIBS)
+  $(TEMACS_LFLAGS) -out:$@ $(TEMACS_OBJS) $(TEMACS_LIBS) $(OUTDIR)\dump-id.obj
 <<
 !else
        link.exe @<<
@@ -1009,11 +1063,15 @@ $(TEMACS): $(TEMACS_INCLUDES) $(TEMACS_OBJS) $(OUTDIR)\xemacs.res
 $(OUTDIR)\xemacs.res: xemacs.rc
        rc -Fo$@ xemacs.rc
 
-# Section handling automated tests starts here
 
 PROGNAME=$(SRC)\xemacs.exe
+TEMACS_BATCH="$(LIB_SRC)\i" "$(TEMACS)" -batch
+XEMACS_BATCH="$(LIB_SRC)\i" "$(PROGNAME)" -vanilla -batch
+
+# Section handling automated tests starts here
+
 blddir=$(MAKEDIR:\=\\)\\..
-temacs_loadup=$(TEMACS) -batch -l $(LISP)/loadup.el
+temacs_loadup=$(TEMACS_BATCH) -l $(LISP)/loadup.el
 dump_temacs   = $(temacs_loadup) dump
 run_temacs    = $(temacs_loadup) run-temacs
 ## We have automated tests!!
@@ -1056,7 +1114,7 @@ tags:
 # Section handling info starts here
 
 !if !defined(MAKEINFO)
-MAKEINFO=$(PROGNAME) -vanilla -batch -l texinfmt -f batch-texinfo-format
+MAKEINFO=$(XEMACS_BATCH) -l texinfmt -f batch-texinfo-format
 !endif
 
 MANDIR = $(XEMACS)\man
@@ -1237,7 +1295,7 @@ makeinfo-test:
        @<<makeinfo_test.bat
 @echo off
 if exist "$(MAKEINFO)" goto test_done
-@"$(PROGNAME)" -batch -vanilla -eval "(condition-case nil (require (quote texinfo)) (t (kill-emacs 1)))"
+@$(XEMACS_BATCH) -eval "(condition-case nil (require (quote texinfo)) (t (kill-emacs 1)))"
 @if not errorlevel 1 goto suggest_makeinfo
 @echo XEmacs `info' cannot be built!
 @echo Install XEmacs package `texinfo' (see README.packages).
@@ -1261,11 +1319,11 @@ docfile ::
        if exist $(DOC) del $(DOC)
 docfile :: $(DOC)
 
-$(DOC): $(LIB_SRC)\make-docfile.exe
+$(DOC): $(LIB_SRC)\make-docfile.exe $(DOC_SRC1) $(DOC_SRC2) $(DOC_SRC3) $(DOC_SRC4) $(DOC_SRC5) $(DOC_SRC6) $(DOC_SRC7) $(DOC_SRC8) $(DOC_SRC9) $(DOC_SRC10) $(DOC_SRC11)
        if exist $(DOC) del $(DOC)
        set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH)
        set EMACSBOOTSTRAPMODULEPATH=$(MODULES)
-       $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\make-docfile.el -- -o $(DOC) -i $(XEMACS)\site-packages
+       $(TEMACS_BATCH) -l $(TEMACS_DIR)\..\lisp\make-docfile.el -- -o $(DOC) -i $(XEMACS)\site-packages
        $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC1)
        $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC2)
        $(LIB_SRC)\make-docfile.exe -a $(DOC) -d $(TEMACS_SRC) $(DOC_SRC3)
@@ -1281,20 +1339,25 @@ $(DOC): $(LIB_SRC)\make-docfile.exe
 update-elc:
        set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH)
        set EMACSBOOTSTRAPMODULEPATH=$(MODULES)
-       $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\update-elc.el
+       $(TEMACS_BATCH) -l $(TEMACS_DIR)\..\lisp\update-elc.el
+
+# This file is touched by update-elc.el when redumping is necessary.
+$(TEMACS_DIR)\NEEDTODUMP :
+       @echo >$(TEMACS_DIR)\NEEDTODUMP
 
 # This rule dumps xemacs and then possibly spawns sub-make if PURESPACE
 # requirements have changed.
-dump-xemacs: temacs
+
+$(PROGNAME) : $(TEMACS) $(TEMACS_DIR)\NEEDTODUMP
        @echo >$(TEMACS_DIR)\SATISFIED
        cd $(TEMACS_DIR)
        set EMACSBOOTSTRAPLOADPATH=$(LISP);$(PACKAGE_PATH)
        set EMACSBOOTSTRAPMODULEPATH=$(MODULES)
-       -1 $(TEMACS) -batch -l $(TEMACS_DIR)\..\lisp\loadup.el dump
+       -1 $(TEMACS_BATCH) -l $(TEMACS_DIR)\..\lisp\loadup.el dump
 !if $(USE_PORTABLE_DUMPER)
        rc -d INCLUDE_DUMP -Fo $(OUTDIR)\xemacs.res $(NT)\xemacs.rc
        link.exe @<<
-  $(TEMACS_LFLAGS) -out:xemacs.exe $(TEMACS_OBJS) $(OUTDIR)\xemacs.res $(TEMACS_LIBS)
+  $(TEMACS_LFLAGS) -out:xemacs.exe $(TEMACS_OBJS) $(OUTDIR)\xemacs.res $(TEMACS_LIBS) $(OUTDIR)\dump-id.obj
 <<
 # Make the resource section read/write since almost all of it is the dump
 # data which needs to be writable.  This avoids having to copy it.
@@ -1307,8 +1370,8 @@ dump-xemacs: temacs
 
 # use this rule to build the complete system
 all:   installation $(OUTDIR)\nul $(LASTFILE) $(LWLIB) \
-       $(LIB_SRC_TOOLS) $(RUNEMACS) $(TEMACS) update-elc $(DOC) dump-xemacs \
-       $(LISP)/auto-autoloads.el $(LISP)/custom-load.el info
+       $(LIB_SRC_TOOLS) $(RUNEMACS) $(TEMACS) update-elc $(DOC) $(PROGNAME) \
+       update-auto-and-custom info
 
 temacs: $(LASTFILE) $(TEMACS)
 
@@ -1376,7 +1439,7 @@ distclean:
        $(DEL) *.info*
 
 depend:
-       cd $(SRCDIR)
+       cd $(SRC)
        perl ./make-src-depend > depend.tmp
        perl -MFile::Compare -e "compare('depend.tmp', 'depend') && rename('depend.tmp', 'depend') or unlink('depend.tmp')"
 
@@ -1399,10 +1462,10 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_
 !if $(INFODOCK)
   Building InfoDock.
 !endif
-!if $(HAVE_MSW)
+!if $(HAVE_MS_WINDOWS)
   Compiling in support for Microsoft Windows native GUI.
 !endif
-!if $(HAVE_X)
+!if $(HAVE_X_WINDOWS)
   Compiling in support for X-Windows.
 !endif
 !if $(HAVE_MULE)
@@ -1482,6 +1545,9 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_
 !if $(DEBUG_XEMACS)
   Compiling in extra debug checks. XEmacs will be slow!
 !endif
+!if $(QUICK_BUILD)
+  Disabling non-essential build actions.  Use with care!
+!endif
 <<NOKEEP
        @echo --------------------------------------------------------------------
        @type $(XEMACS)\Installation
@@ -1489,19 +1555,14 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_
 
 # Update auto-autoloads.el and custom-load.el similar to what
 # XEmacs.rules does for xemacs-packages.
-VANILLA=-vanilla
-FORCE:
-$(LISP)\auto-autoloads.el:     FORCE
-       @$(DEL) $(LISP)\auto-autoloads.el
-       $(PROGNAME) $(VANILLA) -batch \
-               -l autoload -f batch-update-directory $(LISP)
-       $(PROGNAME) $(VANILLA) -batch \
-               -f batch-byte-compile $@
+update-auto-and-custom:
+#       Don't delete this, because it forces rebuilding from scratch,
+#       which is time-consuming; and the autoload code is specifically
+#       written to do in-place updating.
+#      @$(DEL) $(LISP)\auto-autoloads.el
+#       Combine into one invocation to avoid repeated startup penalty.
+       $(XEMACS_BATCH) -l autoload -f batch-update-one-directory $(LISP) -f batch-byte-compile-one-file $(LISP)\auto-autoloads.el -l cus-dep -f Custom-make-dependencies $(LISP)
        @$(DEL) $(LISP)\auto-autoloads.el~
 
-$(LISP)\custom-load.el:        FORCE
-       $(PROGNAME) $(VANILLA) -batch -l cus-dep \
-               -f Custom-make-dependencies $(LISP)
-
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
index 15db881..da05b2f 100644 (file)
-2000-03-20  Martin Buchholz <martin@xemacs.org>
+2000-05-01  Martin Buchholz <martin@xemacs.org>
 
-       * XEmacs 21.2.32 is released.
+       * XEmacs 21.2.33 is released.
+
+2000-05-01  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * make-src-depend: Allow dots in header file name.
+
+2000-05-01  Yoshiki Hayashi  <yoshiki@xmacs.org>
+
+       * mule-charset.h (struct charset_lookup): Add
+       next_allocated_1_byte_leading_byte and
+       next_allocated_2_byte_leading_byte.
+       * mule-charset.c: Move above two variables so that those values
+       will be dumped.
+
+2000-04-26  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * insdel.c (find_charsets_in_bufbyte_string): Add Vcharset_ascii
+       when string length is zero.
+       (find_charsets_in_emchar_string): Ditto.
+
+2000-04-29  Bjrn Torkelsson  <torkel@hpc2n.umu.se>
+
+       * lisp.h: extern Qdialog and Qmenubar.
+
+       * gui-x.c: added events.h.
+               also fixed typo which made the file uncompilable.
+
+       * general.c: Added Qmenubar and Qdialog
+
+2000-04-28  Ben Wing  <ben@xemacs.org>
+
+       * frame-msw.c (mswindows_init_frame_1):
+       * frame-msw.c (mswindows_mark_frame):
+       * event-msw.c (mswindows_enqueue_dispatch_event):
+       * console-msw.h:
+       * console-msw.h (struct mswindows_frame):
+       * console-msw.h (FRAME_MSWINDOWS_WIDGET_HASH_TABLE1):
+       there are now three hash tables for callbacks.
+       mswindows_enqueue_dispatch_event is no longer static.
+       
+       * dialog-x.c (maybe_run_dbox_text_callback):
+       * dialog-x.c (dbox_descriptor_to_widget_value):
+       switch to new cons3 form for callbacks.
+       
+       * glyphs-msw.c (mswindows_register_gui_item):
+       * glyphs-msw.c (mswindows_widget_instantiate):
+       * glyphs-msw.c (add_tree_item):
+       * glyphs-msw.c (add_tab_item):
+       new image instance parameter, so it can be passed to callback-ex.
+       respect :callback-ex as well as :callback.
+       
+       * glyphs-widget.c (VALID_GUI_KEYWORDS):
+       add :callback-ex.
+       
+       * glyphs.c (print_image_instance):
+       prettify, e.g. now prints widget type.
+       
+       * gui-x.h:
+       certain funs have new image instance parameter.
+       
+       * gui.c:
+       * gui.c (get_gui_callback):
+       * gui.c (gui_item_add_keyval_pair):
+       * gui.c (gui_item_init):
+       * gui.c (gui_add_item_keywords_to_plist):
+       * gui.c (mark_gui_item):
+       * gui.c (gui_item_hash):
+       * gui.c (gui_item_equal):
+       * gui.c (copy_gui_item):
+       * gui.c (syms_of_gui):
+       recognize callback-ex in a number of places.
+       also, fix the annoying "can't get out of yes-no dialog" bug.
+       
+       * gui.h:
+       * gui.h (struct Lisp_Gui_Item):
+       recognize callback-ex in a number of places.
+
+       * menubar-x.c (menu_item_descriptor_to_widget_value_1):
+       new parameter in button_item_to_widget_value.
+       
+       * glyphs-x.c (x_update_widget):
+       * glyphs-x.c (x_button_instantiate):
+       * glyphs-x.c (x_button_update):
+       * glyphs-x.c (x_progress_gauge_instantiate):
+       * glyphs-x.c (x_edit_field_instantiate):
+       * glyphs-x.c (x_combo_box_instantiate):
+       * glyphs-x.c (x_tab_control_instantiate):
+       * glyphs-x.c (x_label_instantiate):
+       new image instance parameter in various places.
+       
+       * event-Xt.c:
+       * event-Xt.c (enqueue_Xt_dispatch_event):
+       this fun gets exported.
+       
+       * gui-msw.c:
+       * gui-msw.c (mswindows_handle_gui_wm_command):
+       handle both :callback and :callback-ex, and generate our own
+       event because it's one of the callback-ex arguments.
+       
+       * gui-x.c:
+       * gui-x.c (popup_selection_callback):
+       handle both :callback and :callback-ex, and generate our own
+       event because it's one of the callback-ex arguments.
+       * gui-x.c (button_item_to_widget_value):
+       * gui-x.c (gui_items_to_widget_values_1):
+       * gui-x.c (gui_item_children_to_widget_values):
+       * gui-x.c (gui_items_to_widget_values):
+       new image instance parameter in various places.
+
+       * fns.c (Freplace_list):
+       fix small typo in doc string.
+       
+       * lisp.h:
+       declare enqueue_Xt_dispatch_event.
+
+2000-04-28  Ben Wing  <ben@xemacs.org>
+
+       * buffer.c:
+       * buffer.c (Frecord_buffer):
+       * buffer.c (syms_of_buffer):
+       delete record-buffer-hook.
+       
+       * fns.c:
+       * fns.c (Freplace_list):
+       * fns.c (syms_of_fns):
+       new primitive replace-list.
+       
+       * frameslots.h:
+       slot for old buffer-alist.
+       
+       * lisp.h:
+       exfun replace-list.
+       
+       * redisplay.c:
+       * redisplay.c (redisplay_frame):
+       * redisplay.c (syms_of_redisplay):
+       * redisplay.c (vars_of_redisplay):
+       new hook buffer-list-changed-hook.
+       call it.
+
+2000-04-27  Ben Wing  <ben@xemacs.org>
+
+       * extents.h: extern in_modeline_generation.
+
+       * redisplay.c (generate_formatted_string_db): set
+       in_modeline_generation.
+
+       * extents.c (extent_changed_for_redisplay): don't mark redisplay
+       flags if in modeline generation.  otherwise frame-modified-tick
+       is ticked far too often.
+       Declare in_modeline_generation.
+
+2000-04-26  Ben Wing  <ben@xemacs.org>
+
+       * emacs.c (vars_of_emacs): document quick-build "error-checking"
+       option.
+       (vars_of_emacs): add quick-build as an error-checking option.
+       A bit kludgy, but there doesn't seem much point in creating
+       a real var for this.
+
+       * config.h.in: put in an entry for QUICK_BUILD; remove NO_DOC_FILE.
+
+2000-04-14  IKEYAMA Tomonori  <tomonori@suiyokai.org>
+
+       * redisplay.h (struct display_line): Add a new variable,
+       line_continuation.
+
+       * redisplay.c (create_text_block): Set dl->line_continuation if
+       the line continues.
+       (create_string_text_block): Ditto.
+       (regenerate_window_incrementally): Use line_continuation instead
+       of searching continuation glyph.
+       (add_margin_runes): Call add_glyph_rune.
+       (add_glyph_rune): Handle margin glyph.
+
+2000-04-20  Martin Buchholz  <martin@xemacs.org>
+
+       * filelock.c (fill_in_lock_file_name): 
+       ANSIfy.
+       Check for IS_ANY_SEP instead of '/'.
+       (lock_file_1): 
+       Avoid generating gratuitous garbage.  Call user_login_name() directly.
+       Never check errno without first seeing that system call failed.
+       (unlock_file): Add GCPRO.
+       (Flock_buffer): Fix docstring.
+       (Ffile_locked_p): Fix docstring.  Add GCPRO.
+
+2000-04-19  Martin Buchholz  <martin@xemacs.org>
+
+       * sysdep.c (get_pty_max_bytes): 
+       Fix hangs on DEC OSF 4.0 when (process-send-string) sends
+       strings longer than 252 bytes.
+
+       * md5.c: Unconditionally include ANSI header <limits.h>
+
+       * glyphs-x.c (convert_EImage_to_XImage): 
+       * lisp-union.h (union Lisp_Object): 
+       Use consistently the syntax #ifdef FEATURE, not #if FEATURE.
+
+2000-04-13  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * filelock.c (current_lock_owner): Remove unused variable o, p.
+
+2000-04-17  Norbert Koch  <n.koch@eai-delta.de>
+
+       * callint.c: Remove multiply defined symbol Qlet
+       (syms_of_callint): ditto.
+
+2000-04-14  Andy Piper  <andy@xemacs.org>
+
+       * general.c (syms_of_general): add last-command, this-command, let
+       and funcall.
+
+       * lisp.h: declare various symbols.
+
+       * glyphs.h: declare Qwidget_callback_current_channel;
+
+       * glyphs-widget.c (syms_of_glyphs_widget): add
+       Qgui_callback_current_channel.
+       (vars_of_glyphs_widget): add Vgui_callback_current_channel.
+
+       * gui-msw.c (mswindows_handle_gui_wm_command): bind
+       widget-callback-current-channel when invoking the interactive
+       arg. Also bind last-command and next-command when invoking the
+       widget updates.
+       * gui-x.c (popup_selection_callback): ditto.
+
+       * gui.c (get_gui_callback): massage args so that we are always
+       calling eval. This allows us to add our own variable bindings
+       outside.
+
+       * glyphs-x.c (x_button_instantiate): use
+       gui_items_to_widget_values since this is GC safe.
+       (x_progress_gauge_instantiate): ditto.
+       (x_edit_field_instantiate): ditto.
+       (x_label_instantiate): ditto.
+
+       * event-Xt.c (emacs_Xt_handle_magic_event): remove old printfs.
+       (emacs_Xt_event_widget_focus_out): new function
+       (emacs_Xt_event_widget_focus_in): new function. Set the keyboard
+       focus.
+       (emacs_Xt_event_add_widget_actions): new function. add focus
+       functions as actions.
+       (init_event_Xt_late): use it.
+
+2000-04-14  Hrvoje Niksic  <hniksic@iskon.hr>
+
+       * event-stream.c (Fdispatch_event): Doc fix.
+
+2000-03-29  SL Baur  <steve@musashimaru.m17n.org>
+
+       * postgresql.c: Remove all references to PQsetenv*.
+
+       * postgresql.h: Remove references to PGsetenvHandler object.
+       * lrecord.h (lrecord_type): Ditto.
+
+2000-04-11  Kirill 'Big K' Katsnelson  <kkm@dtmx.com>
+
+       * glyphs-msw.h (struct mswindows_image_instance_data): Added
+       real_heigh and real_width members, and accessor macros for these.
+
+       * glyphs-msw.c (init_image_instance_geometry): New function.
+       (init_image_instance_from_dibitmap): Use it.
+       (mswindows_resource_instantiate): Use it.
+       (init_image_instance_from_xbm_inline): Use it.
+       (mswindows_initialize_image_instance_mask): Use real bitmap
+       geometry.
+       (mswindows_create_resized_bitmap): Ditto.
+       (mswindows_create_resized_mask): Ditto.
+       
+       * redisplay-msw.c (mswindows_output_dibitmap): Stretch real mask
+       and bitmap to their surface size.
+
+2000-04-11  Jan Vroonhof  <jan@xemacs.org>
+
+       * process-unix.c (unix_send_process): Guard against process MIA
+       after Faccept_process_output.
+
+2000-04-11  Ben Wing  <ben@xemacs.org>
+
+       * eval.c (unbind_to_hairy): fix brokenness introduced by
+       nanosecond speed improvements.
+
+2000-04-07  Raymond Toy  <toy@rtp.ericsson.se>
+
+       * sunplay.c (init_device): To play sounds correctly, the device
+       apparently needs to be initialized at least once by XEmacs.  Make
+       it so.
+
+2000-04-10  IKEYAMA Tomonori  <tomonori@suiyokai.org>
+
+       * redisplay.c (add_margin_runes): Add text image glyph
+         handling.
+
+2000-04-06  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * lisp.h (DOESNT_RETURN): Don't declare as volatile when
+       gcc is newer than 2.5.
+
+2000-04-06  Colin Rafferty  <colin@xemacs.org>
+
+       * lisp.h (FLEXIBLE_ARRAY_STRUCT_SIZEOF): Created.
+       
+       * fns.c (size_bit_vector):
+       * alloc.c (size_vector):
+       (make_vector_internal):
+       (make_bit_vector_internal):
+       (sweep_bit_vectors_1):
+       Replace calls to offsetof with FLEXIBLE_ARRAY_STRUCT_SIZEOF macro.
+
+2000-04-06  Andy Piper  <andy@xemacs.org>
+
+       * gmalloc.c (malloc): undo previous change.
+       (malloc): ditto.
+       (free): ditto.
+       (realloc): ditto.
+
+2000-04-06  IKEYAMA Tomonori <tomonori@suiyokai.org>
+
+       * line-number.c (buffer_line_number): Revert to former version.
+
+2000-04-06  Andy Piper  <andy@xemacs.org>
+
+       * gmalloc.c (malloc): add error checking.
+       (malloc): ditto.
+       (free): ditto.
+       (realloc): ditto.
+
+       * dialog-x.c (dbox_descriptor_to_widget_value): add extra
+       button_item_to_widget_value arg.
+
+       * glyphs-x.c (x_button_instantiate): add extra
+       button_item_to_widget_value arg.
+       (x_progress_gauge_instantiate): ditto.
+       (x_edit_field_instantiate): ditto.
+       (x_label_instantiate): ditto.
+
+       * gui-x.c (gui_items_to_widget_values_1): add extra
+       button_item_to_widget_value arg.
+       (button_item_to_widget_value): add extra menu_item_p arg.
+
+       * gui-x.h: change signature of button_item_to_widget_value.
+
+       * menubar-x.c (menu_item_descriptor_to_widget_value_1): add extra
+       button_item_to_widget_value arg.
+
+2000-04-03  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * buffer.h (struct buffer): auto_save_modified should be long.
+
+2000-04-05  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-widget.c (widget_instantiate): pixwidth != pixheight
+       type.
+       (button_query_geometry): give a little more room so that athena
+       buttons fit.
 
-2000-03-12  Jan Vroonhof  <vroonhof@math.ethz.ch>
+2000-04-05  Andy Piper  <andy@xemacs.org>
 
-       * sysdep.c: Include proper headers for mmap when pdumping()
+       * faces.c (complex_vars_of_faces): The widget face should inherit
+       the font of the gui-element face.
+
+2000-04-04  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-x.c (x_button_update): new function. unconditionally
+       update a button's state when the instance is dirty.
+       (image_instantiator_format_create_glyphs_x): add x_button_update.
+       (x_widget_instantiate): remove old resize cruft.
+
+2000-04-02  Andy Piper  <andy@xemacs.org>
+
+       * frame.c (change_frame_size_1): The introduction of gutters means
+       that we need to allow 0 as a potential frame dimension.
+
+2000-04-02  IKEYAMA Tomonori  <tomonori@suiyokai.org>
+
+       * redisplay.c (add_glyph_rune): Don't set 0 to bufpos for text
+       image glyph if allow_cursor.
+        (add_hscroll_rune): Don't allow cursor to border glyph.
+        (create_text_block): Ditto.
+
+       * redisplay-output.c (redisplay_move_cursor): Do nothing even if
+       text not in buffer.
+        (redisplay_output_layout): Call ensure_face_cachel_complete for
+       text image glyph.
+
+
+2000-03-16  IKEYAMA Tomonori  <tomonori@suiyokai.org>
+
+       * redisplay.c (add_glyph_rune): Adding text image as text runes.
+
+       * redisplay-output.c (redisplay_move_cursor): NO_CURSOR if text
+       not in buffer
+
+       * redisplay-tty.c (tty_output_display_block): Delete the routine
+       for text image glyph
+       * redisplay-x.c (x_output_display_block): ditto
+       * redisplay-msw.c (mswindows_output_display_block): ditto
+
+2000-02-02  Mike Alexander  <mta@arbortext.com>
+
+       Note: Some of these were committed by accident as part of other
+       patches.
+       
+       * regex.c (regex_compile): Avoid compiler warnings.
+
+       * ntproc.c (sys_spawnve): Avoid compiler warnings.
+
+       * nt.h: Declare term_ntproc correctly.
+
+       * nt.c: Remove incorrect declaration of get_home_directory which
+       is declared correctly in lisp.h.
+
+       * keymap.c (get_keyelt): Avoid compiler warnings.
+       (raw_lookup_key_mapper): Avoid compiler warnings.
+
+       * gutter.c (gutter_was_visible): Add return statement to avoid warning.
+
+       * glyphs-eimage.c (png_instantiate): Avoid compiler warnings.
+
+       * filemode.c (mode_string): Avoid compiler warnings.
+
+       * file-coding.c (Fcoding_system_aliasee): Add return statement to
+       avoid warning.
+
+       * events-mod.h: Undef some things that winuser.h defines differently.
+
+       * data.c (Faset): Avoid compiler warnings.
+
+       * alloc.c (Fmake_byte_code): Avoid compiler warnings.
+
+2000-03-03  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * sound.c (Fplay_sound_file): Wrap ESD in start/stop_interrupts.
+       Fall through to simple beep on error.
+       Replace "extern" by real header file.
+
+       * linuxplay.c: Use nativesound.h
+       (play_sound_data): Return error code. Be less verbose on error.
+
+       * sunplay.c: Use nativesound.h
+       (play_sound_data): Return error code. Be less verbose on error.
+
+       * ntplay.c: Use nativesound.h
+       (play_sound_data): Return fake error code
+
+       * sgiplay.c: Use nativesound.h
+       (play_sound_data): Return error code
+
+       * hpplay.c: Use nativesound.h, partially implement
+       new error code. Break compilation until finished.
+       (play_sound_data): error code.
+
+       * nativesound.h (play_sound_file): 
+         (play_sound_data): Prototype in new header.
+
+2000-03-31  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-widget.c: (button_query_geometry): new function. Adjust
+       for toggle and radio buttons.
+       (image_instantiator_buttons): use it.
+
+2000-03-03  Jan Vroonhof  <vroonhof@math.ethz.ch>
+
+       * scrollbar-x.c (x_update_vertical_scrollbar_callback): 
+       (x_update_horizontal_scrollbar_callback): Return if no mirror was
+       found. Scrollbar event probably belonged to some old config.
+
+2000-03-31  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-widget.c (widget_instantiate): use LAYOUT_VERTICAL rather
+       than 1.
+       (initialize_widget_image_instance): default layout to
+       LAYOUT_HORIZONTAL rather than 0.
+       (widget_instantiate): reverse the item list at the end rather than
+       every iteration.
+       (layout_layout): re-code for the border text at the front of the
+       item list rather than at the end.
+       (layout_query_geometry): ditto. Pick up fixed and dynamic sizes
+       provided by the user.
+       (widget_query_geometry): comment.
+
+2000-03-30  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-widget.c (image_instantiator_layout): allow standard
+       widget keywords in layouts.
+
+       * gutter.c (output_gutter): cope with nil gutter contents.
+
+       * frame.c (Fset_frame_properties): add gutter docs.
+
+2000-03-29  Andy Piper  <andy@xemacs.org>
+
+       * toolbar-msw.c (TBSTYLE_FLAT): add.
+       (mswindows_output_toolbar): minor fiddling.
+
+2000-03-29  Andy Piper  <andy@xemacs.org>
+
+       * gutter.c (output_gutter): force gutter size recalculation if
+       what we are trying to display won't fit.
+       (update_gutter_geometry): new function. A per-gutter version of
+       update_frame_gutter_geometry.
+       (update_frame_gutter_geometry): use it.
+       (redraw_exposed_gutter): add extra debugging output.
+
+2000-03-28  Mike Alexander  <mta@arbortext.com>
+
+       * dumper.c: Declare pdump_hFile and pdump_hMap (Windows only)
+       (pdump_file_unmap): Implement it on Windows
+       (pdump_file_get): Save alocated handles for pdump_file_unmap
+
+2000-03-28  Andy Piper  <andy@xemacs.org>
+
+       * gui.c (get_gui_callback): treat Quit specially.
+
+2000-03-27  Andy Piper  <andy@xemacs.org>
+
+       * glyphs.c (image_instantiate): be careful to check in the same
+       way we assigned.
+
+2000-03-27  Didier Verna  <didier@xemacs.org>
+
+       * config.h.in: define the proper SMART_INCLUDE macro.
+       handle renaming of `foo_h_path' to `foo_h_file'.
+
+       * database.c: ditto.
+
+       * emacs.c: ditto.
+
+       * linuxplay.c: ditto.
+
+       * terminfo.c: ditto.
+
+       * tooltalk.h: ditto.
+
+2000-03-27  Andy Piper  <andy@xemacs.org>
+
+       * glyphs-msw.c (mswindows_update_widget): make sure the widget
+       gets updated whenever the face might have changed.
+
+2000-03-26  Mike Alexander  <mta@arbortext.com>
+
+       * dumper.c (pdump_resource_free): Fix the comment.
+
+2000-03-21  Olivier Galibert  <galibert@pobox.com>
+
+       * input-method-xlib.c (XIM_init_frame): Remove painful warning.
+
+2000-03-22  Mike Alexander  <mta@arbortext.com>
+
+       * dumper.c: Include Windows headers on Windows
+       (pdump_resource_free): Add a body to the function
+       (pdump_load): exe_name -> exe_path and add some comments.
+
+2000-03-25  Mike Alexander  <mta@arbortext.com>
+
+       * gui.c (copy_gui_item_tree): Return a value in all cases
+
+2000-03-21  Didier Verna  <didier@xemacs.org>
+
+       * config.h.in: move INCLUDE_GLUE_1 and INCLUDE_GLUE_2 here from
+       lwlib/config.h.in.
+       (SMART_INCLUDE): new macro.
+       (POSTGRES_INCLUDE): new macro to include postgresql headers from
+       the proper location.
+
+       * postgresql.c: use it.
+
+       * inline.c: ditto.
+
+2000-03-24  Andy Piper  <andy@xemacs.org>
+
+       * gutter.c (redraw_exposed_gutters): must be "in display" when we
+       do this.
+
+2000-03-24  Andy Piper  <andy@xemacs.org>
+
+       * redisplay-output.c (compare_runes): use image_instance_changed
+       to detect changes. Do not depend on glyphs_changed, only depend on
+       dirtiness.
+        (redisplay_output_layout): add debug messages.
+       (compare_runes): ditto.
+
+       * glyphs.h: declare new functions.
+       (struct Lisp_Image_Instance): remove percent and associated
+       accessors.
+
+       * gui.h: declare new copying functions.
+
+       * gui.c (copy_gui_item_tree): new function.
+       (copy_gui_item): new function.
+       (gui_item_id_hash): revert to standard hash.
+       (gui_item_hash): ditto.
+       (gui_item_hash_internal): deleted.
+       (mark_gui_item): mark value.
+       (gui_item_add_keyval_pair): add value.
+       (gui_item_init): ditto.
+       (gui_add_item_keywords_to_plist): ditto.
+       (gui_item_equal): ditto.
+       (syms_of_gui): add Q_value.
+
+       * glyphs-x.c (x_progress_gauge_update): use pending items and
+       value for setting the state.
+       (x_update_widget): don't set items from pending here.
+
+       * glyphs-widget.c (update_widget): update items here.
+       (progress_gauge_set_property): use items for storing value. Put
+       new value in pending items.
+
+       * glyphs-msw.c (mswindows_progress_gauge_update): use pending
+       items for new value. Convert percent -> value.
+       (mswindows_tab_control_update): don't update items here.
+
+       * glyphs.c (Fupdate_widget_instances): use image_instance_changed.
+       (update_subwindow): ditto.
+       (image_instance_changed): new function. Compare hash values and
+       past and present widget items.
+       (image_instantiate): We more careful about where we instantiate
+       things.
+       (image_instantiate): add error checking.
+
+       * gutter.c (syms_of_gutter): use -hook.
+
+2000-03-20  Yoshiki Hayashi  <yoshiki@xemacs.org>
+
+       * console-tty.c (Fset_console_tty_input_coding_system): Use
+       Qkeyboard.
+       (Fset_console_tty_output_coding_system): Use Qterminal.
+       (tty_init_console): Use Qkeyboard and Qterminal.
+
+2000-03-21  Ben Wing  <ben@xemacs.org>
+
+       * ntproc.c (create_child): remove bogus HAVE_NTGUI's.
+       From Mike Alexander <mta@arbortext.com>.
+
+2000-03-21  Ben Wing  <ben@xemacs.org>
+
+       * event-msw.c (mswindows_need_event): Horrible kludge to fix
+       process brokenness.  Proper implementation to come.
+       * callproc.c:
+       Rename call-process-internal to old-call-process-internal.
+       New impl. in process.el.
+
+2000-03-21  Martin Buchholz  <martin@xemacs.org>
+
+       * Makefile.in.in: Coalesce HAVE_NATIVE_SOUND code fragments.
+
+2000-03-20  Andy Piper  <andy@xemacs.org>
+
+       * glyphs.c (full_list_hash): make hashes of the same elements in
+       different orders return different values.
+
+2000-03-20  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.32 is released.
 
 2000-03-20  Martin Buchholz  <martin@xemacs.org>
 
-       * buffer.h (DFC_ALLOCA_USE_CONVERTED_DATA): 
-       (DFC_MALLOC_USE_CONVERTED_DATA): 
+       * buffer.h (DFC_ALLOCA_USE_CONVERTED_DATA):
+       (DFC_MALLOC_USE_CONVERTED_DATA):
        Add aliasing-safe casts to allow use with char* or unsigned char*
        lvalues.
 
-       * eldap.c (Fldap_open): 
-       (Fldap_search_basic): 
-       (Fldap_add): 
-       (Fldap_modify): 
+       * eldap.c (Fldap_open):
+       (Fldap_search_basic):
+       (Fldap_add):
+       (Fldap_modify):
        Make C++-compilable.
        Make sure GCPRO'ed variables are initialized.
        Use temp variables to avoid repeated calls to Flength.
 
 2000-03-16  Martin Buchholz  <martin@xemacs.org>
 
-       * sysfile.h: 
-       Make sure PATH_MAX is always defined.  
+       * sysfile.h:
+       Make sure PATH_MAX is always defined.
        Include limits.h for PATH_MAX.
        Deprecate use of MAXPATHLEN.
 
        * emacs.c: Add reinit_vars_of_fileio.
        * symsinit.h: Add reinit_vars_of_fileio.
        * fileio.c (reinit_vars_of_fileio): New.
-       * fileio.c (Fmake_temp_name): 
+       * fileio.c (Fmake_temp_name):
        Initialize temp_name random number from microseconds to make
        collisions even less likely.  Initialize always at process startup
        time.  (make-temp-name) used to return the same file name twice in
 
        * glyphs.h (struct Lisp_Image_Instance): add optimize_output flag.
        (IMAGE_INSTANCE_OPTIMIZE_OUTPUT): access it.
-       
+
        * glyphs.c: (update_frame_subwindows): deleted.
        (Fupdate_widget_instances): new function for updating the dirty
        state of widgets that might have changed.
        * frame-msw.c (mswindows_size_frame_internal): remove unused
        variable.
 
-       * faces.h (struct face_cachel): fix comment. 
+       * faces.h (struct face_cachel): fix comment.
 
        * event-stream.c (Fdispatch_non_command_events): new
        function. Process non-command events, forcing an event cycle
 
        editfns.c (get_home_directory): Changed behavior under Windows
        when HOME not defined; former behavior was irretrievably broken.
-       
+
        * emacs.c:
        * emacs.c (main_1):
        * emacs.c (main):
        * eval.c (reinit_vars_of_eval):
        Added code to catch throw loops and check for a pesky bug that may
        be gone now.
-       
+
        * event-msw.c:
        * event-msw.c (key_needs_default_processing_p):
        * event-msw.c (mswindows_wnd_proc):
         added.  I will think about this more.)
 
        * event-unixoid.c (poll_fds_for_input):
-        * lread.c (readchar): 
+        * lread.c (readchar):
        * redisplay-tty.c (tty_clear_frame):
        * redisplay-x.c (x_get_gc):
        * signal.c (interrupt_signal):
 
        * filemode.c (mode_string):
        Warning fixes.
-       
+
        * frame-msw.c:
        * frame-msw.c (mswindows_size_frame_internal):
         Fixed the computation of frame size and position to keep the frame
        * gui.c (parse_gui_item_tree_children):
        * gui.c (parse_gui_item_tree_list):
        Mule-ized.  Cleanup.  GCPRO addition.
-       
+
        * line-number.c (buffer_line_number):
        * lisp.h:
        * lisp.h (EMACS_INT_MAX):
index b73b75d..ea201c4 100644 (file)
@@ -46,7 +46,7 @@ ERROR!  This ought not be getting compiled if EXTERNAL_WIDGET is undefined
 #include "extw-Xt.h"
 
 #ifdef TOOLTALK
-#include TT_C_H_PATH
+#include TT_C_H_FILE
 #endif
 
 /* This is the client widget, used to communicate with an ExternalShell
index e840e6d..48716cc 100644 (file)
@@ -116,10 +116,6 @@ VPATH=@srcdir@
 
 RM = rm -f
 
-#ifdef HAVE_NATIVE_SOUND
-sound_cflags=@sound_cflags@
-#endif
-
 LWLIB_SRCDIR = ${srcdir}/../lwlib
 
 #ifdef HAVE_X_WINDOWS
@@ -686,6 +682,7 @@ alloca.o : ${srcdir}/alloca.s config.h
 #endif /* ! defined (C_ALLOCA) */
 
 #ifdef HAVE_NATIVE_SOUND
+sound_cflags=@sound_cflags@
 sunplay.o: ${srcdir}/sunplay.c
        $(CC) -c  $(sound_cflags) $(cflags) ${srcdir}/sunplay.c
 hpplay.o: ${srcdir}/hpplay.c
index 0c4325d..aa39388 100644 (file)
@@ -1082,7 +1082,8 @@ mark_vector (Lisp_Object obj)
 static size_t
 size_vector (const void *lheader)
 {
-  return offsetof (Lisp_Vector, contents[((Lisp_Vector *) lheader)->size]);
+  return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents,
+                                      ((Lisp_Vector *) lheader)->size);
 }
 
 static int
@@ -1129,7 +1130,7 @@ static Lisp_Vector *
 make_vector_internal (size_t sizei)
 {
   /* no vector_next */
-  size_t sizem = offsetof (Lisp_Vector, contents[sizei]);
+  size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, contents, sizei);
   Lisp_Vector *p = (Lisp_Vector *) alloc_lcrecord (sizem, &lrecord_vector);
 
   p->size = sizei;
@@ -1292,7 +1293,7 @@ static Lisp_Bit_Vector *
 make_bit_vector_internal (size_t sizei)
 {
   size_t num_longs = BIT_VECTOR_LONG_STORAGE (sizei);
-  size_t sizem = offsetof (Lisp_Bit_Vector, bits[num_longs]);
+  size_t sizem = FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits, num_longs);
   Lisp_Bit_Vector *p = (Lisp_Bit_Vector *) allocate_lisp_storage (sizem);
   set_lheader_implementation (&p->lheader, &lrecord_bit_vector);
 
@@ -2663,7 +2664,8 @@ sweep_bit_vectors_1 (Lisp_Object *prev,
          total_size += len;
           total_storage +=
            MALLOC_OVERHEAD +
-           offsetof (Lisp_Bit_Vector, bits[BIT_VECTOR_LONG_STORAGE (len)]);
+           FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits,
+                                         BIT_VECTOR_LONG_STORAGE (len));
          num_used++;
          /* #### May modify next on a C_READONLY bitvector */
          prev = &(bit_vector_next (v));
@@ -3140,8 +3142,9 @@ sweep_strings (void)
     UNMARK_RECORD_HEADER (&(p->lheader));      \
     num_bytes += size;                         \
     if (!BIG_STRING_SIZE_P (size))             \
-      { num_small_bytes += size;               \
-      num_small_used++;                                \
+      {                                                \
+       num_small_bytes += size;                \
+        num_small_used++;                      \
       }                                                \
     if (debug)                                 \
       debug_string_purity_print (p);           \
index e3c219e..5485825 100644 (file)
@@ -195,7 +195,6 @@ Lisp_Object QSscratch;          /* "*scratch*" */
 Lisp_Object Qdefault_directory;
 
 Lisp_Object Qkill_buffer_hook;
-Lisp_Object Qrecord_buffer_hook;
 
 Lisp_Object Qrename_auto_save_file;
 
@@ -1027,12 +1026,6 @@ This does not change the name of the visited file (if any).
   /* The aconses in the Vbuffer_alist are shared with frame->buffer_alist,
      so this will change it in the per-frame ordering as well. */
   Fsetcar (Frassq (buf, Vbuffer_alist), newname);
-  /* If the buffer is the selected one then this is equivalent to
-     recording the buffer. */
-  if (EQ (Fwindow_buffer (Fselected_window (Qnil)), buf))
-    {
-      va_run_hook_with_args (Qrecord_buffer_hook, 1, buf);
-    }
 
   if (NILP (current_buffer->filename)
       && !NILP (current_buffer->auto_save_file_name))
@@ -1420,8 +1413,6 @@ buffer.  See `other-buffer' for more information.
   XCDR (lynk) = f->buffer_alist;
   f->buffer_alist = lynk;
 
-  va_run_hook_with_args (Qrecord_buffer_hook, 1, buffer);
-
   return Qnil;
 }
 
@@ -2162,7 +2153,6 @@ syms_of_buffer (void)
   defsymbol (&Qmode_class, "mode-class");
   defsymbol (&Qrename_auto_save_file, "rename-auto-save-file");
   defsymbol (&Qkill_buffer_hook, "kill-buffer-hook");
-  defsymbol (&Qrecord_buffer_hook, "record-buffer-hook");
   defsymbol (&Qpermanent_local, "permanent-local");
 
   defsymbol (&Qfirst_change_hook, "first-change-hook");
index 7c4b0ec..879aa23 100644 (file)
@@ -198,7 +198,7 @@ struct buffer
   int modtime;
 
   /* the value of text->modiff at the last auto-save.  */
-  int auto_save_modified;
+  long auto_save_modified;
 
   /* The time at which we detected a failure to auto-save,
      Or -1 if we didn't have a failure.  */
index 08173ff..25bbd0c 100644 (file)
@@ -56,7 +56,7 @@ Lisp_Object Vmark_even_if_inactive;
 Lisp_Object Vmouse_leave_buffer_hook, Qmouse_leave_buffer_hook;
 #endif
 
-Lisp_Object Qlet, QletX, Qsave_excursion;
+Lisp_Object QletX, Qsave_excursion;
 
 Lisp_Object Qread_from_minibuffer;
 Lisp_Object Qread_file_name;
@@ -993,7 +993,6 @@ syms_of_callint (void)
   defsymbol (&Qcommand_debug_status, "command-debug-status");
   defsymbol (&Qenable_recursive_minibuffers, "enable-recursive-minibuffers");
 
-  defsymbol (&Qlet, "let");
   defsymbol (&QletX, "let*");
   defsymbol (&Qsave_excursion, "save-excursion");
 #if 0 /* ill-conceived */
index 5b2dfea..7e44f9e 100644 (file)
@@ -152,7 +152,7 @@ report_fork_error (char *string, Lisp_Object data)
 }
 #endif /* unused */
 
-DEFUN ("call-process-internal", Fcall_process_internal, 1, MANY, 0, /*
+DEFUN ("old-call-process-internal", Fold_call_process_internal, 1, MANY, 0, /*
 Call PROGRAM synchronously in separate process, with coding-system specified.
 Arguments are
  (PROGRAM &optional INFILE BUFFER DISPLAY &rest ARGS).
@@ -906,7 +906,7 @@ set_process_environment (void)
 void
 syms_of_callproc (void)
 {
-  DEFSUBR (Fcall_process_internal);
+  DEFSUBR (Fold_call_process_internal);
   DEFSUBR (Fgetenv);
 }
 
index 9f0048a..fd66608 100644 (file)
@@ -26,6 +26,7 @@ Boston, MA 02111-1307, USA.  */
 #ifndef _SRC_CONFIG_H_
 #define _SRC_CONFIG_H_
 
+
 /* alloca twiddling belongs in one place, not the s&m headers
    AIX requires this to be the first thing in the file.  */
 #undef HAVE_ALLOCA_H
@@ -43,6 +44,32 @@ char *alloca ();
 #endif /* C code */
 
 
+/* Use SMART_INCLUDE to generate #include statements with variable paths.
+
+   #### WARNING: NEVER EVER PUT A SPACE BETWEEN THE ARGUMENTS OF THE
+   `SMART_INCLUDE' MACRO: when the simple (direct version) is defined, you
+   would end up with a space in your header filename.
+
+   Since the effect of macro expansion in #include statements is underspecified
+   in the C standard, and rarely used in source code, different compilers need
+   different implementations of SMART_INCLUDE (e.g. gcc 2.5.8 and AIX xlc).
+*/
+#undef SMART_INCLUDE_INDIRECTIONS
+
+#if SMART_INCLUDE_INDIRECTIONS == 0
+# define SMART_INCLUDE(path,file) <path/file>
+#elif SMART_INCLUDE_INDIRECTIONS == 1
+# define GLUE_INCLUDE(path,file) <##path##/##file##>
+# define SMART_INCLUDE(path,file) GLUE_INCLUDE(path,file)
+#elif SMART_INCLUDE_INDIRECTIONS == 2
+# define GLUE_INCLUDE_2(path,file) <##path##/##file##>
+# define GLUE_INCLUDE_1(path,file) GLUE_INCLUDE_2(path,file)
+# define SMART_INCLUDE(path,file) GLUE_INCLUDE_1(path,file)
+#else
+# error SMART_INCLUDE_INDIRECTIONS was not properly defined by configure
+#endif
+
+
 /* Use this to add code in a structured way to FSF-maintained source
    files so as to make it obvious where XEmacs changes are. */
 #define XEMACS 1
@@ -377,7 +404,7 @@ char *alloca ();
 /* Compile in support for Berkeley DB style databases?  May require libdb. */
 #undef HAVE_BERKELEY_DB
 /* Full #include file path for Berkeley DB's db.h */
-#undef DB_H_PATH
+#undef DB_H_FILE
 
 /* Do we have either DBM or Berkeley DB database support? */
 #undef HAVE_DATABASE
@@ -397,6 +424,12 @@ char *alloca ();
  */
 #undef HAVE_POSTGRESQL
 #undef HAVE_POSTGRESQLV7
+#undef POSTGRES_H_PATH
+#if defined POSTGRES_H_PATH
+# define POSTGRES_INCLUDE(file) SMART_INCLUDE (POSTGRES_H_PATH,file)
+#else
+# define POSTGRES_INCLUDE(file) <file>
+#endif
 
 /* Do you have the Xauth library present?  This will add some extra
    functionality to gnuserv. */
@@ -408,8 +441,8 @@ char *alloca ();
 /* Compile in support for ncurses?  */
 #undef HAVE_NCURSES
 /* Full #include file paths for ncurses' curses.h and term.h. */
-#undef CURSES_H_PATH
-#undef TERM_H_PATH
+#undef CURSES_H_FILE
+#undef TERM_H_FILE
 
 /* Define USE_ASSERTIONS if you want the abort() to be changed to assert().
    If the assertion fails, assert_failed() will be called.  This is
@@ -460,6 +493,10 @@ char *alloca ();
    debugging the byte compiler.  */
 #undef ERROR_CHECK_BYTE_CODE
 
+/* Minor sanity checking of glyphs, especially subwindows and
+   widgets. */
+#undef ERROR_CHECK_GLYPHS
+
 /* Define DEBUG_XEMACS if you want extra debugging code compiled in.
    This is mainly intended for use by developers. */
 #undef DEBUG_XEMACS
@@ -539,10 +576,14 @@ char *alloca ();
 /* Enable special GNU Make features in the Makefiles. */
 #undef USE_GNU_MAKE
 
-/* Debugging option: Don't automatically rebuild the DOC file.
-   This saves a lot of time when you're repeatedly
-   compiling-running-crashing. */
-#undef NO_DOC_FILE
+/* Debugging development option: Remove inessential but time consuming
+   actions from happening during build.  This saves a lot of time when
+   you're repeatedly compiling-running-crashing.  This (1) doesn't
+   garbage-collect after loading each file during dumping, and (2)
+   doesn't automatically rebuild the DOC file. (Remove it by hand to
+   get it rebuilt.)
+ */
+#undef QUICK_BUILD
 
 /* Defined by AC_C_CONST in configure.in */
 #undef const
@@ -621,7 +662,7 @@ extern "C" {
    "SUNWaudmo" package.) */
 #undef HAVE_NATIVE_SOUND
 /* Native sound may be provided via soundcard.h, in various directories */
-#undef SOUNDCARD_H_PATH
+#undef SOUNDCARD_H_FILE
 
 /* Compile in support for NAS (Network Audio System)?
    NAS_NO_ERROR_JUMP means that the NAS libraries don't include some
@@ -638,7 +679,7 @@ extern "C" {
 /* Compile in support for Tooltalk? */
 #undef TOOLTALK
 /* tt_c.h might be in "Tt" or "desktop" subdirectories */
-#undef TT_C_H_PATH
+#undef TT_C_H_FILE
 
 /* Toolkits used by lwlib for various widgets... */
 #undef LWLIB_USES_MOTIF
index 1aad49f..b5c3573 100644 (file)
@@ -182,7 +182,7 @@ struct mswindows_frame
   unsigned int menu_checksum;
 
   /* Widget glyphs attached to this frame. See glyphs-msw.c */
-  Lisp_Object widget_hash_table;
+  Lisp_Object widget_hash_table1, widget_hash_table2, widget_hash_table3;
 
   /* Frame title hash value. See frame-msw.c */
   unsigned int title_checksum;
@@ -212,8 +212,12 @@ struct mswindows_frame
 #define FRAME_MSWINDOWS_MENU_HASH_TABLE(f) (FRAME_MSWINDOWS_DATA (f)->menu_hash_table)
 #define FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE(f) \
  (FRAME_MSWINDOWS_DATA (f)->toolbar_hash_table)
-#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE(f) \
- (FRAME_MSWINDOWS_DATA (f)->widget_hash_table)
+#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE1(f) \
+ (FRAME_MSWINDOWS_DATA (f)->widget_hash_table1)
+#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE2(f) \
+ (FRAME_MSWINDOWS_DATA (f)->widget_hash_table2)
+#define FRAME_MSWINDOWS_WIDGET_HASH_TABLE3(f) \
+ (FRAME_MSWINDOWS_DATA (f)->widget_hash_table3)
 #define FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos) \
  (FRAME_MSWINDOWS_DATA (f)->toolbar_checksum[pos])
 #define FRAME_MSWINDOWS_MENU_CHECKSUM(f)  (FRAME_MSWINDOWS_DATA (f)->menu_checksum)
@@ -297,6 +301,7 @@ HDDEDATA CALLBACK mswindows_dde_callback (UINT uType, UINT uFmt, HCONV hconv,
                                          HDDEDATA hdata,
                                          DWORD dwData1, DWORD dwData2);
 
+void mswindows_enqueue_dispatch_event (Lisp_Object event);
 void mswindows_enqueue_misc_user_event (Lisp_Object channel,
                                        Lisp_Object function,
                                        Lisp_Object object);
index 9ebfbf3..34bd768 100644 (file)
@@ -118,11 +118,11 @@ tty_init_console (struct console *con, Lisp_Object props)
 #ifdef FILE_CODING
   tty_con->instream =
     make_decoding_input_stream (XLSTREAM (tty_con->instream),
-                               Fget_coding_system (Vkeyboard_coding_system));
+                               Fget_coding_system (Qkeyboard));
   Lstream_set_character_mode (XLSTREAM (tty_con->instream));
   tty_con->outstream =
     make_encoding_output_stream (XLSTREAM (tty_con->outstream),
-                                Fget_coding_system (Vterminal_coding_system));
+                                Fget_coding_system (Qterminal));
 #endif /* FILE_CODING */
   tty_con->terminal_type = terminal_type;
   tty_con->controlling_process = controlling_process;
@@ -253,7 +253,7 @@ CODESYS defaults to the value of `keyboard-coding-system'.
 {
   set_decoding_stream_coding_system
     (XLSTREAM (CONSOLE_TTY_DATA (decode_tty_console (console))->instream),
-     Fget_coding_system (NILP (codesys) ? Vkeyboard_coding_system : codesys));
+     Fget_coding_system (NILP (codesys) ? Qkeyboard : codesys));
   return Qnil;
 }
 
@@ -277,7 +277,7 @@ CODESYS defaults to the value of `terminal-coding-system'.
 {
   set_encoding_stream_coding_system
     (XLSTREAM (CONSOLE_TTY_DATA (decode_tty_console (console))->outstream),
-     Fget_coding_system (NILP (codesys) ? Vterminal_coding_system : codesys));
+     Fget_coding_system (NILP (codesys) ? Qterminal : codesys));
   /* Redraw tty */
   face_property_was_changed (Vdefault_face, Qfont, Qtty);
   return Qnil;
index 09e9c9d..684e703 100644 (file)
@@ -770,7 +770,7 @@ ARRAY may be a vector, bit vector, or string.  INDEX starts at 0.
     {
       CHECK_CHAR_COERCE_INT (newval);
       if (idx >= XSTRING_CHAR_LENGTH (array)) goto range_error;
-      set_string_char (XSTRING (array), idx, XCHAR (newval));
+      set_string_char (XSTRING (array), idx, (unsigned char) XCHAR (newval));
       bump_string_modiff (array);
     }
   else
index 0b73c47..e7750b6 100644 (file)
@@ -53,7 +53,7 @@ typedef uint64_t u_int64_t;
 #endif /* WE_DONT_NEED_QUADS */
 #endif /* HAVE_INTTYPES_H */
 #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >= 1) */
-#include DB_H_PATH              /* Berkeley db's header file */
+#include DB_H_FILE              /* Berkeley db's header file */
 #ifndef DB_VERSION_MAJOR
 # define DB_VERSION_MAJOR 1
 #endif /* DB_VERSION_MAJOR */
index 286957d..9accaa4 100644 (file)
@@ -8,13 +8,13 @@ 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 redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.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 objects-msw.h objects.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 select.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.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 menubar.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h select.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
 glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
-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
+gui-msw.o: $(LISP_H) buffer.h bufslots.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 mule-charset.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 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
@@ -25,14 +25,14 @@ toolbar-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h
 #ifdef HAVE_X_WINDOWS
 balloon-x.o: $(LISP_H) balloon_help.h conslots.h console-x.h console.h device.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h xintrinsic.h
 console-x.o: $(LISP_H) conslots.h console-x.h console.h lisp-disunion.h lisp-union.h lrecord.h process.h redisplay.h symeval.h symsinit.h xintrinsic.h
-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
+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 sysdll.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
+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 gutter.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 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
+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 keymap.h lisp-disunion.h lisp-union.h lrecord.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 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 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 EmacsFrame.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
@@ -62,7 +62,7 @@ EmacsManager.o: EmacsManager.h EmacsManagerP.h config.h xintrinsicp.h xmmanagerp
 EmacsShell-sub.o: EmacsShell.h EmacsShellP.h config.h xintrinsic.h xintrinsicp.h
 EmacsShell.o: EmacsShell.h ExternalShell.h config.h xintrinsicp.h
 abbrev.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h insdel.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h symeval.h symsinit.h syntax.h window.h winslots.h
-alloc.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h chartab.h conslots.h console-stream.h console.h device.h elhash.h events.h extents.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 sysfile.h systime.h toolbar.h window.h winslots.h
+alloc.o: $(LISP_H) alloc.h backtrace.h buffer.h bufslots.h bytecode.h chartab.h conslots.h console-stream.h console.h device.h dumper.h elhash.h events.h extents.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 sysdep.h sysfile.h systime.h toolbar.h window.h winslots.h
 alloca.o: config.h
 balloon_help.o: balloon_help.h config.h xintrinsic.h
 blocktype.o: $(LISP_H) blocktype.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
@@ -89,21 +89,22 @@ dired.o: $(LISP_H) buffer.h bufslots.h commands.h elhash.h lisp-disunion.h lisp-
 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
 dragdrop.o: $(LISP_H) dragdrop.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
+dumper.o: $(LISP_H) alloc.h conslots.h console-stream.h console.h dump-id.h dumper.h elhash.h lisp-disunion.h lisp-union.h lrecord.h specifier.h symeval.h symsinit.h sysfile.h
 dynarr.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 ecrt0.o: config.h
 editfns.o: $(LISP_H) buffer.h bufslots.h chartab.h commands.h conslots.h console.h device.h events.h extents.h frame.h frameslots.h glyphs.h gui.h insdel.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h syspwd.h systime.h toolbar.h window.h winslots.h
 eldap.o: $(LISP_H) buffer.h bufslots.h eldap.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h symeval.h symsinit.h sysdep.h
 elhash.o: $(LISP_H) bytecode.h elhash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
-emacs.o: $(LISP_H) backtrace.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 paths.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h toolbar.h
+emacs.o: $(LISP_H) backtrace.h buffer.h bufslots.h commands.h conslots.h console.h device.h dump-id.h dumper.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h paths.h process.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdll.h sysfile.h syssignal.h systime.h systty.h toolbar.h
 emodules.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h emodules.h file-coding.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 sysdep.h sysdll.h toolbar.h window.h winslots.h
 esd.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h
 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 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-Xt.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h Emacs.ad.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) blocktype.h buffer.h bufslots.h commands.h conslots.h console.h device.h elhash.h events-mod.h events.h file-coding.h frame.h frameslots.h glyphs.h gui.h insdel.h keymap.h lisp-disunion.h lisp-union.h lrecord.h lstream.h macros.h menubar.h mule-charset.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
 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 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
+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 gutter.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
 faces.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h elhash.h extents.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
 file-coding.o: $(LISP_H) buffer.h bufslots.h chartab.h elhash.h file-coding.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-ccl.h mule-charset.h opaque.h symeval.h symsinit.h
 fileio.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 insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h ndir.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysdir.h sysfile.h sysproc.h syspwd.h systime.h toolbar.h window.h winslots.h
@@ -123,41 +124,42 @@ glyphs-widget.o: $(LISP_H) buffer.h bufslots.h bytecode.h conslots.h console.h d
 glyphs.o: $(LISP_H) blocktype.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) commands.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 lstream.h mule-charset.h process.h symeval.h symsinit.h sysdep.h sysproc.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
+gui.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.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
+hpplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.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
+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 postgresql.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 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
 libsst.o: $(LISP_H) libsst.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 line-number.o: $(LISP_H) buffer.h bufslots.h line-number.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
-linuxplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h sysfile.h syssignal.h
+linuxplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h nativesound.h symeval.h symsinit.h sysfile.h syssignal.h
 lread.o: $(LISP_H) buffer.h bufslots.h bytecode.h elhash.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h opaque.h symeval.h symsinit.h sysfile.h sysfloat.h
 lstream.o: $(LISP_H) buffer.h bufslots.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.h sysfile.h
 macros.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 keymap.h lisp-disunion.h lisp-union.h lrecord.h macros.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 malloc.o: config.h getpagesize.h
 marker.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
 md5.o: $(LISP_H) buffer.h bufslots.h file-coding.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h symeval.h symsinit.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
+menubar.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h frameslots.h glyphs.h gui.h keymap.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
 miscplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h miscplay.h symeval.h symsinit.h sysfile.h syssignal.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 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) 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
+ntplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.h symeval.h symsinit.h sysfile.h
+ntproc.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.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 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
+postgresql.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h postgresql.h symeval.h symsinit.h sysdep.h
+print.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h conslots.h console-msw.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) conslots.h console-msw.h console.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
 profile.o: $(LISP_H) backtrace.h bytecode.h elhash.h hash.h lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h syssignal.h systime.h
@@ -174,14 +176,14 @@ select.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h device.h frame.h fr
 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 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
+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 nativesound.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
 strcmp.o: config.h
 strcpy.o: config.h
 strftime.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 sunOS-fix.o: config.h
-sunplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h sysdep.h syssignal.h
+sunplay.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h nativesound.h symeval.h symsinit.h sysdep.h syssignal.h
 sunpro.o: $(LISP_H) lisp-disunion.h lisp-union.h lrecord.h symeval.h symsinit.h
 symbols.o: $(LISP_H) buffer.h bufslots.h conslots.h console.h elhash.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h
 syntax.o: $(LISP_H) buffer.h bufslots.h chartab.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h symeval.h symsinit.h syntax.h
index bd57d0d..3d1acc3 100644 (file)
@@ -51,10 +51,14 @@ maybe_run_dbox_text_callback (LWLIB_ID id)
       Lisp_Object text_field_callback;
       char *text_field_value = wv->value;
       VOID_TO_LISP (text_field_callback, wv->call_data);
+      text_field_callback = XCAR (XCDR (text_field_callback));
       if (text_field_value)
        {
-         void *tmp = LISP_TO_VOID (list2 (text_field_callback,
-                                           build_string (text_field_value)));
+         void *tmp =
+           LISP_TO_VOID (cons3 (Qnil,
+                                list2 (text_field_callback,
+                                       build_string (text_field_value)),
+                                Qnil));
          popup_selection_callback (0, id, (XtPointer) tmp);
        }
     }
@@ -166,7 +170,8 @@ dbox_descriptor_to_widget_value (Lisp_Object desc)
       wv = xmalloc_widget_value ();
 
       gui_item = gui_parse_item_keywords (button);
-      if (!button_item_to_widget_value (gui_item, wv, allow_text_p, 1))
+      if (!button_item_to_widget_value (Qdialog,
+                                       gui_item, wv, allow_text_p, 1, 0))
        {
          free_widget_value_tree (wv);
          continue;
index 1bb3172..0f42642 100644 (file)
@@ -30,9 +30,15 @@ Boston, MA 02111-1307, USA.  */
 #include "console-stream.h"
 #include "dumper.h"
 
+#ifdef WINDOWSNT
+#define WINDOWS_LEAN_AND_MEAN
+#include <windows.h>
+#define PATH_MAX MAXPATHLEN
+#else
 #ifdef HAVE_MMAP
 #include <sys/mman.h>
 #endif
+#endif
 
 #ifndef SEPCHAR
 #define SEPCHAR ':'
@@ -100,6 +106,14 @@ typedef struct
 
 char *pdump_start, *pdump_end;
 static size_t pdump_length;
+
+#ifdef WINDOWSNT
+// Handle for the dump file
+HANDLE pdump_hFile = INVALID_HANDLE_VALUE;
+// Handle for the file mapping object for the dump file
+HANDLE pdump_hMap = INVALID_HANDLE_VALUE;
+#endif
+
 void (*pdump_free) (void);
 
 static const unsigned char align_table[256] =
@@ -1097,36 +1111,38 @@ static int pdump_load_finish (void)
 }
 
 #ifdef WINDOWSNT
+/* Free the mapped file if we decide we don't want it after all */
 static void pdump_file_unmap(void)
 {
+  UnmapViewOfFile (pdump_start);
+  CloseHandle (pdump_hFile);
+  CloseHandle (pdump_hMap);
 }
 
 static int pdump_file_get(const char *path)
 {
-  HANDLE hFile;
-  HANDLE hMap;
-
-  hFile = CreateFile (path, 
-                     GENERIC_READ + GENERIC_WRITE,  /* Required for copy on write */
-                     0,                    /* Not shared */
-                     NULL,                 /* Not inheritable */
-                     OPEN_EXISTING, 
-                     FILE_ATTRIBUTE_NORMAL,
-                     NULL);                /* No template file */
-  if (hFile == INVALID_HANDLE_VALUE)
+
+  pdump_hFile = CreateFile (path, 
+                           GENERIC_READ + GENERIC_WRITE,  /* Required for copy on write */
+                           0,                      /* Not shared */
+                           NULL,                   /* Not inheritable */
+                           OPEN_EXISTING, 
+                           FILE_ATTRIBUTE_NORMAL,
+                           NULL);                  /* No template file */
+  if (pdump_hFile == INVALID_HANDLE_VALUE)
     return 0;
 
-  pdump_length = GetFileSize (hFile, NULL);
-  hMap = CreateFileMapping (hFile,
-                           NULL,                   /* No security attributes */
-                           PAGE_WRITECOPY,   /* Copy on write */
-                           0,              /* Max size, high half */
-                           0,              /* Max size, low half */
-                           NULL);          /* Unnamed */
-  if (hMap == INVALID_HANDLE_VALUE)
+  pdump_length = GetFileSize (pdump_hFile, NULL);
+  pdump_hMap = CreateFileMapping (pdump_hFile,
+                                 NULL,             /* No security attributes */
+                                 PAGE_WRITECOPY,   /* Copy on write */
+                                 0,                /* Max size, high half */
+                                 0,                /* Max size, low half */
+                                 NULL);            /* Unnamed */
+  if (pdump_hMap == INVALID_HANDLE_VALUE)
     return 0;
 
-  pdump_start = MapViewOfFile (hMap,
+  pdump_start = MapViewOfFile (pdump_hMap,
                               FILE_MAP_COPY,  /* Copy on write */
                               0,             /* Start at zero */
                               0,
@@ -1135,7 +1151,15 @@ static int pdump_file_get(const char *path)
   return 1;
 }
 
+/* pdump_resource_free is called (via the pdump_free pointer) to release
+   any resources allocated by pdump_resource_get.  Since the Windows API
+   specs specifically state that you don't need to (and shouldn't) free the
+   resources allocated by FindResource, LoadResource, and LockResource this
+   routine does nothing.  */
 static void pdump_resource_free (void)
+{
+}
+
 static int pdump_resource_get (void)
 {
   HRSRC hRes;        /* Handle to dump resource */
@@ -1268,10 +1292,10 @@ static int pdump_file_try(char *exe_path)
 int pdump_load(const char *argv0)
 {
   char exe_path[PATH_MAX];
-  char *w;
 #ifdef WINDOWSNT
-  GetModuleFileName (NULL, exe_name, PATH_MAX);  
+  GetModuleFileName (NULL, exe_path, PATH_MAX);  
 #else /* !WINDOWSNT */
+  char *w;
   const char *dir, *p;
 
   dir = argv0;
index 60258af..fe1d119 100644 (file)
@@ -67,7 +67,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #ifdef TOOLTALK
-#include TT_C_H_PATH
+#include TT_C_H_FILE
 #endif
 
 #if defined (WINDOWSNT)
@@ -2988,6 +2988,8 @@ typecheck - check types strictly, aborting in case of error;
 malloc         - check operation of malloc;
 gc             - check garbage collection;
 bufpos         - check buffer positions.
+
+quick-build     - user has requested the "quick-build" configure option.
 */ );
   Vinternal_error_checking = Qnil;
 #ifdef ERROR_CHECK_EXTENTS
@@ -3010,6 +3012,10 @@ bufpos           - check buffer positions.
   Vinternal_error_checking = Fcons (intern ("bufpos"),
                                    Vinternal_error_checking);
 #endif
+#ifdef QUICK_BUILD
+  Vinternal_error_checking = Fcons (intern ("quick-build"),
+                                   Vinternal_error_checking);
+#endif
 
   DEFVAR_CONST_LISP ("mail-lock-methods", &Vmail_lock_methods /*
 Mail spool locking methods supported by this instance of XEmacs.
index 4e9cbc4..803d96a 100644 (file)
@@ -4641,13 +4641,13 @@ unbind_to_hairy (int count)
 {
   int quitf;
 
+  ++specpdl_ptr;
+  ++specpdl_depth_counter;
+
   check_quit (); /* make Vquit_flag accurate */
   quitf = !NILP (Vquit_flag);
   Vquit_flag = Qnil;
 
-  ++specpdl_ptr;
-  ++specpdl_depth_counter;
-
   while (specpdl_depth_counter != count)
     {
       --specpdl_ptr;
index f984949..154e5f0 100644 (file)
@@ -67,7 +67,6 @@ Boston, MA 02111-1307, USA.  */
 
 #include "events-mod.h"
 
-static void enqueue_Xt_dispatch_event (Lisp_Object event);
 static void handle_focus_event_1 (struct frame *f, int in_p);
 
 static struct event_stream *Xt_event_stream;
@@ -1491,7 +1490,6 @@ handle_focus_event_1 (struct frame *f, int in_p)
 #ifdef HAVE_XIM
   XIM_focus_event (f, in_p);
 #endif /* HAVE_XIM */
-
   /* On focus change, clear all memory of sticky modifiers
      to avoid non-intuitive behavior. */
   clear_sticky_modifiers (XDEVICE (FRAME_DEVICE (f)));
@@ -1847,8 +1845,8 @@ emacs_Xt_handle_magic_event (Lisp_Event *emacs_event)
       break;
 
     case CreateNotify:
-      printf ("window created\n");
       break;
+
     default:
       break;
     }
@@ -2513,7 +2511,7 @@ describe_event (XEvent *event)
 
 static Lisp_Object dispatch_event_queue, dispatch_event_queue_tail;
 
-static void
+void
 enqueue_Xt_dispatch_event (Lisp_Object event)
 {
   enqueue_event (event, &dispatch_event_queue, &dispatch_event_queue_tail);
@@ -3079,6 +3077,42 @@ static void EmacsFreePixel (
 
 \f
 /************************************************************************/
+/*            handle focus changes for native widgets                  */
+/************************************************************************/
+static void
+emacs_Xt_event_widget_focus_in (Widget   w,
+                               XEvent   *event,
+                               String   *params,
+                               Cardinal *num_params)
+{
+  struct frame* f =
+    x_any_widget_or_parent_to_frame (get_device_from_display (event->xany.display), w);
+
+  XtSetKeyboardFocus (FRAME_X_SHELL_WIDGET (f), w);
+}
+
+static void
+emacs_Xt_event_widget_focus_out (Widget   w,
+                                XEvent   *event,
+                                String   *params,
+                                Cardinal *num_params)
+{
+}
+
+static XtActionsRec widgetActionsList[] =
+{
+  {"widget-focus-in",  emacs_Xt_event_widget_focus_in  },
+  {"widget-focus-out", emacs_Xt_event_widget_focus_out },
+};
+
+static void
+emacs_Xt_event_add_widget_actions (XtAppContext ctx)
+{
+  XtAppAddActions (ctx, widgetActionsList, 2);
+}
+
+\f
+/************************************************************************/
 /*                            initialization                            */
 /************************************************************************/
 
@@ -3214,6 +3248,8 @@ init_event_Xt_late (void) /* called when already initialized */
                         NULL, 0,
                         XtCacheByDisplay, EmacsFreeXIMStyles);
 #endif /* XIM_XLIB */
+  /* Add extra actions to native widgets to handle focus and friends. */
+  emacs_Xt_event_add_widget_actions (Xt_app_con);
 
   /* insert the visual inheritance patch/hack described above */
   orig_shell_init_proc = shellClassRec.core_class.initialize;
index 681743e..a949be8 100644 (file)
@@ -870,7 +870,7 @@ mswindows_user_event_p (Lisp_Event* sevt)
 /*
  * Add an emacs event to the proper dispatch queue
  */
-static void
+void
 mswindows_enqueue_dispatch_event (Lisp_Object event)
 {
   int user_p = mswindows_user_event_p (XEVENT(event));
@@ -1472,9 +1472,21 @@ mswindows_need_event (int badly_p)
              mswindows_waitable_handles [ix] =
                mswindows_waitable_handles [--mswindows_waitable_count];
              kick_status_notify ();
-             /* Have to return something: there may be no accompanying
-                process event */
-             mswindows_enqueue_magic_event (NULL, XM_BUMPQUEUE);
+             /* We need to return a process event here so that
+                (1) accept-process-output will return when called on this
+                process, and (2) status notifications will happen in
+                accept-process-output, sleep-for, and sit-for. */
+             /* #### horrible kludge till my real process fixes go in.
+              */
+             if (!NILP (Vprocess_list))
+               {
+                 Lisp_Object vaffanculo = XCAR (Vprocess_list);
+                 mswindows_enqueue_process_event (XPROCESS (vaffanculo));
+               }
+             else /* trash me soon. */
+               /* Have to return something: there may be no accompanying
+                  process event */
+               mswindows_enqueue_magic_event (NULL, XM_BUMPQUEUE);
            }
        }
 #endif
index 4b67a2e..e2b46bb 100644 (file)
@@ -4117,10 +4117,10 @@ Magic events are handled as necessary.
               be done without an undo boundary.  This counter is reset as
               soon as a command other than self-insert-command is executed.
 
-              Programmers can also use the `self-insert-undo-magic'
+              Programmers can also use the `self-insert-defer-undo'
               property to install that behaviour on functions other
               than `self-insert-command', or to change the magic
-              number 20 to something else.  */
+              number 20 to something else.  #### DOCUMENT THIS!  */
 
            if (SYMBOLP (leaf))
              {
index 6900786..5fd8ad5 100644 (file)
@@ -465,6 +465,10 @@ Lisp_Object Vdefault_text_properties;
 EXFUN (Fextent_properties, 1);
 EXFUN (Fset_extent_property, 3);
 
+/* if true, we don't want to set any redisplay flags on modeline extent
+   changes */
+int in_modeline_generation;
+
 \f
 /************************************************************************/
 /*                       Generalized gap array                          */
@@ -1612,7 +1616,8 @@ extent_changed_for_redisplay (EXTENT extent, int descendants_too,
        when we need it. (b) we don't have to update the gutters when
        only extents attached to buffers have changed. */
 
-      MARK_EXTENTS_CHANGED;
+      if (!in_modeline_generation)
+       MARK_EXTENTS_CHANGED;
       gutter_extent_signal_changed_region_maybe (object,
                                                 extent_endpoint_bufpos (extent, 0),
                                                 extent_endpoint_bufpos (extent, 1));
index 0f70381..d8afb56 100644 (file)
@@ -318,6 +318,7 @@ EXFUN (Fset_extent_endpoints, 4);
 EXFUN (Fset_extent_parent, 2);
 
 extern int inside_undo;
+extern int in_modeline_generation;
 
 struct extent_fragment *extent_fragment_new (Lisp_Object buffer_or_string,
                                             struct frame *frm);
index 17a694d..0d5f503 100644 (file)
@@ -2030,6 +2030,8 @@ complex_vars_of_faces (void)
   Vwidget_face = Fmake_face (Qwidget,
                             build_string ("widget face"),
                             Qnil);
+  set_specifier_fallback (Fget (Vwidget_face, Qfont, Qunbound),
+                         Fget (Vgui_element_face, Qfont, Qunbound));
   set_specifier_fallback (Fget (Vwidget_face, Qforeground, Qunbound),
                          Fget (Vgui_element_face, Qforeground, Qunbound));
   set_specifier_fallback (Fget (Vwidget_face, Qbackground, Qunbound),
index b9e2fdd..8c54aaf 100644 (file)
@@ -1071,6 +1071,7 @@ Return the coding-system symbol for which symbol ALIAS is an alias.
     return aliasee;
   else
     signal_simple_error ("Symbol is not a coding system alias", alias);
+  return Qnil;         /* To keep the compiler happy */
 }
 
 static Lisp_Object
index b31766d..44df999 100644 (file)
@@ -34,14 +34,14 @@ Lisp_Object Qask_user_about_supersession_threat;
 Lisp_Object Qask_user_about_lock;
 
 #ifdef CLASH_DETECTION
-  
+
 /* The strategy: to lock a file FN, create a symlink .#FN in FN's
    directory, with link data `user@host.pid'.  This avoids a single
    mount (== failure) point for lock files.
 
    When the host in the lock data is the current host, we can check if
    the pid is valid with kill.
-   
+
    Otherwise, we could look at a separate file that maps hostnames to
    reboot times to see if the remote pid can possibly be valid, since we
    don't want Emacs to have to communicate via pipes or sockets or
@@ -63,13 +63,16 @@ Lisp_Object Qask_user_about_lock;
    Similarly, we don't worry about a possible 14-character limit on
    file names, because those are all the same systems that don't have
    symlinks.
-   
+
    This is compatible with the locking scheme used by Interleaf (which
    has contributed this implementation for Emacs), and was designed by
    Ethan Jacobson, Kimbo Mundy, and others.
-   
+
    --karl@cs.umb.edu/karl@hq.ileaf.com.  */
 
+/* Note that muleization is provided by using mule-encapsulated
+   versions of the system calls we use like symlink(), unlink(), etc... */
+
 \f
 /* Here is the structure that stores information about a lock.  */
 
@@ -90,27 +93,27 @@ typedef struct
 /* Write the name of the lock file for FN into LFNAME.  Length will be
    that of FN plus two more for the leading `.#' plus one for the null.  */
 #define MAKE_LOCK_NAME(lock, file) \
-  (lock = (char *) alloca (XSTRING_LENGTH(file) + 2 + 1), \
-   fill_in_lock_file_name (lock, (file)))
+  (lock = (char *) alloca (XSTRING_LENGTH (file) + 2 + 1), \
+   fill_in_lock_file_name ((Bufbyte *) (lock), (file)))
 
 static void
-fill_in_lock_file_name (lockfile, fn)
-     register char *lockfile;
-     register Lisp_Object fn;
+fill_in_lock_file_name (Bufbyte *lockfile, Lisp_Object fn)
 {
-  register char *p;
-
-  strcpy (lockfile, XSTRING_DATA(fn));
-
-  /* Shift the nondirectory part of the file name (including the null)
-     right two characters.  Here is one of the places where we'd have to
-     do something to support 14-character-max file names.  */
-  for (p = lockfile + strlen (lockfile); p != lockfile && *p != '/'; p--)
-    p[2] = *p;
-
-  /* Insert the `.#'.  */
-  p[1] = '.';
-  p[2] = '#';
+  Bufbyte *file_name = XSTRING_DATA (fn);
+  Bufbyte *p;
+  size_t dirlen;
+
+  for (p = file_name + XSTRING_LENGTH (fn) - 1;
+       p > file_name && !IS_ANY_SEP (p[-1]);
+       p--)
+    ;
+  dirlen = p - file_name;
+
+  memcpy (lockfile, file_name, dirlen);
+  p = lockfile + dirlen;
+  *(p++) = '.';
+  *(p++) = '#';
+  memcpy (p, file_name + dirlen, XSTRING_LENGTH (fn) - dirlen + 1);
 }
 
 /* Lock the lock file named LFNAME.
@@ -118,21 +121,21 @@ fill_in_lock_file_name (lockfile, fn)
    Return 1 if successful, 0 if not.  */
 
 static int
-lock_file_1 (char *lfname,int force)
+lock_file_1 (char *lfname, int force)
 {
-  register int err;
-  char *user_name;
-  char *host_name;
+  int err;
   char *lock_info_str;
+  char *host_name;
+  char *user_name = user_login_name (NULL);
 
-  if (STRINGP (Fuser_login_name (Qnil)))
-    user_name = (char *) XSTRING_DATA (Fuser_login_name (Qnil));
-  else
+  if (user_name == NULL)
     user_name = "";
-  if (STRINGP (Fsystem_name ()))
-    host_name = (char *) XSTRING_DATA (Fsystem_name ());
+
+  if (STRINGP (Vsystem_name))
+    host_name = (char *) XSTRING_DATA (Vsystem_name);
   else
     host_name = "";
+
   lock_info_str = (char *)alloca (strlen (user_name) + strlen (host_name)
                          + LOCK_PID_MAX + 5);
 
@@ -140,7 +143,7 @@ lock_file_1 (char *lfname,int force)
            (unsigned long) getpid ());
 
   err = symlink (lock_info_str, lfname);
-  if (errno == EEXIST && force)
+  if (err != 0 && errno == EEXIST && force)
     {
       unlink (lfname);
       err = symlink (lock_info_str, lfname);
@@ -157,7 +160,7 @@ lock_file_1 (char *lfname,int force)
 static int
 current_lock_owner (lock_info_type *owner, char *lfname)
 {
-  int o, p, len, ret;
+  int len, ret;
   int local_owner = 0;
   char *at, *dot;
   char *lfinfo = 0;
@@ -171,7 +174,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
       len = readlink (lfname, lfinfo, bufsize);
     }
   while (len >= bufsize);
-  
+
   /* If nonexistent lock file, all is well; otherwise, got strange error. */
   if (len == -1)
     {
@@ -181,7 +184,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
 
   /* Link info exists, so `len' is its length.  Null terminate.  */
   lfinfo[len] = 0;
-  
+
   /* Even if the caller doesn't want the owner info, we still have to
      read it to determine return value, so allocate it.  */
   if (!owner)
@@ -189,7 +192,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
       owner = (lock_info_type *) alloca (sizeof (lock_info_type));
       local_owner = 1;
     }
-  
+
   /* Parse USER@HOST.PID.  If can't parse, return -1.  */
   /* The USER is everything before the first @.  */
   at = strchr (lfinfo, '@');
@@ -202,7 +205,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
   owner->user = (char *) xmalloc (len + 1);
   strncpy (owner->user, lfinfo, len);
   owner->user[len] = 0;
-  
+
   /* The PID is everything after the last `.'.  */
   owner->pid = atoi (dot + 1);
 
@@ -214,10 +217,10 @@ current_lock_owner (lock_info_type *owner, char *lfname)
 
   /* We're done looking at the link info.  */
   xfree (lfinfo);
-  
+
   /* On current host?  */
-  if (STRINGP (Fsystem_name ()) 
-      && strcmp (owner->host, XSTRING_DATA(Fsystem_name ())) == 0)
+  if (STRINGP (Fsystem_name ())
+      && strcmp (owner->host, (char *) XSTRING_DATA (Fsystem_name ())) == 0)
     {
       if (owner->pid == getpid ())
         ret = 2; /* We own it.  */
@@ -236,7 +239,7 @@ current_lock_owner (lock_info_type *owner, char *lfname)
          here's where we'd do it.  */
       ret = 1;
     }
-  
+
   /* Avoid garbage.  */
   if (local_owner || ret <= 0)
     {
@@ -260,7 +263,7 @@ lock_if_free (lock_info_type *clasher, char *lfname)
 
       if (errno != EEXIST)
        return -1;
-      
+
       locker = current_lock_owner (clasher, lfname);
       if (locker == 2)
         {
@@ -299,7 +302,7 @@ lock_file (Lisp_Object fn)
   /* dmoore - and can destroy current_buffer and all sorts of other
      mean nasty things with pointy teeth.  If you call this make sure
      you protect things right. */
-  /* Somebody updated the code in this function and removed the previous 
+  /* Somebody updated the code in this function and removed the previous
      comment.  -slb */
 
   register Lisp_Object attack, orig_fn;
@@ -323,7 +326,7 @@ lock_file (Lisp_Object fn)
        && NILP (Fverify_visited_file_modtime (subject_buf))
        && !NILP (Ffile_exists_p (fn)))
       call1_in_buffer (XBUFFER(subject_buf),
-                       Qask_user_about_supersession_threat, fn);
+                      Qask_user_about_supersession_threat, fn);
   }
 
   /* Try to lock the lock. */
@@ -337,7 +340,7 @@ lock_file (Lisp_Object fn)
   sprintf (locker, "%s@%s (pid %lu)", lock_info.user, lock_info.host,
            lock_info.pid);
   FREE_LOCK_INFO (lock_info);
-  
+
   attack = call2_in_buffer (BUFFERP (subject_buf) ? XBUFFER (subject_buf) :
                            current_buffer, Qask_user_about_lock , fn,
                            build_string (locker));
@@ -356,6 +359,9 @@ void
 unlock_file (Lisp_Object fn)
 {
   register char *lfname;
+  struct gcpro gcpro1;
+
+  GCPRO1 (fn);
 
   fn = Fexpand_file_name (fn, Qnil);
 
@@ -363,28 +369,29 @@ unlock_file (Lisp_Object fn)
 
   if (current_lock_owner (0, lfname) == 2)
     unlink (lfname);
+
+  UNGCPRO;
 }
 
 void
 unlock_all_files (void)
 {
   register Lisp_Object tail;
-  register struct buffer *b;
 
   for (tail = Vbuffer_alist; CONSP (tail); tail = XCDR (tail))
     {
-      b = XBUFFER (XCDR (XCAR (tail)));
+      struct buffer *b = XBUFFER (XCDR (XCAR (tail)));
       if (STRINGP (b->file_truename) && BUF_SAVE_MODIFF (b) < BUF_MODIFF (b))
        unlock_file (b->file_truename);
     }
 }
 \f
 DEFUN ("lock-buffer", Flock_buffer,   0, 1, 0, /*
-  Lock FILE, if current buffer is modified.\n\
-FILE defaults to current buffer's visited file,\n\
+Lock FILE, if current buffer is modified.
+FILE defaults to current buffer's visited file,
 or else nothing is done if current buffer isn't visiting a file.
 */
-  (file))
+       (file))
 {
   if (NILP (file))
     file = current_buffer->file_truename;
@@ -428,15 +435,18 @@ unlock_buffer (struct buffer *buffer)
 }
 
 DEFUN ("file-locked-p", Ffile_locked_p, 0, 1, 0, /*
-  Return nil if the FILENAME is not locked,\n\
+Return nil if the FILENAME is not locked,
 t if it is locked by you, else a string of the name of the locker.
 */
-  (filename)) 
+       (filename))
 {
   Lisp_Object ret;
   register char *lfname;
   int owner;
   lock_info_type locker;
+  struct gcpro gcpro1;
+
+  GCPRO1 (filename);
 
   filename = Fexpand_file_name (filename, Qnil);
 
@@ -453,6 +463,8 @@ t if it is locked by you, else a string of the name of the locker.
   if (owner > 0)
     FREE_LOCK_INFO (locker);
 
+  UNGCPRO;
+
   return ret;
 }
 
index b81dafe..d22368e 100644 (file)
--- a/src/fns.c
+++ b/src/fns.c
@@ -115,8 +115,8 @@ static size_t
 size_bit_vector (const void *lheader)
 {
   Lisp_Bit_Vector *v = (Lisp_Bit_Vector *) lheader;
-  return offsetof (Lisp_Bit_Vector,
-                  bits[BIT_VECTOR_LONG_STORAGE (bit_vector_length (v))]);
+  return FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Bit_Vector, bits,
+                                      BIT_VECTOR_LONG_STORAGE (bit_vector_length (v)));
 }
 
 static const struct lrecord_description bit_vector_description[] = {
@@ -3115,6 +3115,49 @@ the spiffy Common Lisp arguments.  You should normally use `mapc'.
 }
 
 \f
+
+
+DEFUN ("replace-list", Freplace_list, 2, 2, 0, /*
+Destructively replace the list OLD with NEW.
+This is like (copy-sequence NEW) except that it reuses the
+conses in OLD as much as possible.  If OLD and NEW are the same
+length, no consing will take place.
+*/
+       (old, new))
+{
+  Lisp_Object tail, oldtail = old, prevoldtail = Qnil;
+
+  EXTERNAL_LIST_LOOP (tail, new)
+    {
+      if (!NILP (oldtail))
+       {
+         CHECK_CONS (oldtail);
+         XCAR (oldtail) = XCAR (tail);
+       }
+      else if (!NILP (prevoldtail))
+       {
+         XCDR (prevoldtail) = Fcons (XCAR (tail), Qnil);
+         prevoldtail = XCDR (prevoldtail);
+       }
+      else
+       old = oldtail = Fcons (XCAR (tail), Qnil);
+
+      if (!NILP (oldtail))
+       {
+         prevoldtail = oldtail;
+         oldtail = XCDR (oldtail);
+       }
+    }
+
+  if (!NILP (prevoldtail))
+    XCDR (prevoldtail) = Qnil;
+  else
+    old = Qnil;
+
+  return old;
+}
+
+\f
 /* #### this function doesn't belong in this file! */
 
 DEFUN ("load-average", Fload_average, 0, 1, 0, /*
@@ -3800,6 +3843,7 @@ syms_of_fns (void)
   DEFSUBR (Fmapvector);
   DEFSUBR (Fmapc_internal);
   DEFSUBR (Fmapconcat);
+  DEFSUBR (Freplace_list);
   DEFSUBR (Fload_average);
   DEFSUBR (Ffeaturep);
   DEFSUBR (Frequire);
index dce9917..f049a23 100644 (file)
@@ -140,7 +140,11 @@ mswindows_init_frame_1 (struct frame *f, Lisp_Object props)
     make_lisp_hash_table (50, HASH_TABLE_NON_WEAK, HASH_TABLE_EQUAL);
 #endif
   /* hashtable of instantiated glyphs on the frame. */
-  FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f) = 
+  FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f) = 
+    make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQUAL);
+  FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f) = 
+    make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQUAL);
+  FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f) = 
     make_lisp_hash_table (50, HASH_TABLE_VALUE_WEAK, HASH_TABLE_EQUAL);
   /* Will initialize these in WM_SIZE handler. We cannot do it now,
      because we do not know what is CW_USEDEFAULT height and width */
@@ -259,7 +263,9 @@ mswindows_mark_frame (struct frame *f)
 #ifdef HAVE_TOOLBARS
   mark_object (FRAME_MSWINDOWS_TOOLBAR_HASH_TABLE (f));
 #endif
-  mark_object (FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f));
+  mark_object (FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f));
+  mark_object (FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f));
+  mark_object (FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f));
 }
 
 static void
index ac5b9c6..fbb1a61 100644 (file)
@@ -2264,8 +2264,9 @@ The following symbols etc. have predefined meanings:
 
  minibuffer    Gives the minibuffer behavior for this frame.  Either
                t (frame has its own minibuffer), `only' (frame is
-               a minibuffer-only frame), or a window (frame uses that
-               window, which is on another frame, as the minibuffer).
+               a minibuffer-only frame), `none' (frame has no minibuffer)
+               or a window (frame uses that window, which is on another
+               frame, as the minibuffer).
 
  unsplittable  If non-nil, frame cannot be split by `display-buffer'.
 
@@ -2279,7 +2280,13 @@ The following symbols etc. have predefined meanings:
  left-toolbar-visible-p, right-toolbar-visible-p, toolbar-buttons-captioned-p,
  top-toolbar-border-width, bottom-toolbar-border-width,
  left-toolbar-border-width, right-toolbar-border-width,
- modeline-shadow-thickness, has-modeline-p
+ modeline-shadow-thickness, has-modeline-p,
+ default-gutter, top-gutter, bottom-gutter, left-gutter, right-gutter,
+ default-gutter-height, default-gutter-width, top-gutter-height,
+ bottom-gutter-height, left-gutter-width, right-gutter-width,
+ default-gutter-visible-p, top-gutter-visible-p, bottom-gutter-visible-p,
+ left-gutter-visible-p, right-gutter-visible-p, top-gutter-border-width,
+ bottom-gutter-border-width, left-gutter-border-width, right-gutter-border-width,
                [Giving the name of any built-in specifier variable is
                equivalent to calling `set-specifier' on the specifier,
                with a locale of FRAME.  Giving the name to `frame-property'
@@ -2871,9 +2878,6 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth)
     - FRAME_REAL_BOTTOM_TOOLBAR_HEIGHT (f)
     - 2 * FRAME_REAL_BOTTOM_TOOLBAR_BORDER_WIDTH (f);
 
-  new_pixheight -= 
-    (FRAME_TOP_GUTTER_BOUNDS (f) + FRAME_BOTTOM_GUTTER_BOUNDS (f));
-
   new_pixwidth +=
     + FRAME_THEORETICAL_LEFT_TOOLBAR_WIDTH (f)
     + 2 * FRAME_THEORETICAL_LEFT_TOOLBAR_BORDER_WIDTH (f)
@@ -2886,9 +2890,6 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth)
     - FRAME_REAL_RIGHT_TOOLBAR_WIDTH (f)
     - 2 * FRAME_REAL_RIGHT_TOOLBAR_BORDER_WIDTH (f);
 
-  new_pixwidth -= 
-    (FRAME_LEFT_GUTTER_BOUNDS (f) + FRAME_RIGHT_GUTTER_BOUNDS (f));
-
   /* Adjust the width for the end glyph which may be a different width
      than the default character width. */
   {
@@ -2910,6 +2911,12 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth)
 
   if (new_pixheight)
     {
+      /* Adjust for gutters here so that we always get set
+         properly. */
+      new_pixheight -= 
+       (FRAME_TOP_GUTTER_BOUNDS (f)
+        + FRAME_BOTTOM_GUTTER_BOUNDS (f));
+
       XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_top 
        = FRAME_TOP_BORDER_END (f) + FRAME_TOP_GUTTER_BOUNDS (f);
 
@@ -2955,6 +2962,12 @@ change_frame_size_1 (struct frame *f, int newheight, int newwidth)
 
   if (new_pixwidth)
     {
+      /* Adjust for gutters here so that we always get set
+         properly. */
+      new_pixwidth -= 
+       (FRAME_LEFT_GUTTER_BOUNDS (f)
+        + FRAME_RIGHT_GUTTER_BOUNDS (f));
+      
       XWINDOW (FRAME_ROOT_WINDOW (f))->pixel_left = 
        FRAME_LEFT_BORDER_END (f) + FRAME_LEFT_GUTTER_BOUNDS (f);
       set_window_pixwidth (FRAME_ROOT_WINDOW (f), new_pixwidth, 0);
index 1674ce6..4fe27bf 100644 (file)
@@ -84,6 +84,9 @@ Boston, MA 02111-1307, USA.  */
   /* frame property list */
   MARKED_SLOT (plist);
 
+  /* buffer_alist at last redisplay. */
+  MARKED_SLOT (old_buffer_alist);
+
   /* A copy of the global Vbuffer_list, to maintain a per-frame buffer
      ordering.  The Vbuffer_list variable and the buffer_list slot of each
      frame contain exactly the same data, just in different orders.  */
index 594d4fc..e3c8e4c 100644 (file)
@@ -66,6 +66,7 @@ Lisp_Object Qdefault;
 Lisp_Object Qdelete;
 Lisp_Object Qdelq;
 Lisp_Object Qdevice;
+Lisp_Object Qdialog;
 Lisp_Object Qdimension;
 Lisp_Object Qdisplay;
 Lisp_Object Qdoc_string;
@@ -82,6 +83,7 @@ Lisp_Object Qfile_name;
 Lisp_Object Qfont;
 Lisp_Object Qframe;
 Lisp_Object Qfunction;
+Lisp_Object Qfuncall;
 Lisp_Object Qgap_overhead;
 Lisp_Object Qgeneric;
 Lisp_Object Qgeometry;
@@ -102,14 +104,17 @@ Lisp_Object Qkey_assoc;
 Lisp_Object Qkeyboard;
 Lisp_Object Qkeymap;
 Lisp_Object Qlandscape;
+Lisp_Object Qlast_command;
 Lisp_Object Qleft;
 Lisp_Object Qleft_margin;
+Lisp_Object Qlet;
 Lisp_Object Qlist;
 Lisp_Object Qmagic;
 Lisp_Object Qmalloc_overhead;
 Lisp_Object Qmarkers;
 Lisp_Object Qmax;
 Lisp_Object Qmemory;
+Lisp_Object Qmenubar;
 Lisp_Object Qmessage;
 Lisp_Object Qminus;
 Lisp_Object Qmodifiers;
@@ -160,6 +165,7 @@ Lisp_Object Qsyntax;
 Lisp_Object Qterminal;
 Lisp_Object Qtest;
 Lisp_Object Qtext;
+Lisp_Object Qthis_command;
 Lisp_Object Qtimeout;
 Lisp_Object Qtimestamp;
 Lisp_Object Qtoolbar;
@@ -218,6 +224,7 @@ syms_of_general (void)
   defsymbol (&Qdelete, "delete");
   defsymbol (&Qdelq, "delq");
   defsymbol (&Qdevice, "device");
+  defsymbol (&Qdialog, "dialog");
   defsymbol (&Qdimension, "dimension");
   defsymbol (&Qdisplay, "display");
   defsymbol (&Qdoc_string, "doc-string");
@@ -234,6 +241,7 @@ syms_of_general (void)
   defsymbol (&Qfont, "font");
   defsymbol (&Qframe, "frame");
   defsymbol (&Qfunction, "function");
+  defsymbol (&Qfuncall, "funcall");
   defsymbol (&Qgap_overhead, "gap-overhead");
   defsymbol (&Qgeneric, "generic");
   defsymbol (&Qgeometry, "geometry");
@@ -254,14 +262,17 @@ syms_of_general (void)
   defsymbol (&Qkeyboard, "keyboard");
   defsymbol (&Qkeymap, "keymap");
   defsymbol (&Qlandscape, "landscape");
+  defsymbol (&Qlast_command, "last-command");
   defsymbol (&Qleft, "left");
   defsymbol (&Qleft_margin, "left-margin");
+  defsymbol (&Qlet, "let");
   defsymbol (&Qlist, "list");
   defsymbol (&Qmagic, "magic");
   defsymbol (&Qmalloc_overhead, "malloc-overhead");
   defsymbol (&Qmarkers, "markers");
   defsymbol (&Qmax, "max");
   defsymbol (&Qmemory, "memory");
+  defsymbol (&Qmenubar, "menubar");
   defsymbol (&Qmessage, "message");
   defsymbol (&Qminus, "-");
   defsymbol (&Qmodifiers, "modifiers");
@@ -312,6 +323,7 @@ syms_of_general (void)
   defsymbol (&Qterminal, "terminal");
   defsymbol (&Qtest, "test");
   defsymbol (&Qtext, "text");
+  defsymbol (&Qthis_command, "this-command");
   defsymbol (&Qtimeout, "timeout");
   defsymbol (&Qtimestamp, "timestamp");
   defsymbol (&Qtoolbar, "toolbar");
index 4cd61ab..440e272 100644 (file)
@@ -121,6 +121,42 @@ get_device_compdc (struct device *d)
     return DEVICE_MSPRINTER_HCDC (d);
 }
 
+/*
+ * Initialize image instance pixel sizes in II.  For a display bitmap,
+ * these will be same as real bitmap sizes.  For a printer bitmap,
+ * these will be scaled up so that the bitmap is proportionally enlarged
+ * when output to printer.  Redisplay code takes care of scaling, to
+ * conserve memory we do not really scale bitmaps.  Set the watermark
+ * only here.
+ * #### Add support for unscalable bitmaps.
+ */
+static void init_image_instance_geometry (Lisp_Image_Instance *ii)
+{
+  Lisp_Object device = IMAGE_INSTANCE_DEVICE (ii);
+  struct device *d = XDEVICE (device);
+  
+  if (/* #### Scaleable && */ DEVICE_MSPRINTER_P (d))
+    {
+      HDC printer_dc = DEVICE_MSPRINTER_HCDC (d);
+      HDC display_dc = CreateCompatibleDC (NULL);
+      IMAGE_INSTANCE_PIXMAP_WIDTH (ii) =
+       MulDiv (IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii),
+               GetDeviceCaps (printer_dc, LOGPIXELSX),
+               GetDeviceCaps (display_dc, LOGPIXELSX));
+      IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) =
+       MulDiv (IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii),
+               GetDeviceCaps (printer_dc, LOGPIXELSY),
+               GetDeviceCaps (display_dc, LOGPIXELSY));
+    }
+  else
+    {
+      IMAGE_INSTANCE_PIXMAP_WIDTH (ii) =
+       IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii);
+      IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) =
+       IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii);
+    }      
+}
+
 #define BPLINE(width) ((int)(~3UL & (unsigned long)((width) +3)))
 
 /************************************************************************/
@@ -350,11 +386,14 @@ init_image_instance_from_dibitmap (Lisp_Image_Instance *ii,
   IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii) = bitmap;
 
   IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = NULL;
-  IMAGE_INSTANCE_PIXMAP_WIDTH (ii)   = bmp_info->bmiHeader.biWidth;
-  IMAGE_INSTANCE_PIXMAP_HEIGHT (ii)  = bmp_info->bmiHeader.biHeight;
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii) =
+    bmp_info->bmiHeader.biWidth;
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii) =
+    bmp_info->bmiHeader.biHeight;
   IMAGE_INSTANCE_PIXMAP_DEPTH (ii)   = bmp_info->bmiHeader.biBitCount;
   XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii), x_hot);
   XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii), y_hot);
+  init_image_instance_geometry (ii);
 
   if (create_mask)
     {
@@ -469,15 +508,15 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
   BITMAPINFO *bmp_info =
     (BITMAPINFO*) xmalloc_and_zero (sizeof (BITMAPINFO) + sizeof (RGBQUAD));
   int i, j;
-  int height = IMAGE_INSTANCE_PIXMAP_HEIGHT (image);
+  int height = IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (image);
 
-  int maskbpline = BPLINE ((IMAGE_INSTANCE_PIXMAP_WIDTH (image) + 7) / 8);
-  int bpline = BPLINE (IMAGE_INSTANCE_PIXMAP_WIDTH (image) * 3);
+  int maskbpline = BPLINE ((IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (image) + 7) / 8);
+  int bpline = BPLINE (IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (image) * 3);
 
   if (!bmp_info)
     return;
 
-  bmp_info->bmiHeader.biWidth=IMAGE_INSTANCE_PIXMAP_WIDTH (image);
+  bmp_info->bmiHeader.biWidth=IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (image);
   bmp_info->bmiHeader.biHeight = height;
   bmp_info->bmiHeader.biPlanes = 1;
   bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
@@ -509,10 +548,10 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
   /* build up an in-memory set of bits to mess with */
   xzero (*bmp_info);
 
-  bmp_info->bmiHeader.biWidth=IMAGE_INSTANCE_PIXMAP_WIDTH (image);
+  bmp_info->bmiHeader.biWidth = IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (image);
   bmp_info->bmiHeader.biHeight = -height;
   bmp_info->bmiHeader.biPlanes = 1;
-  bmp_info->bmiHeader.biSize=sizeof(BITMAPINFOHEADER);
+  bmp_info->bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
   bmp_info->bmiHeader.biBitCount = 24;
   bmp_info->bmiHeader.biCompression = BI_RGB;
   bmp_info->bmiHeader.biClrUsed = 0;
@@ -534,7 +573,7 @@ mswindows_initialize_image_instance_mask (Lisp_Image_Instance* image,
 
   /* now set the colored bits in the mask and transparent ones to
      black in the original */
-  for (i=0; i<IMAGE_INSTANCE_PIXMAP_WIDTH (image); i++)
+  for (i = 0; i < IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (image); i++)
     {
       for (j=0; j<height; j++)
        {
@@ -627,8 +666,8 @@ mswindows_create_resized_bitmap (Lisp_Image_Instance* ii,
 {
   return create_resized_bitmap (IMAGE_INSTANCE_MSWINDOWS_BITMAP (ii),
                                f,
-                               IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
-                               IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
+                               IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii),
+                               IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii),
                                newx, newy);
 }
 
@@ -642,12 +681,14 @@ mswindows_create_resized_mask (Lisp_Image_Instance* ii,
 
   return create_resized_bitmap (IMAGE_INSTANCE_MSWINDOWS_MASK (ii),
                                f,
-                               IMAGE_INSTANCE_PIXMAP_WIDTH (ii),
-                               IMAGE_INSTANCE_PIXMAP_HEIGHT (ii),
+                               IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii),
+                               IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii),
                                newx, newy);
 }
 
 #if 0 /* Currently unused */
+/* #### Warining: This function is not correct anymore with
+   resizable printer bitmaps.  If you uncomment it, clean it. --kkm */
 int
 mswindows_resize_dibitmap_instance (Lisp_Image_Instance* ii,
                                    struct frame* f,
@@ -1289,11 +1330,12 @@ mswindows_resource_instantiate (Lisp_Object image_instance, Lisp_Object instanti
   mswindows_initialize_dibitmap_image_instance (ii, 1, iitype);
 
   IMAGE_INSTANCE_PIXMAP_FILENAME (ii) = file;
-  IMAGE_INSTANCE_PIXMAP_WIDTH (ii) =
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii) =
     GetSystemMetrics (type == IMAGE_CURSOR ? SM_CXCURSOR : SM_CXICON);
-  IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) =
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii) =
     GetSystemMetrics (type == IMAGE_CURSOR ? SM_CYCURSOR : SM_CYICON);
   IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = 1;
+  init_image_instance_geometry (ii);
 
   /* hey, we've got an icon type thing so we can reverse engineer the
      bitmap and mask */
@@ -1762,11 +1804,13 @@ init_image_instance_from_xbm_inline (Lisp_Image_Instance *ii,
 
   IMAGE_INSTANCE_PIXMAP_FILENAME (ii) =
     find_keyword_in_vector (instantiator, Q_file);
-  IMAGE_INSTANCE_PIXMAP_WIDTH (ii) = width;
-  IMAGE_INSTANCE_PIXMAP_HEIGHT (ii) = height;
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (ii) = width;
+  IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (ii) = height;
   IMAGE_INSTANCE_PIXMAP_DEPTH (ii) = 1;
   XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_X (ii), 0);
   XSETINT (IMAGE_INSTANCE_PIXMAP_HOTSPOT_Y (ii), 0);
+  init_image_instance_geometry (ii);
+
   IMAGE_INSTANCE_MSWINDOWS_MASK (ii) = mask ? mask :
     xbm_create_bitmap_from_data (hdc, (Extbyte *) bits, width, height,
                                 TRUE, black, white);
@@ -2166,7 +2210,11 @@ static void
 mswindows_update_widget (Lisp_Image_Instance *p)
 {
   /* Possibly update the face font and colors. */
-  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p))
+  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p)
+      ||
+      XFRAME (IMAGE_INSTANCE_SUBWINDOW_FRAME (p))->faces_changed
+      ||
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
     {
       /* set the widget font from the widget face */
       SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (p),
@@ -2198,23 +2246,28 @@ mswindows_update_widget (Lisp_Image_Instance *p)
    callbacks. The hashtable is weak so deregistration is handled
    automatically */
 static int
-mswindows_register_gui_item (Lisp_Object gui, Lisp_Object domain)
+mswindows_register_gui_item (Lisp_Object image_instance,
+                            Lisp_Object gui, Lisp_Object domain)
 {
   Lisp_Object frame = FW_FRAME (domain);
   struct frame* f = XFRAME (frame);
-  int id = gui_item_id_hash (FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f),
+  int id = gui_item_id_hash (FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f),
                             gui,
                             WIDGET_GLYPH_SLOT);
-  Fputhash (make_int (id),
-           XGUI_ITEM (gui)->callback,
-           FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f));
+  Fputhash (make_int (id), image_instance,
+           FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f));
+  Fputhash (make_int (id), XGUI_ITEM (gui)->callback,
+           FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f));
+  Fputhash (make_int (id), XGUI_ITEM (gui)->callback_ex,
+           FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f));
   return id;
 }
 
 static int
 mswindows_register_widget_instance (Lisp_Object instance, Lisp_Object domain)
 {
-  return mswindows_register_gui_item (XIMAGE_INSTANCE_WIDGET_ITEM (instance),
+  return mswindows_register_gui_item (instance,
+                                     XIMAGE_INSTANCE_WIDGET_ITEM (instance),
                                      domain);
 }
 
@@ -2361,7 +2414,7 @@ mswindows_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiat
 
   style = pgui->style;
 
-  if (!NILP (pgui->callback))
+  if (!NILP (pgui->callback) || !NILP (pgui->callback_ex))
     {
       id = mswindows_register_widget_instance (image_instance, domain);
     }
@@ -2567,7 +2620,8 @@ static HTREEITEM add_tree_item (Lisp_Object image_instance,
 
   if (GUI_ITEMP (item))
     {
-      tvitem.item.lParam = mswindows_register_gui_item (item, domain);
+      tvitem.item.lParam = mswindows_register_gui_item (image_instance,
+                                                       item, domain);
       tvitem.item.mask |= TVIF_PARAM;
       TO_EXTERNAL_FORMAT (LISP_STRING, XGUI_ITEM (item)->name,
                          C_STRING_ALLOCA, tvitem.item.pszText,
@@ -2649,7 +2703,8 @@ static TC_ITEM* add_tab_item (Lisp_Object image_instance,
 
   if (GUI_ITEMP (item))
     {
-      tvitem.lParam = mswindows_register_gui_item (item, domain);
+      tvitem.lParam = mswindows_register_gui_item (image_instance,
+                                                  item, domain);
       tvitem.mask |= TCIF_PARAM;
       TO_EXTERNAL_FORMAT (LISP_STRING, XGUI_ITEM (item)->name,
                          C_STRING_ALLOCA, tvitem.pszText,
@@ -2726,13 +2781,8 @@ mswindows_tab_control_update (Lisp_Object image_instance)
       /* delete the pre-existing items */
       SendMessage (wnd, TCM_DELETEALLITEMS, 0, 0);
 
-      /* Pick up the items we recorded earlier. We do this here so
-         that the callbacks get set up with the new items. */
-      IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
-       IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii);
-      IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = Qnil;
       /* add items to the tab */
-      LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_ITEMS (ii)))
+      LIST_LOOP (rest, XCDR (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)))
        {
          add_tab_item (image_instance, wnd, XCAR (rest),
                        IMAGE_INSTANCE_SUBWINDOW_FRAME (ii), i);
@@ -2881,11 +2931,18 @@ mswindows_progress_gauge_update (Lisp_Object image_instance)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   
-  if (IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED (ii))
+  if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii))
     {
-      /* #### I'm not convinced we should store this in the plist. */
-      Lisp_Object val = Fplist_get (IMAGE_INSTANCE_WIDGET_PROPS (ii),
-                                   Q_percent, Qnil);
+      Lisp_Object val;
+#ifdef ERROR_CHECK_GLYPHS
+      assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)));
+#endif
+      val = XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value;
+#ifdef DEBUG_WIDGET_OUTPUT     
+      printf ("progress gauge displayed value on %p updated to %ld\n",
+             WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
+             XINT(val));
+#endif
       CHECK_INT (val);
       SendMessage (WIDGET_INSTANCE_MSWINDOWS_HANDLE (ii),
                   PBM_SETPOS, (WPARAM)XINT (val), 0);
index dbfd85e..80d7c64 100644 (file)
@@ -36,6 +36,7 @@ struct mswindows_image_instance_data
 {
   HBITMAP* bitmaps;
   HICON icon;
+  int real_width, real_height;
 };
 
 #define MSWINDOWS_IMAGE_INSTANCE_DATA(i) \
@@ -51,6 +52,10 @@ struct mswindows_image_instance_data
      (*(HBITMAP*)&(IMAGE_INSTANCE_PIXMAP_MASK (i)))            /* Make it lvalue */
 #define IMAGE_INSTANCE_MSWINDOWS_ICON(i) \
      (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->icon)
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->real_width)
+#define IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT(i) \
+     (MSWINDOWS_IMAGE_INSTANCE_DATA (i)->real_height)
 
 #define XIMAGE_INSTANCE_MSWINDOWS_BITMAP(i) \
   IMAGE_INSTANCE_MSWINDOWS_BITMAP (XIMAGE_INSTANCE (i))
index 355be6e..8456c25 100644 (file)
@@ -57,8 +57,10 @@ DEFINE_IMAGE_INSTANTIATOR_FORMAT (layout);
 Lisp_Object Qlayout;
 
 Lisp_Object Q_descriptor, Q_height, Q_width, Q_properties, Q_items;
-Lisp_Object Q_image, Q_text, Q_percent, Q_orientation, Q_justify, Q_border;
+Lisp_Object Q_image, Q_text, Q_orientation, Q_justify, Q_border;
 Lisp_Object Qetched_in, Qetched_out, Qbevel_in, Qbevel_out;
+Lisp_Object Vwidget_callback_current_channel;
+Lisp_Object Qwidget_callback_current_channel;
 
 #ifdef DEBUG_WIDGETS
 int debug_widget_instances;
@@ -356,6 +358,14 @@ update_widget (Lisp_Object widget)
                                   IMAGE_INSTANCE_WIDGET_TYPE (ii), 
                                   ERROR_ME_NOT);
   MAYBE_IIFORMAT_METH (meths, update, (widget));
+
+  /* Pick up the items we recorded earlier. */
+  if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii))
+    {
+      IMAGE_INSTANCE_WIDGET_ITEMS (ii) =
+       IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii);
+      IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) = Qnil;
+    }
 }
 
 /* Query for a widgets desired geometry. If no type specific method is
@@ -511,7 +521,7 @@ initialize_widget_image_instance (Lisp_Image_Instance *ii, Lisp_Object type)
   IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii) = Qnil;
   IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii) = 1;
   IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii) = 1;
-  IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 0;
+  IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = LAYOUT_HORIZONTAL;
   IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) = 0;
 }
 
@@ -597,10 +607,10 @@ widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
          /* make sure we are designated as the parent. */
          XIMAGE_INSTANCE_PARENT (gii) = image_instance;
          children = Fcons (gii, children);
-         /* Make sure elements in the layout are in the order the
-             user expected. */
-         children = Fnreverse (children);
        }
+      /* Make sure elements in the layout are in the order the
+        user expected. */
+      children = Fnreverse (children);
       IMAGE_INSTANCE_LAYOUT_CHILDREN (ii) = children;
     }
   /* retrieve the gui item information. This is easy if we have been
@@ -619,7 +629,7 @@ widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   /* Pick up the orientation before we do our first layout. */
   if (EQ (orient, Qleft) || EQ (orient, Qright) || EQ (orient, Qvertical))
-    IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = 1;
+    IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) = LAYOUT_VERTICAL;
 
   /* parse more gui items out of the properties */
   if (!NILP (props)
@@ -659,7 +669,7 @@ widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   if (!NILP (pixheight))
     {
-      if (!INTP (pixwidth))
+      if (!INTP (pixheight))
        IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii) = pixheight;
       else
        {
@@ -716,6 +726,33 @@ widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 #endif
 }
 
+/* Get the geometry of a button control. We need to adjust the size
+   depending on the type of button. */
+static void
+button_query_geometry (Lisp_Object image_instance, 
+                      unsigned int* width, unsigned int* height,
+                      enum image_instance_geometry disp, Lisp_Object domain)
+{
+  Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
+  unsigned int w, h;
+  query_string_geometry (IMAGE_INSTANCE_WIDGET_TEXT (ii),
+                        IMAGE_INSTANCE_WIDGET_FACE (ii),
+                        &w, &h, 0, domain);
+  /* Adjust the size for borders. */
+  if (IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
+    {
+      *width = w + 2 * WIDGET_BORDER_WIDTH;
+
+      if (EQ (XGUI_ITEM (IMAGE_INSTANCE_WIDGET_ITEM (ii))->style, Qradio)
+         ||
+         EQ (XGUI_ITEM (IMAGE_INSTANCE_WIDGET_ITEM (ii))->style, Qtoggle))
+       /* This is an approximation to the size of the actual button bit. */
+       *width += 12;
+    }
+  if (IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii))
+    *height = h +  2 * WIDGET_BORDER_HEIGHT;
+}
+
 /* tree-view geometry - get the height right */
 static void
 tree_view_query_geometry (Lisp_Object image_instance, 
@@ -816,12 +853,21 @@ progress_gauge_set_property (Lisp_Object image_instance,
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
 
-  if (EQ (prop, Q_percent))
+  if (EQ (prop, Q_value))
     {
       CHECK_INT (val);
-      IMAGE_INSTANCE_WIDGET_PROPS (ii)
-       = Fplist_put (IMAGE_INSTANCE_WIDGET_PROPS (ii), prop, val);
-      IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED (ii) = 1;
+#ifdef DEBUG_WIDGET_OUTPUT
+      printf ("progress gauge value set to %ld\n", XINT (val));
+#endif
+      IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii) =
+       copy_gui_item_tree (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
+#ifdef ERROR_CHECK_GLYPHS
+      assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)));
+#endif
+      if (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)))
+       XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value = val;
+
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 1;
 
       return Qt;
     }
@@ -921,56 +967,76 @@ layout_query_geometry (Lisp_Object image_instance, unsigned int* width,
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object items = IMAGE_INSTANCE_LAYOUT_CHILDREN (ii), rest;
   int maxph = 0, maxpw = 0, nitems = 0, ph_adjust = 0;
+  unsigned int gheight, gwidth;
+
+  /* First just set up what we already have. */
+  if (width)   *width = IMAGE_INSTANCE_WIDTH (ii);
+  if (height)  *height = IMAGE_INSTANCE_HEIGHT (ii);
+  
+  /* If we are not allowed to dynamically size then return. */
+  if (!IMAGE_INSTANCE_SUBWINDOW_V_RESIZEP (ii)
+      &&
+      !IMAGE_INSTANCE_SUBWINDOW_H_RESIZEP (ii))
+    return;
 
+  /* Pick up the border text if we have one. */
+  if (INTP (IMAGE_INSTANCE_LAYOUT_BORDER (ii)))
+    {
+      image_instance_query_geometry (XCAR (items), &gwidth, &gheight, disp, domain);
+      ph_adjust = gheight / 2;
+      items = XCDR (items);
+    }
+  
   /* Flip through the items to work out how much stuff we have to display */
   LIST_LOOP (rest, items)
     {
       Lisp_Object glyph = XCAR (rest);
-      unsigned int gheight, gwidth;
-      
       image_instance_query_geometry (glyph, &gwidth, &gheight, disp, domain);
 
-      /* Pick up the border text if we have one. */
-      if (INTP (IMAGE_INSTANCE_LAYOUT_BORDER (ii))
-         && NILP (XCDR (rest)))
+      nitems ++;
+      if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
+         == LAYOUT_HORIZONTAL)
        {
-         ph_adjust = gheight / 2;
+         maxph = max (maxph, gheight);
+         maxpw += gwidth;
        }
       else
        {
-
-         nitems ++;
-         if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-             == LAYOUT_HORIZONTAL)
-           {
-             maxph = max (maxph, gheight);
-             maxpw += gwidth;
-           }
-         else
-           {
-             maxpw = max (maxpw, gwidth);
-             maxph += gheight;
-           }
+         maxpw = max (maxpw, gwidth);
+         maxph += gheight;
        }
     }
 
-  /* work out spacing between items and bounds of the layout.  No user
-      provided width so we just do default spacing. */
-  if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-      == LAYOUT_HORIZONTAL)
+  /* Work out minimum space we need to fit all the items. This could
+     have been fixed by the user. */
+  if (!NILP (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii)))
+    {
+      Lisp_Object dynamic_width = 
+       Feval (IMAGE_INSTANCE_WIDGET_WIDTH_SUBR (ii));
+      if (INTP (dynamic_width))
+       *width = XINT (dynamic_width);
+    }
+  else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii)
+          == LAYOUT_HORIZONTAL)
     *width = maxpw + (nitems + 1) * WIDGET_BORDER_WIDTH * 2;
   else 
     *width = maxpw + 2 * WIDGET_BORDER_WIDTH * 2;
 
   /* Work out vertical spacings. */
-  if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-      == LAYOUT_VERTICAL)
+  if (!NILP (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii)))
+    {
+      Lisp_Object dynamic_height = 
+       Feval (IMAGE_INSTANCE_WIDGET_HEIGHT_SUBR (ii));
+      if (INTP (dynamic_height))
+       *height = XINT (dynamic_height);
+    }
+  else if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii)
+          == LAYOUT_VERTICAL)
     *height = maxph + (nitems + 1) * WIDGET_BORDER_HEIGHT * 2 + ph_adjust;
-  else 
+  else
     *height = maxph + 2 * WIDGET_BORDER_HEIGHT * 2 + ph_adjust;
 }
 
-
 static void
 layout_layout (Lisp_Object image_instance, 
               unsigned int width, unsigned int height, Lisp_Object domain)
@@ -981,38 +1047,41 @@ layout_layout (Lisp_Object image_instance,
   int x, y, maxph = 0, maxpw = 0, nitems = 0,
     horiz_spacing, vert_spacing, ph_adjust = 0;
   unsigned int gheight, gwidth;
+  
+  /* Pick up the border text if we have one. */
+  if (INTP (IMAGE_INSTANCE_LAYOUT_BORDER (ii)))
+    {
+      Lisp_Object border = XCAR (items);
+      items = XCDR (items);
+      image_instance_query_geometry (border, &gwidth, &gheight,
+                                    IMAGE_DESIRED_GEOMETRY, domain);
+      /* #### Really, what should this be? */
+      XIMAGE_INSTANCE_XOFFSET (border) = 10;
+      XIMAGE_INSTANCE_YOFFSET (border) = 0;
+      ph_adjust = gheight / 2;
+      IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (ph_adjust);
+
+      image_instance_layout (border, gwidth, gheight, domain);
+    }
 
-  /* flip through the items to work out how much stuff we have to display */
+  /* Flip through the items to work out how much stuff we have to display. */
   LIST_LOOP (rest, items)
     {
       Lisp_Object glyph = XCAR (rest);
       
       image_instance_query_geometry (glyph, &gwidth, &gheight, 
                                     IMAGE_DESIRED_GEOMETRY, domain);
-
-      /* Pick up the border text if we have one. */
-      if (INTP (IMAGE_INSTANCE_LAYOUT_BORDER (ii))
-         && NILP (XCDR (rest)))
+      nitems ++;
+      if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
+         == LAYOUT_HORIZONTAL)
        {
-         XIMAGE_INSTANCE_XOFFSET (glyph) = 10; /* Really, what should this be? */
-         XIMAGE_INSTANCE_YOFFSET (glyph) = 0;
-         ph_adjust = gheight / 2;
-         IMAGE_INSTANCE_LAYOUT_BORDER (ii) = make_int (ph_adjust);
+         maxph = max (maxph, gheight);
+         maxpw += gwidth;
        }
       else
        {
-         nitems ++;
-         if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-             == LAYOUT_HORIZONTAL)
-           {
-             maxph = max (maxph, gheight);
-             maxpw += gwidth;
-           }
-         else
-           {
-             maxpw = max (maxpw, gwidth);
-             maxph += gheight;
-           }
+         maxpw = max (maxpw, gwidth);
+         maxph += gheight;
        }
     }
 
@@ -1051,42 +1120,38 @@ layout_layout (Lisp_Object image_instance,
       image_instance_query_geometry (glyph, &gwidth, &gheight, 
                                     IMAGE_DESIRED_GEOMETRY, domain);
 
-      if (!INTP (IMAGE_INSTANCE_LAYOUT_BORDER (ii))
-         || !NILP (XCDR (rest)))
-      {
-       if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-           == LAYOUT_HORIZONTAL)
-         {
-           if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
-               == LAYOUT_JUSTIFY_RIGHT)
-             y = height - (gheight + vert_spacing);
-           if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
-               == LAYOUT_JUSTIFY_CENTER)
-             y = (height - gheight) / 2;
-         }
-       else 
-         {
-           if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
-               == LAYOUT_JUSTIFY_RIGHT)
-             x = width - (gwidth + horiz_spacing);
-           if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
-               == LAYOUT_JUSTIFY_CENTER)
-             x = (width - gwidth) / 2;
-         }
+      if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
+         == LAYOUT_HORIZONTAL)
+       {
+         if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
+             == LAYOUT_JUSTIFY_RIGHT)
+           y = height - (gheight + vert_spacing);
+         if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
+             == LAYOUT_JUSTIFY_CENTER)
+           y = (height - gheight) / 2;
+       }
+      else 
+       {
+         if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
+             == LAYOUT_JUSTIFY_RIGHT)
+           x = width - (gwidth + horiz_spacing);
+         if (IMAGE_INSTANCE_SUBWINDOW_JUSTIFY (ii) 
+             == LAYOUT_JUSTIFY_CENTER)
+           x = (width - gwidth) / 2;
+       }
        
-       XIMAGE_INSTANCE_XOFFSET (glyph) = x;
-       XIMAGE_INSTANCE_YOFFSET (glyph) = y;
+      XIMAGE_INSTANCE_XOFFSET (glyph) = x;
+      XIMAGE_INSTANCE_YOFFSET (glyph) = y;
        
-       if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
-           == LAYOUT_HORIZONTAL)
-         {
-           x += (gwidth + horiz_spacing);
-         }
-       else
-         {
-           y += (gheight + vert_spacing);
-         }
-      }
+      if (IMAGE_INSTANCE_SUBWINDOW_ORIENT (ii) 
+         == LAYOUT_HORIZONTAL)
+       {
+         x += (gwidth + horiz_spacing);
+       }
+      else
+       {
+         y += (gheight + vert_spacing);
+       }
       
       /* Now layout subwidgets if they require it. */
       image_instance_layout (glyph, gwidth, gheight, domain);
@@ -1107,7 +1172,6 @@ syms_of_glyphs_widget (void)
   defkeyword (&Q_properties, ":properties");
   defkeyword (&Q_items, ":items");
   defkeyword (&Q_image, ":image");
-  defkeyword (&Q_percent, ":percent");
   defkeyword (&Q_text, ":text");
   defkeyword (&Q_orientation, ":orientation");
   defkeyword (&Q_justify, ":justify");
@@ -1117,6 +1181,7 @@ syms_of_glyphs_widget (void)
   defsymbol (&Qetched_out, "etched-out");
   defsymbol (&Qbevel_in, "bevel-in");
   defsymbol (&Qbevel_out, "bevel-out");
+  defsymbol (&Qwidget_callback_current_channel, "widget-callback-current-channel");
 }
 
 #define VALID_GUI_KEYWORDS(type) do {                                                  \
@@ -1132,6 +1197,7 @@ syms_of_glyphs_widget (void)
   IIFORMAT_VALID_KEYWORD (type, Q_accelerator, check_valid_string);                    \
   IIFORMAT_VALID_KEYWORD (type, Q_label, check_valid_anything);                                \
   IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_callback, check_valid_callback);             \
+  IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_callback_ex, check_valid_callback);          \
   IIFORMAT_VALID_NONCOPY_KEYWORD (type, Q_descriptor, check_valid_string_or_vector);   \
 } while (0)
 
@@ -1160,6 +1226,7 @@ static void image_instantiator_buttons (void)
   IIFORMAT_HAS_SHARED_METHOD (button, possible_dest_types, widget);
   IIFORMAT_HAS_SHARED_METHOD (button, instantiate, widget);
   IIFORMAT_HAS_SHARED_METHOD (button, normalize, widget);
+  IIFORMAT_HAS_METHOD (button, query_geometry);
   IIFORMAT_VALID_KEYWORD (button,
                          Q_image, check_valid_glyph_or_instantiator);
   VALID_WIDGET_KEYWORDS (button);
@@ -1257,8 +1324,7 @@ static void image_instantiator_layout (void)
   IIFORMAT_HAS_METHOD (layout, normalize);
   IIFORMAT_HAS_METHOD (layout, query_geometry);
   IIFORMAT_HAS_METHOD (layout, layout);
-  IIFORMAT_VALID_KEYWORD (layout, Q_pixel_width, check_valid_int_or_function);
-  IIFORMAT_VALID_KEYWORD (layout, Q_pixel_height, check_valid_int_or_function);
+  VALID_WIDGET_KEYWORDS (layout);
   IIFORMAT_VALID_KEYWORD (layout, Q_orientation, check_valid_orientation);
   IIFORMAT_VALID_KEYWORD (layout, Q_justify, check_valid_justification);
   IIFORMAT_VALID_KEYWORD (layout, Q_border, check_valid_border);
@@ -1293,4 +1359,10 @@ void
 vars_of_glyphs_widget (void)
 {
   reinit_vars_of_glyphs_widget ();
+
+  DEFVAR_LISP ("widget-callback-current-channel", &Vwidget_callback_current_channel /*
+The domain that is current when a widget callback is invoked.
+This is invariably the frame that the widget is instantiated in.
+*/);
+  Vwidget_callback_current_channel = Qnil;
 }
index 0651929..4ed6e97 100644 (file)
@@ -264,7 +264,7 @@ convert_EImage_to_XImage (Lisp_Object device, int width, int height,
              gr = *ip++;
              bl = *ip++;
              conv.val = pixarray[QUANT_GET_COLOR(qtable,rd,gr,bl)];
-#if WORDS_BIGENDIAN
+#ifdef WORDS_BIGENDIAN
              if (outimg->byte_order == MSBFirst)
                for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q];
              else
@@ -339,7 +339,7 @@ convert_EImage_to_XImage (Lisp_Object device, int width, int height,
                bl = *ip++ >> (8 - bbits);
 
              conv.val = (rd << rshift) | (gr << gshift) | (bl << bshift);
-#if WORDS_BIGENDIAN
+#ifdef WORDS_BIGENDIAN
              if (outimg->byte_order == MSBFirst)
                for (q = 4-byte_cnt; q < 4; q++) *dp++ = conv.cp[q];
              else
@@ -2189,14 +2189,11 @@ x_update_widget (Lisp_Image_Instance *p)
      need to update most other things after the items have changed.*/
   if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
     {
-      /* Pick up the items we recorded earlier. We do this here so
-         that the callbacks get set up with the new items. */
-      IMAGE_INSTANCE_WIDGET_ITEMS (p) =
-       IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p);
-      IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p) = Qnil;
+      Lisp_Object image_instance;
 
+      XSETIMAGE_INSTANCE (image_instance, p);
       wv = gui_items_to_widget_values
-       (IMAGE_INSTANCE_WIDGET_ITEMS (p));
+       (image_instance, IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (p));
       wv->change = STRUCTURAL_CHANGE;
       /* now modify the widget */
       lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
@@ -2211,7 +2208,7 @@ x_update_widget (Lisp_Image_Instance *p)
     return;
 
   /* Possibly update the colors and font */
-  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p) 
+  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (p)
       ||
       XFRAME (IMAGE_INSTANCE_SUBWINDOW_FRAME (p))->faces_changed
       ||
@@ -2234,7 +2231,9 @@ x_update_widget (Lisp_Image_Instance *p)
   /* Possibly update the size. */
   if (IMAGE_INSTANCE_SIZE_CHANGED (p)
       ||
-      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p))
+      IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (p)
+      ||
+      IMAGE_INSTANCE_TEXT_CHANGED (p))
     {
       assert (IMAGE_INSTANCE_X_WIDGET_ID (p) &&
              IMAGE_INSTANCE_X_CLIPWIDGET (p)) ;
@@ -2503,16 +2502,6 @@ x_widget_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
   IMAGE_INSTANCE_SUBWINDOW_ID (ii) = (void*)wid;
   IMAGE_INSTANCE_X_WIDGET_LWID (ii) = id;
-#if 0
-  /* Resize the widget here so that the values do not get copied by
-     lwlib. */
-  ac = 0;
-  XtSetArg (al [ac], XtNwidth,
-           (Dimension)IMAGE_INSTANCE_SUBWINDOW_WIDTH (ii)); ac++;
-  XtSetArg (al [ac], XtNheight,
-           (Dimension)IMAGE_INSTANCE_SUBWINDOW_HEIGHT (ii)); ac++;
-  XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, ac);
-#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. */
@@ -2554,9 +2543,7 @@ x_button_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
   Lisp_Object glyph = find_keyword_in_vector (instantiator, Q_image);
-  widget_value* wv = xmalloc_widget_value ();
-
-  button_item_to_widget_value (gui, wv, 1, 1);
+  widget_value* wv = gui_items_to_widget_values (image_instance, gui);
 
   if (!NILP (glyph))
     {
@@ -2583,6 +2570,30 @@ x_button_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
     }
 }
 
+/* Update a button's clicked state.
+
+   #### This is overkill, but it works. Right now this causes all
+   button instances to flash for some reason buried deep in lwlib. In
+   theory this should be the Right Thing to do since lwlib should only
+   merge in changed values - and if nothing has changed then nothing
+   should get done. This may be because of the args stuff,
+   i.e. although the arg contents may be the same the args look
+   different and so are re-applied to the widget. */
+static void
+x_button_update (Lisp_Object image_instance)
+{
+  /* This function can GC if IN_REDISPLAY is false. */
+  Lisp_Image_Instance *p = XIMAGE_INSTANCE (image_instance);
+  widget_value* wv =
+    gui_items_to_widget_values (image_instance,
+                               IMAGE_INSTANCE_WIDGET_ITEMS (p));
+
+  /* now modify the widget */
+  lw_modify_all_widgets (IMAGE_INSTANCE_X_WIDGET_LWID (p),
+                        wv, True);
+  free_widget_value_tree (wv);
+}
+
 /* get properties of a button */
 static Lisp_Object
 x_button_property (Lisp_Object image_instance, Lisp_Object prop)
@@ -2609,9 +2620,7 @@ x_progress_gauge_instantiate (Lisp_Object image_instance, Lisp_Object instantiat
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
-  widget_value* wv = xmalloc_widget_value ();
-
-  button_item_to_widget_value (gui, wv, 1, 1);
+  widget_value* wv = gui_items_to_widget_values (image_instance, gui);
 
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
                        pointer_bg, dest_mask, domain, "progress", wv);
@@ -2623,12 +2632,14 @@ x_progress_gauge_update (Lisp_Object image_instance)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
 
-  if (IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED (ii))
+  if (IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii))
     {
       Arg al [1];
-      /* #### I'm not convinced we should store this in the plist. */
-      Lisp_Object val = Fplist_get (IMAGE_INSTANCE_WIDGET_PROPS (ii),
-                                   Q_percent, Qnil);
+      Lisp_Object val;
+#ifdef ERROR_CHECK_GLYPHS
+      assert (GUI_ITEMP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii)));
+#endif
+      val = XGUI_ITEM (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii))->value;
       XtSetArg (al[0], XtNvalue, XINT (val));
       XtSetValues (IMAGE_INSTANCE_X_WIDGET_ID (ii), al, 1);
     }
@@ -2642,9 +2653,7 @@ x_edit_field_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
-  widget_value* wv = xmalloc_widget_value ();
-
-  button_item_to_widget_value (gui, wv, 1, 1);
+  widget_value* wv = gui_items_to_widget_values (image_instance, gui);
 
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
                        pointer_bg, dest_mask, domain, "text-field", wv);
@@ -2664,7 +2673,8 @@ x_combo_box_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
   widget_instantiate (image_instance, instantiator, pointer_fg,
                      pointer_bg, dest_mask, domain);
 
-  wv = gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
+  wv = gui_items_to_widget_values (image_instance,
+                                  IMAGE_INSTANCE_WIDGET_ITEMS (ii));
 
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
                        pointer_bg, dest_mask, domain, "combo-box", wv);
@@ -2678,7 +2688,8 @@ x_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   widget_value * wv =
-    gui_items_to_widget_values (IMAGE_INSTANCE_WIDGET_ITEMS (ii));
+    gui_items_to_widget_values (image_instance,
+                               IMAGE_INSTANCE_WIDGET_ITEMS (ii));
 
   update_tab_widget_face (wv, ii,
                          IMAGE_INSTANCE_SUBWINDOW_FRAME (ii));
@@ -2689,12 +2700,12 @@ x_tab_control_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 
 /* set the properties of a tab control */
 static void
-x_tab_control_update (Lisp_Object image_instance) 
+x_tab_control_update (Lisp_Object image_instance)
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
 
   /* Possibly update the face. */
-  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii) 
+  if (IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii)
       ||
       XFRAME (IMAGE_INSTANCE_SUBWINDOW_FRAME (ii))->faces_changed
       ||
@@ -2721,9 +2732,7 @@ x_label_instantiate (Lisp_Object image_instance, Lisp_Object instantiator,
 {
   Lisp_Image_Instance *ii = XIMAGE_INSTANCE (image_instance);
   Lisp_Object gui = IMAGE_INSTANCE_WIDGET_ITEM (ii);
-  widget_value* wv = xmalloc_widget_value ();
-
-  button_item_to_widget_value (gui, wv, 1, 1);
+  widget_value* wv = gui_items_to_widget_values (image_instance, gui);
 
   x_widget_instantiate (image_instance, instantiator, pointer_fg,
                        pointer_bg, dest_mask, domain, "button", wv);
@@ -2795,6 +2804,7 @@ image_instantiator_format_create_glyphs_x (void)
   INITIALIZE_DEVICE_IIFORMAT (x, button);
   IIFORMAT_HAS_DEVMETHOD (x, button, property);
   IIFORMAT_HAS_DEVMETHOD (x, button, instantiate);
+  IIFORMAT_HAS_DEVMETHOD (x, button, update);
 
   INITIALIZE_DEVICE_IIFORMAT (x, widget);
   IIFORMAT_HAS_DEVMETHOD (x, widget, property);
index 5f0fa1d..3ef30f3 100644 (file)
@@ -96,7 +96,7 @@ struct x_subwindow_data
       Window parent_window;
       Window clip_window;
     } sub;
-    struct 
+    struct
     {
       Widget clip_window;
       Position x_offset;
index 899e33b..66b05c5 100644 (file)
@@ -771,16 +771,21 @@ print_image_instance (Lisp_Object obj, Lisp_Object printcharfun,
       break;
 
     case IMAGE_WIDGET:
+      print_internal (IMAGE_INSTANCE_WIDGET_TYPE (ii), printcharfun, 0);
+
+      if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
+       {
+         write_c_string (" ", printcharfun);
+         print_internal (IMAGE_INSTANCE_WIDGET_TEXT (ii), printcharfun, 1);
+       }
+
       if (!NILP (IMAGE_INSTANCE_WIDGET_FACE (ii)))
        {
-         write_c_string (" (", printcharfun);
+         write_c_string (" face=", printcharfun);
          print_internal
            (IMAGE_INSTANCE_WIDGET_FACE (ii), printcharfun, 0);
-         write_c_string (")", printcharfun);
        }
 
-      if (!NILP (IMAGE_INSTANCE_WIDGET_TEXT (ii)))
-       print_internal (IMAGE_INSTANCE_WIDGET_TEXT (ii), printcharfun, 0);
 
     case IMAGE_SUBWINDOW:
     case IMAGE_LAYOUT:
@@ -801,10 +806,8 @@ print_image_instance (Lisp_Object obj, Lisp_Object printcharfun,
        else
          write_c_string (DEVICE_TYPE_NAME (XDEVICE (FRAME_DEVICE (f))),
                          printcharfun);
-
-       write_c_string ("-frame ", printcharfun);
       }
-      write_c_string (">", printcharfun);
+      write_c_string ("-frame>", printcharfun);
       sprintf (buf, " 0x%p", IMAGE_INSTANCE_SUBWINDOW_ID (ii));
       write_c_string (buf, printcharfun);
 
@@ -934,6 +937,10 @@ image_instance_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
   return DEVMETH_OR_GIVEN (d1, image_instance_equal, (i1, i2, depth), 1);
 }
 
+#if 0
+/* internal_hash will not go very far down a list because of the way
+   its written. For items we need to hash all elements so we provide
+   our own list hashing function. */
 static unsigned long
 full_list_hash (Lisp_Object obj, int depth)
 {
@@ -943,12 +950,14 @@ full_list_hash (Lisp_Object obj, int depth)
   if (!CONSP (obj))
     return internal_hash (obj, depth + 1);
 
-  LIST_LOOP (rest, obj)
+  hash = LISP_HASH (XCAR (obj));
+  LIST_LOOP (rest, XCDR (obj))
     {
-      hash = HASH2 (internal_hash (XCAR (rest), depth + 1), hash);
+      hash = HASH2 (hash, internal_hash (XCAR (rest), depth + 1));
     }
   return hash;
 }
+#endif
 
 static unsigned long
 image_instance_hash (Lisp_Object obj, int depth)
@@ -984,12 +993,8 @@ image_instance_hash (Lisp_Object obj, int depth)
          displayed. */
       hash = HASH4 (hash,
                    LISP_HASH (IMAGE_INSTANCE_WIDGET_TYPE (i)),
-                   full_list_hash (IMAGE_INSTANCE_WIDGET_PROPS (i), depth + 1),
-                   full_list_hash 
-                   (NILP (IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (i)) 
-                     ? IMAGE_INSTANCE_WIDGET_ITEMS (i)
-                     : IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (i),
-                     depth + 1));
+                   internal_hash (IMAGE_INSTANCE_WIDGET_PROPS (i), depth + 1),
+                   internal_hash (IMAGE_INSTANCE_WIDGET_ITEMS (i), depth + 1));
     case IMAGE_SUBWINDOW:
       hash = HASH2 (hash, (int) IMAGE_INSTANCE_SUBWINDOW_ID (i));
       break;
@@ -2784,18 +2789,11 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
       Lisp_Object pointer_fg = Qnil;
       Lisp_Object pointer_bg = Qnil;
 
-      if (dest_mask & (IMAGE_SUBWINDOW_MASK
-                      | IMAGE_WIDGET_MASK
-                      | IMAGE_TEXT_MASK))
-       {
-         if (!WINDOWP (domain))
-           signal_simple_error ("Can't instantiate text or subwindow outside a window",
-                                instantiator);
-         else if ((dest_mask & (IMAGE_SUBWINDOW_MASK
-                                | IMAGE_WIDGET_MASK))
-                  && MINI_WINDOW_P (XWINDOW (domain)))
-           domain = Fnext_window (domain, Qnil, Qnil, Qnil);
-       }
+      /* We have to put subwindow, widget and text image instances in
+        a per-window cache so that we can see the same glyph in
+        different windows. Unfortunately we do not know the type of
+        image_instance until after it has been created. We thus need
+        to be really careful how we place things.  */
 
       if (pointerp)
        {
@@ -2850,7 +2848,9 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
              &&
              dest_mask & (IMAGE_SUBWINDOW_MASK
                           | IMAGE_WIDGET_MASK
-                          | IMAGE_TEXT_MASK))
+                          | IMAGE_LAYOUT_MASK
+                          | IMAGE_TEXT_MASK)
+             && WINDOWP (domain))
            {
              instance = Fgethash (instantiator,
                                   XWINDOW (domain)->subwindow_instance_cache,
@@ -2889,11 +2889,36 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
              &
              (IMAGE_SUBWINDOW_MASK 
               | IMAGE_WIDGET_MASK
+              | IMAGE_LAYOUT_MASK
               | IMAGE_TEXT_MASK ))
            {
+#ifdef ERROR_CHECK_GLYPHS
+             if (XIMAGE_INSTANCE_TYPE (instance) != IMAGE_TEXT)
+               assert (EQ (XIMAGE_INSTANCE_SUBWINDOW_FRAME (instance),
+                           FW_FRAME (domain)));
+#endif
+             if (!WINDOWP (domain))
+               signal_simple_error ("Can't instantiate text or subwindow outside a window",
+                                    instantiator);
+#ifdef ERROR_CHECK_GLYPHS
+             if (XIMAGE_INSTANCE_TYPE (instance) != IMAGE_TEXT)
+               assert (EQ (XIMAGE_INSTANCE_SUBWINDOW_FRAME (instance),
+                           FW_FRAME (domain)));
+#endif
              Fsetcdr (XCDR (locative), XWINDOW (domain)->subwindow_instance_cache);
            }
          unbind_to (speccount, Qnil);
+#ifdef ERROR_CHECK_GLYPHS
+         if (image_instance_type_to_mask (XIMAGE_INSTANCE_TYPE (instance))
+             &
+             (IMAGE_SUBWINDOW_MASK 
+              | IMAGE_WIDGET_MASK
+              | IMAGE_LAYOUT_MASK
+              | IMAGE_TEXT_MASK ))
+           assert (EQ (Fgethash ((pointerp ? ls3 : instantiator),
+                                 XWINDOW (domain)->subwindow_instance_cache,
+                                 Qunbound), instance));
+#endif
        }
       else
        free_list (ls3);
@@ -2901,6 +2926,12 @@ image_instantiate (Lisp_Object specifier, Lisp_Object matchspec,
       if (NILP (instance))
        signal_simple_error ("Can't instantiate image (probably cached)",
                             instantiator);
+#ifdef ERROR_CHECK_GLYPHS
+      if (image_instance_type_to_mask (XIMAGE_INSTANCE_TYPE (instance))
+         & (IMAGE_SUBWINDOW_MASK | IMAGE_WIDGET_MASK))
+       assert (EQ (XIMAGE_INSTANCE_SUBWINDOW_FRAME (instance),
+                   FW_FRAME (domain)));
+#endif
       return instance;
     }
 
@@ -4318,8 +4349,6 @@ update_subwindow (Lisp_Object subwindow)
 {
   Lisp_Image_Instance* ii = XIMAGE_INSTANCE (subwindow);
   int count = specpdl_depth ();
-  unsigned long display_hash = internal_hash (subwindow, 
-                                             IMAGE_INSTANCE_HASH_DEPTH);
 
   /* The update method is allowed to call eval.  Since it is quite
      common for this function to get called from somewhere in
@@ -4331,17 +4360,10 @@ update_subwindow (Lisp_Object subwindow)
       ||
       IMAGE_INSTANCE_TYPE (ii) == IMAGE_LAYOUT)
     {
-      if (IMAGE_INSTANCE_TYPE (ii) == IMAGE_WIDGET
-         &&
-         (display_hash != IMAGE_INSTANCE_DISPLAY_HASH (ii)
-          ||
-          IMAGE_INSTANCE_DISPLAY_HASH (ii) == 0))
-       {
-         update_widget (subwindow);
-       }
+      if (image_instance_changed (subwindow))
+       update_widget (subwindow);
       /* Reset the changed flags. */
       IMAGE_INSTANCE_WIDGET_FACE_CHANGED (ii) = 0;
-      IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED (ii) = 0;
       IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED (ii) = 0;
       IMAGE_INSTANCE_TEXT_CHANGED (ii) = 0;
     }
@@ -4361,12 +4383,30 @@ update_subwindow (Lisp_Object subwindow)
      visual appearance. However, we would rather that then the other
      way round - it simply means that we will get more displays than
      we might need. We can get better hashing by making the depth
-     negative - currently it will recurse down 5 levels.*/
-  IMAGE_INSTANCE_DISPLAY_HASH (ii) = display_hash;
+     negative - currently it will recurse down 7 levels.*/
+  IMAGE_INSTANCE_DISPLAY_HASH (ii) = internal_hash (subwindow, 
+                                                   IMAGE_INSTANCE_HASH_DEPTH);
 
   unbind_to (count, Qnil);
 }
 
+int
+image_instance_changed (Lisp_Object subwindow)
+{
+  Lisp_Image_Instance* ii = XIMAGE_INSTANCE (subwindow);
+
+  if (internal_hash (subwindow, IMAGE_INSTANCE_HASH_DEPTH) != 
+      IMAGE_INSTANCE_DISPLAY_HASH (ii))
+    return 1;
+  else if ((WIDGET_IMAGE_INSTANCEP (subwindow)
+           || LAYOUT_IMAGE_INSTANCEP (subwindow))
+          && !internal_equal (IMAGE_INSTANCE_WIDGET_ITEMS (ii),
+                              IMAGE_INSTANCE_WIDGET_PENDING_ITEMS (ii), 0))
+    return 1;
+  else
+    return 0;
+}
+
 /* Update all the subwindows on a frame. */
 DEFUN ("update-widget-instances", Fupdate_widget_instances,1, 1, 0, /*
 Given a FRAME, re-evaluate the display hash code for all widgets in the frame.
@@ -4386,18 +4426,10 @@ Don't use this.
          Dynarr_atp (f->subwindow_cachels, elt);
 
        if (cachel->being_displayed &&
-           XIMAGE_INSTANCE_TYPE (cachel->subwindow)
-           == IMAGE_WIDGET)
+           image_instance_changed (cachel->subwindow))
          {
-           /* If a subwindow hash changed mark it so that redisplay
-              will fix it. */
-           if (internal_hash (cachel->subwindow, 
-                              IMAGE_INSTANCE_HASH_DEPTH) !=
-               XIMAGE_INSTANCE_DISPLAY_HASH (cachel->subwindow))
-             {
-               set_image_instance_dirty_p (cachel->subwindow, 1);
-               MARK_FRAME_GLYPHS_CHANGED (f);
-             }
+           set_image_instance_dirty_p (cachel->subwindow, 1);
+           MARK_FRAME_GLYPHS_CHANGED (f);
          }
       }
   return Qnil;
index b405f9e..77ae598 100644 (file)
@@ -550,7 +550,6 @@ struct Lisp_Image_Instance
       /* Change flags to augment dirty. */
       unsigned int face_changed : 1;
       unsigned int items_changed : 1;
-      unsigned int percent_changed : 1;
     } subwindow;
   } u;
 
@@ -566,7 +565,7 @@ struct Lisp_Image_Instance
 #define LAYOUT_JUSTIFY_RIGHT 1
 #define LAYOUT_JUSTIFY_CENTER 2
 
-#define IMAGE_INSTANCE_HASH_DEPTH -2
+#define IMAGE_INSTANCE_HASH_DEPTH 0
 
 /* Accessor macros. */
 #define IMAGE_INSTANCE_DEVICE(i) ((i)->device)
@@ -596,8 +595,6 @@ struct Lisp_Image_Instance
   ((i)->u.subwindow.face_changed)
 #define IMAGE_INSTANCE_WIDGET_ITEMS_CHANGED(i) \
   ((i)->u.subwindow.items_changed)
-#define IMAGE_INSTANCE_WIDGET_PERCENT_CHANGED(i) \
-  ((i)->u.subwindow.percent_changed)
 #define IMAGE_INSTANCE_LAYOUT_CHANGED(i) ((i)->layout_changed)
 #define IMAGE_INSTANCE_OPTIMIZE_OUTPUT(i) ((i)->optimize_output)
 
@@ -885,12 +882,14 @@ extern Lisp_Object Qtree_view, Qtab_control, Qprogress_gauge, Q_border;
 extern Lisp_Object Q_mask_file, Q_mask_data, Q_hotspot_x, Q_hotspot_y;
 extern Lisp_Object Q_foreground, Q_background, Q_face, Q_descriptor, Q_group;
 extern Lisp_Object Q_width, Q_height, Q_pixel_width, Q_pixel_height, Q_text;
-extern Lisp_Object Q_items, Q_properties, Q_image, Q_percent, Qimage_conversion_error;
+extern Lisp_Object Q_items, Q_properties, Q_image, Qimage_conversion_error;
 extern Lisp_Object Q_orientation, Qupdate_widget_instances;
+extern Lisp_Object Qwidget_callback_current_channel;
 extern Lisp_Object Vcontinuation_glyph, Vcontrol_arrow_glyph, Vhscroll_glyph;
 extern Lisp_Object Vinvisible_text_glyph, Voctal_escape_glyph, Vtruncation_glyph;
 extern Lisp_Object Vxemacs_logo;
 
+
 unsigned short glyph_width (Lisp_Object glyph, Lisp_Object domain);
 unsigned short glyph_ascent (Lisp_Object glyph, Lisp_Object domain);
 unsigned short glyph_descent (Lisp_Object glyph, Lisp_Object domain);
@@ -1013,6 +1012,7 @@ int find_matching_subwindow (struct frame* f, int x, int y, int width, int heigh
 void update_widget (Lisp_Object widget);
 void update_subwindow (Lisp_Object subwindow);
 Lisp_Object image_instance_parent_glyph (struct Lisp_Image_Instance*);
+int image_instance_changed (Lisp_Object image);
 
 struct expose_ignore
 {
index 7358472..dd0f948 100644 (file)
@@ -1036,7 +1036,7 @@ realloc (__ptr_t ptr, __malloc_size_t size)
   int type;
   __malloc_size_t block, blocks, oldlimit;
 
-  if (PURE_DATA(ptr))
+  if (PURE_DATA (ptr))
     {
       result = malloc (size);
       memcpy(result, ptr, size);
index 415d9e2..9fd0b37 100644 (file)
@@ -22,9 +22,11 @@ Boston, MA 02111-1307, USA.  */
 
 #include <config.h>
 #include "lisp.h"
-#include "gui.h"
 #include "redisplay.h"
+#include "gui.h"
+#include "glyphs.h"
 #include "frame.h"
+#include "events.h"
 #include "elhash.h"
 #include "console-msw.h"
 #include "buffer.h"
@@ -39,26 +41,58 @@ Lisp_Object
 mswindows_handle_gui_wm_command (struct frame* f, HWND ctrl, LPARAM id)
 {
   /* Try to map the command id through the proper hash table */
-  Lisp_Object data, fn, arg, frame;
+  Lisp_Object callback, callback_ex, image_instance, frame, event;
+
+  XSETFRAME (frame, f);
 
   /* #### make_int should assert that --kkm */
   assert (XINT (make_int (id)) == id);
 
-  data = Fgethash (make_int (id), 
-                  FRAME_MSWINDOWS_WIDGET_HASH_TABLE (f), Qnil);
-  
-  if (NILP (data) || UNBOUNDP (data))
+  image_instance = Fgethash (make_int (id), 
+                            FRAME_MSWINDOWS_WIDGET_HASH_TABLE1 (f), Qnil);
+  callback = Fgethash (make_int (id), 
+                      FRAME_MSWINDOWS_WIDGET_HASH_TABLE2 (f), Qnil);
+  callback_ex = Fgethash (make_int (id), 
+                         FRAME_MSWINDOWS_WIDGET_HASH_TABLE3 (f), Qnil);
+
+  if (!NILP (callback_ex) && !UNBOUNDP (callback_ex))
+    {
+      event = Fmake_event (Qnil, Qnil);
+
+      XEVENT (event)->event_type = misc_user_event;
+      XEVENT (event)->channel = frame;
+      XEVENT (event)->timestamp = GetTickCount ();
+      XEVENT (event)->event.eval.function = Qeval;
+      XEVENT (event)->event.eval.object =
+       list4 (Qfuncall, callback_ex, image_instance, event);
+    }
+  else if (NILP (callback) || UNBOUNDP (callback))
     return Qnil;
+  else
+    {
+      Lisp_Object fn, arg;
 
-  /* Ok, this is our one. Enqueue it. */
-  get_gui_callback (data, &fn, &arg);
-  XSETFRAME (frame, f);
-  mswindows_enqueue_misc_user_event (frame, fn, arg);
-  /* The result of this evaluation could cause other instances to change so 
-     enqueue an update callback to check this. */
-  mswindows_enqueue_misc_user_event (frame, Qeval, 
-                                    list2 (Qupdate_widget_instances, frame));
+      event = Fmake_event (Qnil, Qnil);
 
+      get_gui_callback (callback, &fn, &arg);
+      XEVENT (event)->event_type = misc_user_event;
+      XEVENT (event)->channel = frame;
+      XEVENT (event)->timestamp = GetTickCount ();
+      XEVENT (event)->event.eval.function = fn;
+      XEVENT (event)->event.eval.object = arg;
+    }
+
+  mswindows_enqueue_dispatch_event (event);
+  /* The result of this evaluation could cause other instances to change so 
+     enqueue an update callback to check this. We also have to make sure that
+     the function does not appear in the command history.
+     #### I'm sure someone can tell me how to optimize this. */
+  mswindows_enqueue_misc_user_event
+    (frame, Qeval, 
+     list3 (Qlet,
+           list2 (Qthis_command,
+                  Qlast_command),
+           list2 (Qupdate_widget_instances, frame)));
   return Qt;
 }
 
index 2099351..2cade75 100644 (file)
@@ -33,8 +33,10 @@ Boston, MA 02111-1307, USA.  */
 #include "gui-x.h"
 #include "buffer.h"
 #include "device.h"
+#include "events.h"
 #include "frame.h"
 #include "gui.h"
+#include "glyphs.h"
 #include "redisplay.h"
 #include "opaque.h"
 
@@ -210,9 +212,8 @@ void
 popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
                          XtPointer client_data)
 {
-  Lisp_Object fn, arg;
-  Lisp_Object data;
-  Lisp_Object frame;
+  Lisp_Object data, image_instance, callback, callback_ex;
+  Lisp_Object frame, event;
   int update_subwindows_p = 0;
   struct device *d = get_device_from_display (XtDisplay (widget));
   struct frame *f = x_any_widget_or_parent_to_frame (d, widget);
@@ -228,6 +229,10 @@ popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
   VOID_TO_LISP (data, client_data);
   XSETFRAME (frame, f);
 
+  image_instance = XCAR (data);
+  callback = XCAR (XCDR (data));
+  callback_ex = XCDR (XCDR (data));
+
 #if 0
   /* #### What the hell?  I can't understand why this call is here,
      and doing it is really courting disaster in the new event
@@ -241,13 +246,41 @@ popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
 
   if (((EMACS_INT) client_data) == -1)
     {
-      fn = Qrun_hooks;
-      arg = Qmenu_no_selection_hook;
+      event = Fmake_event (Qnil, Qnil);
+
+      XEVENT (event)->event_type = misc_user_event;
+      XEVENT (event)->channel = frame;
+      XEVENT (event)->event.eval.function = Qrun_hooks;
+      XEVENT (event)->event.eval.object = Qmenu_no_selection_hook;
     }
   else
     {
       update_subwindows_p = 1;
-      get_gui_callback (data, &fn, &arg);
+
+      if (!NILP (callback_ex) && !UNBOUNDP (callback_ex))
+       {
+         event = Fmake_event (Qnil, Qnil);
+         
+         XEVENT (event)->event_type = misc_user_event;
+         XEVENT (event)->channel = frame;
+         XEVENT (event)->event.eval.function = Qeval;
+         XEVENT (event)->event.eval.object =
+           list4 (Qfuncall, callback_ex, image_instance, event);
+       }
+      else if (NILP (callback) || UNBOUNDP (callback))
+       event = Qnil;
+      else
+       {
+         Lisp_Object fn, arg;
+
+         event = Fmake_event (Qnil, Qnil);
+
+         get_gui_callback (callback, &fn, &arg);
+         XEVENT (event)->event_type = misc_user_event;
+         XEVENT (event)->channel = frame;
+         XEVENT (event)->event.eval.function = fn;
+         XEVENT (event)->event.eval.object = arg;
+       }
     }
 
   /* This is the timestamp used for asserting focus so we need to get an
@@ -258,12 +291,19 @@ popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
 #else
   DEVICE_X_MOUSE_TIMESTAMP (d) = DEVICE_X_GLOBAL_MOUSE_TIMESTAMP (d);
 #endif
-  signal_special_Xt_user_event (frame, fn, arg);
+  if (!NILP (event))
+    enqueue_Xt_dispatch_event (event);
   /* The result of this evaluation could cause other instances to change so 
-     enqueue an update callback to check this. */
-  if (update_subwindows_p)
+     enqueue an update callback to check this. We also have to make sure that
+     the function does not appear in the command history.
+     #### I'm sure someone can tell me how to optimize this. */
+  if (update_subwindows_p && !NILP (event))
     signal_special_Xt_user_event (frame, Qeval,
-                                 list2 (Qupdate_widget_instances, frame));
+                                 list3 (Qlet,
+                                        list2 (Qthis_command,
+                                               Qlast_command),
+                                        list2 (Qupdate_widget_instances,
+                                               frame)));
 }
 
 #if 1
@@ -337,8 +377,10 @@ strdup_and_add_accel (char *name)
 /* This does the dirty work.  gc_currently_forbidden is 1 when this is called.
  */
 int
-button_item_to_widget_value (Lisp_Object gui_item, widget_value *wv,
-                            int allow_text_field_p, int no_keys_p)
+button_item_to_widget_value (Lisp_Object gui_object_instance,
+                            Lisp_Object gui_item, widget_value *wv,
+                            int allow_text_field_p, int no_keys_p, 
+                            int menu_entry_p)
 {
   /* !!#### This function has not been Mule-ized */
   /* This function cannot GC because gc_currently_forbidden is set when
@@ -362,7 +404,7 @@ button_item_to_widget_value (Lisp_Object gui_item, widget_value *wv,
     signal_simple_error(":filter keyword not permitted on leaf nodes", gui_item);
 
 #ifdef HAVE_MENUBARS
-  if (!gui_item_included_p (gui_item, Vmenubar_configuration))
+  if (menu_entry_p && !gui_item_included_p (gui_item, Vmenubar_configuration))
     {
       /* the include specification says to ignore this item. */
       return 0;
@@ -401,12 +443,14 @@ button_item_to_widget_value (Lisp_Object gui_item, widget_value *wv,
   wv_set_evalable_slot (wv->enabled, pgui->active);
   wv_set_evalable_slot (wv->selected, pgui->selected);
 
-  if (!NILP (pgui->callback))
-    wv->call_data = LISP_TO_VOID (pgui->callback);
+  if (!NILP (pgui->callback) || !NILP (pgui->callback_ex))
+    wv->call_data = LISP_TO_VOID (cons3 (gui_object_instance,
+                                        pgui->callback,
+                                        pgui->callback_ex));
 
   if (no_keys_p
 #ifdef HAVE_MENUBARS
-      || !menubar_show_keybindings
+      || (menu_entry_p && !menubar_show_keybindings)
 #endif
       )
     wv->key = 0;
@@ -486,10 +530,13 @@ button_item_to_widget_value (Lisp_Object gui_item, widget_value *wv,
 }
 
 /* parse tree's of gui items into widget_value hierarchies */
-static void gui_item_children_to_widget_values (Lisp_Object items, widget_value* parent);
+static void gui_item_children_to_widget_values (Lisp_Object gui_object_instance,
+                                               Lisp_Object items,
+                                               widget_value* parent);
 
 static widget_value *
-gui_items_to_widget_values_1 (Lisp_Object items, widget_value* parent,
+gui_items_to_widget_values_1 (Lisp_Object gui_object_instance,
+                             Lisp_Object items, widget_value* parent,
                              widget_value* prev)
 {
   widget_value* wv = 0;
@@ -503,7 +550,8 @@ gui_items_to_widget_values_1 (Lisp_Object items, widget_value* parent,
        parent->contents = wv;
       else
        prev->next = wv;
-      if (!button_item_to_widget_value (items, wv, 0, 1))
+      if (!button_item_to_widget_value (gui_object_instance,
+                                       items, wv, 0, 1, 0))
        {
          free_widget_value_tree (wv);
          if (parent)
@@ -523,35 +571,40 @@ gui_items_to_widget_values_1 (Lisp_Object items, widget_value* parent,
        signal_simple_error ("parent item must not be a list", XCAR (items));
 
       if (parent)
-       wv = gui_items_to_widget_values_1 (XCAR (items), parent, 0);
+       wv = gui_items_to_widget_values_1 (gui_object_instance,
+                                          XCAR (items), parent, 0);
       else
-       wv = gui_items_to_widget_values_1 (XCAR (items), 0, prev);
+       wv = gui_items_to_widget_values_1 (gui_object_instance,
+                                          XCAR (items), 0, prev);
       /* the rest are the children */
-      gui_item_children_to_widget_values (XCDR (items), wv);
+      gui_item_children_to_widget_values (gui_object_instance,
+                                         XCDR (items), wv);
     }
   return wv;
 }
 
 static void
-gui_item_children_to_widget_values (Lisp_Object items, widget_value* parent)
+gui_item_children_to_widget_values (Lisp_Object gui_object_instance,
+                                   Lisp_Object items, widget_value* parent)
 {
   widget_value* wv = 0, *prev = 0;
   Lisp_Object rest;
   CHECK_CONS (items);
 
   /* first one is master */
-  prev = gui_items_to_widget_values_1 (XCAR (items), parent, 0);
+  prev = gui_items_to_widget_values_1 (gui_object_instance, XCAR (items),
+                                      parent, 0);
   /* the rest are the children */
   LIST_LOOP (rest, XCDR (items))
     {
       Lisp_Object tab = XCAR (rest);
-      wv = gui_items_to_widget_values_1 (tab, 0, prev);
+      wv = gui_items_to_widget_values_1 (gui_object_instance, tab, 0, prev);
       prev = wv;
     }
 }
 
 widget_value *
-gui_items_to_widget_values (Lisp_Object items)
+gui_items_to_widget_values (Lisp_Object gui_object_instance, Lisp_Object items)
 {
   /* !!#### This function has not been Mule-ized */
   /* This function can GC */
@@ -575,7 +628,7 @@ gui_items_to_widget_values (Lisp_Object items)
   wv_closure = make_opaque_ptr (control);
   record_unwind_protect (widget_value_unwind, wv_closure);
 
-  gui_items_to_widget_values_1 (items, control, 0);
+  gui_items_to_widget_values_1 (gui_object_instance, items, control, 0);
 
   /* mess about getting the data we really want */
   tmp = control;
index f2fa851..d507f69 100644 (file)
@@ -69,9 +69,12 @@ void free_popup_widget_value_tree (widget_value *wv);
 void popup_selection_callback (Widget widget, LWLIB_ID ignored_id,
                               XtPointer client_data);
 char *strdup_and_add_accel (char *name);
-int button_item_to_widget_value (Lisp_Object desc, widget_value *wv,
-                                int allow_text_field_p, int no_keys_p);
-widget_value * gui_items_to_widget_values (Lisp_Object items);
+int button_item_to_widget_value (Lisp_Object gui_object_instance,
+                                Lisp_Object gui_item, widget_value *wv,
+                                int allow_text_field_p, int no_keys_p, 
+                                int menu_entry_p);
+widget_value * gui_items_to_widget_values (Lisp_Object gui_object_instance,
+                                          Lisp_Object items);
 Lisp_Object menu_name_to_accelerator (char *name);
 char *menu_separator_style (const char *s);
 Lisp_Object widget_value_unwind (Lisp_Object closure);
index d1a546e..5705cea 100644 (file)
--- a/src/gui.c
+++ b/src/gui.c
@@ -32,7 +32,7 @@ Boston, MA 02111-1307, USA.  */
 
 Lisp_Object Q_active, Q_suffix, Q_keys, Q_style, Q_selected;
 Lisp_Object Q_filter, Q_config, Q_included, Q_key_sequence;
-Lisp_Object Q_accelerator, Q_label, Q_callback;
+Lisp_Object Q_accelerator, Q_label, Q_callback, Q_callback_ex, Q_value;
 Lisp_Object Qtoggle, Qradio;
 
 static Lisp_Object parse_gui_item_tree_list (Lisp_Object list);
@@ -74,7 +74,13 @@ separator_string_p (const char *s)
 void
 get_gui_callback (Lisp_Object data, Lisp_Object *fn, Lisp_Object *arg)
 {
-  if (SYMBOLP (data)
+  if (EQ (data, Qquit))
+    {
+      *fn = Qeval;
+      *arg = list3 (Qsignal, list2 (Qquote, Qquit), Qnil);
+      Vquit_flag = Qt;
+    }
+  else if (SYMBOLP (data)
       || (COMPILED_FUNCTIONP (data)
          && XCOMPILED_FUNCTION (data)->flags.interactivep)
       || (CONSP (data) && (EQ (XCAR (data), Qlambda))
@@ -122,7 +128,9 @@ gui_item_add_keyval_pair (Lisp_Object gui_item,
   else if (EQ (key, Q_style))   pgui_item->style    = val;
   else if (EQ (key, Q_selected)) pgui_item->selected = val;
   else if (EQ (key, Q_keys))    pgui_item->keys     = val;
-  else if (EQ (key, Q_callback))        pgui_item->callback     = val;
+  else if (EQ (key, Q_callback)) pgui_item->callback = val;
+  else if (EQ (key, Q_callback_ex)) pgui_item->callback_ex = val;
+  else if (EQ (key, Q_value))   pgui_item->value     = val;
   else if (EQ (key, Q_key_sequence)) ;   /* ignored for FSF compatibility */
   else if (EQ (key, Q_label)) ;   /* ignored for 21.0 implement in 21.2  */
   else if (EQ (key, Q_accelerator))
@@ -144,6 +152,7 @@ gui_item_init (Lisp_Object gui_item)
 
   lp->name     = Qnil;
   lp->callback = Qnil;
+  lp->callback_ex = Qnil;
   lp->suffix   = Qnil;
   lp->active   = Qt;
   lp->included = Qt;
@@ -153,6 +162,7 @@ gui_item_init (Lisp_Object gui_item)
   lp->selected = Qnil;
   lp->keys     = Qnil;
   lp->accelerator     = Qnil;
+  lp->value = Qnil;
 }
 
 Lisp_Object
@@ -257,6 +267,8 @@ gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item)
 
   if (!NILP (pgui_item->callback))
     Fplist_put (plist, Q_callback, pgui_item->callback);
+  if (!NILP (pgui_item->callback_ex))
+    Fplist_put (plist, Q_callback_ex, pgui_item->callback_ex);
   if (!NILP (pgui_item->suffix))
     Fplist_put (plist, Q_suffix, pgui_item->suffix);
   if (!NILP (pgui_item->active))
@@ -275,6 +287,8 @@ gui_add_item_keywords_to_plist (Lisp_Object plist, Lisp_Object gui_item)
     Fplist_put (plist, Q_keys, pgui_item->keys);
   if (!NILP (pgui_item->accelerator))
     Fplist_put (plist, Q_accelerator, pgui_item->accelerator);
+  if (!NILP (pgui_item->value))
+    Fplist_put (plist, Q_value, pgui_item->value);
 }
 
 /*
@@ -482,6 +496,7 @@ mark_gui_item (Lisp_Object obj)
 
   mark_object (p->name);
   mark_object (p->callback);
+  mark_object (p->callback_ex);
   mark_object (p->config);
   mark_object (p->suffix);
   mark_object (p->active);
@@ -492,50 +507,34 @@ mark_gui_item (Lisp_Object obj)
   mark_object (p->selected);
   mark_object (p->keys);
   mark_object (p->accelerator);
+  mark_object (p->value);
 
   return Qnil;
 }
 
 static unsigned long
-gui_item_hash_internal (Lisp_Object obj, int depth)
+gui_item_hash (Lisp_Object obj, int depth)
 {
   Lisp_Gui_Item *p = XGUI_ITEM (obj);
 
-  return HASH2 (HASH5 (internal_hash (p->name, depth + 1),
+  return HASH2 (HASH6 (internal_hash (p->name, depth + 1),
                       internal_hash (p->callback, depth + 1),
+                      internal_hash (p->callback_ex, depth + 1),
                       internal_hash (p->suffix, depth + 1),
                       internal_hash (p->active, depth + 1),
                       internal_hash (p->included, depth + 1)),
-               HASH5 (internal_hash (p->config, depth + 1),
+               HASH6 (internal_hash (p->config, depth + 1),
                       internal_hash (p->filter, depth + 1),
                       internal_hash (p->style, depth + 1),
                       internal_hash (p->selected, depth + 1),
-                      internal_hash (p->keys, depth + 1)));
-}
-
-static unsigned long
-gui_item_hash (Lisp_Object obj, int depth)
-{
-  Lisp_Gui_Item *p = XGUI_ITEM (obj);
-
-  /* Note that this evaluates the active and selected slots so that
-     the hash changes when the result of these changes. */
-  return HASH2 (HASH5 (internal_hash (p->name, depth + 1),
-                      internal_hash (p->callback, depth + 1),
-                      internal_hash (p->suffix, depth + 1),
-                      gui_item_active_p (obj),
-                      internal_hash (p->included, depth + 1)),
-               HASH5 (internal_hash (p->config, depth + 1),
-                      internal_hash (p->filter, depth + 1),
-                      internal_hash (p->style, depth + 1),
-                      gui_item_selected_p (obj),
-                      internal_hash (p->keys, depth + 1)));
+                      internal_hash (p->keys, depth + 1),
+                      internal_hash (p->value, depth + 1)));
 }
 
 int
 gui_item_id_hash (Lisp_Object hashtable, Lisp_Object gitem, int slot)
 {
-  int hashid = gui_item_hash_internal (gitem, 0);
+  int hashid = gui_item_hash (gitem, 0);
   int id = GUI_ITEM_ID_BITS (hashid, slot);
   while (!NILP (Fgethash (make_int (id),
                          hashtable, Qnil)))
@@ -555,6 +554,8 @@ gui_item_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
        &&
        internal_equal (p1->callback, p2->callback, depth + 1)
        &&
+       internal_equal (p1->callback_ex, p2->callback_ex, depth + 1)
+       &&
        EQ (p1->suffix, p2->suffix)
        &&
        EQ (p1->active, p2->active)
@@ -571,7 +572,9 @@ gui_item_equal (Lisp_Object obj1, Lisp_Object obj2, int depth)
        &&
        EQ (p1->accelerator, p2->accelerator)
        &&
-       EQ (p1->keys, p2->keys)))
+       EQ (p1->keys, p2->keys)
+       &&
+       EQ (p1->value, p2->value)))
     return 0;
   return 1;
 }
@@ -590,6 +593,49 @@ print_gui_item (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
   write_c_string (buf, printcharfun);
 }
 
+static Lisp_Object
+copy_gui_item (Lisp_Object gui_item)
+{
+  Lisp_Object  ret = allocate_gui_item ();
+  Lisp_Gui_Item *lp, *g = XGUI_ITEM (gui_item);
+
+  lp = XGUI_ITEM (ret);
+  lp->name     = g->name;
+  lp->callback = g->callback;
+  lp->callback_ex = g->callback_ex;
+  lp->suffix   = g->suffix;
+  lp->active   = g->active;
+  lp->included = g->included;
+  lp->config   = g->config;
+  lp->filter   = g->filter;
+  lp->style    = g->style;
+  lp->selected = g->selected;
+  lp->keys     = g->keys;
+  lp->accelerator     = g->accelerator;
+  lp->value = g->value;
+
+  return ret;
+}
+
+Lisp_Object
+copy_gui_item_tree (Lisp_Object arg)
+{
+  if (CONSP (arg))
+    {
+      Lisp_Object rest = arg = Fcopy_sequence (arg);
+      while (CONSP (rest))
+       {
+         XCAR (rest) = copy_gui_item_tree (XCAR (rest));
+         rest = XCDR (rest);
+       }
+      return arg;
+    }
+  else if (GUI_ITEMP (arg))
+    return copy_gui_item (arg);
+  else 
+    return arg;
+}
+
 /* parse a glyph descriptor into a tree of gui items.
 
    The gui_item slot of an image instance can be a single item or an
@@ -681,6 +727,8 @@ syms_of_gui (void)
   defkeyword (&Q_accelerator, ":accelerator");
   defkeyword (&Q_label, ":label");
   defkeyword (&Q_callback, ":callback");
+  defkeyword (&Q_callback_ex, ":callback-ex");
+  defkeyword (&Q_value, ":value");
 
   defsymbol (&Qtoggle, "toggle");
   defsymbol (&Qradio, "radio");
index cdc4a39..9974c9b 100644 (file)
--- a/src/gui.h
+++ b/src/gui.h
@@ -43,6 +43,7 @@ struct Lisp_Gui_Item
   struct lcrecord_header header;
   Lisp_Object name;            /* String */
   Lisp_Object callback;                /* Symbol or form */
+  Lisp_Object callback_ex;     /* Form taking context arguments */
   Lisp_Object suffix;          /* String */
   Lisp_Object active;          /* Form */
   Lisp_Object included;                /* Form */
@@ -52,6 +53,7 @@ struct Lisp_Gui_Item
   Lisp_Object selected;                /* Form */
   Lisp_Object keys;            /* String */
   Lisp_Object accelerator;     /* Char or Symbol  */
+  Lisp_Object value;           /* Anything you like */
 };
 
 DECLARE_LRECORD (gui_item, Lisp_Gui_Item);
@@ -63,7 +65,7 @@ DECLARE_LRECORD (gui_item, Lisp_Gui_Item);
 
 extern Lisp_Object Q_accelerator, Q_active, Q_config, Q_filter, Q_included;
 extern Lisp_Object Q_keys, Q_selected, Q_suffix, Qradio, Qtoggle;
-extern Lisp_Object Q_key_sequence, Q_label, Q_callback;
+extern Lisp_Object Q_key_sequence, Q_label, Q_callback, Q_callback_ex, Q_value;
 
 void gui_item_add_keyval_pair (Lisp_Object,
                               Lisp_Object key, Lisp_Object val,
@@ -85,6 +87,7 @@ unsigned int gui_item_display_flush_right (Lisp_Object gui_item,
 Lisp_Object allocate_gui_item (void);
 void gui_item_init (Lisp_Object gui_item);
 Lisp_Object parse_gui_item_tree_children (Lisp_Object list);
+Lisp_Object copy_gui_item_tree (Lisp_Object arg);
 
 /* this is mswindows biased but reasonably safe I think */
 #define GUI_ITEM_ID_SLOTS 8
index ae568f7..242a34a 100644 (file)
@@ -50,6 +50,9 @@ Lisp_Object Qgutter_size;
 Lisp_Object Qgutter_visible;
 Lisp_Object Qdefault_gutter_position_changed_hook;
 
+static void
+update_gutter_geometry (struct frame *f, enum gutter_pos pos);
+
 #define SET_GUTTER_WAS_VISIBLE_FLAG(frame, pos, flag)  \
   do {                                                 \
     switch (pos)                                       \
@@ -85,6 +88,7 @@ static int gutter_was_visible (struct frame* frame, enum gutter_pos pos)
       return frame->right_gutter_was_visible;
     default:
       abort ();
+       return 0;       /* To keep the compiler happy */
     }
 }
 
@@ -256,7 +260,7 @@ output_gutter (struct frame *f, enum gutter_pos pos, int force)
   int line, border_width;
   face_index findex;
   display_line_dynarr* ddla, *cdla;
-  struct display_line *dl;
+  struct display_line *dl = 0;
   int cdla_len;
 
   if (!WINDOW_LIVE_P (w))
@@ -321,10 +325,38 @@ output_gutter (struct frame *f, enum gutter_pos pos, int force)
        }
       
       /* grab coordinates of last line and blank after it. */
-      dl = Dynarr_atp (ddla, Dynarr_length (ddla) - 1);
-      ypos = dl->ypos + dl->descent - dl->clip;
+      if (Dynarr_length (ddla) > 0)
+       {
+         dl = Dynarr_atp (ddla, Dynarr_length (ddla) - 1);
+         ypos = dl->ypos + dl->descent - dl->clip;
+       }
+      else
+       ypos = y;
+
       redisplay_clear_region (window, findex, x + border_width , ypos,
                              width - 2 * border_width, height - (ypos - y) - border_width);
+      /* If, for some reason, we have more to display than we have
+         room for, and we are allowed to resize the gutter, then make
+         sure this happens before the next time we try and
+         output. This can happen when face font sizes change. */
+      if (dl && dl->clip > 0 && EQ (w->gutter_size[pos], Qautodetect))
+       {
+         /* #### Ideally we would just mark the specifier as dirty
+         and everything else would "just work". Unfortunately we have
+         two problems with this. One is that the specifier cache
+         won't be recalculated unless the specifier code thinks the
+         cached value has actually changed, even though we have
+         marked the specifier as dirty. Additionally, although doing
+         this results in a gutter size change, we never seem to get
+         back into redisplay so that the frame size can be updated. I
+         think this is because we are already in redisplay and later
+         on the frame will be marked as clean. Thus we also have to
+         force a pending recalculation of the frame size.  */
+         w->gutter_size[pos] = Qnil;
+         Fset_specifier_dirty_flag (Vgutter_size[pos]);
+         update_gutter_geometry (f, pos);
+       }
+
       /* bevel the gutter area if so desired */
       if (border_width != 0)
        {
@@ -468,6 +500,25 @@ gutter_extent_signal_changed_region_maybe (Lisp_Object obj,
 
 /* We have to change the gutter geometry separately to the gutter
    update since it needs to occur outside of redisplay proper. */
+static void
+update_gutter_geometry (struct frame *f, enum gutter_pos pos)
+{
+  /* If the gutter geometry has changed then re-layout the
+     frame. If we are in display there is almost no point in doing
+     anything else since the frame size changes will be delayed
+     until we are out of redisplay proper. */
+  if (FRAME_GUTTER_BOUNDS (f, pos) != f->current_gutter_bounds[pos])
+    {
+      int width, height;
+      pixel_to_char_size (f, FRAME_PIXWIDTH (f), FRAME_PIXHEIGHT (f),
+                         &width, &height);
+      change_frame_size (f, height, width, 0);
+    }
+
+  /* Mark sizes as up-to-date. */
+  f->current_gutter_bounds[pos] = FRAME_GUTTER_BOUNDS (f, pos);
+}
+
 void
 update_frame_gutter_geometry (struct frame *f)
 {
@@ -481,20 +532,7 @@ update_frame_gutter_geometry (struct frame *f)
          until we are out of redisplay proper. */
       GUTTER_POS_LOOP (pos)
        {
-         if (FRAME_GUTTER_BOUNDS (f, pos) != f->current_gutter_bounds[pos])
-           {
-             int width, height;
-             pixel_to_char_size (f, FRAME_PIXWIDTH (f), FRAME_PIXHEIGHT (f),
-                                 &width, &height);
-             change_frame_size (f, height, width, 0);
-             break;
-           }
-       }
-
-      GUTTER_POS_LOOP (pos)
-       {
-         /* Mark sizes as up-to-date. */
-         f->current_gutter_bounds[pos] = FRAME_GUTTER_BOUNDS (f, pos);
+         update_gutter_geometry (f, pos);
        }
     }
 }
@@ -557,6 +595,10 @@ redraw_exposed_gutter (struct frame *f, enum gutter_pos pos, int x, int y,
   if (((x + width) < g_x) || (x > (g_x + g_width)))
     return;
 
+#ifdef DEBUG_WIDGETS
+  printf ("redrawing gutter after expose %d+%d, %dx%d\n",
+         x, y, width, height);
+#endif
   /* #### optimize this - redrawing the whole gutter for every expose
      is very expensive. We reset the current display lines because if
      they're being exposed they are no longer current. */
@@ -573,11 +615,16 @@ redraw_exposed_gutters (struct frame *f, int x, int y, int width,
                        int height)
 {
   enum gutter_pos pos;
+
+  /* We have to be "in display" when we output the gutter - make it
+     so. */
+  hold_frame_size_changes ();
   GUTTER_POS_LOOP (pos)
     {
       if (FRAME_GUTTER_VISIBLE (f, pos))
        redraw_exposed_gutter (f, pos, x, y, width, height);
     }
+  unhold_one_frame_size_changes (f);
 }
 
 void
@@ -1047,8 +1094,8 @@ syms_of_gutter (void)
 
   defsymbol (&Qgutter_size, "gutter-size");
   defsymbol (&Qgutter_visible, "gutter-visible");
-  defsymbol (&Qdefault_gutter_position_changed_hook, 
-            "default-gutter-position-changed");
+  defsymbol (&Qdefault_gutter_position_changed_hook,
+            "default-gutter-position-changed-hook");
 }
 
 void
index b7014b8..d0a1bce 100644 (file)
@@ -51,6 +51,8 @@ Boston, MA 02111-1307, USA.  */
 #include <config.h>
 #include "lisp.h"
 
+#include "nativesound.h"
+
 #include <stdlib.h>
 #include <stdio.h>
 #ifdef HPUX10
@@ -61,6 +63,7 @@ Boston, MA 02111-1307, USA.  */
 #include <audio/CUlib.h>
 #endif /* !HPUX 10 */
 
+
 Lisp_Object Vhp_play_server;
 Lisp_Object Vhp_play_speaker;
 int         hp_play_gain;
@@ -202,11 +205,11 @@ play_sound_file (sound_file, volume)
 
     play_bucket_internal(audio, pSBucket, volume);
 
-    ASetErrorHandler(prevHandler);
+    ASetErrorHandler(prevHandler);    
 }
 
 
-void
+int
 play_sound_data (data, length, volume)
      unsigned char * data;
      int length;
@@ -218,7 +221,17 @@ play_sound_data (data, length, volume)
     SunHeader       *header;
     long            status;
     char            *server;
+    int             result;
+
+    /* #### Finish this to return an error code.
+       This function signal a lisp error. How consistent with the rest.
+       What if this function is needed in doing the beep for the error?
 
+       Apparently the author of this didn't read the comment in
+       Fplay_sound.
+    */
+       
+    
     if (STRINGP (Vhp_play_server))
       server = (char *) XSTRING_DATA (Vhp_play_server);
     server = "";
@@ -250,6 +263,8 @@ play_sound_data (data, length, volume)
     ASetErrorHandler(prevHandler);
     if (status)
       player_error_internal( audio, "Audio data copy failed", status );
+
+    return 1;
 }
 
 void
index dd05e78..24cd10f 100644 (file)
@@ -69,7 +69,7 @@ Boston, MA 02111-1307, USA.  */
 #endif
 
 #ifdef HAVE_POSTGRESQL
-#include <libpq-fe.h>
+#include POSTGRES_INCLUDE (libpq-fe.h)
 #include "postgresql.h"
 #endif
 
index fddbd25..c522ff2 100644 (file)
@@ -333,7 +333,6 @@ XIM_init_frame (struct frame *f)
 
   if (!xim)
     {
-      xim_info ("X Input Method open failed. Waiting for an XIM to be enabled.\n");
       return;
     }
 
index 0ca849c..ac443cd 100644 (file)
@@ -3082,6 +3082,13 @@ find_charsets_in_bufbyte_string (unsigned char *charsets, const Bufbyte *str,
   const Bufbyte *strend = str + len;
   memset (charsets, 0, NUM_LEADING_BYTES);
 
+  /* #### SJT doesn't like this. */
+  if (len == 0)
+    {
+      charsets[XCHARSET_LEADING_BYTE (Vcharset_ascii) - 128] = 1;
+      return;
+    }
+
   while (str < strend)
     {
       charsets[CHAR_LEADING_BYTE (charptr_emchar (str)) - 128] = 1;
@@ -3101,6 +3108,14 @@ find_charsets_in_emchar_string (unsigned char *charsets, const Emchar *str,
   int i;
 
   memset (charsets, 0, NUM_LEADING_BYTES);
+
+  /* #### SJT doesn't like this. */
+  if (len == 0)
+    {
+      charsets[XCHARSET_LEADING_BYTE (Vcharset_ascii) - 128] = 1;
+      return;
+    }
+
   for (i = 0; i < len; i++)
     {
       charsets[CHAR_LEADING_BYTE (str[i]) - 128] = 1;
index 6d5f603..afa9c08 100644 (file)
@@ -2071,7 +2071,8 @@ raw_lookup_key_mapper (Lisp_Object k, void *arg)
            {
              struct key_data metified;
              metified.keysym = raw_keys[1].keysym;
-             metified.modifiers = raw_keys[1].modifiers | XEMACS_MOD_META;
+             metified.modifiers = raw_keys[1].modifiers |
+               (unsigned char) XEMACS_MOD_META;
 
              /* Search for meta-next-char sequence directly */
              cmd = keymap_lookup_1 (k, &metified, accept_default);
index cce759f..b0ce90f 100644 (file)
@@ -293,7 +293,7 @@ buffer_line_number (struct buffer *b, Bufpos pos, int cachep)
       get_nearest_line_number (b, &beg, pos, &cached_lines);
     }
 
-  scan_buffer (b, '\n', beg, pos, pos > beg ? EMACS_INT_MAX : EMACS_INT_MIN,
+  scan_buffer (b, '\n', beg, pos, pos > beg ? EMACS_INT_MAX : -EMACS_INT_MAX,
               &shortage, 0);
 
   line = EMACS_INT_MAX - shortage;
index bf64eac..9b702a0 100644 (file)
 #endif
 
 #include "miscplay.h"
+#include "nativesound.h"
 
 #include <errno.h>
 #include <fcntl.h>
-#include SOUNDCARD_H_PATH /* Path computed by configure */
+#include SOUNDCARD_H_FILE /* Path computed by configure */
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -277,8 +278,11 @@ static int audio_init(int mixx_fd, int auddio_fd, int fmt, int speed,
 }
 
 /* XEmacs requires code both for playback of pre-loaded data and for playback
-   from a soundfile; we use one function for both cases */
-static void linux_play_data_or_file(int fd,unsigned char *data,
+   from a soundfile; we use one function for both cases.
+
+   Returns 1 on succes. 0 otherwise.
+*/
+static int linux_play_data_or_file(int fd,unsigned char *data,
                                    int length,int volume)
 {
   size_t         (*parsesndfile)(void **dayta,size_t *sz,void **outbuf);
@@ -292,11 +296,11 @@ static void linux_play_data_or_file(int fd,unsigned char *data,
   /* We need to read at least the header information before we can start
      doing anything */
   if (!data || length < HEADERSZ) {
-    if (fd < 0) return;
+    if (fd < 0) return 0;
     else {
       length = read(fd,sndbuf,SNDBUFSZ);
       if (length < HEADERSZ)
-       return;
+       return 0;
       data   = sndbuf;
       length = SNDBUFSZ; }
   }
@@ -305,14 +309,16 @@ static void linux_play_data_or_file(int fd,unsigned char *data,
 
   if (ffmt != fmtRaw && ffmt != fmtSunAudio && ffmt != fmtWave) {
     warn("Unsupported file format (neither RAW, nor Sun/DECAudio, nor WAVE)");
-      return; }
+      return 0; }
 
   /* The VoxWare-SDK discourages opening /dev/audio; opening /dev/dsp and
      properly initializing it via ioctl() is preferred */
   if ((audio_fd=open(audio_dev, O_WRONLY | O_NONBLOCK, 0)) < 0) {
-    perror(audio_dev);
+    /* JV. Much too verbose. In addition this can crash. See NOTE: in
+       Fplay_sound 
+       perror(audio_dev); */
     if (mix_fd > 0 && mix_fd != audio_fd) { close(mix_fd); mix_fd = -1; }
-    return; }
+    return 0; }
 
   /* The VoxWare-SDK discourages direct manipulation of the mixer device as
      this could lead to problems, when multiple sound cards are installed */
@@ -356,7 +362,7 @@ static void linux_play_data_or_file(int fd,unsigned char *data,
 
   if (ffmt == fmtWave)
     parse_wave_complete();
+
 
 END_OF_PLAY:
   /* Now cleanup all used resources */
@@ -378,12 +384,11 @@ END_OF_PLAY:
   close(audio_fd);
   audio_fd = -1;
 
-  return;
+  return 1;
 }
 
 /* Call "linux_play_data_or_file" with the appropriate parameters for
    playing a soundfile */
-void play_sound_file (char *sound_file, int volume);
 void play_sound_file (char *sound_file, int volume)
 {
   int fd;
@@ -398,9 +403,7 @@ void play_sound_file (char *sound_file, int volume)
 
 /* Call "linux_play_data_or_file" with the appropriate parameters for
    playing pre-loaded data */
-void play_sound_data (unsigned char *data, int length, int volume);
-void play_sound_data (unsigned char *data, int length, int volume)
+int play_sound_data (unsigned char *data, int length, int volume)
 {
-  linux_play_data_or_file(-1,data,length,volume);
-  return;
+  return linux_play_data_or_file(-1,data,length,volume);
 }
index 4a49f8f..70ef72c 100644 (file)
@@ -30,7 +30,7 @@ typedef
 union Lisp_Object
 {
   /* if non-valbits are at lower addresses */
-#if defined(WORDS_BIGENDIAN)
+#ifdef WORDS_BIGENDIAN
   struct
   {
     EMACS_UINT val : VALBITS;
index fcfddc9..3e07fd7 100644 (file)
@@ -165,13 +165,13 @@ void xfree (void *);
 #ifndef DOESNT_RETURN
 # if defined __GNUC__
 #  if ((__GNUC__ > 2) || (__GNUC__ == 2) && (__GNUC_MINOR__ >= 5))
-#   define DOESNT_RETURN void volatile
+#   define DOESNT_RETURN void
 #   define DECLARE_DOESNT_RETURN(decl) \
-           extern void volatile decl __attribute__ ((noreturn))
+           extern void decl __attribute__ ((noreturn))
 #   define DECLARE_DOESNT_RETURN_GCC_ATTRIBUTE_SYNTAX_SUCKS(decl,str,idx) \
      /* Should be able to state multiple independent __attribute__s, but  \
         the losing syntax doesn't work that way, and screws losing cpp */ \
-           extern void volatile decl \
+           extern void decl \
                   __attribute__ ((noreturn, format (printf, str, idx)))
 #  else
 #   define DOESNT_RETURN void volatile
@@ -968,6 +968,15 @@ void set_string_char (Lisp_String *s, Charcount i, Emchar c);
 
 #endif /* not MULE */
 
+/* Return the true size of a struct with a variable-length array field.  */
+#define FLEXIBLE_ARRAY_STRUCT_SIZEOF(flexible_array_structtype,                \
+                                    flexible_array_field,              \
+                                    flexible_array_length)             \
+  (offsetof (flexible_array_structtype, flexible_array_field) +                \
+   (offsetof (flexible_array_structtype, flexible_array_field[1]) -    \
+    offsetof (flexible_array_structtype, flexible_array_field[0])) *   \
+   (flexible_array_length))
+
 /*********** vector ***********/
 
 struct Lisp_Vector
@@ -2245,6 +2254,7 @@ Lisp_Object enqueue_misc_user_event_pos (Lisp_Object, Lisp_Object,
                                         Lisp_Object, int, int, int, int);
 
 /* Defined in event-Xt.c */
+void enqueue_Xt_dispatch_event (Lisp_Object event);
 void signal_special_Xt_user_event (Lisp_Object, Lisp_Object, Lisp_Object);
 
 
@@ -2720,6 +2730,7 @@ EXFUN (Fread_key_sequence, 3);
 EXFUN (Freally_free, 1);
 EXFUN (Frem, 2);
 EXFUN (Fremassq, 2);
+EXFUN (Freplace_list, 2);
 EXFUN (Fselected_frame, 1);
 EXFUN (Fset, 2);
 EXFUN (Fset_coding_category_system, 2);
@@ -2789,6 +2800,7 @@ extern Lisp_Object Qconsole, Qconsole_live_p, Qconst_specifier, Qcr, Qcritical;
 extern Lisp_Object Qcrlf, Qctext, Qcurrent_menubar, Qctext, Qcursor;
 extern Lisp_Object Qcyclic_variable_indirection, Qdata, Qdead, Qdecode;
 extern Lisp_Object Qdefault, Qdefun, Qdelete, Qdelq, Qdevice, Qdevice_live_p;
+extern Lisp_Object Qdialog;
 extern Lisp_Object Qdim, Qdimension, Qdisabled, Qdisplay, Qdisplay_table;
 extern Lisp_Object Qdoc_string, Qdomain_error, Qduplex, Qdynarr_overhead;
 extern Lisp_Object Qempty, Qencode, Qend_of_buffer, Qend_of_file, Qend_open;
@@ -2799,8 +2811,8 @@ extern Lisp_Object Qexternal_debugging_output, Qface, Qfeaturep;
 extern Lisp_Object Qfile_name, Qfile_error;
 extern Lisp_Object Qfont, Qforce_g0_on_output, Qforce_g1_on_output;
 extern Lisp_Object Qforce_g2_on_output, Qforce_g3_on_output, Qforeground;
-extern Lisp_Object Qformat, Qframe, Qframe_live_p, Qfunction, Qgap_overhead;
-extern Lisp_Object Qgeneric, Qgeometry, Qglobal, Qheight;
+extern Lisp_Object Qformat, Qframe, Qframe_live_p, Qfuncall, Qfunction;
+extern Lisp_Object Qgap_overhead, Qgeneric, Qgeometry, Qglobal, Qheight;
 extern Lisp_Object Qhighlight, Qhorizontal, Qicon;
 extern Lisp_Object Qicon_glyph_p, Qid, Qidentity, Qimage, Qinfo, Qinherit;
 extern Lisp_Object Qinhibit_quit, Qinhibit_read_only;
@@ -2809,10 +2821,12 @@ extern Lisp_Object Qinteger_char_or_marker_p, Qinteger_or_char_p;
 extern Lisp_Object Qinteger_or_marker_p, Qintegerp, Qinteractive, Qinternal;
 extern Lisp_Object Qinvalid_function, Qinvalid_read_syntax, Qio_error;
 extern Lisp_Object Qiso2022, Qkey, Qkey_assoc, Qkeyboard, Qkeymap;
-extern Lisp_Object Qlambda, Qlayout, Qlandscape, Qleft, Qleft_margin, Qlf;
+extern Lisp_Object Qlambda, Qlast_command, Qlayout, Qlandscape;
+extern Lisp_Object Qleft, Qleft_margin, Qlet, Qlf;
 extern Lisp_Object Qlist, Qlistp, Qload, Qlock_shift, Qmacro, Qmagic;
 extern Lisp_Object Qmakunbound, Qmalformed_list, Qmalformed_property_list;
 extern Lisp_Object Qmalloc_overhead, Qmark, Qmarkers;
+extern Lisp_Object Qmenubar;
 extern Lisp_Object Qmax, Qmemory, Qmessage, Qminus, Qmnemonic, Qmodifiers;
 extern Lisp_Object Qmono_pixmap_image_instance_p, Qmotion;
 extern Lisp_Object Qmouse_leave_buffer_hook, Qmsprinter, Qmswindows;
@@ -2841,8 +2855,8 @@ extern Lisp_Object Qsignal, Qsimple, Qsingularity_error, Qsize, Qspace;
 extern Lisp_Object Qspecifier, Qstandard_input, Qstandard_output, Qstart_open;
 extern Lisp_Object Qstream, Qstring, Qstring_lessp, Qsubwindow;
 extern Lisp_Object Qsubwindow_image_instance_p;
-extern Lisp_Object Qsymbol, Qsyntax, Qt, Qterminal, Qtest;
-extern Lisp_Object Qtext, Qtext_image_instance_p, Qtimeout, Qtimestamp;
+extern Lisp_Object Qsymbol, Qsyntax, Qt, Qterminal, Qtest, Qtext;
+extern Lisp_Object Qtext_image_instance_p, Qthis_command, Qtimeout, Qtimestamp;
 extern Lisp_Object Qtoolbar, Qtop, Qtop_margin, Qtop_level;
 extern Lisp_Object Qtrue_list_p, Qtty, Qtype;
 extern Lisp_Object Qunbound, Qundecided, Qundefined, Qunderflow_error;
index ef86a38..67691e3 100644 (file)
@@ -186,7 +186,6 @@ enum lrecord_type
   lrecord_type_ldap,
   lrecord_type_pgconn,
   lrecord_type_pgresult,
-  lrecord_type_pgsetenv,
   lrecord_type_count /* must be last */
 };
 
index a112b6a..f28a23b 100644 (file)
@@ -52,11 +52,11 @@ for my $file (keys %exists) {
   s/[ \t]+//g;
   # Find include dependencies
   for (/^\#include([^\n]+)/gm) {
-    if (m@^\"([A-Za-z0-9_-]+\.h)\"@) {
+    if (m@^\"([A-Za-z0-9._-]+\.h)\"@) {
       $uses{$file}{$1} = 1 if exists $exists{$1};
-    } elsif (m@<([A-Za-z0-9_-]+\.h)>@) {
+    } elsif (m@<([A-Za-z0-9._-]+\.h)>@) {
       $uses{$file}{$1} = 1 if exists $generated_header{$1};
-    } elsif (m@\"../lwlib/([A-Za-z0-9_-]+\.h)\"@) {
+    } elsif (m@\"../lwlib/([A-Za-z0-9._-]+\.h)\"@) {
       $uses{$file}{"\$(LWLIB_SRCDIR)/lwlib.h"} = 1;
     }
   }
index 6f5f1bf..901ca58 100644 (file)
--- a/src/md5.c
+++ b/src/md5.c
 #include <sys/types.h>
 #include <string.h>
 #include <stdio.h>
-
-#if defined HAVE_LIMITS_H || _LIBC
-# include <limits.h>
-#endif
+#include <limits.h>
 
 /* The following contortions are an attempt to use the C preprocessor
    to determine an unsigned integral type that is 32 bits wide.  An
index 99400a3..3adf9b8 100644 (file)
@@ -139,9 +139,10 @@ menu_item_descriptor_to_widget_value_1 (Lisp_Object desc,
   else if (VECTORP (desc))
     {
       Lisp_Object gui_item = gui_parse_item_keywords (desc);
-      if (!button_item_to_widget_value (gui_item, wv, 1,
+      if (!button_item_to_widget_value (Qmenubar,
+                                       gui_item, wv, 1,
                                        (menu_type == MENUBAR_TYPE
-                                        && depth <= 1)))
+                                        && depth <= 1), 1))
        {
          /* :included form was nil */
          wv = NULL;
index 7aabbc0..d79acab 100644 (file)
@@ -150,9 +150,6 @@ Lisp_Object Ql2r, Qr2l;
 
 Lisp_Object Vcharset_hash_table;
 
-static Bufbyte next_allocated_1_byte_leading_byte;
-static Bufbyte next_allocated_2_byte_leading_byte;
-
 /* Composite characters are characters constructed by overstriking two
    or more regular characters.
 
@@ -529,17 +526,17 @@ get_unallocated_leading_byte (int dimension)
 
   if (dimension == 1)
     {
-      if (next_allocated_1_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_1)
+      if (chlook->next_allocated_1_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_1)
        lb = 0;
       else
-       lb = next_allocated_1_byte_leading_byte++;
+       lb = chlook->next_allocated_1_byte_leading_byte++;
     }
   else
     {
-      if (next_allocated_2_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_2)
+      if (chlook->next_allocated_2_byte_leading_byte > MAX_LEADING_BYTE_PRIVATE_2)
        lb = 0;
       else
-       lb = next_allocated_2_byte_leading_byte++;
+       lb = chlook->next_allocated_2_byte_leading_byte++;
     }
 
   if (!lb)
@@ -1348,8 +1345,8 @@ vars_of_mule_charset (void)
       for (k = 0; k < countof (chlook->charset_by_attributes[0][0]); k++)
        chlook->charset_by_attributes[i][j][k] = Qnil;
 
-  next_allocated_1_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_1;
-  next_allocated_2_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_2;
+  chlook->next_allocated_1_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_1;
+  chlook->next_allocated_2_byte_leading_byte = MIN_LEADING_BYTE_PRIVATE_2;
 }
 
 void
index 2e3f7a8..4733004 100644 (file)
@@ -557,6 +557,8 @@ struct charset_lookup {
 
   /* Table of charsets indexed by type/final-byte/direction. */
   Lisp_Object charset_by_attributes[4][128][2];
+  Bufbyte next_allocated_1_byte_leading_byte;
+  Bufbyte next_allocated_2_byte_leading_byte;
 };
 
 extern struct charset_lookup *chlook;
index 0f0faaa..a20a68d 100644 (file)
--- a/src/nt.h
+++ b/src/nt.h
@@ -148,6 +148,6 @@ void set_process_dir (const char * dir);
 time_t convert_time (FILETIME ft);
 
 extern void init_ntproc ();
-extern void term_ntproc ();
+extern void term_ntproc (int unused);
 
 #endif /* INCLUDED_nt_h_ */
index d535fd9..bbfa228 100644 (file)
@@ -23,6 +23,7 @@ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 #include <stdio.h>
 #include "sysfile.h"
 #include "lisp.h"
+#include "nativesound.h"
 
 #if (defined (__CYGWIN32__) || defined(__MINGW32__)) && \
        CYGWIN_VERSION_DLL_MAJOR < 21
@@ -30,7 +31,7 @@ extern BOOL WINAPI PlaySound(LPCSTR,HMODULE,DWORD);
 #else
 #include <mmsystem.h>
 #endif
-static void play_sound_data_1 (unsigned char *data, int length,
+static int play_sound_data_1 (unsigned char *data, int length,
                               int volume, int convert);
 
 void play_sound_file (char *sound_file, int volume)
@@ -76,7 +77,7 @@ void play_sound_file (char *sound_file, int volume)
 
 /* mswindows can't cope with playing a sound from alloca space so we
    have to convert if necessary */
-static void play_sound_data_1 (unsigned char *data, int length, int volume,
+static int play_sound_data_1 (unsigned char *data, int length, int volume,
                               int convert_to_malloc)
 {
   DWORD flags = SND_ASYNC | SND_MEMORY | SND_NODEFAULT;
@@ -98,10 +99,11 @@ static void play_sound_data_1 (unsigned char *data, int length, int volume,
 
   PlaySound(sound_data, NULL, flags);
 
-  return;
+  /* #### Error handling? */ 
+  return 1;
 }
 
-void play_sound_data (unsigned char *data, int length, int volume)
+int play_sound_data (unsigned char *data, int length, int volume)
 {
-  play_sound_data_1 (data, length, volume, TRUE);
+  return play_sound_data_1 (data, length, volume, TRUE);
 }
index eed038e..a6159f4 100644 (file)
@@ -409,7 +409,6 @@ create_child (const char *exe, char *cmdline, char *env,
   xzero (start);
   start.cb = sizeof (start);
   
-#ifdef HAVE_NTGUI
   if (NILP (Vwin32_start_process_show_window))
   start.dwFlags = STARTF_USESTDHANDLES | STARTF_USESHOWWINDOW;
   else
@@ -419,7 +418,6 @@ create_child (const char *exe, char *cmdline, char *env,
   start.hStdInput = GetStdHandle (STD_INPUT_HANDLE);
   start.hStdOutput = GetStdHandle (STD_OUTPUT_HANDLE);
   start.hStdError = GetStdHandle (STD_ERROR_HANDLE);
-#endif /* HAVE_NTGUI */
 
   /* Explicitly specify no security */
   if (!InitializeSecurityDescriptor (&sec_desc, SECURITY_DESCRIPTOR_REVISION))
index 724b043..9ed4e8e 100644 (file)
@@ -57,9 +57,6 @@ TODO (in rough order of priority):
   PQgetlineAsync (copy in/out Asynch.)
   PQputnbytes (copy in/out Asynch.)
   PQendcopy (copy in/out)
-  PQsetenvStart (Asynch. Queries)
-  PQsetenvPoll (Asynch. Queries)
-  PQsetenvHandle (Asynch. Queries)
 
   Unsupported functions:
   PQsetdbLogin -- This function is deprecated, has a subset of the
@@ -95,6 +92,7 @@ TODO (in rough order of priority):
 */
 #if (EMACS_MAJOR_VERSION == 21) && (EMACS_MINOR_VERSION < 2)
 #define RUNNING_XEMACS_21_1 1
+#define POSTGRES_INCLUDE(file) <file>
 #endif
 
 /* #define POSTGRES_LO_IMPORT_IS_VOID 1 */
@@ -103,9 +101,7 @@ TODO (in rough order of priority):
 #include "sysdep.h"
 #include "buffer.h"
 
-#include <libpq-fe.h>
-/* Undefine the following when asynchronous setenvs are fixed in libpq. */
-/* #define LIBPQ_7_0_IS_FIXED */
+#include POSTGRES_INCLUDE (libpq-fe.h)
 #include "postgresql.h"
 
 #ifdef RUNNING_XEMACS_21_1 /* handle interface changes */
@@ -396,109 +392,6 @@ DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult,
                               Lisp_PGresult);
 #endif
 
-/****/
-#ifdef HAVE_POSTGRESQLV7
-/* PGsetenvHandle is an opaque object and we need to be able to store them in
-   Lisp code so we can make asynchronous environmental calls.
-
-   Asynchronous setenv calls were introduced in libpq-7.0.
-*/
-#ifdef LIBPQ_7_0_IS_FIXED
-
-Lisp_Object Qpgsetenvp;
-
-static Lisp_Object
-make_pgsetenv (Lisp_PGsetenvHandle *pgsetenv)
-{
-  Lisp_Object lisp_pgsetenv;
-  XSETPGSETENV (lisp_pgsetenv, pgsetenv);
-  return lisp_pgsetenv;
-}
-
-static Lisp_Object
-#ifdef RUNNING_XEMACS_21_1
-mark_pgsetenv (Lisp_Object obj, void (*markobj) (Lisp_Object))
-#else
-mark_pgsetenv (Lisp_Object obj)
-#endif
-{
-  return Qnil;
-}
-
-static void
-print_pgsetenv (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag)
-{
-  char *fmt = "#<PGsetenvHandle %s>";
-  char buf[1024];
-  PGsetenvHandle *h;
-
-  h = (XPGSETENV (obj))->pgsetenv;
-
-  sprintf (buf, fmt, h ? "live" : "DEAD");
-
-  /* There are no accessor functions to retrieve any fields, so we must */
-  /* treat this as being completely opaque. */
-  if (print_readably)
-    error ("printing unreadable object %s", buf);
-  else
-    write_c_string (buf, printcharfun);
-}
-
-static Lisp_PGsetenvHandle *
-allocate_pgresult (void)
-{
-#ifdef RUNNING_XEMACS_21_1
-  Lisp_PGsetenvHandle *pgsetenv =
-    alloc_lcrecord_type (Lisp_PGsetenvHandle, lrecord_pgsetenv);
-#else
-  Lisp_PGsetenvHandle *pgsetenv =
-    alloc_lcrecord_type (Lisp_PGsetenvHandle, &lrecord_pgsetenv);
-#endif
-  pgsetenv->pgsetenv = (PGsetenvState *)NULL;
-  return pgsetenv;
-}
-
-static void
-finalize_pgsetenv (void *header, int for_disksave)
-{
-  Lisp_PGsetenvHandle *pgsetenv = (Lisp_PGsetenvHandle *)header;
-
-  if (for_disksave)
-    signal_simple_error ("Can't dump an emacs containing PGsetenvHandle objects",
-                         make_pgsetenv (pgsetenv));
-
-  /* #### PGsetenvHandle's are allocated with malloc(), however in
-     libpq-7.0 the treatment of them is little short of disastrous.
-     We don't dare attempt to free it, because there are many code
-     paths which lead to the handle being freed internally.  The
-     connection routines leak setenv handles and so will we until
-     libpq gets cleaned up.
-     Actually, in 7.0b1 asynchronous setenv cannot work outside libpq, so
-     these functions are disabled in this API.
-  */
-  if (pgsetenv->pgsetenv)
-    {
-      free (pgsetenv->pgsetenv);
-      pgsetenv->pgsetenv = (PGsetenvHandle *)NULL;
-    }
-}
-
-#ifdef RUNNING_XEMACS_21_1
-DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult,
-                              mark_pgresult, print_pgresult, finalize_pgresult,
-                              NULL, NULL,
-                              Lisp_PGresult);
-#else
-DEFINE_LRECORD_IMPLEMENTATION ("pgresult", pgresult,
-                              mark_pgresult, print_pgresult, finalize_pgresult,
-                              NULL, NULL,
-                              0,
-                              Lisp_PGresult);
-#endif /* RUNNING_XEMACS_21_1 */
-
-#endif /* LIBPQ_7_0_IS_FIXED */
-#endif /* HAVE_POSTGRESQLV7 */
-
 /***********************/
 
 /* notices */
@@ -1687,114 +1580,12 @@ End a copying operation.
   return PQendcopy (P) ? Qt : Qnil;
 }
 
-/* The setenv suite of functions. The author of the libpq manual doesn't
-   know a whole lot about them, and neither do I.
-*/
-#if !defined (HAVE_POSTGRESQLV7) || defined (LIBPQ_7_0_IS_FIXED)
-DEFUN ("pq-setenv", Fpq_setenv, 1, 1, 0, /*
-Set environmental parameters on the backend synchronously.
-Returns t if the operation was successful, nil otherwise.
-*/
-       (conn))
-{
-  PGconn *P;
-
-  CHECK_PGCONN (conn);
-  P = (XPGCONN (conn))->pgconn;
-  CHECK_LIVE_CONNECTION (P);
-
-  return PQsetenv (P) ? Qt : Qnil;
-}
-#endif
-
-#ifdef LIBPQ_7_0_IS_FIXED
-
-DEFUN ("pq-setenv-start", Fpq_setenv_start, 1, 1, 0, /*
-Set environmental parameters on the backend asynchronously.
-A PGsetenvHandle is returned on success, nil otherwise.
-*/
-       (conn))
-{
-  PGconn *P;
-  PGsetenvHandle *handle;
-  Lisp_setenvHandle *lseh;
-
-  CHECK_PGCONN (conn);
-  P = (XPGCONN (conn))->pgconn;
-  CHECK_LIVE_CONNECTION (P);
-
-  handle = PQsetenvStart (P);
-  if (!handle) error ("out of memory?");
-
-  lseh = allocate_pgsetenv ();
-  lseh->setenv = handle;
-
-  return make_pgsetenv (lseh);
-}
-
-DEFUN ("pq-setenv-poll", Fpq_setenv_poll, 1, 1, 0, /*
-Poll an asynchronous setenv operation for completion.
-*/
-       (conn))
-{
-  PGconn *P;
-  PostgresPollingStatusType pst;
-
-  CHECK_PGCONN (conn);
-  P = (XPGCONN (conn))->pgconn;
-  CHECK_LIVE_CONNECTION (P);
-
-  pst = PQsetenvPoll (P);
-  switch (pst)
-    {
-    case PGRES_POLLING_FAILED:
-      /* Something Bad has happened */
-      {
-       char *e = PQerrorMessage (P);
-       error ("libpq: %s", e);
-      }
-    case PGRES_POLLING_OK:
-      return Qpgres_polling_ok;
-    case PGRES_POLLING_READING:
-      return Qpgres_polling_reading;
-    case PGRES_POLLING_WRITING:
-      return Qpgres_polling_writing;
-    case PGRES_POLLING_ACTIVE:
-      return Qpgres_polling_active;
-    default:
-      /* they've added a new field we don't know about */
-      error ("Help!  Unknown status code %08x from backend!", PS);
-    }
-}
-
-DEFUN ("pq-setenv-abort", Fpq_setenv_abort, 1, 1, 0, /*
-Attempt to abort an in-progress asynchronous setenv operation.
-*/
-       (handle))
-{
-  PGsetenvHandle *h;
-
-  CHECK_PGSETENV (handle);
-  h = (XPGSETENV (handle))->pgsetenv;
-  PUKE_IF_NULL (h);
-
-  PQsetenvAbort (h);
-  /* PQsetenvAbort usually free(3)'s the handle, don't take any chances. */
-  (XSETENV (handle))->pgsetenv = (PGsetenvHandle *)NULL;
-
-  return Qt;
-}
-#endif /* LIBPQ_7_0_IS_FIXED */
-
 void
 syms_of_postgresql(void)
 {
 #ifndef RUNNING_XEMACS_21_1
   INIT_LRECORD_IMPLEMENTATION (pgconn);
   INIT_LRECORD_IMPLEMENTATION (pgresult);
-#ifdef LIBPQ_7_0_IS_FIXED
-  INIT_LRECORD_IMPLEMENTATION (pgsetenv);
-#endif
 #endif
   defsymbol (&Qpostgresql, "postgresql");
 
@@ -1907,16 +1698,6 @@ syms_of_postgresql(void)
   DEFSUBR (Fpq_get_line_async);
   DEFSUBR (Fpq_put_nbytes);
   DEFSUBR (Fpq_end_copy);
-
-  /* The value of the setenv functions is questioned in the libpq manual. */
-#if !defined (HAVE_POSTGRESQLV7) || defined (LIBPQ_7_0_IS_FIXED)
-  DEFSUBR (Fpq_setenv);
-#endif
-#ifdef LIBPQ_7_0_IS_FIXED
-  DEFSUBR (Fpq_setenv_start);
-  DEFSUBR (Fpq_setenv_poll);
-  DEFSUBR (Fpq_setenv_abort);
-#endif /* LIBPQ_7_0_IS_FIXED */
 }
 
 void
index e13d96a..213cea2 100644 (file)
@@ -57,31 +57,4 @@ DECLARE_LRECORD (pgresult, Lisp_PGresult);
 #define CHECK_PGRESULT(x) CHECK_RECORD (x, pgresult)
 #define CONCHECK_PGRESULT(x) CONCHECK_RECORD (x, pgresult)
 
-/****/
-#ifdef HAVE_POSTGRESQLV7
-
-#ifdef LIBPQ_7_0_IS_FIXED /* this is broken in released 7.0b1 */
-
-/* PGsetenvHandle is an opaque object and we need to be able to store
-   them in Lisp code in order to make asynchronous environment calls.
-*/
-struct Lisp_PGsetenvHandle
-{
-  struct lcrecord_header header;
-  PGsetenvHandle *pgsetenv;
-};
-typedef struct Lisp_PGsetenvHandle Lisp_PGsetenvHandle;
-
-DECLARE_LRECORD (pgsetenv, Lisp_PGsetenvHandle);
-
-#define XPGSETENV(x) XRECORD (x, pgsetenv, Lisp_PGsetenvHandle)
-#define XSETPGSETENV(x, p) XSETRECORD (x, p, pgsetenv)
-#define PGSETENVP(x) RECORDP (x, pgsetenv)
-#define CHECK_PGSETENV(x) CHECK_RECORD (x, pgsetenv)
-#define CONCHECK_PGSETENV(x) CONCHECK_RECORD (x, pgsetenv)
-
-#endif /* LIBPQ_7_0_IS_FIXED */
-
-#endif /* HAVE_POSTGRESQLV7 */
-
 #endif /* XEMACS_POSTGRESQL_H__ */
index 8450fbc..9839bdf 100644 (file)
@@ -1000,14 +1000,14 @@ nt_send_process (Lisp_Object proc, struct lstream* lstream)
   /* use a reasonable-sized buffer (somewhere around the size of the
      stream buffer) so as to avoid inundating the stream with blocked
      data. */
-  Bufbyte chunkbuf[128];
+  Bufbyte chunkbuf[512];
   Bytecount chunklen;
 
   while (1)
     {
       ssize_t writeret;
 
-      chunklen = Lstream_read (lstream, chunkbuf, 128);
+      chunklen = Lstream_read (lstream, chunkbuf, 512);
       if (chunklen <= 0)
        break; /* perhaps should abort() if < 0?
                  This should never happen. */
index c9ac0a1..f23a9e7 100644 (file)
@@ -1139,6 +1139,14 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
   volatile Lisp_Object vol_proc = proc;
   Lisp_Process *volatile p = XPROCESS (proc);
 
+  /* #### JV: layering violation?
+
+     This function knows too much about the relation between the encodingstream
+     (DATA_OUTSTREAM) and te actual output stream p->output_stream.
+
+     If encoding streams properly forwarded all calls, we could simply
+     use DATA_OUTSTREAM everywhere. */
+  
   if (!SETJMP (send_process_frame))
     {
       /* use a reasonable-sized buffer (somewhere around the size of the
@@ -1173,6 +1181,9 @@ unix_send_process (Lisp_Object proc, struct lstream* lstream)
                 that may allow the program
                 to finish doing output and read more.  */
              Faccept_process_output (Qnil, make_int (1), Qnil);
+             /* It could have *really* finished, deleting the process */
+             if (NILP(p->pipe_outstream))
+               return;
              old_sigpipe =
                (SIGTYPE (*) (int)) signal (SIGPIPE, send_process_trap);
              Lstream_flush (XLSTREAM (p->pipe_outstream));
index 744d6ba..9af4b5e 100644 (file)
@@ -577,8 +577,12 @@ mswindows_output_dibitmap (struct frame *f, Lisp_Image_Instance *p,
   HDC hcompdc = get_frame_compdc (f);
   HGDIOBJ old=NULL;
   COLORREF bgcolor = GetBkColor (hdc);
+  const int real_x = IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_WIDTH (p);
+  const int real_y = IMAGE_INSTANCE_MSWINDOWS_BITMAP_REAL_HEIGHT (p);
+  const int surface_x = IMAGE_INSTANCE_PIXMAP_WIDTH (p);
+  const int surface_y = IMAGE_INSTANCE_PIXMAP_HEIGHT (p);
 
-  /* first blt the mask */
+  /* first blit the mask */
   if (IMAGE_INSTANCE_MSWINDOWS_MASK (p))
     {
       RGBQUAD col;
@@ -591,27 +595,33 @@ mswindows_output_dibitmap (struct frame *f, Lisp_Image_Instance *p,
       
       SetDIBColorTable (hcompdc, 1, 1, &col);
 
-      BitBlt (hdc, 
-             db->xpos, db->ypos,
-             dga->width, dga->height, 
-             hcompdc,
-             dga->xoffset, dga->yoffset, 
-             SRCCOPY);                  
+      StretchBlt (hdc, 
+                 db->xpos, db->ypos,
+                 dga->width, dga->height, 
+                 hcompdc,
+                 MulDiv (dga->xoffset, real_x, surface_x),
+                 MulDiv (dga->yoffset, real_y, surface_y),
+                 MulDiv (dga->width, real_x, surface_x),
+                 MulDiv (dga->height, real_y, surface_y),
+                 SRCCOPY);                  
 
       SelectObject (hcompdc, old);
     }
   
-  /* Now blt the bitmap itself, or one of its slices. */
+  /* Now blit the bitmap itself, or one of its slices. */
   old = SelectObject (hcompdc,
                      IMAGE_INSTANCE_MSWINDOWS_BITMAP_SLICE 
                      (p, IMAGE_INSTANCE_PIXMAP_SLICE (p)));
 
-  BitBlt (hdc, 
-         db->xpos, db->ypos,
-         dga->width, dga->height,
-         hcompdc,
-         dga->xoffset, dga->yoffset, 
-         IMAGE_INSTANCE_MSWINDOWS_MASK (p) ? SRCINVERT : SRCCOPY);
+  StretchBlt (hdc, 
+             db->xpos, db->ypos,
+             dga->width, dga->height,
+             hcompdc,
+             MulDiv (dga->xoffset, real_x, surface_x),
+             MulDiv (dga->yoffset, real_y, surface_y),
+             MulDiv (dga->width, real_x, surface_x),
+             MulDiv (dga->height, real_y, surface_y),
+             IMAGE_INSTANCE_MSWINDOWS_MASK (p) ? SRCINVERT : SRCCOPY);
 
   SelectObject (hcompdc, old);
 }
@@ -1137,27 +1147,6 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
                {
                  switch (XIMAGE_INSTANCE_TYPE (instance))
                    {
-                   case IMAGE_TEXT:
-                     {
-                       /* #### This is way losing.  See the comment in
-                          add_glyph_rune(). */
-                       Lisp_Object string =
-                         XIMAGE_INSTANCE_TEXT_STRING (instance);
-                       convert_bufbyte_string_into_emchar_dynarr
-                         (XSTRING_DATA (string), XSTRING_LENGTH (string), buf);
-                       
-                       if (rb->cursor_type == CURSOR_ON)
-                         mswindows_output_cursor (w, dl, xpos, cursor_width,
-                                                  findex, Dynarr_at (buf, 0), 0);
-                       else /* #### redisplay-x passes -1 as the width: why ? */
-                         mswindows_output_string (w, dl, buf, xpos,
-                                                  rb->object.dglyph.xoffset,
-                                                  start_pixpos, rb->width, findex,
-                                                  0, 0, 0, 0);
-                       Dynarr_reset (buf);
-                     }
-                     break;
-                     
                    case IMAGE_MONO_PIXMAP:
                    case IMAGE_COLOR_PIXMAP:
                      redisplay_output_pixmap (w, instance, &dbox, &dga, findex,
@@ -1168,9 +1157,6 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
                                                 findex, 0, 1);
                      break;
                      
-                   case IMAGE_POINTER:
-                     abort ();
-                     
                    case IMAGE_SUBWINDOW:
                    case IMAGE_WIDGET:
                      redisplay_output_subwindow (w, instance, &dbox, &dga, findex,
@@ -1193,7 +1179,9 @@ mswindows_output_display_block (struct window *w, struct display_line *dl, int b
                    case IMAGE_NOTHING:
                      /* nothing is as nothing does */
                      break;
-                     
+
+                   case IMAGE_TEXT:
+                   case IMAGE_POINTER:
                    default:
                      abort ();
                    }
index b89f50f..ae45602 100644 (file)
@@ -233,8 +233,7 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
     return 0;
   /* Only check dirtiness if we know something has changed. */
   else if (crb->type == RUNE_DGLYPH &&
-          ((XFRAME (w->frame)->glyphs_changed &&
-            XGLYPH_DIRTYP (crb->object.dglyph.glyph)) || 
+          (XGLYPH_DIRTYP (crb->object.dglyph.glyph) || 
            crb->findex != drb->findex))
     {
       /* We need some way of telling redisplay_output_layout () that the
@@ -262,10 +261,9 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
         cases they will actually be the same object. This does not
         mean, however, that nothing has changed. We therefore need to
         check the current hash of the glyph against the last recorded
-        display hash. See update_subwindow (). */
-      if (IMAGE_INSTANCE_DISPLAY_HASH (ii) == 0 ||
-         IMAGE_INSTANCE_DISPLAY_HASH (ii) != 
-         internal_hash (image, IMAGE_INSTANCE_HASH_DEPTH) ||
+        display hash and the pending display items. See
+        update_subwindow (). */
+      if (image_instance_changed (image) ||
          crb->findex != drb->findex || 
          WINDOW_FACE_CACHEL_DIRTY (w, drb->findex))
        {
@@ -283,7 +281,13 @@ compare_runes (struct window *w, struct rune *crb, struct rune *drb)
          return 0;
        }
       else
-       return 1;
+       {
+#ifdef DEBUG_WIDGET_OUTPUT
+         if (XIMAGE_INSTANCE_TYPE (image) == IMAGE_LAYOUT)
+           printf ("glyph layout %p considered unchanged\n", ii);
+#endif
+         return 1;
+       }
     }
   /* We now do this last so that glyph checks can do their own thing
      for face changes. Face changes quite often happen when we are
@@ -898,15 +902,7 @@ redisplay_move_cursor (struct window *w, Bufpos new_point, int no_output_end)
   else
     {
       DEVMETH (d, output_begin, (d));
-
-      /* #### This is a gross kludge.  Cursor handling is such a royal
-         pain in the ass. */
-      if (rb->type == RUNE_DGLYPH &&
-         (EQ (rb->object.dglyph.glyph, Vtruncation_glyph) ||
-          EQ (rb->object.dglyph.glyph, Vcontinuation_glyph)))
-       rb->cursor_type = NO_CURSOR;
-      else
-       rb->cursor_type = CURSOR_OFF;
+      rb->cursor_type = CURSOR_OFF;
       dl->cursor_elt = -1;
       output_display_line (w, 0, cla, y, rb->xpos, rb->xpos + rb->width);
     }
@@ -1301,7 +1297,9 @@ redisplay_output_layout (struct window *w,
 
   dga->height = layout_height;
   dga->width = layout_width;
-
+#ifdef DEBUG_WIDGET_OUTPUT
+  printf ("outputing layout glyph %p\n", p);
+#endif
   /* This makes the glyph area fit into the display area. */
   if (!redisplay_normalize_glyph_area (db, dga))
     return;
@@ -1406,7 +1404,7 @@ redisplay_output_layout (struct window *w,
                continue;
              /* We have to invert the offset here as normalization
                 will have made them positive which the output
-                routines will treat as a truely +ve offset. */
+                routines will treat as a truly +ve offset. */
              cdga.xoffset = -cdga.xoffset;
              cdga.yoffset = -cdga.yoffset;
 
@@ -1424,6 +1422,14 @@ redisplay_output_layout (struct window *w,
                        struct display_line dl; /* this is fake */
                        Lisp_Object string =
                          IMAGE_INSTANCE_TEXT_STRING (childii);
+                       unsigned char charsets[NUM_LEADING_BYTES];
+                       struct face_cachel *cachel = WINDOW_FACE_CACHEL (w, findex);
+
+                       find_charsets_in_bufbyte_string (charsets,
+                                                        XSTRING_DATA (string),
+                                                        XSTRING_LENGTH (string));
+                       ensure_face_cachel_complete (cachel, window, charsets);
+
                        convert_bufbyte_string_into_emchar_dynarr
                          (XSTRING_DATA (string), XSTRING_LENGTH (string), buf);
 
index 6f6c197..42d18b9 100644 (file)
@@ -336,59 +336,6 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block,
                {
                  switch (XIMAGE_INSTANCE_TYPE (instance))
                    {
-                   case IMAGE_TEXT:
-                     {
-                       Bufbyte *temptemp;
-                       Lisp_Object string =
-                         XIMAGE_INSTANCE_TEXT_STRING (instance);
-                       Bytecount len = XSTRING_LENGTH (string);
-                       
-                       /* In the unlikely instance that a garbage-collect
-                          occurs during encoding, we at least need to
-                          copy the string.
-                       */
-                       temptemp = (Bufbyte *) alloca (len);
-                       memcpy (temptemp, XSTRING_DATA (string), len);
-                       {
-                         int i;
-                         
-                         /* Now truncate the first rb->object.dglyph.xoffset
-                            columns. */
-                         for (i = 0; i < rb->object.dglyph.xoffset;)
-                           {
-#ifdef MULE
-                             Emchar ch = charptr_emchar (temptemp);
-                             i += XCHARSET_COLUMNS (CHAR_CHARSET (ch));
-#else
-                             i++; /* telescope this */
-#endif
-                             INC_CHARPTR (temptemp);
-                           }
-                         
-                         /* If we truncated one column too many, then
-                            add a space at the beginning. */
-                         if (i > rb->object.dglyph.xoffset)
-                           {
-                             assert (i > 0);
-                             *--temptemp = ' ';
-                             i--;
-                           }
-                         len -= i;
-                       }
-                       
-                       tty_output_bufbyte_string (w, dl, temptemp, len,
-                                                  xpos, findex, 0);
-                       
-                       if (xpos >= cursor_start
-                           && (cursor_start <
-                               xpos + (bufbyte_string_displayed_columns
-                                       (temptemp, len))))
-                         {
-                           cmgoto (f, dl->ypos - 1, cursor_start);
-                         }
-                     }
-                     break;
-                     
                    case IMAGE_MONO_PIXMAP:
                    case IMAGE_COLOR_PIXMAP:
                    case IMAGE_SUBWINDOW:
@@ -397,13 +344,12 @@ tty_output_display_block (struct window *w, struct display_line *dl, int block,
                      /* just do nothing here */
                      break;
                      
-                   case IMAGE_POINTER:
-                     abort ();
-                     
                    case IMAGE_NOTHING:
                      /* nothing is as nothing does */
                      break;
                      
+                   case IMAGE_TEXT:
+                   case IMAGE_POINTER:
                    default:
                      abort ();
                    }
index 1abe97a..39a94aa 100644 (file)
@@ -452,25 +452,6 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
                {
                  switch (XIMAGE_INSTANCE_TYPE (instance))
                    {
-                   case IMAGE_TEXT:
-                     {
-                       /* #### This is way losing.  See the comment in
-                          add_glyph_rune(). */
-                       Lisp_Object string =
-                         XIMAGE_INSTANCE_TEXT_STRING (instance);
-                       convert_bufbyte_string_into_emchar_dynarr
-                         (XSTRING_DATA (string), XSTRING_LENGTH (string), buf);
-                       
-                       x_output_string (w, dl, buf, xpos,
-                                        rb->object.dglyph.xoffset,
-                                        start_pixpos, -1, findex,
-                                        (rb->cursor_type == CURSOR_ON),
-                                        cursor_start, cursor_width,
-                                        cursor_height);
-                       Dynarr_reset (buf);
-                     }
-                     break;
-                     
                    case IMAGE_MONO_PIXMAP:
                    case IMAGE_COLOR_PIXMAP:
                      redisplay_output_pixmap (w, instance, &dbox, &dga, findex,
@@ -495,6 +476,7 @@ x_output_display_block (struct window *w, struct display_line *dl, int block,
                      /* nothing is as nothing does */
                      break;
                      
+                   case IMAGE_TEXT:
                    case IMAGE_POINTER:
                    default:
                      abort ();
index 6fe354b..b842b94 100644 (file)
@@ -450,6 +450,9 @@ Lisp_Object Vwindow_size_change_functions;
 Lisp_Object Vwindow_scroll_functions;
 Lisp_Object Qredisplay_end_trigger_functions, Vredisplay_end_trigger_functions;
 
+Lisp_Object Qbuffer_list_changed_hook, Vbuffer_list_changed_hook;
+
+
 #define INHIBIT_REDISPLAY_HOOKS  /* #### Until we've thought about
                                    this more. */
 #ifndef INHIBIT_REDISPLAY_HOOKS
@@ -804,7 +807,7 @@ add_hscroll_rune (pos_data *data)
   gb.glyph = Vhscroll_glyph;
   {
     int oldpixpos = data->pixpos;
-    retval = add_glyph_rune (data, &gb, BEGIN_GLYPHS, 1,
+    retval = add_glyph_rune (data, &gb, BEGIN_GLYPHS, 0,
                             GLYPH_CACHEL (XWINDOW (data->window),
                                           HSCROLL_GLYPH_INDEX));
     data->hscroll_glyph_width_adjust =
@@ -924,9 +927,7 @@ add_emchar_rune (pos_data *data)
   else if (data->is_modeline)
     crb->bufpos = data->modeline_charpos;
   else
-    /* fuckme if this shouldn't be an abort. */
-    /* abort (); fuckme harder, this abort gets tripped quite often,
-                in propagation and whatnot.  #### fixme */
+    /* Text but not in buffer */
     crb->bufpos = 0;
   crb->type = RUNE_CHAR;
   crb->object.chr.ch = data->font_is_bogus ? '~' : data->ch;
@@ -1542,7 +1543,8 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
       || (pos_type == BEGIN_GLYPHS &&
          extent_begin_glyph_layout (XEXTENT (gb->extent)) == GL_TEXT)
       || (pos_type == END_GLYPHS &&
-         extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_TEXT))
+         extent_end_glyph_layout (XEXTENT (gb->extent)) == GL_TEXT)
+      || pos_type == LEFT_GLYPHS || pos_type == RIGHT_GLYPHS)
     {
       struct rune rb;
       int width;
@@ -1550,6 +1552,8 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
       int ascent, descent;
       Lisp_Object baseline;
       Lisp_Object face;
+      Lisp_Object instance;
+      face_index findex;
 
       if (cachel)
        width = cachel->width;
@@ -1661,10 +1665,32 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
 
       face = glyph_face (gb->glyph, data->window);
       if (NILP (face))
-       rb.findex = data->findex;
+       findex = data->findex;
       else
-       rb.findex = get_builtin_face_cache_index (w, face);
+       findex = get_builtin_face_cache_index (w, face);
+
+      instance = glyph_image_instance (gb->glyph, data->window, 
+                                      ERROR_ME_NOT, 1);
+      if (TEXT_IMAGE_INSTANCEP (instance))
+       {
+         Lisp_Object string = XIMAGE_INSTANCE_TEXT_STRING (instance);
+         face_index orig_findex = data->findex;
+         Bytind orig_bufpos = data->bi_bufpos;
+         Bytind orig_start_col_enabled = data->bi_start_col_enabled;
 
+         data->findex = findex;
+         data->bi_start_col_enabled = 0;
+         if (!allow_cursor)
+           data->bi_bufpos = 0;
+         add_bufbyte_string_runes (data, XSTRING_DATA (string),
+                                   XSTRING_LENGTH (string), 0);
+         data->findex = orig_findex;
+         data->bi_bufpos = orig_bufpos;
+         data->bi_start_col_enabled = orig_start_col_enabled;
+         return NULL;
+       }
+
+      rb.findex = findex;
       rb.xpos = data->pixpos;
       rb.width = width;
       rb.bufpos = 0;                   /* glyphs are never "at" anywhere */
@@ -1675,13 +1701,6 @@ add_glyph_rune (pos_data *data, struct glyph_block *gb, int pos_type,
       else
         rb.endpos = 0;
       rb.type = RUNE_DGLYPH;
-      /* #### Ben sez: this is way bogus if the glyph is a string.
-        You should not make the output routines have to cope with
-        this.  The string could contain Mule characters, or non-
-        printable characters, or characters to be passed through
-        the display table, or non-character objects (when this gets
-        implemented), etc.  Instead, this routine here should parse
-        the string into a series of runes. */
       rb.object.dglyph.glyph = gb->glyph;
       rb.object.dglyph.extent = gb->extent;
       rb.object.dglyph.xoffset = xoffset;
@@ -1884,6 +1903,7 @@ create_text_block (struct window *w, struct display_line *dl,
 
   dl->used_prop_data = 0;
   dl->num_chars = 0;
+  dl->line_continuation = 0;
 
   xzero (data);
   data.ef = extent_fragment_new (w->buffer, f);
@@ -2474,11 +2494,12 @@ done:
 
              /* data.bi_bufpos is already at the start of the next line. */
 
+             dl->line_continuation = 1;
              gb.glyph = Vcontinuation_glyph;
              cachel = GLYPH_CACHEL (w, CONT_GLYPH_INDEX);
            }
 
-         add_glyph_rune (&data, &gb, BEGIN_GLYPHS, 1, cachel);
+         add_glyph_rune (&data, &gb, BEGIN_GLYPHS, 0, cachel);
 
          if (truncate_win && data.bi_bufpos == BI_BUF_ZV (b)
              && BI_BUF_FETCH_CHAR (b, prev_bytind (b, BI_BUF_ZV (b))) != '\n')
@@ -2726,8 +2747,26 @@ add_margin_runes (struct display_line *dl, struct display_block *db, int start,
                             ? dl->left_glyphs
                             : dl->right_glyphs);
   int elt, end;
-  int xpos = start;
   int reverse;
+  struct window *w = XWINDOW (window);
+  struct frame *f = XFRAME (w->frame);
+  struct device *d = XDEVICE (f->device);
+  pos_data data;
+
+  xzero (data);
+  data.d = d;
+  data.window = window;
+  data.db = db;
+  data.dl = dl;
+  data.pixpos = start;
+  data.cursor_type = NO_CURSOR;
+  data.cursor_x = -1;
+  data.last_charset = Qunbound;
+  data.last_findex = DEFAULT_INDEX;
+  data.result_str = Qnil;
+  data.string = Qnil;
+  data.new_ascent = dl->ascent;
+  data.new_descent = dl->descent;
 
   if ((layout == GL_WHITESPACE && side == LEFT_GLYPHS)
       || (layout == GL_INSIDE_MARGIN && side == RIGHT_GLYPHS))
@@ -2756,79 +2795,31 @@ add_margin_runes (struct display_line *dl, struct display_block *db, int start,
           || (side == RIGHT_GLYPHS &&
               extent_end_glyph_layout (XEXTENT (gb->extent)) == layout)))
        {
-         struct rune rb;
-
-         rb.width = gb->width;
-         rb.findex = gb->findex;
-         rb.xpos = xpos;
-         rb.bufpos = -1;
-         rb.endpos = 0;
-         rb.type = RUNE_DGLYPH;
-         rb.object.dglyph.glyph = gb->glyph;
-         rb.object.dglyph.extent = gb->extent;
-         rb.object.dglyph.xoffset = 0;
-         rb.cursor_type = CURSOR_OFF;
-
-         Dynarr_add (db->runes, rb);
-         xpos += rb.width;
+         data.findex = gb->findex;
+         data.max_pixpos = data.pixpos + gb->width;
+         add_glyph_rune (&data, gb, side, 0, NULL);
          count--;
          gb->active = 0;
-
-         if (glyph_contrib_p (gb->glyph, window))
-           {
-             unsigned short ascent, descent;
-             Lisp_Object baseline = glyph_baseline (gb->glyph, window);
-
-             ascent = glyph_ascent (gb->glyph, window);
-             descent = glyph_descent (gb->glyph, window);
-
-             /* A pixmap that has not had a baseline explicitly set.
-                 We use the existing ascent / descent ratio of the
-                 line. */
-             if (NILP (baseline))
-               {
-                 int gheight = ascent + descent;
-                 int line_height = dl->ascent + dl->descent;
-                 int pix_ascent, pix_descent;
-
-                 pix_descent = (int) (gheight * dl->descent) / line_height;
-                 pix_ascent = gheight - pix_descent;
-
-                 dl->ascent = max ((int) dl->ascent, pix_ascent);
-                 dl->descent = max ((int) dl->descent, pix_descent);
-               }
-
-             /* A string so determine contribution normally. */
-             else if (EQ (baseline, Qt))
-               {
-                 dl->ascent = max (dl->ascent, ascent);
-                 dl->descent = max (dl->descent, descent);
-               }
-
-             /* A pixmap with an explicitly set baseline.  We determine the
-                contribution here. */
-             else if (INTP (baseline))
-               {
-                 int height = ascent + descent;
-                 int pix_ascent, pix_descent;
-
-                 pix_ascent = height * XINT (baseline) / 100;
-                 pix_descent = height - pix_ascent;
-
-                 dl->ascent = max ((int) dl->ascent, pix_ascent);
-                 dl->descent = max ((int) dl->descent, pix_descent);
-               }
-
-             /* Otherwise something is screwed up. */
-             else
-               abort ();
-           }
        }
 
       (reverse ? elt-- : elt++);
     }
 
-  return xpos;
+  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;
+
+  return data.pixpos;
 }
 
 /* Add a blank to a margin display block. */
@@ -3556,6 +3547,8 @@ generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str,
       Bufbyte *strdata;
       struct buffer *buf = XBUFFER (WINDOW_BUFFER (w));
 
+      in_modeline_generation = 1;
+
       detach_all_extents (result_str);
       resize_string (XSTRING (result_str), -1,
                      data.bytepos - XSTRING_LENGTH (result_str));
@@ -3592,6 +3585,8 @@ generate_formatted_string_db (Lisp_Object format_str, Lisp_Object result_str,
              Dynarr_at (formatted_string_extent_end_dynarr, elt),
              result_str);
         }
+
+      in_modeline_generation = 0;
     }
 }
 
@@ -4367,6 +4362,7 @@ create_string_text_block (struct window *w, Lisp_Object disp_string,
 
   dl->used_prop_data = 0;
   dl->num_chars = 0;
+  dl->line_continuation = 0;
 
   /* set up faces to use for clearing areas, used by
      output_display_line */
@@ -4759,6 +4755,7 @@ done:
 
              /* data.bi_bufpos is already at the start of the next line. */
 
+             dl->line_continuation = 1;
              gb.glyph = Vcontinuation_glyph;
              cachel = GLYPH_CACHEL (w, CONT_GLYPH_INDEX);
            }
@@ -5597,20 +5594,9 @@ regenerate_window_incrementally (struct window *w, Bufpos startp,
       assert (cdl->end_bufpos == ddl->end_bufpos);
       assert (cdl->offset == ddl->offset);
 
-      /* If the last rune is already a continuation glyph, fail.
-         #### We should be able to handle this better. */
-      {
-       struct display_block *db = get_display_block_from_line (ddl, TEXT);
-       if (Dynarr_length (db->runes))
-         {
-           struct rune *rb =
-             Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1);
-
-           if (rb->type == RUNE_DGLYPH
-               && EQ (rb->object.dglyph.glyph, Vcontinuation_glyph))
-             return 0;
-         }
-      }
+      /* If the line continues to next display line, fail. */
+      if (ddl->line_continuation)
+       return 0;
 
       /* If the line was generated using propagation data, fail. */
       if (ddl->used_prop_data)
@@ -5628,19 +5614,9 @@ regenerate_window_incrementally (struct window *w, Bufpos startp,
          return 0;
        }
 
-      /* If the last rune is now a continuation glyph, fail. */
-      {
-       struct display_block *db = get_display_block_from_line (ddl, TEXT);
-       if (Dynarr_length (db->runes))
-         {
-           struct rune *rb =
-             Dynarr_atp (db->runes, Dynarr_length (db->runes) - 1);
-
-           if (rb->type == RUNE_DGLYPH
-               && EQ (rb->object.dglyph.glyph, Vcontinuation_glyph))
-             return 0;
-         }
-      }
+      /* If the line continues to next display line, fail. */
+      if (ddl->line_continuation)
+       return 0;
 
       /* If any line position parameters have changed or a
          cursor has disappeared or disappeared, fail. */
@@ -6310,6 +6286,16 @@ redisplay_frame (struct frame *f, int preemption_check)
        return 1;
     }
 
+  if (!internal_equal (f->old_buffer_alist, f->buffer_alist, 0))
+    {
+      Lisp_Object frame;
+
+      f->old_buffer_alist = Freplace_list (f->old_buffer_alist,
+                                          f->buffer_alist);
+      XSETFRAME (frame, f);
+      va_run_hook_with_args (Qbuffer_list_changed_hook, 1, frame);
+    }
+
   /* Before we put a hold on frame size changes, attempt to process
      any which are already pending. */
   if (f->size_change_pending)
@@ -9272,6 +9258,7 @@ syms_of_redisplay (void)
   defsymbol (&Qredisplay_end_trigger_functions,
             "redisplay-end-trigger-functions");
   defsymbol (&Qtop_bottom, "top-bottom");
+  defsymbol (&Qbuffer_list_changed_hook, "buffer-list-changed-hook");
 
   DEFSUBR (Fredisplay_echo_area);
   DEFSUBR (Fredraw_frame);
@@ -9423,17 +9410,22 @@ Use vertical bar cursor if non-nil.  If t width is 1 pixel, otherwise 2.
 #ifndef INHIBIT_REDISPLAY_HOOKS
   xxDEFVAR_LISP ("pre-redisplay-hook", &Vpre_redisplay_hook /*
 Function or functions to run before every redisplay.
-Functions on this hook must be careful to avoid signalling errors!
 */ );
   Vpre_redisplay_hook = Qnil;
 
   xxDEFVAR_LISP ("post-redisplay-hook", &Vpost_redisplay_hook /*
 Function or functions to run after every redisplay.
-Functions on this hook must be careful to avoid signalling errors!
 */ );
   Vpost_redisplay_hook = Qnil;
 #endif /* INHIBIT_REDISPLAY_HOOKS */
 
+  DEFVAR_LISP ("buffer-list-changed-hook", &Vbuffer_list_changed_hook /*
+Function or functions to call when a frame's buffer list has changed.
+This is called during redisplay, before redisplaying each frame.
+Functions on this hook are called with one argument, the frame.
+*/ );
+  Vbuffer_list_changed_hook = Qnil;
+
   DEFVAR_INT ("display-warning-tick", &display_warning_tick /*
 Bump this to tell the C code to call `display-warning-buffer'
 at next redisplay.  You should not normally change this; the function
index 0ed8baf..4f5e6b1 100644 (file)
@@ -308,6 +308,9 @@ struct display_line
 
   char modeline;                       /* t if this line is a modeline */
 
+  char line_continuation;              /* t if this line continues to
+                                           next display line. */
+
   /* Dynamic array of display blocks */
   display_block_dynarr *display_blocks;
 
index e06f598..554be5d 100644 (file)
@@ -406,6 +406,9 @@ x_update_vertical_scrollbar_callback (Widget widget, LWLIB_ID id,
     return;
 
   mirror = find_scrollbar_window_mirror (f, id);
+  if (!mirror)
+    return;
+  
   win = real_window (mirror, 1);
 
   if (NILP (win))
@@ -609,6 +612,9 @@ x_update_horizontal_scrollbar_callback (Widget widget, LWLIB_ID id,
     return;
 
   mirror = find_scrollbar_window_mirror (f, id);
+  if (!mirror)
+    return;
+  
   win = real_window (mirror, 1);
 
   if (NILP (win))
index ccf6b41..9bdedb9 100644 (file)
@@ -43,6 +43,7 @@ Boston, MA 02111-1307, USA.  */
 
 #ifdef HAVE_NATIVE_SOUND
 # include <netdb.h>
+# include "nativesound.h"
 #endif
 
 #ifdef HAVE_ESD_SOUND
@@ -58,11 +59,6 @@ Lisp_Object Vsynchronous_sounds;
 Lisp_Object Vnative_sound_only_on_console;
 Lisp_Object Q_volume, Q_pitch, Q_duration, Q_sound;
 
-/* These are defined in the appropriate file (sunplay.c, sgiplay.c,
-   or hpplay.c). */
-
-extern void play_sound_file (char *name, int volume);
-extern void play_sound_data (unsigned char *data, int length, int volume);
 
 #ifdef HAVE_NAS_SOUND
 extern int nas_play_sound_file (char *name, int volume);
@@ -139,11 +135,17 @@ Windows the sound file must be in WAV format.
   if (DEVICE_CONNECTED_TO_ESD_P (d))
     {
       char *fileext;
+      int result;
 
       TO_EXTERNAL_FORMAT (LISP_STRING, file,
                          C_STRING_ALLOCA, fileext,
                          Qfile_name);
-      if (esd_play_sound_file (fileext, vol))
+
+      /* #### ESD uses alarm(). But why should we also stop SIGIO? */
+      stop_interrupts ();
+      result = esd_play_sound_file (fileext, vol);
+      start_interrupts ();
+      if (result)
        return Qnil;
     }
 #endif /* HAVE_ESD_SOUND */
@@ -277,7 +279,7 @@ See the variable `sound-alist'.
   /* variable `sound' is anything that can be a cdr in sound-alist */
   Lisp_Object new_volume, pitch, duration, data;
   int loop_count = 0;
-  int vol, pit, dur;
+  int vol, pit, dur, succes;
   struct device *d = decode_device (device);
 
   /* NOTE!  You'd better not signal an error in here. */
@@ -336,8 +338,14 @@ See the variable `sound-alist'.
 
       TO_EXTERNAL_FORMAT (LISP_STRING, sound, ALLOCA, (soundext, soundextlen),
                          Qbinary);
-      if (esd_play_sound_data (soundext, soundextlen, vol))
-       return Qnil;
+      
+      /* #### ESD uses alarm(). But why should we also stop SIGIO? */
+      stop_interrupts ();
+      succes = esd_play_sound_data (soundext, soundextlen, vol);
+      start_interrupts ();
+      QUIT;
+      if(succes)
+        return Qnil;
     }
 #endif /* HAVE_ESD_SOUND */
 
@@ -353,10 +361,11 @@ See the variable `sound-alist'.
                          Qbinary);
       /* The sound code doesn't like getting SIGIO interrupts. Unix sucks! */
       stop_interrupts ();
-      play_sound_data ((unsigned char*)soundext, soundextlen, vol);
+      succes = play_sound_data ((unsigned char*)soundext, soundextlen, vol);
       start_interrupts ();
       QUIT;
-      return Qnil;
+      if (succes)
+        return Qnil;
     }
 #endif  /* HAVE_NATIVE_SOUND */
 
index a9c52af..ccb195c 100644 (file)
@@ -41,6 +41,7 @@
 # include "lisp.h"
 # include "sysdep.h"
 # include <errno.h>
+# include "nativesound.h"
 #include "syssignal.h"
 # define perror(string) \
     message("audio: %s, %s ", string, strerror (errno))
@@ -57,13 +58,11 @@ static int audio_fd;
 
 #define audio_open()   open ("/dev/audio", (O_WRONLY | O_NONBLOCK), 0)
 
+static int initialized_device_p;
 static int reset_volume_p, reset_device_p;
 static double old_volume;
 static Audio_hdr dev_hdr;
 
-void play_sound_file (char *name, int volume);
-void play_sound_data (unsigned char *data, int length, int volume);
-
 static int
 init_device (int volume, unsigned char *data, int fd,
             unsigned int *header_length)
@@ -98,11 +97,12 @@ init_device (int volume, unsigned char *data, int fd,
 
   audio_flush_play (audio_fd);
 
-  if (0 != audio_cmp_hdr (&dev_hdr, &file_hdr))
+  if (!initialized_device_p || (0 != audio_cmp_hdr (&dev_hdr, &file_hdr)))
     {
       Audio_hdr new_hdr;
       new_hdr = file_hdr;
       reset_device_p = 1;
+      initialized_device_p = 1;
       if (AUDIO_SUCCESS != audio_set_play_config (audio_fd, &new_hdr))
        {
          char buf1 [100], buf2 [100], buf3 [250];
@@ -227,15 +227,16 @@ play_sound_file (char *sound_file, int volume)
 }
 
 
-void
+int
 play_sound_data (unsigned char *data, int length, int volume)
 {
   int wrtn, start = 0;
   unsigned int ilen;
+  int result = 0;
 
   audio_fd = -1;
 
-  if (length == 0) return;
+  if (length == 0) return 0;
 
   /* this is just to get a better error message */
   if (strncmp (".snd\0", (char *) data, 4))
@@ -251,10 +252,7 @@ play_sound_data (unsigned char *data, int length, int volume)
 
   audio_fd = audio_open ();
   if (audio_fd < 0)
-    {
-      perror ("open /dev/audio");
-      return;
-    }
+      return 0;
 
   /* where to find the proto for signal()... */
   sighup_handler = (SIGTYPE (*) (int)) signal (SIGHUP, sighandler);
@@ -292,6 +290,8 @@ play_sound_data (unsigned char *data, int length, int volume)
       goto END_OF_PLAY;
     }
 
+ result = 1;
+  
  END_OF_PLAY:
 
   if (audio_fd > 0)
@@ -302,6 +302,8 @@ play_sound_data (unsigned char *data, int length, int volume)
 
   signal (SIGHUP, sighup_handler);
   signal (SIGINT, sigint_handler);
+
+  return result;
 }
 
 /* #### sigcontext doesn't exist in Solaris.  This should be updated
index f3aa717..912b3d1 100644 (file)
@@ -93,11 +93,6 @@ Boston, MA 02111-1307, USA.  */
 #include "ntheap.h"
 #endif
 
-#ifdef HAVE_MMAP
-#include <unistd.h>
-#include <sys/mman.h>
-#endif
-
 /* ------------------------------- */
 /*         TTY definitions         */
 /* ------------------------------- */
@@ -767,23 +762,31 @@ sys_suspend_process (int process)
 \f
 
 /* Given FD, obtain pty buffer size. When no luck, a good guess is made,
-   so that the function works even fd is not a pty. */
+   so that the function works even when fd is not a pty. */
 
 int
 get_pty_max_bytes (int fd)
 {
-  int pty_max_bytes;
-
+  /* DEC OSF 4.0 fpathconf returns 255, but xemacs hangs on long shell
+     input lines if we return 253.  252 is OK!.  So let's leave a bit
+     of slack for the newline that xemacs will insert, and for those
+     inevitable vendor off-by-one-or-two-or-three bugs. */
+#define MAX_CANON_SLACK 10
+#define SAFE_MAX_CANON (127 - MAX_CANON_SLACK)
 #if defined (HAVE_FPATHCONF) && defined (_PC_MAX_CANON)
-  pty_max_bytes = fpathconf (fd, _PC_MAX_CANON);
-  if (pty_max_bytes < 0)
+  {
+    int max_canon = fpathconf (fd, _PC_MAX_CANON);
+    return (max_canon < 0 ? SAFE_MAX_CANON :
+           max_canon > SAFE_MAX_CANON ? max_canon - MAX_CANON_SLACK :
+           max_canon);
+  }
+#elif defined (_POSIX_MAX_CANON)
+  return (_POSIX_MAX_CANON > SAFE_MAX_CANON ?
+         _POSIX_MAX_CANON - MAX_CANON_SLACK :
+         _POSIX_MAX_CANON);
+#else
+  return SAFE_MAX_CANON;
 #endif
-    pty_max_bytes = 250;
-
-  /* Deduct one, to leave space for the eof.  */
-  pty_max_bytes--;
-
-  return pty_max_bytes;
 }
 
 /* Figure out the eof character for the FD. */
index eaf44b9..639f675 100644 (file)
@@ -48,7 +48,7 @@ char *UP, *BC, PC;
    format is different too.
 */
 
-#include CURSES_H_PATH
+#include CURSES_H_FILE
 /* Sun, in their infinite lameness, supplies (possibly) broken headers
    even under Solaris.  GCC feels it necessary to correct things by
    supplying its own headers.  Unfortunately, if you build GCC under
@@ -59,7 +59,7 @@ char *UP, *BC, PC;
    but not term.h.) However, it seems to work to just not include
    term.h under Solaris, so we try that.  KLUDGE! */
 #if !(defined (__GNUC__) && defined (SOLARIS2))
-#include TERM_H_PATH
+#include TERM_H_FILE
 #endif
 
 extern void *xmalloc (int size);
index c5a0778..7c2179c 100644 (file)
@@ -55,6 +55,9 @@ GetDlgItem(FRAME_MSWINDOWS_HANDLE(f), TOOLBAR_ID_BIAS + p)
 #ifndef TB_SETPADDING
 #define TB_SETPADDING   (WM_USER + 87)
 #endif
+#ifndef TBSTYLE_FLAT
+#define TBSTYLE_FLAT 0x800
+#endif
 #define MSWINDOWS_BUTTON_SHADOW_THICKNESS 2
 #define MSWINDOWS_BLANK_SIZE 5
 #define MSWINDOWS_MINIMUM_TOOLBAR_SIZE 8
@@ -131,7 +134,7 @@ mswindows_clear_toolbar (struct frame *f, enum toolbar_pos pos,
       ShowWindow(toolbarwnd, SW_HIDE);
     }
 
-  FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos)=0;
+  FRAME_MSWINDOWS_TOOLBAR_CHECKSUM (f, pos) = 0;
   SET_TOOLBAR_WAS_VISIBLE_FLAG (f, pos, 0);
 }
 
@@ -223,7 +226,7 @@ mswindows_output_toolbar (struct frame *f, enum toolbar_pos pos)
       /* remove the old one */
       mswindows_clear_toolbar (f, pos, 0);
 
-      FRAME_MSWINDOWS_TOOLBAR_CHECKSUM(f,pos)=checksum;
+      FRAME_MSWINDOWS_TOOLBAR_CHECKSUM (f, pos)=checksum;
 
       /* build up the data required by win32 fns. */
       button_tbl = xnew_array_and_zero (TBBUTTON, nbuttons);
@@ -384,10 +387,12 @@ mswindows_output_toolbar (struct frame *f, enum toolbar_pos pos)
           CreateWindowEx ( WS_EX_WINDOWEDGE,
                            TOOLBARCLASSNAME,
                            NULL,
-                           WS_CHILD | WS_VISIBLE 
+                           WS_CHILD 
                            | (style_3d ? WS_DLGFRAME : 0)
-                           | TBSTYLE_TOOLTIPS | CCS_NORESIZE 
-                           | CCS_NOPARENTALIGN | CCS_NODIVIDER,
+                           | TBSTYLE_TOOLTIPS 
+                           | CCS_NORESIZE 
+                           | CCS_NOPARENTALIGN | CCS_NODIVIDER
+                           | CCS_ADJUSTABLE,
                            x, y, bar_width, bar_height,
                            FRAME_MSWINDOWS_HANDLE (f),
                            (HMENU)(TOOLBAR_ID_BIAS + pos),
index c7221c7..963d373 100644 (file)
@@ -1037,10 +1037,10 @@ whole, use `check-valid-instantiator' with a specifier type of 'toolbar.
   if (!CONSP (elt[0]))
     {
       /* We can't check the buffer-local here because we don't know
-         which buffer to check in.  #### I think this is a bad thing.
-         See if we can't get enough information to this function so
-         that it can check.
-
+        which buffer to check in.  #### I think this is a bad thing.
+        See if we can't get enough information to this function so
+        that it can check.
+        
         #### Wrong.  We shouldn't be checking the value at all here.
         The user might set or change the value at any time. */
       value = Fsymbol_value (elt[0]);
index 1cc0819..6d276df 100644 (file)
@@ -24,7 +24,7 @@ Boston, MA 02111-1307, USA.
 
 #ifndef INCLUDED_tooltalk_h_
 #define INCLUDED_tooltalk_h_
-#include TT_C_H_PATH
+#include TT_C_H_FILE
 
 typedef struct Lisp_Tooltalk_Message Lisp_Tooltalk_Message;
 DECLARE_LRECORD (tooltalk_message, Lisp_Tooltalk_Message);
index 141d4d7..36e7a61 100644 (file)
@@ -1,3 +1,7 @@
+2000-05-01  Martin Buchholz <martin@xemacs.org>
+
+       * XEmacs 21.2.33 is released.
+
 2000-03-20  Martin Buchholz <martin@xemacs.org>
 
        * XEmacs 21.2.32 is released.
index 425b1b8..c325e36 100644 (file)
@@ -18,7 +18,8 @@
  (make-extent (point) (point))
  (setq radio-button1 
        (make-glyph 
-       [button :descriptor ["ok1" (setq ok-select t)
+       [button :face widget
+               :descriptor ["ok1" (setq ok-select t)
                             :style radio :selected ok-select]])))
 ;; button in a group
 (set-extent-begin-glyph 
@@ -48,7 +49,7 @@
  (setq push-button 
        (make-glyph [button :width 10 :height 2
                           :face modeline-mousable
-                          :descriptor "ok" :callback foo 
+                          :descriptor "ok" :callback foo
                           :selected t])))
 ;; tree view
 (set-extent-begin-glyph 
@@ -82,7 +83,7 @@
 ;; progress the progress ...
 (let ((x 0))
   (while (<= x 100)
-    (set-image-instance-property (glyph-image-instance pgauge) :percent x)
+    (set-image-instance-property (glyph-image-instance pgauge) :value x)
     (setq x (+ x 5))
     (sit-for 0.1)))
 
@@ -95,7 +96,7 @@
 ;; progress the progress ...
 (let ((x 0))
   (while (<= x 100)
-    (set-image-instance-property (glyph-image-instance pg) :percent x)
+    (set-image-instance-property (glyph-image-instance pg) :value x)
     (setq x (+ x 5))
     (sit-for 0.1)))
 
index f6f2925..ea26a94 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=t
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=32
-xemacs_codename="Kastor & Polydeukes"
+emacs_beta_version=33
+xemacs_codename="Melpomene"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8