XEmacs 21.4.2 "Developer-Friendly Unix APIs".
authortomo <tomo>
Thu, 29 Aug 2002 07:50:40 +0000 (07:50 +0000)
committertomo <tomo>
Thu, 29 Aug 2002 07:50:40 +0000 (07:50 +0000)
46 files changed:
ChangeLog
PROBLEMS
configure.in
etc/FTP
etc/NEWS
lib-src/.cvsignore
lib-src/ChangeLog
lisp/ChangeLog
lisp/about.el
lisp/build-report.el
lisp/cus-edit.el
lisp/dialog.el
lisp/menubar-items.el
lisp/package-net.el
lisp/printer.el
lisp/simple.el
lisp/startup.el
lisp/subr.el
lwlib/ChangeLog
lwlib/lwlib-utils.c
man/ChangeLog
man/make-stds.texi
man/xemacs/frame.texi
netinstall/ChangeLog
netinstall/Makefile.in.in
netinstall/reginfo.h
nt/.cvsignore
nt/ChangeLog
nt/compface.mak
nt/config.inc.samp
nt/xemacs.mak
src/.cvsignore
src/ChangeLog
src/buffer.c
src/console-msw.h
src/device-msw.c
src/editfns.c
src/event-msw.c
src/event-stream.c
src/frame-msw.c
src/mule-charset.c
src/process-unix.c
src/s/aix4.h
src/terminfo.c
tests/ChangeLog
version.sh

index 51b67ac..94b779f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-05-04  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in (opsys): 
+       Use lower-case `uname -s` as the default value for opsys.
+       The previous code effectively did the non-sensical
+       opsys=$canonical because [] magically disappear in configure.in.
+
+2001-01-31  Jason R. Mastaler  <jason@xemacs.org>
+
+       * etc/FTP: Updated FTP mirrors list.
+
+2001-05-04  Ben Wing  <ben@xemacs.org>
+
+       * etc\NEWS: Remove kill-whole-line changes.
+
+2001-04-25  Ben Wing  <ben@xemacs.org>
+
+       * PROBLEMS:
+       * PROBLEMS (Note):
+       * PROBLEMS (ftp):
+       Correct general info about init file.
+       Fix up Cygwin section.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index d932df3..b7362e4 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -20,10 +20,10 @@ info about the Outline mode.
 Also, Try finding the things you need using one of the search commands
 XEmacs provides (e.g. `C-s').
 
-A general advice:
-    WATCH OUT for .emacs file!  ~/.emacs is your Emacs init file.  If
-    you observe strange problems, invoke XEmacs with the `-q' option
-    and see if you can repeat the problem.
+General advice:
+    WATCH OUT for your init file! (~/.xemacs/init.el or ~/.emacs)  If
+    you observe strange problems, invoke XEmacs with the `-vanilla'
+    option and see if you can repeat the problem.
 
 
 * Problems with building XEmacs
@@ -552,12 +552,38 @@ Note: Much of the above entry is probably not valid for XEmacs 21.0
 and later.
 
 ** Cygwin
+
 *** In general use etc/check_cygwin_setup.sh to trap environment problems.
 
 The script etc/check_cygwin_setup.sh will attempt to detect whether
 you have a suitable environment for building. This script may not work
 correctly if you are using ash instead of bash (see below).
 
+*** Syntax errors running configure scripts, make failing with exit code 127
+    in inexplicable situations, etc.
+
+This may be because you are using the default cygwin shell.  The
+default cygwin shell (/bin/sh.exe) is ash which appears to work in
+most circumstances but has some weird failure modes.  You need to
+replace the symlink with bash.exe.
+
+*** Lots of compile errors, esp. on lines containing macro definitions
+    terminated by backslashes.
+
+Your partition holding the source files is mounted binary.  It needs
+to be mounted text. (This will not screw up any binary files because
+the Cygwin utilities specify explicitly whether they want binary or
+text mode when working with source vs. binary files, which overrides
+the mount type.) To fix this, you just need to run the appropriate
+mount command once -- afterwards, the settings are remembered in the
+registry.
+
+*** Errors from make like /c:not found.
+
+make sure you set the environment variable MAKE_MODE to UNIX in your
+.bashrc, Control Panel (Windows 2000/NT), or AUTOEXEC.BAT (Windows
+98/95).
+
 *** X11 not detected.
 
 This is usually because xmkmf is not in your path or because you are
@@ -568,10 +594,9 @@ mean configure is slower but more reliable.
 
 *** Subprocesses do not work.
 
-You do not have "tty" in your CYGWIN32 (for b19) or CYGWIN (for b20)
-environment variable. This must be set in your autoexec.bat (win95) or
-the system properties (winnt) as it must be read before the cygwin dll
-initializes.
+You do not have "tty" in your CYGWIN environment variable. This must
+be set in your autoexec.bat (win95) or the system properties (winnt)
+as it must be read before the cygwin DLL initializes.
 
 *** ^G does not work on hung subprocesses.
 
@@ -579,17 +604,6 @@ This is a known problem. It can be remedied with cygwin b20 or greater
 by defining BROKEN_SIGIO in src/s/cygwin32.h, however this currently
 leads to instability in XEmacs.
 
-*** The XEmacs executable crashes at startup.
-
-This can be caused by many things.
-
-If you are running with X11 you need to have cygwin b19 or cygwin
-b20.1 or greater, cygwin b20 will not work.
-
-If you are running with cygwin b19 make sure you are using egcs 1.0.2
-rather than vanilla gcc. XEmacs builds by default with -O3 which does
-not work with the gcc that ships with b19. Alternatively use -O2.
-
 *** The info files will not build.
 
 makeinfo that ships with cygwin (all versions) is a noop. You need to
@@ -597,9 +611,9 @@ obtain makeinfo from somewhere or build it yourself.
 
 *** I have no graphics.
 
-You need to obtain the various graphics libraries. Pre-built versions
+You need to obtain the various graphics libraries.  Pre-built versions
 of these and the X libraries are located on the XEmacs website in
-ftp://ftp.xemacs.org/pub/aux/cygwin*.
+ftp://ftp.xemacs.org/pub/aux/cygwin/.
 
 *** There are no images in the toolbar buttons.
 
index 4d845bf..cd2975f 100644 (file)
@@ -1534,9 +1534,11 @@ case "$canonical" in
 
 esac
 
-dnl Initialize machine and opsys from $canonical if not in our database above.
+dnl Initialize machine from $canonical if not in our database above.
 test -z "$machine" && machine=`echo $canonical | sed 's/-.*$//'`
-test -z "$opsys"   && opsys=`echo $canonical | sed 's/^[^-]*-[^-]*-//'`
+
+dnl Initialize opsys from `uname -s` if not in our database above.
+test -z "$opsys"   && opsys=`uname -s | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
 
 dnl Use configure-time autodetection if s&m not available
 if test -r "${srcdir}/src/m/${machine}.h"; then
diff --git a/etc/FTP b/etc/FTP
index 2074ec4..bdb2ce6 100644 (file)
--- a/etc/FTP
+++ b/etc/FTP
 
-          XEmacs availability information.  Last Modified: 1999-11-08
+          XEmacs availability information.  Last Modified: 2001-02-01
 
-XEmacs is available via anonymous FTP from ftp.xemacs.org (207.96.122.8)
-in the directory /pub/xemacs/.
+XEmacs is available via anonymous FTP at ftp://ftp.xemacs.org/pub/xemacs/
+and also via HTTP at http://ftp.xemacs.org/.
 
 ftp.xemacs.org is the primary distribution point, but you may find
 copies of it at other sites as well.  Some sites to try include:
-* North America
 
-     o Canada
-          + ftp://ftp.crc.ca/pub/packages/editors/xemacs/
-          + ftp://sunsite.ualberta.ca/pub/Mirror/xemacs/
-     o United States
-          + ftp://uiarchive.uiuc.edu/pub/packages/xemacs/
-          + ftp://metalab.unc.edu/pub/packages/editors/xemacs/
-          + ftp://ftp.sunsite.utk.edu/pub/xemacs/
+* Africa
+
+     o South Africa
+
+          + ftp.za.xemacs.org (FTP)
+          + ftp.za.xemacs.org (HTTP)
+
+* America
+
+     o North America
+
+          + Canada
+               + ftp.ca.xemacs.org (FTP)
+               + ftp.ca.xemacs.org (HTTP)
+
+                      Secondary Mirrors
+                    + ftp://ftp.crc.ca/pub/packages/editors/xemacs/
+
+          + United States
+
+               + ftp.us.xemacs.org (FTP)
+               + ftp.us.xemacs.org (HTTP)
+
+                      Secondary Mirrors
+                    + ftp://ftp.twoguys.org/pub/xemacs/
+                    + ftp://ftp.stealth.net/pub/mirrors/ftp.xemacs.org/pub/xemacs/
+                    + ftp://metalab.unc.edu/pub/packages/editors/xemacs/
+                    + http://metalab.unc.edu/pub/packages/editors/xemacs/
+
+     o South America
+
+          + Brazil
+
+               + ftp.br.xemacs.org (FTP)
+
+* Asia
+
+     o Japan
+
+          + ftp.jp.xemacs.org (FTP)
+
+                 Secondary Mirrors
+               + ftp://ftp.jaist.ac.jp/pub/GNU/xemacs/
+               + ftp://ring.aist.go.jp/pub/text/xemacs/
+               + ftp://ring.asahi-net.or.jp/pub/text/xemacs/
+               + ftp://sunsite.sut.ac.jp/pub/archives/packages/xemacs/
+               + ftp://ftp.dti.ad.jp/pub/unix/editor/xemacs/
+               + ftp://mirror.nucba.ac.jp/mirror/xemacs/
+
+     o Korea
 
-* South America
+          + ftp.kr.xemacs.org (FTP)
 
-     o Brazil
-          + ftp://ftp.unicamp.br/pub/xemacs/
+     o Taiwan
+
+          + ftp.tw.xemacs.org (FTP)
+          + ftp.tw.xemacs.org (HTTP)
+
+* Australia
+
+     o Queensland
+
+          + ftp.au.xemacs.org (FTP)
+          + ftp.au.xemacs.org (HTTP)
+
+                 Secondary Mirrors
+               + ftp://mirror.aarnet.edu.au/pub/xemacs/
+               + http://mirror.aarnet.edu.au/pub/xemacs/
 
 * Europe
 
      o Austria
-          + ftp://gd.tuwien.ac.at/editors/xemacs/
+
+          + ftp.at.xemacs.org (FTP)
+          + ftp.at.xemacs.org (HTTP)
+
+     o Belgium
+
+          + ftp.be.xemacs.org (FTP)
+          + ftp.be.xemacs.org (HTTP)
+
      o Denmark
-          + ftp://sunsite.auc.dk/pub/emacs/xemacs/
-     o England
-          + ftp://sunsite.doc.ic.ac.uk/packages/xemacs/
+
+          + ftp.dk.xemacs.org (FTP)
+          + ftp.dk.xemacs.org (HTTP)
+
      o Finland
-          + ftp://ftp.funet.fi/pub/mirrors/ftp.xemacs.org/pub/tux/xemacs/
+
+          + ftp.fi.xemacs.org (FTP)
+          + ftp.fi.xemacs.org (HTTP)
+
      o France
-          + ftp://ftp.pasteur.fr/pub/computing/xemacs/
-          + ftp://ftp.cenatls.cena.dgac.fr/Emacs/xemacs/
+
+          + ftp.fr.xemacs.org (FTP)
+          + ftp.fr.xemacs.org (HTTP)
+
+                 Secondary Mirrors
+               + ftp://ftp.pasteur.fr/pub/computing/xemacs/
+
      o Germany
-          + ftp://ftp.tu-darmstadt.de/pub/editors/xemacs/
+
+          + ftp.de.xemacs.org (FTP)
+          + ftp.de.xemacs.org (HTTP)
+
+                 Secondary Mirrors
+               + ftp://ftp.tu-darmstadt.de/pub/editors/xemacs/
+
      o Hungary
-          + ftp://ftp.kfki.hu/pub/packages/xemacs/
+
+          + ftp.hu.xemacs.org (FTP)
+          + ftp.hu.xemacs.org (HTTP)
+
      o Ireland
-          + ftp://ftp.eunet.ie/mirrors/ftp.xemacs.org/pub/xemacs/
+
+          + ftp.ie.xemacs.org (FTP)
+          + ftp.ie.xemacs.org (HTTP)
+
      o Italy
-          + ftp://ftp.uniroma2.it/unix/misc/dist/XEMACS/
+
+          + ftp.it.xemacs.org (FTP)
+          + ftp.it.xemacs.org (HTTP)
+
      o Norway
-          + ftp://sunsite.uio.no/pub/xemacs
+
+          + ftp.no.xemacs.org (FTP)
+          + ftp.no.xemacs.org (HTTP)
+
      o Poland
-          + ftp://ftp.icm.edu.pl/pub/unix/editors/xemacs/
+
+          + ftp.pl.xemacs.org (FTP)
+          + ftp.pl.xemacs.org (HTTP)
+
      o Russia
-          + ftp://ftp.srcc.msu.su/mirror/ftp.xemacs.org/
+
+          + ftp.ru.xemacs.org (FTP)
+          + ftp.ru.xemacs.org (HTTP)
+
+     o Slovakia
+
+          + ftp.sk.xemacs.org (FTP)
+          + ftp.sk.xemacs.org (HTTP)
+
      o Sweden
-          + ftp://ftp.sunet.se/pub/gnu/xemacs/
+
+          + ftp.se.xemacs.org (FTP)
+          + ftp.se.xemacs.org (HTTP)
+
      o Switzerland
-          + ftp://sunsite.cnlab-switch.ch/mirror/xemacs/
 
-* Asia
+          + ftp.ch.xemacs.org (FTP)
+          + ftp.ch.xemacs.org (HTTP)
 
-     o Japan
-          + ftp://ftp.netlab.is.tsukuba.ac.jp/pub/GNU/xemacs/
-          + ftp://ftp.jaist.ac.jp/pub/GNU/xemacs/
-          + ftp://ring.aist.go.jp/pub/text/xemacs/
-          + ftp://ring.asahi-net.or.jp/pub/text/xemacs/
-          + ftp://sunsite.sut.ac.jp/pub/archives/packages/xemacs/
-          + ftp://ftp.dti.ad.jp/pub/unix/editor/xemacs/
-          + ftp://mirror.nucba.ac.jp/mirror/xemacs/
-     o Korea
-          + ftp://ftp.kreonet.re.kr/pub/tools/emacs/xemacs/
-     o Taiwan
-          + ftp://coda.nctu.edu.tw/Editors/xemacs/
+     o United Kingdom
 
-* Africa
+          + ftp.uk.xemacs.org (FTP)
+          + ftp.uk.xemacs.org (HTTP)
 
-     o South Africa
-          + ftp://ftp.sun.ac.za/xemacs/
+                 Secondary Mirrors
+               + ftp://sunsite.doc.ic.ac.uk/packages/xemacs/
+               + http://sunsite.doc.ic.ac.uk/packages/xemacs/
 
 * Middle East
 
      o Saudi Arabia
-          + ftp://ftp.isu.net.sa/pub/mirrors/ftp.xemacs.org/
-
-* Australia
 
-     o ftp://mirror.aarnet.edu.au/pub/xemacs
+          + ftp.sa.xemacs.org (FTP)
+          + ftp.sa.xemacs.org (HTTP)
 
 
 The most up-to-date list of distribution sites can always be found on
-the XEmacs WWW page, http://www.xemacs.org/.  Try to pick a site that
-is networkologically close to you.  If you know of other mirrors of
-the XEmacs archives, please send us mail and we will list them here as
-well.
+the XEmacs WWW page at http://www.xemacs.org/Download/.  Try to pick a
+site that is networkologically close to you.  If you know of other
+mirrors of the XEmacs archives, please send e-mail to
+<webmaster@xemacs.org> and we will list them here as well.
 
 There are mailing lists and newsgroups specifically for discussing and
 reporting bugs in XEmacs; see the file MAILINGLISTS in this directory.
index 9140731..e405ebc 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -86,7 +86,6 @@ consulted for a more detailed list of changes.
   -- New locations for early package hierarchies.
   -- The `auto-save' library has been greatly improved.
   -- New variable `mswindows-alt-by-itself-activates-menu'.
-  -- The variable `kill-whole-line' now only takes effect interactively.
   -- Other init-file-related changes.
     - Init file in your home directory may be called `.emacs.el'.
     - New command-line switches -user-init-file and -user-init-directory.
@@ -522,14 +521,6 @@ is t.  This is not to be confused with `menu-accelerator-enabled',
 which enables the use of Alt+<Letter> accelerators to invoke the
 menus.
 
-** The variable `kill-whole-line' now only takes effect interactively.
-
-(This variable controls the behavior of `kill-line'.) Although this
-is a departure from a previous behavior in the case of setting this
-variable `kill-whole-line' to t, it is almost certainly what has
-always been intended, and most likely the old way of doing things
-introduced bugs.
-
 ** Other init-file-related changes.
 
 *** Init file in your home directory may be called `.emacs.el'.
index 8be3c26..d18aa8b 100644 (file)
@@ -23,3 +23,4 @@ gnuclient
 ootags
 ellcc
 DOC
+*.pdb
index 67bd392..5b6c1e0 100644 (file)
@@ -1,3 +1,11 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-04-20  Ben Wing  <ben@xemacs.org>
+
+       * .cvsignore: Added stuff for Windows.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 955d63c..96b1589 100644 (file)
@@ -1,3 +1,118 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-05-04  Ben Wing  <ben@xemacs.org>
+
+       * printer.el (generic-print-buffer):
+       * printer.el (generic-print-region):
+       Enable dialog boxes.  Apply workaround recommended by Kirill.
+       fix (fboundp 'lpr-buffer) -> (fboundp 'lpr-region).
+       
+       * simple.el (kill-whole-line):
+       * simple.el (kill-line-1):
+       * simple.el (kill-entire-line):
+       * simple.el (kill-line):
+       * simple.el (backward-kill-line):
+       Take out interactive dependence of kill-whole-line.
+
+2001-04-22  Ben Wing  <ben@xemacs.org>
+
+       * dialog.el (make-dialog-box):
+       Put dialog titles back in -- this time correctly.  Fix various
+       other problems with leaks and such.
+
+       * simple.el (region-exists-p):
+       * simple.el (region-active-p):
+       Add comment about which one is correct to use in menu specs.
+
+2001-05-05  Ben Wing  <ben@xemacs.org>
+
+       * dialog.el (make-dialog-box): fix doc string.
+       * menubar-items.el (default-menubar): Add Page Setup for Windows,
+       take out Pretty Print.
+       * printer.el:
+       * printer.el (printer-current-device): New.
+       * printer.el (Printer-get-device): New.
+       * printer.el (Printer-clear-device): New.
+       * printer.el (generic-page-setup): New.
+       * printer.el (generic-print-buffer):
+       * printer.el (generic-print-region):
+       Implement Page Setup.  Handle errors properly.
+
+2001-05-05  Ben Wing  <ben@xemacs.org>
+
+       * subr.el (error): Complete list of errors in doc string.
+       
+2001-04-22  Ben Wing  <ben@xemacs.org>
+
+       * bytecomp-runtime.el (byte-compiler-options): Correct doc string.
+       
+2001-05-03  Adrian Aichner  <adrian@xemacs.org>
+
+       * build-report.el: Remove CVS keywords since this file has been in
+       core lisp for a while now.
+       * build-report.el (build-report-make-output-files): Fix typo.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * about.el (about-finish-buffer): Make sure the last change works
+       even if EVENT is nil.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * about.el (about-finish-buffer): Kill/bury the buffer where the user
+       clicked, not the one that happens to be the current buffer at the
+       time.
+
+2001-03-19  Karl M. Hegbloom  <karlheg@microsharp.com>
+
+       * cus-edit.el (custom-display): Support the GTK Window System also.
+
+2001-04-30  Ben Wing  <ben@xemacs.org>
+
+       * printer.el:
+       * printer.el (printer-page-header):
+       * printer.el (Print-context): New.
+       * printer.el (printer-page-footer):
+       * printer.el (generate-header-element): New.
+       * printer.el (generate-header-line): New.
+       * printer.el (print-context-property):
+       * printer.el (generic-print-buffer):
+       * printer.el (generic-print-region):
+       Implement headers and footers.  Implement calling Print dialog box
+       (#### but it doesn't quite work yet).
+
+2001-04-25  Ben Wing  <ben@xemacs.org>
+
+       * about.el (xemacs-hackers):
+       * about.el (about-url-alist):
+       * about.el (about-personal-info):
+       * about.el (about-hacker-contribution):
+       More contributions.
+       
+       * simple.el (handle-post-motion-command):
+       Fix spurious setting of zmacs-region-stays to t after a non-shift
+       motion command.
+
+2001-04-24  Hrvoje Niksic  <hniksic@arsdigita.com>
+
+       * about.el (about-personal-info): Update my bio.
+       (about-hacker-contribution): Ditto.
+
+2001-04-23  Stephen J. Turnbull  <turnbull@sk.tsukuba.ac.jp>
+
+       * startup.el (splash-frame-body): Update copyright notices: Ben, FSF.
+
+2001-04-19  Andy Piper  <andy@xemacs.org>
+
+       * package-net.el (package-net-cygwin32-binary-size): new size.
+       (package-net-win32-binary-size): new size.
+       (package-net-convert-index-to-ini): Use new arch.
+       (package-net-batch-convert-index-to-ini): Removed.
+       (package-net-generate-bin-ini): New.
+       (package-net-batch-generate-bin-ini): New.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 86aa143..f24468b 100644 (file)
     (rose     "John Rose"         "rose@xemacs.org")
     (rossini  "Anthony Rossini"   "rossini@xemacs.org")
     (slb      "Steve Baur"        "steve@xemacs.org")
-    (sperber  "Michael Sperber"   "sperber@xemacs.org")
+    (sperber  "Michael Sperber"   "mike@xemacs.org")
     (stig     "Jonathan Stigelman" "stig@xemacs.org")
     (stigb    "Stig Bjorlykke"    "stigb@xemacs.org")
     (thiessel "Marcus Thiessel"   "marcus@xemacs.org")
     ;; to sort the stuff below, use M-x sort-regexp-fields RET
     ;; ^.*$ RET (\([a-z]*\) RET
   '((ajc        . "http://www-personal.monash.edu.au/~ajc/")
+    (alastair   . "http://website.lineone.net/~ajhoughton/")
     (baw        . "http://barry.wooz.org/")
     (ben        . "http://www.666.com/ben/")
     (ben-xemacs . "http://www.xemacs.org/Architecting-XEmacs/index.html")
     (stigb      . "http://www.tihlde.hist.no/~stigb/")
     (vin        . "http://www.upa.org/")
     (vladimir   . "http://www.leonora.org/~vladimir/")
-    (wget       . "http://www.wget.org/")
-    (wget-ftp   . "ftp://gnjilux.cc.fer.hr/pub/unix/util/wget/")
+    (wget       . "http://sunsite.dk/wget/")
     (xemacs     . "http://www.xemacs.org/")
     (youngs     . "http://eicq.sourceforge.net/"))
   "Some of the more important URLs.")
         nil)))
 
 ;; Set up the stuff needed by widget.  Allowed types are `bury' and
-;; `kill'.
+;; `kill'.  The reason why we offer both types is performance: when a
+;; large buffer is merely buried, `about' will find it again when the
+;; user requests it, instead of recreating it.  Small buffers can be
+;; killed because it is cheap to generate their contents.
+
 (defun about-finish-buffer (&optional type)
   (or type (setq type 'bury))
   (widget-insert "\n")
   (if (eq type 'bury)
-      (widget-create 'link :help-echo "Bury buffer"
-                    :action (lambda (&rest ignore)
-                              (bury-buffer))
-                    "Remove")
-    (widget-create 'link :help-echo "Kill buffer"
-                  :action (lambda (&rest ignore)
-                            (kill-buffer (current-buffer)))
-                  "Kill"))
+      (widget-create 'link
+                    :help-echo "Bury this buffer"
+                    :action (lambda (widget event)
+                              (if event
+                                  ;; For some reason,
+                                  ;; (bury-buffer (event-buffer event))
+                                  ;; doesn't work.
+                                  (with-selected-window (event-window event)
+                                    (bury-buffer))
+                                (bury-buffer)))
+                    :tag "Bury")
+    (widget-create 'link
+                  :help-echo "Kill this buffer"
+                  :action (lambda (widget event)
+                            (if event
+                                (kill-buffer (event-buffer event))
+                              (kill-buffer (current-buffer))))
+                  :tag "Kill"))
   (widget-insert " this buffer and return to previous.\n")
   (use-local-map (make-sparse-keymap))
   (set-keymap-parent (current-local-map) widget-keymap)
@@ -740,7 +754,15 @@ hair various colours (see ")
     (alastair
      (widget-insert
       "\
-Sorry, no personal information available about me yet.\n"))
+Alastair, apart from being an all-round hacker, occasional contributor
+to free software projects and general good egg(!), currently works for
+Telsis, a manufacturer of telephony equipment on the south coast of
+England.  He'd quite like to have his own company one day, but has yet
+to think of that killer product...
+
+See also ")
+        (about-url-link 'alastair nil "Visit Alastair's home page")
+        (widget-insert ".\n"))
     (baw
      (widget-insert "\
 As of November 2000, I am a software engineer with the Pythonlabs at
@@ -840,21 +862,12 @@ looking for a job involving lisp programming, French and Russian.\n"))
 Sorry, no personal information available about me yet.\n"))
     (cthomp
      (widget-insert "\
-Chuck, through being in the wrong place at the right time, got stuck
-with being Jamie's replacement as the primary maintainer of XEmacs.
-This caused his hair to begin falling out and quadrupled his daily
-coffee dosage.  Though he works at and for the University of Illinois
-his funding for XEmacs work actually came from Sun Microsystems.
-
-He has worked on XEmacs since November 1992, which fact occasionally
-gives him nightmares.  As of October 1995, he no longer works
-full-time on XEmacs, though he does continue as an active maintainer.
-His main contributions have been the greatly enhanced redisplay
-engine, scrollbar support, the toolbars, configure support and
-numerous other features and fixes.
-
-Rumors that Chuck is aka Black Francis aka Frank Black are completely
-unfounded.\n"))
+Chuck is a senior system and network administrator for the Computer
+Science department at the Unversity of Illinois.  In one previous life
+he spent every waking hour working on XEmacs.  In another he dabbled
+as a project manager for a streaming video startup (RIP).  His current
+reason for not having time to contribute to XEmacs is the Thompson
+Twins.\n"))
     (daiki
      (about-url-link 'daiki nil "Visit Daiki's page"))
     (dan
@@ -957,16 +970,39 @@ Sorry, no personal information available about me yet.\n"))
 Sorry, no personal information available about me yet.\n"))
     (hniksic
      (widget-insert "\
-Hrvoje is a student at the Faculty of Electrical Engineering and
-Computing in Zagreb, Croatia, working part-time at system administration
-at SRCE.  His hobby is hacking free software, particularly XEmacs and
-GNU Wget, the latter being his very own creation.
-
-For info on Wget, see ")
-     (about-url-link 'wget nil "Visit the Wget web page")
-     (widget-insert " or\n")
-     (about-url-link 'wget-ftp nil "Visit the Wget ftp page")
-     (widget-insert ".\n"))
+Hrvoje thinks he works in the server-side web business.  In reality,
+he cranks out huge quantities of HTML, Tcl, and Java for the German
+branch of ")
+     (about-url-link "http://www.arsdigita.com/"
+                    "ArsDigita, Inc." "www.arsdigita.com")
+     ;; Avoid literal I18N characters in strings.  *Displaying* a
+     ;; Latin 1 character should always be safe, though, with or
+     ;; without Mule.
+     (let ((muenchen (format "M%cnchen" (make-char 'latin-iso8859-1 252))))
+       (widget-insert (format "\
+  He joined the ranks of Gastarbeiters only
+recently; he is trying to learn German and get attuned to %s
+and Bav^H^H^HGermany.\n" muenchen)))
+
+     (widget-insert "\
+
+Before ArsDigita, he worked as a programmer at ")
+     (about-url-link "http://www.iskon.hr/" "Iskon," "www.iskon.hr")
+     (widget-insert " a fast-growing
+Croatian ISP.  Even before that, he worked part-time for academic
+institutions like ")
+     (about-url-link "http://www.srce.hr/" "SRCE" "www.srce.hr")
+     (widget-insert " and ")
+     (about-url-link "http://www.carnet.hr/" "CARNet," "www.carnet.hr")
+     (widget-insert " and tried to attend university.
+
+He takes perverse pleasure in building and maintaining free software
+in his free time.  Apart from XEmacs, his major contribution is ")
+     (about-url-link 'wget "Wget," "Wget home page")
+     (widget-insert "
+his very own creation, now jointly maintained by a happy crew.
+
+He dreams of having a home page.\n"))
     (hobley
      (widget-insert "\
 I used to do real work, but now I am a Project Manager for one of the
@@ -1010,12 +1046,13 @@ See: ")
       (widget-insert ".\n"))
     (jens
      (widget-insert "\
-I'm currently working at the University of Karlsruhe, Germany on
-getting my diploma thesis on Supersymmetry (uuh, that's physics) done.
-After that (and all the remaining exams) I'm looking forward to make a
-living out of my hobbies -- computers (and graphics). But because I
-have no deadline for the exams and XEmacs betas are released at a high
-rate this may take some time...\n"))
+I'm currently working for 1&1 Internet AG, a large Domain and Webspace
+Provider in Germany and Europe.  I do mostly Java/XML/OO/Component
+stuff today.  I'm interested EJB, Corba and other middleware or
+distributed Systems.  Besides work, I occasionally hack on The Gimp
+and other gtk/gnome related projects.  Maybe the advent of XEmacs/Gtk
+will get me back to spend some time again hacking on XEmacs in the
+near future.\n"))
     (jmiller
      (widget-insert "\
 Jeff grew up in Indiana and is a country boy at heart.  He currently
@@ -1175,9 +1212,11 @@ To see some of these have a look at ")
       "\
 Sorry, no personal information available about me yet.\n"))
     (oscar
-     (widget-insert
-      "\
-Sorry, no personal information available about me yet.\n"))
+     (widget-insert "\
+Oscar heads the Computer Science department at CPE Lyon, a french
+engineering school in France. Besides his administrative tasks he
+teaches networking basics, Internet technologies (you know, all these
+xxML and hairy script languages !)  and the Scheme language.\n"))
     (pelegri
      (widget-insert
       "\
@@ -1209,11 +1248,11 @@ MS Windows operating systems.\n"))
 Sorry, no personal information available about me yet.\n"))
     (rickc
      (widget-insert "\
-The hacker formerly known as Rick Busdiecker develops and maintains
-libraries for financial applications at Lehman Brothers during
-daylight hours.  In the evenings he maintains three children, and
-when he ought to be sleeping he co-maintains ILISP, builds XEmacs
-betas, and tinkers with various personal hacking projects.\n"))
+The hacker formerly known as Rick Busdiecker is a developer and
+technical manager at Deutsche Bank in New York during daylight hours.
+In the evenings he maintains three children, and when he ought to be
+sleeping he builds XEmacs betas, and tinkers with various personal
+hacking projects.\n"))
     (rose
      (widget-insert
       "\
@@ -1308,7 +1347,8 @@ See ")
      (widget-insert ".\n"))
     (wmperry
      (widget-insert "\
-Currently working at Aventail, Corp. on SOCKS v5 servers.\n"))
+Happily living in Indiana telecommuting for a company based in Seattle
+\(who I now prefer not to name), wishing I was in Ireland instead.\n"))
     (yoshiki
      (widget-insert
       "\
@@ -1416,8 +1456,9 @@ Sorry, no information about my XEmacs contributions yet.\n"))
      (widget-insert
       "\
 Maintainer of XEmacs from mid-1994 through 1996.  Author of the
-redisplay engine and some of the device-abstraction, TTY and glyph
-code.  Creator of the xemacs.org domain.\n"))
+redisplay engine, the original toolbar and scrollbars and some of the
+device-abstraction, TTY and glyph code.  Creator of the xemacs.org
+domain and comp.emacs.xemacs.\n"))
     (daiki
      (widget-insert
       "\
@@ -1498,9 +1539,27 @@ early client of the external Emacs widget.\n"))
     (hniksic
      (widget-insert
       "\
-Hrvoje's contribution to XEmacs consists of a multitude of hours spent
-adding new features and bugs, and fixing old ones.  He dreams of
-writing a home page.\n"))
+Hrvoje's contribution to XEmacs consists of many hours spent working
+on code and taking part in public discussions.
+
+He wrote `savehist' and `htmlize' packages, the latter having a pretty
+large gathering of users.  He worked to improve many parts of XEmacs
+Lisp code, including isearch (FSF synch and new features), cl, edmacro
+\(FSF synch and an almost complete rewrite), profile, gnuserv,
+hyper-apropos, etags, about, and custom.
+
+He has worked on improving and optimizing the C core.  He ported many
+FSF core features such as indirect buffers, tty-erase-char,
+save-current-buffer and friends, debug-ignored-errors, etc.  He also
+wrote line numbering optimizations for large buffers, initial support
+for TTY frames, abbrev improvements, Lisp printer and reader
+improvements, support for extent modification functions, and lots of
+minor bugfixes, optimizations, and Muleifications.
+
+He contributed to Lispref and Internals documentation, including a
+section on writing Mule-compliant C code.  Maintains NEWS.  He
+participated on xemacs-beta since 1996 and on the Patch Review Board
+since its inception in 1998.\n"))
     (hobley
      (widget-insert
       "\
@@ -1521,7 +1580,9 @@ Beta tester, manager of the various XEmacs mailing lists and binary
 kit manager.  Also, originator and maintainer of the gnus.org domain.\n"))
     (jens
      (widget-insert "\
-Jens did the artwork for graphics added to XEmacs 20.2 and 19.15.\n"))
+Jens did the artwork for graphics added to XEmacs 20.2 and 19.15. He's
+also the author of \"XEmacs Mine\", a game similar to Minesweeper, but
+running in XEmacs\n"))
     (jmiller
      (widget-insert "\
 Beta tester and last hacker of calendar.\n"))
@@ -1601,9 +1662,10 @@ Author of the XEmacs Drag'n'Drop API.\n"))
       "\
 Author of the portable dumper.\n"))
     (oscar
-     (widget-insert
-      "\
-Author of the LDAP support in XEmacs.\n"))
+     (widget-insert "\
+Oscar's major contributions to XEmacs are the internal LDAP support
+and the EUDC package, an interface to query various directory services
+in a uniform manner (when composing mail for instance).\n"))
     (pelegri
      (widget-insert "\
 Author of EOS, a package included in the standard XEmacs distribution
index 51c8cc4..e209305 100644 (file)
@@ -1,10 +1,8 @@
 ;;; build-report.el --- Automatically formatted build reports for XEmacs
 
-;; Copyright (C) 1997 Adrian Aichner
+;; Copyright (C) 1997-2001 Adrian Aichner
 
 ;; Author: Adrian Aichner <adrian@xemacs.org>
-;; Date: Sun., Apr. 20, 1997-2000.
-;; Version: $Revision: 1.8 $
 ;; Keywords: internal
 
 ;; This file is part of XEmacs.
@@ -164,7 +162,7 @@ may use following alias
 
 alias mk 'make \!* >>&\! \!$.err &'
 
-under csh, so that you get beta.err went you run `mk beta'."
+under csh, so that you get beta.err when you run `mk beta'."
   :type '(repeat
           :custom-show t
           :documentation-shown t
index b27db59..5de0795 100644 (file)
@@ -2302,6 +2302,10 @@ Only match the specified window systems")
                                           :sibling-args (:help-echo "\
 The X11 Window System")
                                           x)
+                                   (const :format "GTK "
+                                          :sibling-args (:help-echo "\
+The GTK Window System")
+                                          gtk)
                                    (const :format "PM "
                                           :sibling-args (:help-echo "\
 OS/2 Presentation Manager")
index b142d15..aae2d92 100644 (file)
@@ -280,9 +280,9 @@ The keywords allowed are
 Exactly one of these keywords must be given.
 
 The function brings up the Print dialog, where the user can
-select a different printer and/or change printer options. Connection
+select a different printer and/or change printer options.  Connection
 name can change as a result of selecting a different printer device.  If
-a printer is specified, then changes are stored into the settings object
+a device is specified, then changes are stored into the settings object
 currently selected into that printer.  If a settings object is supplied,
 then changes are recorded into it, and, it it is selected into a
 printer, then changes are propagated to that printer 
@@ -307,12 +307,11 @@ See also the `page-setup' and `print-setup' dialog boxes.
 For type `page-setup':
 
 This invokes the Windows standard Page Setup dialog.
-This dialog is usually invoked in response to the Page Setup command, and
-used to choose such parameters as page orientation, print margins etc.
-Note that this dialog contains the \"Printer\" button, which invokes
-the Printer Setup dialog (see `msprinter-print-setup-dialog') so that the
-user can update the printer options or even select a different printer
-as well.
+This dialog is usually invoked in response to the Page Setup command,
+and used to choose such parameters as page orientation, print margins
+etc.  Note that this dialog contains the \"Printer\" button, which
+invokes the Printer Setup dialog so that the user can update the
+printer options or even select a different printer as well.
 
 The keywords allowed are
 
@@ -328,7 +327,7 @@ Exactly one of these keywords must be given.
 The function brings up the Page Setup dialog, where the user
 can select a different printer and/or change printer options.
 Connection name can change as a result of selecting a different printer
-device.  If a printer is specified, then changes are stored into the
+device.  If a device is specified, then changes are stored into the
 settings object currently selected into that printer.  If a settings
 object is supplied, then changes are recorded into it, and, it it is
 selected into a printer, then changes are propagated to that printer
@@ -341,6 +340,9 @@ is used to initialize the dialog.
 Return value is nil if the user has canceled the dialog.  Otherwise,
 it is a new plist, containing the new list of properties.
 
+NOTE: The margin properties (returned by this function) are *NOT* stored
+into the print-settings or device object.
+
 The DEVICE is destroyed and an error is signaled in case of
 initialization problem with the new printer.
 
@@ -641,17 +643,16 @@ The keywords allowed are
                     (let ((newbuf (generate-new-buffer " *dialog box*")))
                       (set-buffer-dedicated-frame newbuf frame)
                       (set-frame-property frame 'dialog-box-buffer newbuf)
+                      (set-window-buffer (frame-root-window frame) newbuf)
                       (with-current-buffer newbuf
-                        ;; Should be frame specific, so
-                        ;; we don't do this for now.
-                        ;; (setq frame-title-format cl-title)
-                        (make-local-hook 'delete-frame-hook)
-                        (add-hook 'delete-frame-hook
-                                  #'(lambda (frame)
-                                      (kill-buffer
-                                       (frame-property
-                                        frame
-                                        'dialog-box-buffer))))))
+                        (set (make-local-variable 'frame-title-format)
+                             cl-title)
+                        (add-local-hook 'delete-frame-hook
+                                        #'(lambda (frame)
+                                            (kill-buffer
+                                             (frame-property
+                                              frame
+                                              'dialog-box-buffer))))))
                     frame)))
            (if cl-modal
                (dialog-box-modal-loop '(create-dialog-box-frame))
index 9749326..499d150 100644 (file)
@@ -141,15 +141,18 @@ which will not be used as accelerators."
       ["Save %_As..." write-file]
       ["Save So%_me Buffers" save-some-buffers]
       "-----"
+      ,@(if (eq system-type 'windows-nt)
+         '(["Page Set%_up..." generic-page-setup]))
       ["%_Print" generic-print-buffer
        :active (or (valid-specifier-tag-p 'msprinter)
                   (and (not (eq system-type 'windows-nt))
-                       (fboundp 'lpr-buffer)))
+                       (fboundp 'lpr-region)))
        :suffix (if put-buffer-names-in-file-menu (concat (buffer-name) "...")
                 "...")]
-      ["Prett%_y-Print" ps-print-buffer-with-faces
-       :active (fboundp 'ps-print-buffer-with-faces)
-       :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]
+      ,@(unless (eq system-type 'windows-nt)
+         '(["Prett%_y-Print" ps-print-buffer-with-faces
+            :active (fboundp 'ps-print-buffer-with-faces)
+            :suffix (if put-buffer-names-in-file-menu (buffer-name) "")]))
       "-----"
       ["%_Revert Buffer" revert-buffer
        :active (or buffer-file-name revert-buffer-function)
index 015c990..4bc0fd8 100644 (file)
 ;;
 ;; 2. Generating setup.ini should be more automatic.
 
-(defvar package-net-cygwin32-binary-size 6917126
+(defvar package-net-cygwin32-binary-size 7559692
   "The size in bytes of the cygwin32 binary distribution.")
 
-(defvar package-net-win32-binary-size 6563941
+(defvar package-net-win32-binary-size 7421788
   "The size in bytes of the win32 binary distribution.")
 
 ;;;###autoload
@@ -133,7 +133,7 @@ DESTDIR defaults to the value of `data-directory'."
            (insert (format "@ %s\n" "xemacs-i386-pc-win32"))
            (insert (format "version: %s\n" emacs-program-version))
            (insert "type: native\n")
-           (insert (format "install: binaries/win32/%s %d\n\n"
+           (insert (format "install: win32/%s %d\n\n"
                            (concat emacs-program-name
                                    "-i386-pc-win32-"
                                    emacs-program-version ".tar.gz")
@@ -142,7 +142,7 @@ DESTDIR defaults to the value of `data-directory'."
            (insert (format "@ %s\n" "xemacs-i686-pc-cygwin32"))
            (insert (format "version: %s\n" emacs-program-version))
            (insert "type: cygwin\n")
-           (insert (format "install: binaries/cygwin32/%s %d\n\n"
+           (insert (format "install: cygwin32/%s %d\n\n"
                            (concat emacs-program-name
                                    "-i686-pc-cygwin32-"
                                    emacs-program-version ".tar.gz") 
@@ -171,14 +171,52 @@ DESTDIR defaults to the value of `data-directory'."
          (write-region (point-min) (point-max) (concat destdir "setup.ini")))
       (kill-buffer buf))))
 
-(defun package-net-batch-convert-index-to-ini ()
+(defun package-net-generate-bin-ini (&optional destdir version)
+  "Convert the package index to ini file format in DESTDIR.
+DESTDIR defaults to the value of `data-directory'."
+
+  (setq destdir (file-name-as-directory (or destdir data-directory)))
+  (let ((buf (get-buffer-create "*setup-bin.ini*")))
+    (unwind-protect
+        (save-excursion
+          (set-buffer buf)
+          (erase-buffer buf)
+          (goto-char (point-min))
+         (insert "# This file is automatically generated.  If you edit it, your\n")
+         (insert "# edits will be discarded next time the file is generated.\n")
+         (insert "#\n\n")
+         (insert (format "setup-timestamp: %d\n" 
+                         (+ (* (car (current-time)) 65536) (car (cdr (current-time))))))
+         (insert (format "setup-version: %s\n\n" (or version "1.0")))
+         ;; Native version
+         (insert (format "@ %s\n" "xemacs-i386-pc-win32"))
+         (insert (format "version: %s\n" emacs-program-version))
+         (insert "type: native\n")
+         (insert (format "install: win32/%s %d\n\n"
+                         (concat emacs-program-name
+                                 "-i586-pc-win32-"
+                                   emacs-program-version ".tar.gz")
+                         package-net-win32-binary-size))
+         ;; Cygwin version
+         (insert (format "@ %s\n" "xemacs-i686-pc-cygwin"))
+         (insert (format "version: %s\n" emacs-program-version))
+         (insert "type: cygwin\n")
+         (insert (format "install: cygwin32/%s %d\n\n"
+                         (concat emacs-program-name
+                                 "-i686-pc-cygwin-"
+                                 emacs-program-version ".tar.gz") 
+                         package-net-cygwin32-binary-size))
+         (insert "# setup.ini file ends here\n")
+         (write-region (point-min) (point-max) (concat destdir "setup-bin.ini")))
+      (kill-buffer buf))))
+
+(defun package-net-batch-generate-bin-ini ()
   "Convert the package index to ini file format."
   (unless noninteractive
-    (error "`package-net-batch-convert-index-to-ini' is to be used only with -batch"))
+    (error "`package-net-batch-generate-bin-ini' is to be used only with -batch"))
   (let ((dir (car command-line-args-left))
-       (version (car (cdr command-line-args-left)))
-       (package-get-require-signed-base-updates nil))
-    (package-net-convert-index-to-ini dir nil version)))
+       (version (car (cdr command-line-args-left))))
+    (package-net-generate-bin-ini dir version)))
 
 ;;;###autoload
 (defun package-net-update-installed-db (&optional destdir)
index 2a9cc7b..8245398 100644 (file)
@@ -53,8 +53,7 @@
 ;; hidden from the user and there is a consistent set of options to
 ;; control how to print, which works across all implementations.
 ;;
-;; The code here is just a start and needs a huge amount of work.  Probably
-;; the interfaces below will change and the functions renamed.
+;; The code here currently only really supports Windows.
 
 (defgroup printing nil
   "Generic printing support."
@@ -68,10 +67,19 @@ printers."
   :type 'string
   :group 'printing)
 
-(defcustom printer-page-header '(date buffer-name)
-"*Controls printed page header.
+(defstruct Print-context pageno window start-time printer-name)
+
+(defvar printer-current-device nil)
 
-#### not yet implemented.
+(defun Printer-get-device ()
+  (or printer-current-device (setq printer-current-device
+                                  (make-device 'msprinter printer-name))))
+
+(defun Printer-clear-device ()
+  (setq printer-current-device nil))
+
+(defcustom printer-page-header '((face bold date) nil (face bold buffer-name))
+"*Controls printed page header.
 
 This can be:
 - nil.  Header is not printed.
@@ -79,12 +87,13 @@ This can be:
    one parameter, a print-context object, every time the headers need
    to be set up.  It can use the function `print-context-property' to
    query the properties of this object.  The return value is treated as
-     if it was literally specified: i.e. it will be reprocessed.
+   if it was literally specified: i.e. it will be reprocessed.
 - A list of up to three elements, for left, center and right portions
    of the header.  Each of these can be
    - nil, not to print the portion
    - A string, which will be printed literally.
    - A predefined symbol, on of the following:
+     printer-name     Name of printer being printed to
      short-file-name  File name only, no path
      long-file-name   File name with its path
      buffer-name      Buffer name
@@ -93,6 +102,8 @@ This can be:
      page             Current printout page number, 1-based
      user-id          User logon id
      user-name        User full name
+   - A list of three elements: (face FACE-NAME EXPR).  EXPR is any of the
+     items given here.  The item will be displayed in the given face.
    - A cons of an extent and any of the items given here.  The item will
      be displayed using the extent's face, begin-glyph and end-glyph
      properties.
@@ -105,64 +116,196 @@ This can be:
   :type 'sexp
   :group 'printing)
 
-(defcustom printer-page-footer '(nil page)
+(defcustom printer-page-footer '(nil (face bold ("Page " page)))
 "*Controls printed page footer.
 
-#### not yet implemented.
-
 Format is the same as `printer-page-header'."
   :type 'sexp
   :group 'printing)
 
+(defun generate-header-element (element context)
+    (cond ((null element) nil)
+         ((stringp element) (insert element))
+         ((memq element '(printer-name
+                          short-file-name long-file-name buffer-name
+                          date time page user-id user-name))
+          (insert (print-context-property context element)))
+         ((and (consp element) (eq 'face (car element)))
+          (let ((p (point)))
+            (generate-header-element (third element) context)
+            (let ((x (make-extent p (point))))
+              (set-extent-face x (second element)))))
+         ((and (consp element) (extentp (car element)))
+          (let ((p (point)))
+            (generate-header-element (cdr element) context)
+            (let ((x (make-extent p (point))))
+              (set-extent-face x (extent-face (car element)))
+              (set-extent-begin-glyph x (extent-begin-glyph (car element)))
+              (set-extent-end-glyph x (extent-end-glyph (car element))))))
+         ((listp element)
+          (mapcar #'(lambda (el) (generate-header-element el context))
+                  element))
+         ((functionp element)
+          (generate-header-element (funcall element context) context))
+         (t (error 'invalid-argument "Unknown header element" element))))
+
+(defun generate-header-line (spec context)
+  (let* ((left (first spec))
+        (middle (second spec))
+        (right (third spec))
+        (left-start (point))
+        (middle-start (progn (generate-header-element left context)
+                             (point)))
+        (right-start (progn (generate-header-element middle context)
+                            (point)))
+        (right-end (progn (generate-header-element right context)
+                          (point)))
+        (left-width (- middle-start left-start))
+        (middle-width (- right-start middle-start))
+        (right-width (- right-end right-start))
+        (winwidth (- (window-width (Print-context-window context)) 1))
+        (spaces1 (max (- (/ (- winwidth middle-width) 2) left-width) 0))
+        (spaces2 (max (- (- winwidth right-width)
+                         (+ left-width spaces1 middle-width))
+                      0)))
+    (goto-char right-start)
+    (insert-char ?\  spaces2)
+    (goto-char middle-start)
+    (insert-char ?\  spaces1)))
+
 (defun print-context-property (print-context prop)
   "Return property PROP of PRINT-CONTEXT.
 
 Valid properties are
 
-print-buffer     Buffer being printed.
-print-window     Window on printer device containing print buffer.
-print-frame      Frame on printer device corresponding to current page.
-print-device     Device referring to printer.
-printer-name     Name of printer being printed to.
+print-buffer     Buffer being printed
+print-window     Window on printer device containing print buffer
+print-frame      Frame on printer device corresponding to current page
+print-device     Device referring to printer
+print-start-time Time current when printing started (`current-time' format)
+print-page       Current printout page number, 1-based
+printer-name     Name of printer being printed to
 short-file-name  File name only, no path
 long-file-name   File name with its path
 buffer-name      Buffer name
-date             Date current when printing started
-time             Time current when printing started
-page             Current printout page number, 1-based
-user-id          User logon id
+date             Date current when printing started (as a string)
+time             Time current when printing started (as a string)
+page             Current printout page number, 1-based (as a string)
+user-id          User logon id (as a string)
 user-name        User full name"
-  (error "not yet implemented"))
+  (let* ((window (Print-context-window print-context))
+        (pageno (Print-context-pageno print-context))
+        (start-time (Print-context-start-time print-context))
+        (printer-name (Print-context-printer-name print-context))
+        (buffer (window-buffer window)))
+    (case prop
+      (print-buffer buffer)
+      (print-window window)
+      (print-frame (window-frame window))
+      (print-device (frame-device (window-frame window)))
+      (print-start-time start-time)
+      (print-page pageno)
+      (printer-name printer-name)
+      (short-file-name (let ((name (buffer-file-name buffer)))
+                        (if name (file-name-nondirectory name) "")))
+      (long-file-name (let ((name (buffer-file-name buffer)))
+                       (or name "")))
+      (buffer-name (buffer-name buffer))
+      (date (format-time-string "%x" start-time))
+      (time (format-time-string "%X" start-time))
+      (page (format "%d" pageno))
+      (user-id (format "%d" (user-uid)))
+      (user-name (format "%d" (user-login-name)))
+      (t (error 'invalid-argument "Unrecognized print-context property"
+               prop)))))
+
+(defun generic-page-setup ()
+  "Display the Page Setup dialog box.
+Changes made are recorded internally."
+  (interactive)
+  (let* ((d (Printer-get-device))
+        (props
+         (condition-case err
+             (make-dialog-box 'page-setup :device d
+                              :properties default-msprinter-frame-plist)
+           (error
+            (Printer-clear-device)
+            (signal (car err) (cdr err))))))
+    (while props
+      (setq default-msprinter-frame-plist
+           (plist-put default-msprinter-frame-plist (car props) (cadr props)))
+      (setq props (cddr props)))))
 
-(defun generic-print-buffer (&optional buffer)
+(defun generic-print-buffer (&optional buffer display-print-dialog)
   "Print buffer BUFFER using a printing method appropriate to the O.S. being run.
 Under Unix, `lpr' is normally used to spool out a no-frills version of the
 buffer, or the `ps-print' package is used to pretty-print the buffer to a
 PostScript printer.  Under MS Windows, the built-in printing support is used.
 
+If DISPLAY-PRINT-DIALOG is t, the print dialog will first be
+displayed, allowing the user to select various printing settings
+\(e.g. which printer to print to, the range of pages, number of copies,
+modes such landscape/portrait/2-up/4-up [2 or 4 (small!) logical pages
+per physical page], etc.).  At this point the user can cancel the printing
+operation using the dialog box, and `generic-print-buffer' will not print
+anything.  When called interactively, use a prefix arg to suppress the
+display of the print dialog box.
+
 If BUFFER is nil or omitted, the current buffer is used."
-  (interactive)
-  (generic-print-region (point-min buffer) (point-max buffer) buffer))
+  (interactive (list nil (not current-prefix-arg)))
+  (if (or (not (valid-specifier-tag-p 'msprinter))
+         (not display-print-dialog))
+      (generic-print-region (point-min buffer) (point-max buffer) buffer)
+    (let* ((d (Printer-get-device))
+          (props (condition-case err
+                     (make-dialog-box 'print :device d)
+                   (error
+                    (Printer-clear-device)
+                    (signal (car err) (cdr err))))))
+      (and props (generic-print-region (point-min buffer)
+                                      (point-max buffer) buffer
+                                      d props)))))
 
-(defun generic-print-region (start end &optional buffer)
+(defun generic-print-region (start end &optional buffer print-device props)
   "Print region using a printing method appropriate to the O.S. being run.
 The region between START and END of BUFFER (defaults to the current
 buffer) is printed.
 
 Under Unix, `lpr' is normally used to spool out a no-frills version of the
 buffer, or the `ps-print' package is used to pretty-print the buffer to a
-PostScript printer.  Under MS Windows, the built-in printing support is used."
+PostScript printer.  Under MS Windows, the built-in printing support is used.
+
+Optional PRINT-DEVICE is a device, already created, to use to do the
+printing.  This is typically used when this function was invoked from
+`generic-print-buffer' and it displayed a dialog box.  That function created
+the device, and then the dialog box stuffed it with the user's selections
+of how the buffer should be printed.
+
+PROPS, if given, is typically the plist returned from the call to
+`make-dialog-box' that displayed the Print box.  It contains properties
+relevant to us when we print.  
+
+Recognized properties are the same as those in `make-dialog-box':
+
+  name       Printer device name.  If omitted, the current system-selected
+             printer will be used.
+  from-page  First page to print, 1-based. If omitted, printing starts from
+             the beginning.
+  to-page    Last page to print, inclusive, If omitted, printing ends at
+             the end.
+  copies     Number of copies to print.  If omitted, one copy is printed."
   (cond ((valid-specifier-tag-p 'msprinter)
-        (let (d f)
+        (let (d f header-buffer footer-buffer)
           (setq buffer (decode-buffer buffer))
           (unwind-protect
               (progn
-                (setq d (make-device 'msprinter printer-name))
+                (setq d (or print-device (Printer-get-device)))
                 (setq f (make-frame
-                         (list* 'name (concat (substitute ?_ ?.
-                                                          (buffer-name buffer))
-                                              " - XEmacs")
-                                '(menubar-visible-p nil
+                         (list* 'name (concat
+                                       (substitute ?_ ?. (buffer-name buffer))
+                                       " - XEmacs")
+                                '(menubar-visible-p
+                                  nil
                                   has-modeline-p nil
                                   default-toolbar-visible-p nil
                                   default-gutter-visible-p nil
@@ -174,39 +317,110 @@ PostScript printer.  Under MS Windows, the built-in printing support is used."
                 (let* ((w (frame-root-window f))
                        (vertdpi (cdr (device-system-metric d 'device-dpi)))
                        (pixel-vertical-clip-threshold (/ vertdpi 2))
-                       (last-end 0)
-                       done)
-                  (set-window-buffer w (or buffer (current-buffer)))
-                  (set-window-start w start)
-                  (while (not done)
-                    (redisplay-frame f)
-                    (print-job-eject-page f)
-                    (let ((this-end (window-end w))
-                          (pixvis (window-last-line-visible-height w)))
-                      ;; in case we get stuck somewhere, bow out
-                      ;; rather than printing an infinite number of
-                      ;; pages.  #### this will fail with an image
-                      ;; bigger than an entire page.  but we really
-                      ;; need this check here.  we should be more
-                      ;; clever in our check, to deal with this case.
-                      (if (or (= this-end last-end)
-                              ;; #### fuckme!  window-end returns a value
-                              ;; outside of the valid range of buffer
-                              ;; positions!!!
-                              (>= this-end end))
-                          (setq done t)
-                        (setq last-end this-end)
-                        (set-window-start w this-end)
-                        (if pixvis
-                            (save-selected-window
-                              (select-window w)
-                              ;; #### scroll-down should take a window arg.
-                              (let ((window-pixel-scroll-increment pixvis))
-                                (scroll-down 1)))))))))
+                       (from-page (plist-get props 'from-page 1))
+                       (to-page (plist-get props 'to-page))
+                       (copies (plist-get props 'copies 1))
+                       (context (make-Print-context
+                                 :start-time (current-time)
+                                 ;; #### bogus! we need accessors for
+                                 ;; print-settings objects.
+                                 :printer-name
+                                 (or (plist-get props 'name)
+                                     printer-name
+                                     (mswindows-get-default-printer))))
+                       header-window
+                       footer-window)
+
+                  (when printer-page-header
+                    (let ((window-min-height 2))
+                      (setq header-window w)
+                      (setq w (split-window w 2)))
+                    (setq header-buffer (generate-new-buffer " *header*"))
+                    (set-window-buffer header-window header-buffer))
+
+                  (when printer-page-footer
+                    (let ((window-min-height 2))
+                      (setq footer-window
+                            (split-window w (- (window-height w) 2))))
+                    (setq footer-buffer (generate-new-buffer " *footer*"))
+                    (set-window-buffer footer-window footer-buffer))
+
+                  (setf (Print-context-window context) w)
+
+                  ;; loop, printing one copy of document per loop
+                  (while (> copies 0)
+                    (let ((last-end 0) ; bufpos at end of previous page
+                          reached-end  ; t if we've reached the end of the
+                                       ; text we're printing
+                          (pageno 1))
+                      (set-window-buffer w buffer)
+                      (set-window-start w start)
+
+                      ;; loop, printing one page per loop
+                      (while (and (not reached-end)
+                                  ;; stop at end of region of text or
+                                  ;; outside of ranges of pages given
+                                  (or (not to-page) (<= pageno to-page)))
+
+                        (setf (Print-context-pageno context) pageno)
+
+                        ;; only actually print the page if it's in the
+                        ;; range.
+                        (when (>= pageno from-page)
+                          (when printer-page-header
+                            (with-current-buffer header-buffer
+                              (erase-buffer)
+                              (generate-header-line printer-page-header
+                                                    context)
+                              (goto-char (point-min))
+                              (set-window-start header-window (point-min))))
+
+                          (when printer-page-footer
+                            (with-current-buffer footer-buffer
+                              (erase-buffer)
+                              (insert "\n")
+                              (generate-header-line printer-page-footer
+                                                    context)
+                              (goto-char (point-min))
+                              (set-window-start footer-window (point-min))))
+
+                          (redisplay-frame f t)
+                          (print-job-eject-page f)
+                          )
+                        ;; but use the GUARANTEE argument to `window-end'
+                        ;; so that we get the right value even if we
+                        ;; didn't do a redisplay.
+                        (let ((this-end (window-end w t))
+                              (pixvis (window-last-line-visible-height w)))
+                          ;; in case we get stuck somewhere, bow out
+                          ;; rather than printing an infinite number of
+                          ;; pages.  #### this will fail with an image
+                          ;; bigger than an entire page.  but we really
+                          ;; need this check here.  we should be more
+                          ;; clever in our check, to deal with this case.
+                          (if (or (= this-end last-end)
+                                  ;; #### fuckme!  window-end returns a value
+                                  ;; outside of the valid range of buffer
+                                  ;; positions!!!
+                                  (>= this-end end))
+                              (setq reached-end t)
+                            (setq last-end this-end)
+                            (set-window-start w this-end)
+                            (if pixvis
+                                (save-selected-window
+                                  (select-window w)
+                                  ;; #### scroll-down should take a
+                                  ;; window arg.
+                                  (let ((window-pixel-scroll-increment
+                                         pixvis))
+                                    (scroll-down 1))))))
+                        (setq pageno (1+ pageno))))
+                    (setq copies (1- copies)))))
             (and f (delete-frame f))
-            (and d (delete-device d))
+            (and header-buffer (kill-buffer header-buffer))
+            (and footer-buffer (kill-buffer footer-buffer))
             )))
        ((and (not (eq system-type 'windows-nt))
-             (fboundp 'lpr-buffer))
+             (fboundp 'lpr-region))
         (lpr-region buffer))
        (t (error "No print support available"))))
index 4ff4777..89afe34 100644 (file)
@@ -1115,8 +1115,7 @@ Repeating \\[universal-argument] without digits or minus sign
 (defcustom kill-whole-line nil
   "*If non-nil, kill the whole line if point is at the beginning.
 Otherwise, `kill-line' kills only up to the end of the line, but not
-the terminating newline.  Note: This only applies when `kill-line' is
-called interactively.
+the terminating newline.
 
 WARNING: This is a misnamed variable!  It should be called something
 like `kill-whole-line-when-at-beginning'.  If you simply want
@@ -1125,7 +1124,7 @@ like `kill-whole-line-when-at-beginning'.  If you simply want
   :type 'boolean
   :group 'killing)
 
-(defun kill-line-1 (arg entire-line interactive-p)
+(defun kill-line-1 (arg entire-line)
   (kill-region (if entire-line
                   (save-excursion
                     (beginning-of-line)
@@ -1147,8 +1146,7 @@ like `kill-whole-line-when-at-beginning'.  If you simply want
                       (signal 'end-of-buffer nil))
                   (if (or (looking-at "[ \t]*$")
                           (or entire-line
-                              (and interactive-p
-                                   (and kill-whole-line (bolp)))))
+                              (and kill-whole-line (bolp))))
                       (forward-line 1)
                     (end-of-line)))
                 (point))))
@@ -1161,7 +1159,7 @@ arguments kill lines backward.
 When calling from a program, nil means \"no arg\",
 a number counts as a prefix arg."
   (interactive "*P")
-  (kill-line-1 arg t (interactive-p)))
+  (kill-line-1 arg t))
 
 (defun kill-line (&optional arg)
   "Kill the rest of the current line, or the entire line.
@@ -1177,7 +1175,7 @@ current line, use `kill-entire-line'.
 When calling from a program, nil means \"no arg\",
 a number counts as a prefix arg."
   (interactive "*P")
-  (kill-line-1 arg nil (interactive-p)))
+  (kill-line-1 arg nil))
 
 ;; XEmacs
 (defun backward-kill-line nil
@@ -2088,9 +2086,7 @@ either a character or a symbol, uppercase or lowercase."
             (setq zmacs-region-stays t))
            ((and (getf last-command-properties 'shifted-motion-command)
                  unshifted-motion-keys-deselect-region)
-            (setq zmacs-region-stays nil))
-           (t
-            (setq zmacs-region-stays t)))))
+            (setq zmacs-region-stays nil)))))
 
 (defun forward-char-command (&optional arg buffer)
   "Move point right ARG characters (left if ARG negative) in BUFFER.
@@ -3870,14 +3866,28 @@ 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."
+ limits of the region.
+
+You should use this, *NOT* `region-active-p', in a menu item
+specification that you want grayed out when the region is not active:
+
+  [ ... ... :active (region-exists-p)]
+
+This correctly caters to the user's setting of `zmacs-regions'."
   (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."
+Otherwise, this function always returns false.
+
+You should generally *NOT* use this in a menu item specification that you
+want grayed out when the region is not active.  Instead, use this:
+
+  [ ... ... :active (region-exists-p)]
+
+Which correctly caters to the user's setting of `zmacs-regions'."
   (and zmacs-regions zmacs-region-extent))
 
 (defvar zmacs-activate-region-hook nil
index 394074c..d885baa 100644 (file)
@@ -1124,11 +1124,11 @@ XEmacs, by either running the command `xemacs-mule', or by using the X resource
       ": how to get the latest version\n")
      "\n--\n"
      (face italic "\
-Copyright (C) 1985-1999 Free Software Foundation, Inc.
+Copyright (C) 1985-2001 Free Software Foundation, Inc.
 Copyright (C) 1990-1994 Lucid, Inc.
 Copyright (C) 1993-1997 Sun Microsystems, Inc. All Rights Reserved.
 Copyright (C) 1994-1996 Board of Trustees, University of Illinois
-Copyright (C) 1995-1996 Ben Wing\n"))
+Copyright (C) 1995-2001 Ben Wing\n"))
 
     ((face (blue bold underline) "\nInformation, on-line help:\n\n")
      "XEmacs comes with plenty of documentation...\n\n"
index bbde00d..dcaf367 100644 (file)
@@ -633,6 +633,9 @@ error
         malformed-property-list
       circular-list
         circular-property-list
+    invalid-regexp
+    specifier-syntax-error
+
 
   invalid-argument
     wrong-type-argument
@@ -640,28 +643,47 @@ error
     wrong-number-of-arguments
     invalid-function
     no-catch
+    undefined-keystroke-sequence
+    specifier-argument-error
 
   invalid-state
     void-function
     cyclic-function-indirection
     void-variable
     cyclic-variable-indirection
+    protected-field
+    invalid-byte-code
 
   invalid-operation
     invalid-change
       setting-constant
+      specifier-change-error
     editing-error
       beginning-of-buffer
       end-of-buffer
       buffer-read-only
     io-error
+      file-error
+        file-already-exists
+        file-locked
+        file-supersession
       end-of-file
+      coding-system-error
+      image-conversion-error
+      tooltalk-error
     arith-error
       range-error
       domain-error
       singularity-error
       overflow-error
       underflow-error
+    dialog-box-error
+    search-failed
+    selection-conversion-error
+
+  unimplemented
+
+  internal-error
 
 The five most common errors you will probably use or base your new
 errors off of are `syntax-error', `invalid-argument', `invalid-state',
index 46c00c6..2f1020c 100644 (file)
@@ -1,3 +1,12 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-04-25  Ben Wing  <ben@xemacs.org>
+
+       * lwlib-utils.c (destroy_all_children): fix warning reported by
+       Isaac Hollander <ysh@mindspring.com>.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 9728c6a..bca952e 100644 (file)
@@ -43,7 +43,7 @@ destroy_all_children (Widget widget)
     {
       /* Unmanage all children and destroy them.  They will only be
        * really destroyed when we get out of DispatchEvent. */
-      for (i = 0; i < number; i++)
+      for (i = 0; i < (int) number; i++)
        {
          Widget child = children [i];
          if (!child->core.being_destroyed)
index a1b7180..eca2d09 100644 (file)
@@ -1,3 +1,16 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-05-07  Martin Buchholz  <martin@xemacs.org>
+
+       * make-stds.texi: Support makeinfo 3.12
+
+2001-04-26  John H. Palmieri  <palmieri@math.washington.edu>
+
+       * xemacs/frame.texi (XEmacs under X): Document default-frame-plist
+       rather than default-frame-alist.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 68faa8d..7466284 100644 (file)
@@ -811,7 +811,7 @@ installdirs: mkinstalldirs
 @end smallexample
 
 @noindent
-or, if you wish to support @env{DESTDIR},
+or, if you wish to support @code{DESTDIR},
 
 @smallexample
 # Make sure all installation directories (e.g. $(bindir))
index 35e4200..c12e49c 100644 (file)
@@ -507,15 +507,19 @@ The function @code{switch-to-buffer-other-frame} is just like
 in first.  This is normally bound to @kbd{C-x 5 b}.
 
 @vindex default-frame-alist
+@vindex default-frame-plist
 You can specify a different default frame size other than the one provided.
-Use the variable @code{default-frame-alist}, which is an alist of default
+Use the variable @code{default-frame-plist}, which is a plist of default
 values for frame creation other than the first one.  These may be set in
 your init file, like this:
 
 @example
-  (setq default-frame-alist '((width . 80) (height . 55)))
+  (setq default-frame-plist '(width 80 height 55))
 @end example
 
+This variable has replaced @code{default-frame-alist}, which is
+considered obsolete.
+
 @vindex x-frame-defaults
 For values specific to the first XEmacs frame, you must use X resources.
 The variable @code{x-frame-defaults} takes an alist of default frame
index 705c00a..80296c0 100644 (file)
@@ -1,3 +1,16 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-04-19  Andy Piper  <andy@xemacs.org>
+
+       * Makefile.in.in (setup-bin.ini): new. Just calculate ini for the
+       binaries
+       (desktop.o): add correct dependency
+
+       * reginfo.h: Update arch to i586 and 21.4
+       * reginfo.h (XEMACS_NATIVE_ARCH_NAME): ditto
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
 
        * all: port from cygwin setup.
 
-%%% $Id: ChangeLog,v 1.2.2.4 2001/04/19 07:31:14 stephent Exp $
-$Revision: 1.2.2.4 $
+%%% $Id: ChangeLog,v 1.2.2.7 2001/05/10 10:39:06 stephent Exp $
+$Revision: 1.2.2.7 $
index 6edc13f..a290201 100644 (file)
@@ -151,12 +151,12 @@ setup.exe: $(OBJS)
                -L$(MINGW_ZLIB_DIR) -lz -lmingw32
        @chmod a-x $@
 
-setup.ini: setup.exe
+setup-bin.ini: setup.exe
        V=`grep '^\$$Revision.*' $(srcdir)/ChangeLog \
        | sed -e 's/\$$Revision:* *//' \
          -e 's/ *$$.*//'` ;\
        $(XEMACS) -batch -vanilla -l ${srcdir}/../lisp/package-net.el \
-               -f package-net-batch-convert-index-to-ini . $$V
+               -f package-net-batch-generate-bin-ini . $$V
 
 install:
        @echo; echo "Installing net setup."
@@ -207,7 +207,7 @@ choose.o: choose.cc win32.h dialog.h resource.h state.h ini.h concat.h \
  msg.h log.h find.h reginfo.h
 concat.o: concat.cc
 desktop.o: desktop.cc win32.h resource.h ini.h msg.h state.h concat.h \
- mkdir.h dialog.h version.h port.h
+ mkdir.h dialog.h version.h port.h reginfo.h
 dialog.o: dialog.cc win32.h dialog.h msg.h log.h
 diskfull.o: diskfull.cc win32.h diskfull.h
 download.o: download.cc win32.h resource.h msg.h ini.h dialog.h \
index 38a5d4c..5c2c63d 100644 (file)
@@ -20,8 +20,8 @@ Copyright (C) 2000 Andy Piper. */
 #define XEMACS_PACKAGE_DIR \
   ((char*)(install_type == IDC_INSTALL_NATIVE ? "\\xemacs-packages\\" \
                                    : "/lib/xemacs/xemacs-packages/"))
-#define XEMACS_NATIVE_ARCH_NAME "i386-pc-win32"
-#define XEMACS_CYGWIN_ARCH_NAME "i686-pc-cygwin32"
+#define XEMACS_NATIVE_ARCH_NAME "i586-pc-win32"
+#define XEMACS_CYGWIN_ARCH_NAME "i686-pc-cygwin"
 
 /*
  * Installation hierarchy is:
@@ -36,7 +36,7 @@ Copyright (C) 2000 Andy Piper. */
  *                     \site-packages
  *                     \mule-packages
  *                     \XEmacs-21.4
- *                             \i386-pc-win32
+ *                             \i586-pc-win32
  *                             \etc
  *                             \info
  *                             \lisp
@@ -46,11 +46,11 @@ Copyright (C) 2000 Andy Piper. */
  *             /xemacs/site-packages
  *             /xemacs/mule-packages
  *             /xemacs-21.4
- *                             /i686-pc-cygwin32
+ *                             /i686-pc-cygwin
  *                             /etc
  *                             /info
  *                             /lisp
- * /usr/local/bin/i686-pc-cygwin32
+ * /usr/local/bin/i686-pc-cygwin
  */
 
  
index 8bd15e7..0f2069a 100644 (file)
@@ -2,3 +2,4 @@ config.inc
 xemacs.ncb
 xemacs.opt
 xemacs.plg
+obj
index 20ed43f..0ebccc8 100644 (file)
@@ -1,3 +1,49 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-05-09  Ben Wing  <ben@xemacs.org>
+
+       * xemacs.mak (OS):
+       do not warn about gtk when we're not trying to compile with it.
+
+2001-04-20  Ben Wing  <ben@xemacs.org>
+
+       * .cvsignore: Added stuff for Windows.
+
+2001-05-01  Ben Wing  <ben@xemacs.org>
+
+       * config.inc.samp (MAKEINFO): point at more standard c: not f:.
+
+2001-05-01  Adrian Aichner  <adrian@xemacs.org>
+
+       * xemacs.mak: Define EMACS_PATCH_LEVEL like configure.in does.
+       * xemacs.mak (XEMACS_VERSION_STRING): Build this more like
+       configure.in does.
+       * xemacs.mak (docfile): Use del instead of $(DEL) in shell
+       command.
+
+2001-04-27  Adrian Aichner  <adrian@xemacs.org>
+
+       * compface.mak (clean): New target.
+       * xemacs.mak: Use $(DEL) everywhere, instead of some occurences of
+       del and @$(DEL).  Add GTK supporting variables and document it as
+       currently unsupported on MSWindows.
+       * xemacs.mak (XEMACS_VERSION_STRING): Initialize according to
+       emacs_is_beta.  Use emacs_beta_version as patch level for non-beta
+       version.
+       * xemacs.mak (HAVE_GTK): New.
+       * xemacs.mak (GTK_DIR): New.
+
+2001-04-19  Andy Piper  <andy@xemacs.org>
+
+       * minitar.mak: Remove
+
+       * xemacs.mak (PROGRAM_DEFINES): Calculate release version
+       correctly.
+       (ETAGS_DEPS): Add mintar as a real target
+       (DOC): Do the right thing when non-beta
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 5ff065f..1fe4f5a 100644 (file)
@@ -38,3 +38,6 @@ all: libcompface.lib
 
 libcompface.lib: $(OBJS)
        link.exe -lib -nologo -out:$@ $(OBJS)
+
+clean: $(OBJS)
+       -rm -f $(OBJS) libcompface.lib
index 3268522..bbd4024 100644 (file)
@@ -58,7 +58,7 @@ COMPFACE_DIR=
 
 # Set this to specify the location of makeinfo. (If not set, XEmacs will
 # attempt to use its built-in texinfo support when building info files.)
-MAKEINFO=f:\src\texinfo-4.0\makeinfo\makeinfo.exe
+MAKEINFO=c:\src\texinfo-4.0\makeinfo\makeinfo.exe
 
 ############################################################################
 
index e7ddf7a..a43c94c 100644 (file)
@@ -69,10 +69,13 @@ PROGRAM_DEFINES=-DINFODOCK                                  \
        -DINFODOCK_MINOR_VERSION=$(infodock_minor_version)      \
        -DINFODOCK_BUILD_VERSION=$(infodock_build_version)
 !else
+XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)
 !if "$(emacs_beta_version)" != ""
-XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)-b$(emacs_beta_version)
+!if "$(emacs_is_beta)" != ""
+XEMACS_VERSION_STRING=$(XEMACS_VERSION_STRING)-b$(emacs_beta_version)
 !else
-XEMACS_VERSION_STRING=$(emacs_major_version).$(emacs_minor_version)
+XEMACS_VERSION_STRING=$(XEMACS_VERSION_STRING).$(emacs_beta_version)
+!endif
 !endif
 PROGRAM_DEFINES=                                               \
        -DPATH_VERSION=\"$(XEMACS_VERSION_STRING)\"             \
@@ -129,6 +132,9 @@ HAVE_XFACE=0
 !if !defined(HAVE_GIF)
 HAVE_GIF=1
 !endif
+!if !defined(HAVE_GTK)
+HAVE_GTK=0
+!endif
 !if !defined(HAVE_TOOLBARS)
 HAVE_TOOLBARS=$(HAVE_XPM)
 !endif
@@ -230,6 +236,10 @@ CONFIG_ERROR=1
 !message Specified X11 directory does not contain "$(X11_DIR)\LIB\X11.LIB"
 CONFIG_ERROR=1
 !endif
+!if $(HAVE_MS_WINDOWS) && $(HAVE_GTK) && !defined(GTK_DIR)
+!message Please specify root directory for your GTK installation: GTK_DIR=path
+CONFIG_ERROR=1
+!endif
 !if $(HAVE_MS_WINDOWS) && $(HAVE_XPM) && !defined(XPM_DIR)
 !message Please specify root directory for your XPM installation: XPM_DIR=path
 CONFIG_ERROR=1
@@ -315,13 +325,13 @@ DEPEND=0
 ! if defined(_)
 !  if [perl -p -e "s/^\\x23if defined(.+)/!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/;" \
+       -e "s/^(.+)\\.o:(.+)/$(OUTDIR:\=\\\\)\\\\$$1.obj:$$2/;" \
        < $(SRC)\depend > $(OUTDIR)\depend.tmp]
 !  endif
 ! else
 !  if [perl -p -e "s/^\x23if defined(.+)/!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/;" \
+       -e "s/^(.+)\.o:(.+)/$(OUTDIR:\=\\)\\$$1.obj:$$2/;" \
        < $(SRC)\depend > $(OUTDIR)\depend.tmp]
 !  endif
 ! endif
@@ -543,8 +553,9 @@ $(LIB_SRC)/movemail.exe: $(LIB_SRC)/movemail.c $(LIB_SRC)/pop.c $(ETAGS_DEPS)
        cd $(LIB_SRC)
        $(CCV) -I. -I$(XEMACS)/src -I$(XEMACS)/nt/inc $(LIB_SRC_DEFINES) $(CFLAGS) -Fe$@ $** wsock32.lib -link -incremental:no
        cd $(NT)
-$(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)/minitar.exe : $(NT)/minitar.c
+       $(CCV) $(CFLAGS) -I$(ZLIB_DIR) -Fe$@ $** $(ZLIB_DIR)\zlib.lib -link -incremental:no
 
 LIB_SRC_TOOLS = \
        $(LIB_SRC)/etags.exe            \
@@ -822,8 +833,12 @@ DOC_SRC11=\
 
 # This may not exist
 !if "$(emacs_beta_version)" != ""
+!if "$(emacs_is_beta)" != ""
 EMACS_BETA_VERSION=-DEMACS_BETA_VERSION=$(emacs_beta_version)
-!ENDIF
+!else
+EMACS_PATCH_LEVEL=-DEMACS_PATCH_LEVEL=$(emacs_beta_version)
+!endif
+!endif
 
 !if !$(USE_PORTABLE_DUMPER)
 TEMACS_ENTRYPOINT=-entry:_start
@@ -1057,7 +1072,7 @@ $(TEMACS): $(TEMACS_INCLUDES) $(TEMACS_OBJS) $(OUTDIR)\xemacs.res
 !if $(DEBUG_XEMACS)
        @dir /b/s $(OUTDIR)\*.sbr > bscmake.tmp
        bscmake -nologo -o$(TEMACS_BROWSE) @bscmake.tmp
-       @$(DEL) bscmake.tmp
+       $(DEL) bscmake.tmp
 !endif
 !if $(USE_PORTABLE_DUMPER)
        @if exist $(SRC)\dump-id.c del $(SRC)\dump-id.c
@@ -1377,7 +1392,7 @@ $(PROGNAME) : $(TEMACS) $(TEMACS_DIR)\NEEDTODUMP
 # 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.
        editbin -nologo -section:.rsrc,rw xemacs.exe
-       del $(TEMACS_DIR)\xemacs.dmp
+       $(DEL) $(TEMACS_DIR)\xemacs.dmp
 !endif
        cd $(NT)
        @if not exist $(TEMACS_DIR)\SATISFIED nmake -nologo -f xemacs.mak $@
@@ -1397,7 +1412,7 @@ install:  all
        @echo PlaceHolder > PlaceHolder
        @xcopy /q PROBLEMS "$(INSTALL_DIR)\"
        @xcopy /q PlaceHolder "$(INSTALL_DIR)\lock\"
-       @$(DEL) "$(INSTALL_DIR)\lock\PlaceHolder"
+       $(DEL) "$(INSTALL_DIR)\lock\PlaceHolder"
        @xcopy /q $(LIB_SRC)\*.exe "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)\"
        @copy $(LIB_SRC)\DOC "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)"
        @copy $(CONFIG_VALUES) "$(INSTALL_DIR)\$(EMACS_CONFIGURATION)"
@@ -1407,12 +1422,12 @@ install:        all
        @xcopy /e /q $(XEMACS)\lisp "$(INSTALL_DIR)\lisp\"
        @echo Making skeleton package tree in $(PACKAGE_PREFIX) ...
        @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\site-packages\"
-       @$(DEL) "$(PACKAGE_PREFIX)\site-packages\PlaceHolder"
+       $(DEL) "$(PACKAGE_PREFIX)\site-packages\PlaceHolder"
        @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\mule-packages\"
-       @$(DEL) "$(PACKAGE_PREFIX)\mule-packages\PlaceHolder"
+       $(DEL) "$(PACKAGE_PREFIX)\mule-packages\PlaceHolder"
        @xcopy /q PlaceHolder "$(PACKAGE_PREFIX)\xemacs-packages\"
-       @$(DEL) "$(PACKAGE_PREFIX)\xemacs-packages\PlaceHolder"
-       @$(DEL) PlaceHolder
+       $(DEL) "$(PACKAGE_PREFIX)\xemacs-packages\PlaceHolder"
+       $(DEL) PlaceHolder
 
 mostlyclean:
        $(DEL) $(XEMACS)\Installation
@@ -1484,6 +1499,14 @@ XEmacs $(XEMACS_VERSION_STRING) $(xemacs_codename:"=\") configured for `$(EMACS_
 !if $(HAVE_MULE)
   Compiling in MULE.
 !endif
+!if $(HAVE_GTK)
+  --------------------------------------------------------------------
+  WARNING: You specified HAVE_GTK=1, but we are compiling WITHOUT GTK support.
+  WARNING: gtk-xemacs is not currently supported on MSWindows (mingw or msvc).
+  WARNING: Yes, we know that gtk has been ported to native MSWindows, but
+  WARNING: XEmacs is not yet ready to use that port.
+  --------------------------------------------------------------------
+!endif
 !if $(HAVE_XPM)
   Compiling in support for XPM images.
 !else
@@ -1581,8 +1604,8 @@ update-elc-2:
 update-auto-and-custom:
 #       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-one-dependency $(LISP) -f batch-byte-compile-one-file $(LISP)\custom-load.el
-       @$(DEL) $(LISP)\auto-autoloads.el~
-       @$(DEL) $(LISP)\custom-load.el~
+       $(DEL) $(LISP)\auto-autoloads.el~
+       $(DEL) $(LISP)\custom-load.el~
 
 # DO NOT DELETE THIS LINE -- make depend depends on it.
 
index 86278de..54f7656 100644 (file)
@@ -13,3 +13,8 @@ SATISFIED
 update-elc.stamp
 *.so.*
 gmon.out
+NEEDTODUMP
+Xpm.dll
+temacs.bsc
+temacs.pdb
+temacs.map
index 7e22874..91c0222 100644 (file)
@@ -1,3 +1,91 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
+2001-05-08  Yoshiaki Kasahara  <kasahara@nc.kyushu-u.ac.jp>
+
+       * mule-charset.c (Fmake_charset): Add missing else.
+
+2001-04-23  Ben Wing  <ben@xemacs.org>
+
+       * event-msw.c (FAKE_MOD_QUIT):
+       * event-msw.c (mswindows_dequeue_dispatch_event):
+       * event-msw.c (mswindows_wnd_proc):
+       * event-msw.c (emacs_mswindows_quit_p):
+       Get critical quit working.
+
+2001-05-05  Ben Wing  <ben@xemacs.org>
+
+       * console-msw.h:
+       * device-msw.c:
+       * device-msw.c (mswindows_get_default_margin):
+       * frame-msw.c (mswindows_size_frame_internal):
+       * frame-msw.c (msprinter_init_frame_1):
+       * frame-msw.c (vars_of_frame_mswindows):
+       Change top/bottom margin defaults to 0.5 inches.
+
+2001-05-01  Martin Buchholz  <martin@xemacs.org>
+
+       Fix link error with gcc 3.0 on Linux.
+       * terminfo.c (UP): Remove.
+       * terminfo.c (BC): Remove.
+       * terminfo.c (PC): Remove.
+       They weren't used, and in any case, these symbols should be
+       defined in the *library*.
+
+2001-05-03  Martin Buchholz  <martin@xemacs.org>
+
+       * s/aix4.h: Fix crash with xlc -O3.
+       Improve comment explaining how -O3 works.
+
+2001-04-22   zhaoway  <zw@debian.org>
+
+       * event-stream.c (is_scrollbar_event): Noop returning 0 if
+       !HAVE_SCROLLBARS.
+
+2001-04-15  Ben Wing  <ben@xemacs.org>
+
+       * event-stream.c:
+       * event-stream.c (Fnext_event):
+       * event-stream.c (is_scrollbar_event):
+       * event-stream.c (execute_command_event):
+       Better fix for Yoshiki's `C-x @ h <scrollbar-drag> x causes a
+       crash' problem.  His fix introduces other problems.  We filter
+       out scrollbar events specifically, making them somewhat invisible
+       to command-building, and not appearing in `this-command-keys'.
+       More work is still needed (see comments in event-stream.c), but
+       this fixes all the major problems.
+
+2001-04-20  Ben Wing  <ben@xemacs.org>
+
+       * .cvsignore: Added stuff for Windows.
+
+2001-04-28  Ben Wing  <ben@xemacs.org>
+
+       * buffer.c (Ferase_buffer):
+       * editfns.c (buffer_insert1):
+       * editfns.c (Finsert_before_markers):
+       * editfns.c (Finsert_string):
+       * editfns.c (Finsert_char):
+       * editfns.c (Fdelete_region):
+       * editfns.c (Fwiden):
+       * editfns.c (Fnarrow_to_region):
+       remove bogus lines setting zmacs_region_stays to 0.
+       
+2001-04-15  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+       * process-unix.c (unix_open_network_stream): If connect() fails
+       invalidate file descriptor after closing it.
+
+2001-03-08  Mike Alexander  <mta@arbortext.com>
+
+       * event-msw.c (mswindows_need_event_in_modal_loop):
+       Don't dispatch a message if we didn't get one.
+       (mswindows_need_event):
+       Terminate the correct process when one exits instead of the first
+       one on Vprocess_list and look for process termination when in
+       mswindows_protect_modal_loop.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index d2245f7..43eaac9 100644 (file)
@@ -1624,7 +1624,6 @@ BUFFER defaults to the current buffer if omitted.
      implies that the future text is not really related to the past text.  */
   b->saved_size = Qzero;
 
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
index ad6cca5..7d63746 100644 (file)
@@ -378,6 +378,7 @@ Lisp_Object mswindows_handle_page_setup_dialog_box (struct frame *f,
                                                    Lisp_Object keys);
 Lisp_Object mswindows_handle_print_setup_dialog_box (struct frame *f,
                                                     Lisp_Object keys);
+int mswindows_get_default_margin (Lisp_Object prop);
 
 void mswindows_register_popup_frame (Lisp_Object frame);
 void mswindows_unregister_popup_frame (Lisp_Object frame);
index da2727c..17a2a25 100644 (file)
@@ -792,10 +792,22 @@ mswindows_handle_print_dialog_box (struct frame *f, Lisp_Object keys)
   return print_dialog_worker (!UNBOUNDP (device) ? device : settings, 1);
 }
 
+int
+mswindows_get_default_margin (Lisp_Object prop)
+{
+  if (EQ (prop, Qleft_margin)) return 1440;
+  if (EQ (prop, Qright_margin)) return 1440;
+  if (EQ (prop, Qtop_margin)) return 720;
+  if (EQ (prop, Qbottom_margin)) return 720;
+  abort ();
+  return 0;
+}
+
 static int
 plist_get_margin (Lisp_Object plist, Lisp_Object prop)
 {
-  Lisp_Object val = Fplist_get (plist, prop, make_int (1440));
+  Lisp_Object val =
+    Fplist_get (plist, prop, make_int (mswindows_get_default_margin (prop)));
   if (!INTP (val))
     invalid_argument ("Margin value must be an integer", val);
 
index a8e04a0..36417c0 100644 (file)
@@ -1490,7 +1490,6 @@ buffer_insert1 (struct buffer *buf, Lisp_Object arg)
       arg = wrong_type_argument (Qchar_or_string_p, arg);
       goto retry;
     }
-  zmacs_region_stays = 0;
   UNGCPRO;
 }
 
@@ -1551,7 +1550,6 @@ Any other markers at the point of insertion also end up after the text.
          goto retry;
        }
     }
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
@@ -1567,7 +1565,6 @@ BUFFER defaults to the current buffer.
   struct buffer *b = decode_buffer (buffer, 1);
   CHECK_STRING (string);
   buffer_insert_lisp_string (b, string);
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
@@ -1638,7 +1635,6 @@ text into.  If BUFFER is nil, the current buffer is assumed.
     buffer_insert_raw_string (b, string, n);
 #endif
 
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
@@ -2004,7 +2000,6 @@ If optional third arg BUFFER is nil, the current buffer is assumed.
 
   get_buffer_range_char (buf, start, end, &bp_start, &bp_end, 0);
   buffer_delete_range (buf, bp_start, bp_end, 0);
-  zmacs_region_stays = 0;
   return Qnil;
 }
 \f
@@ -2041,7 +2036,6 @@ If BUFFER is nil, the current buffer is assumed.
 {
   struct buffer *b = decode_buffer (buffer, 1);
   widen_buffer (b, 0);
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
@@ -2077,7 +2071,6 @@ or markers) bounding the text that should remain visible.
   /* Changing the buffer bounds invalidates any recorded current column.  */
   invalidate_current_column ();
   narrow_line_number_cache (buf);
-  zmacs_region_stays = 0;
   return Qnil;
 }
 
index 1350d26..49be245 100644 (file)
@@ -65,7 +65,6 @@ Boston, MA 02111-1307, USA.  */
 #include "sysdep.h"
 #include "objects-msw.h"
 
-#include "events-mod.h"
 #ifdef HAVE_MSG_SELECT
 #include "sysfile.h"
 #include "console-tty.h"
@@ -87,7 +86,8 @@ typedef unsigned int SOCKET;
 
 /* Fake key modifier which is attached to a quit char event.
    Removed upon dequeueing an event */
-#define FAKE_MOD_QUIT  0x80
+#define FAKE_MOD_QUIT (1 << 20)
+#define FAKE_MOD_QUIT_CRITICAL (1 << 21)
 
 /* Timer ID used for button2 emulation */
 #define BUTTON_2_TIMER_ID 1
@@ -1048,7 +1048,8 @@ mswindows_dequeue_dispatch_event (void)
   if (sevt->event_type == key_press_event
       && (sevt->event.key.modifiers & FAKE_MOD_QUIT))
     {
-      sevt->event.key.modifiers &= ~FAKE_MOD_QUIT;
+      sevt->event.key.modifiers &=
+       ~(FAKE_MOD_QUIT | FAKE_MOD_QUIT_CRITICAL);
       --mswindows_quit_chars_count;
     }
 
@@ -1340,6 +1341,10 @@ mswindows_drain_windows_queue (void)
  * fetching WM_TIMER messages. Instead of trying to fetch a WM_TIMER
  * which will never come when there are no pending timers, which leads
  * to deadlock, we simply signal an error.
+ *
+ * It might be possible to combine this with mswindows_drain_windows_queue
+ * which fetches events when not in a modal loop.  It's not clear
+ * whether the result would be more complex than is justified.
  */
 static void
 mswindows_need_event_in_modal_loop (int badly_p)
@@ -1363,8 +1368,8 @@ mswindows_need_event_in_modal_loop (int badly_p)
        error ("Deadlock due to an attempt to call next-event in a wrong context");
 
       /* Fetch and dispatch any pending timers */
-      GetMessage (&msg, NULL, WM_TIMER, WM_TIMER);
-      DispatchMessage (&msg);
+      if (GetMessage (&msg, NULL, WM_TIMER, WM_TIMER) > 0)
+       DispatchMessage (&msg);
     }
 }
 
@@ -1380,12 +1385,6 @@ mswindows_need_event (int badly_p)
 {
   int active;
 
-  if (mswindows_in_modal_loop)
-    {
-      mswindows_need_event_in_modal_loop (badly_p);
-      return;
-    }
-
   while (NILP (mswindows_u_dispatch_event_queue)
         && NILP (mswindows_s_dispatch_event_queue))
     {
@@ -1402,6 +1401,10 @@ mswindows_need_event (int badly_p)
          EMACS_SET_SECS_USECS (sometime, 0, 0);
          EMACS_TIME_TO_SELECT_TIME (sometime, select_time_to_block);
          pointer_to_this = &select_time_to_block;
+         if (mswindows_in_modal_loop)
+           /* In modal loop with badly_p false, don't care about
+              Windows events. */
+           FD_CLR (windows_fd, &temp_mask);
        }
 
       active = select (MAXDESC, &temp_mask, 0, 0, pointer_to_this);
@@ -1415,7 +1418,10 @@ mswindows_need_event (int badly_p)
        {
          if (FD_ISSET (windows_fd, &temp_mask))
            {
-             mswindows_drain_windows_queue ();
+             if (mswindows_in_modal_loop)
+               mswindows_need_event_in_modal_loop (badly_p);
+             else
+               mswindows_drain_windows_queue ();
            }
          else
            {
@@ -1480,10 +1486,24 @@ mswindows_need_event (int badly_p)
        }
 #else
       /* Now try getting a message or process event */
+      DWORD what_events;
+      if (mswindows_in_modal_loop)
+       /* In a modal loop, only look for timer events, and only if
+          we really need one. */
+       {
+         if (badly_p)
+           what_events = QS_TIMER;
+         else
+           what_events = 0;
+       }
+      else
+       /* Look for any event */
+       what_events = QS_ALLINPUT;
+
       active = MsgWaitForMultipleObjects (mswindows_waitable_count,
                                          mswindows_waitable_handles,
                                          FALSE, badly_p ? INFINITE : 0,
-                                         QS_ALLINPUT);
+                                         what_events);
 
       /* This will assert if handle being waited for becomes abandoned.
         Not the case currently tho */
@@ -1499,7 +1519,10 @@ mswindows_need_event (int badly_p)
       else if (active == WAIT_OBJECT_0 + mswindows_waitable_count)
        {
          /* Got your message, thanks */
-         mswindows_drain_windows_queue ();
+         if (mswindows_in_modal_loop)
+           mswindows_need_event_in_modal_loop (badly_p);
+         else
+           mswindows_drain_windows_queue ();
        }
       else
        {
@@ -1516,7 +1539,12 @@ mswindows_need_event (int badly_p)
            {
              /* None. This means that the process handle itself has signaled.
                 Remove the handle from the wait vector, and make status_notify
-                note the exited process */
+                note the exited process.  First find the process object if
+                possible. */
+             LIST_LOOP_3 (vaffanculo, Vprocess_list, vproctail)
+               if (get_nt_process_handle (XPROCESS (vaffanculo)) ==
+                   mswindows_waitable_handles [ix])
+                 break;
              mswindows_waitable_handles [ix] =
                mswindows_waitable_handles [--mswindows_waitable_count];
              kick_status_notify ();
@@ -1525,10 +1553,12 @@ mswindows_need_event (int badly_p)
                 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.
+                #### Replaced with a slightly less horrible kluge that
+                     at least finds the right process instead of axing the
+                     first one on the list.
               */
-             if (!NILP (Vprocess_list))
+             if (!NILP (vproctail))
                {
-                 Lisp_Object vaffanculo = XCAR (Vprocess_list);
                  mswindows_enqueue_process_event (XPROCESS (vaffanculo));
                }
              else /* trash me soon. */
@@ -2118,7 +2148,7 @@ mswindows_wnd_proc (HWND hwnd, UINT message_, WPARAM wParam, LPARAM lParam)
        BYTE keymap_orig[256];
        BYTE keymap_sticky[256];
        int has_AltGr = mswindows_current_layout_has_AltGr ();
-       int mods = 0;
+       int mods = 0, mods_with_shift = 0;
        int extendedp = lParam & 0x1000000;
        Lisp_Object keysym;
        int sticky_changed;
@@ -2153,6 +2183,7 @@ mswindows_wnd_proc (HWND hwnd, UINT message_, WPARAM wParam, LPARAM lParam)
          memcpy (keymap_sticky, keymap_orig, 256);
 
        mods = mswindows_modifier_state (keymap_sticky, (DWORD) -1, has_AltGr);
+       mods_with_shift = mods;
 
        /* Handle non-printables */
        if (!NILP (keysym = mswindows_key_to_emacs_keysym (wParam, mods,
@@ -2221,22 +2252,27 @@ mswindows_wnd_proc (HWND hwnd, UINT message_, WPARAM wParam, LPARAM lParam)
                   || PeekMessage (&tranmsg, hwnd, WM_SYSCHAR, WM_SYSCHAR,
                                   PM_REMOVE))
              {
-               int mods1 = mods;
+               int mods_with_quit = mods;
                WPARAM ch = tranmsg.wParam;
 
                /* If a quit char with no modifiers other than control and
                   shift, then mark it with a fake modifier, which is removed
                   upon dequeueing the event */
-               /* #### This might also not withstand localization, if
-                  quit character is not a latin-1 symbol */
+               /* !!#### Fix this in my mule ws -- replace current_buffer
+                  with 0 */
                if (((quit_ch < ' ' && (mods & XEMACS_MOD_CONTROL)
-                     && quit_ch + 'a' - 1 == ch)
+                     && DOWNCASE (current_buffer, quit_ch + 'a' - 1) ==
+                     DOWNCASE (current_buffer, ch))
                     || (quit_ch >= ' ' && !(mods & XEMACS_MOD_CONTROL)
-                        && quit_ch == ch))
-                   && ((mods  & ~(XEMACS_MOD_CONTROL | XEMACS_MOD_SHIFT))
+                        && DOWNCASE (current_buffer, quit_ch) ==
+                        DOWNCASE (current_buffer, ch)))
+                   && ((mods_with_shift &
+                        ~(XEMACS_MOD_CONTROL | XEMACS_MOD_SHIFT))
                        == 0))
                  {
-                   mods1 |= FAKE_MOD_QUIT;
+                   mods_with_quit |= FAKE_MOD_QUIT;
+                   if (mods_with_shift & XEMACS_MOD_SHIFT)
+                     mods_with_quit |= FAKE_MOD_QUIT_CRITICAL;
                    ++mswindows_quit_chars_count;
                  }
                else if (potential_accelerator && !got_accelerator &&
@@ -2245,7 +2281,8 @@ mswindows_wnd_proc (HWND hwnd, UINT message_, WPARAM wParam, LPARAM lParam)
                    got_accelerator = 1;
                    break;
                  }
-               mswindows_enqueue_keypress_event (hwnd, make_char (ch), mods1);
+               mswindows_enqueue_keypress_event (hwnd, make_char (ch),
+                                                 mods_with_quit);
              } /* while */
 
            /* This generates WM_SYSCHAR messages, which are interpreted
@@ -3435,8 +3472,8 @@ emacs_mswindows_quit_p (void)
   if (mswindows_in_modal_loop)
     return;
 
-  /* Drain windows queue. This sets up number of quit characters in
-     the queue */
+  /* Drain windows queue.  This sets up number of quit characters in
+     the queue. */
   mswindows_drain_windows_queue ();
 
   if (mswindows_quit_chars_count > 0)
@@ -3454,10 +3491,11 @@ emacs_mswindows_quit_p (void)
          emacs_event = mswindows_cancel_dispatch_event (&match_against);
          assert (!NILP (emacs_event));
 
-         if (XEVENT(emacs_event)->event.key.modifiers & XEMACS_MOD_SHIFT)
+         if (XEVENT (emacs_event)->event.key.modifiers &
+             FAKE_MOD_QUIT_CRITICAL)
            critical_p = 1;
 
-         Fdeallocate_event(emacs_event);
+         Fdeallocate_event (emacs_event);
        }
 
       Vquit_flag = critical_p ? Qcritical : Qt;
@@ -3730,7 +3768,7 @@ lstream_type_create_mswindows_selectable (void)
 {
   init_slurp_stream ();
   init_shove_stream ();
-#if defined (HAVE_SOCKETS) && !defined(HAVE_MSG_SELECT)
+#if defined (HAVE_SOCKETS) && !defined (HAVE_MSG_SELECT)
   init_winsock_stream ();
 #endif
 }
index 8bd273f..00fd549 100644 (file)
@@ -2010,6 +2010,7 @@ static void push_this_command_keys (Lisp_Object event);
 static void push_recent_keys (Lisp_Object event);
 static void dribble_out_event (Lisp_Object event);
 static void execute_internal_event (Lisp_Object event);
+static int is_scrollbar_event (Lisp_Object event);
 
 DEFUN ("next-event", Fnext_event, 0, 2, 0, /*
 Return the next available event.
@@ -2270,7 +2271,9 @@ The returned event will be one of the following types:
      */
   if (store_this_key)
     {
-      push_this_command_keys (event);
+      if (!is_scrollbar_event (event)) /* #### not quite right, see
+                                         comment in execute_command_event */
+       push_this_command_keys (event);
       if (!inhibit_input_event_recording)
        push_recent_keys (event);
       dribble_out_event (event);
@@ -3757,6 +3760,31 @@ lookup_command_event (struct command_builder *command_builder,
   }
 }
 
+static int
+is_scrollbar_event (Lisp_Object event)
+{
+  Lisp_Object fun;
+
+  if (XEVENT (event)->event_type != misc_user_event)
+    return 0;
+  fun = XEVENT (event)->event.misc.function;
+
+  return (EQ (fun, Qscrollbar_line_up) ||
+         EQ (fun, Qscrollbar_line_down) ||
+         EQ (fun, Qscrollbar_page_up) ||
+         EQ (fun, Qscrollbar_page_down) ||
+         EQ (fun, Qscrollbar_to_top) ||
+         EQ (fun, Qscrollbar_to_bottom) ||
+         EQ (fun, Qscrollbar_vertical_drag) ||
+         EQ (fun, Qscrollbar_char_left) ||
+         EQ (fun, Qscrollbar_char_right) ||
+         EQ (fun, Qscrollbar_page_left) ||
+         EQ (fun, Qscrollbar_page_right) ||
+         EQ (fun, Qscrollbar_to_left) ||
+         EQ (fun, Qscrollbar_to_right) ||
+         EQ (fun, Qscrollbar_horizontal_drag));
+}
+
 static void
 execute_command_event (struct command_builder *command_builder,
                        Lisp_Object event)
@@ -3767,8 +3795,57 @@ execute_command_event (struct command_builder *command_builder,
 
   GCPRO1 (event); /* event may be freshly created */
 
-  /* To fix C-x @ h <scrollbar-drag> x crash. */
-  if (XEVENT (event)->event_type != misc_user_event)
+  /* #### This call to is_scrollbar_event() isn't quite right, but
+     fixing properly it requires more work than can go into 21.4.
+     (We really need to split out menu, scrollbar, dialog, and other
+     types of events from misc-user, and put the remaining ones in a
+     new `user-eval' type that behaves like an eval event but is a
+     user event and thus has all of its semantics -- e.g. being
+     delayed during `accept-process-output' and similar wait states.)
+
+     The real issue here is that "user events" and "command events"
+     are not the same thing, but are very much confused in
+     event-stream.c.  User events are, essentially, any event that
+     should be delayed by accept-process-output, should terminate a
+     sit-for, etc. -- basically, any event that needs to be processed
+     synchronously with key and mouse events.  Command events are
+     those that participate in command building; scrollbar events
+     clearly don't belong because they should be transparent in a
+     sequence like C-x @ h <scrollbar-drag> x, which used to cause a
+     crash before checks similar to the is_scrollbar_event() call were
+     added.  Do other events belong with scrollbar events?  I'm not
+     sure; we need to categorize all misc-user events and see what
+     their semantics are.
+
+     (You might ask, why do scrollbar events need to be user events?
+     That's a good question.  The answer seems to be that they can
+     change point, and having this happen asynchronously would be a
+     very bad idea.  According to the "proper" functioning of
+     scrollbars, this should not happen, but XEmacs does not allow
+     point to go outside of the window.)
+
+     Scrollbar events and similar non-command events should obviously
+     not be recorded in this-command-keys, so we need to check for
+     this in next-event.
+
+     #### We call reset_current_events() twice in this function --
+     #### here, and later as a result of reset_this_command_keys().
+     #### This is almost certainly wrong; need to figure out what's
+     #### correct.
+
+     #### We need to figure out what's really correct w.r.t. scrollbar
+     #### events.  With these new fixes in, it actually works to do
+     #### C-x <scrollbar-drag> 5 2, but the key echo gets messed up
+     #### (starts over at 5).  We really need to be special-casing
+     #### scrollbar events at a lower level, and not really passing
+     #### them through the command builder at all.  (e.g. do scrollbar
+     #### events belong in macros???  doubtful; probably only the
+     #### point movement, if any, belongs, special-cased as a
+     #### pseudo-issued M-x goto-char command).  #### Need more work
+     #### here.  Do this when separating out scrollbar events.
+  */
+
+  if (!is_scrollbar_event (event))
     reset_current_events (command_builder);
 
   switch (XEVENT (event)->event_type)
@@ -3863,7 +3940,8 @@ execute_command_event (struct command_builder *command_builder,
 
        /* Emacs 18 doesn't unconditionally clear the echoed keystrokes,
           so we don't either */
-       if (XEVENT (event)->event_type != misc_user_event)
+
+       if (!is_scrollbar_event (event))
          reset_this_command_keys (make_console (con), 0);
       }
   }
index 60e60e4..d66f6b7 100644 (file)
@@ -642,13 +642,15 @@ mswindows_set_frame_properties (struct frame *f, Lisp_Object plist)
     }
 }
 
-void mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest)
+void
+mswindows_size_frame_internal (struct frame* f, XEMACS_RECT_WH* dest)
 {
   RECT rect, ws_rect;
   int pixel_width, pixel_height;
   int size_p = (dest->width >=0 || dest->height >=0);
   int move_p = (dest->top >=0 || dest->left >=0);
-  char_to_real_pixel_size (f, dest->width, dest->height, &pixel_width, &pixel_height);
+  char_to_real_pixel_size (f, dest->width, dest->height, &pixel_width,
+                          &pixel_height);
 
   if (dest->width < 0)
     pixel_width = FRAME_PIXWIDTH (f);
@@ -806,15 +808,18 @@ msprinter_init_frame_1 (struct frame *f, Lisp_Object props)
 
   f->frame_data = xnew_and_zero (struct msprinter_frame);
 
-  /* Default margin size is 1" = 1440 twips */
-  FRAME_MSPRINTER_TOP_MARGIN(f) = 1440;
-  FRAME_MSPRINTER_BOTTOM_MARGIN(f) = 1440;
-  FRAME_MSPRINTER_LEFT_MARGIN(f) = 1440;
-  FRAME_MSPRINTER_RIGHT_MARGIN(f) = 1440;
+  FRAME_MSPRINTER_TOP_MARGIN (f) =
+    mswindows_get_default_margin (Qtop_margin);
+  FRAME_MSPRINTER_BOTTOM_MARGIN (f) =
+    mswindows_get_default_margin (Qbottom_margin);
+  FRAME_MSPRINTER_LEFT_MARGIN (f) =
+    mswindows_get_default_margin (Qleft_margin);
+  FRAME_MSPRINTER_RIGHT_MARGIN (f) =
+    mswindows_get_default_margin (Qright_margin);
 
   /* Negative for "uinspecified" */
-  FRAME_MSPRINTER_CHARWIDTH(f) = -1;
-  FRAME_MSPRINTER_CHARHEIGHT(f) = -1;
+  FRAME_MSPRINTER_CHARWIDTH (f) = -1;
+  FRAME_MSPRINTER_CHARHEIGHT (f) = -1;
 }
 
 static void
@@ -1182,8 +1187,10 @@ set at any time, except as otherwise noted):
   top-margin                   typographical unit of measurement,
   right-margin                  equal to 1/1440 of an inch, or 1/20 of a
   bottom-margin                        point, and roughly equal to 7/400 of a
-                               millimeter. If not specified, each margin
-                               defaults to one inch (25.4 mm).
+                               millimeter.  If not specified, the left
+                               and right margins default to 1 inch
+                               (25.4 mm) and the top and bottom margins
+                               to 0.5 inch (12.7 mm).
 
      MARGINS NOTE. right-margin and bottom-margin are overridden by
        the height and width properties. If you want to specify size
@@ -1194,8 +1201,8 @@ set at any time, except as otherwise noted):
        want to specify right/bottom margins, set height/width in this
        plist to nil, as in this example:
 
-         (setq default-frame-plist '(height 55 'width 80)
-               default-msprinter-frame-plist '(height nil 'width nil))
+         (setq default-frame-plist '(height 55 width 80)
+               default-msprinter-frame-plist '(height nil width nil))
 
 See also `default-frame-plist', which specifies properties which apply
 to all frames, not just mswindows frames.
index a0ccd35..8c5b697 100644 (file)
@@ -693,7 +693,7 @@ character set.  Recognized properties are:
            short_name = value;
          }
 
-       if (EQ (keyword, Qlong_name))
+       else if (EQ (keyword, Qlong_name))
          {
            CHECK_STRING (value);
            long_name = value;
index 462fb55..ec93385 100644 (file)
@@ -1764,6 +1764,7 @@ unix_open_network_stream (Lisp_Object name, Lisp_Object host, Lisp_Object servic
 
            failed_connect = 1;
            close (s);
+           s = -1;
 
            speed_up_interrupts ();
 
index fe19cda..56bd1a1 100644 (file)
@@ -17,14 +17,19 @@ struct sockaddr_dl;
 
 #ifdef __xlC__                 /* "eXceLlent C compiler" ?! */
 #if __xlC__ >= 1200
-/* IBM's C compiler miscompiles bytecount_to_charcount at high levels
-   of optimization.  From IBM's docs:
+/* IBM's C compiler option `-O3' is too aggressive.
+   We recommend instead the combination `-O3 -qstrict', which seems safe.
 
-   -qstrict turns off the following optimizations:
+   cc -O3 miscompiles at least two functions.  From IBM's docs:
 
-   Performing code motion and scheduling on computations such as loads
-   and floating-point computations that may trigger an exception. */
+   IBM> -qstrict turns off the following optimizations:
+
+   IBM> Performing code motion and scheduling on computations such as loads
+   IBM> and floating-point computations that may trigger an exception.
+
+   Nevertheless, we try to work with these compiler options. */
 #pragma option_override (bytecount_to_charcount, "opt(strict,yes)")
+#pragma option_override (Fexpand_file_name, "opt(strict,yes)")
 #endif /* recent IBM C compiler */
 #endif /* IBM's C compiler */
 
index 639f675..ff3d9d3 100644 (file)
@@ -24,12 +24,6 @@ Boston, MA 02111-1307, USA.  */
 
 #include <string.h>
 
-/* Define these variables that serve as global parameters to termcap,
-   so that we do not need to conditionalize the places in Emacs
-   that set them.  */
-
-char *UP, *BC, PC;
-
 /* Every little bit of this God-damned file has caused all manner
    of headaches due to inconsistent and incorrect header files
    on one system or other, and we don't currently need anything here,
index b61d6c8..98833c2 100644 (file)
@@ -1,3 +1,7 @@
+2001-05-10  Stephen J. Turnbull  <stephen@xemacs.org>
+
+       * XEmacs 21.4.2 "Developer-Friendly Unix APIs" is released.
+
 2001-04-19  Stephen J. Turnbull  <stephen@xemacs.org>
 
        * XEmacs 21.4.1 "Copyleft" is released.
index 0ab006d..e88c394 100644 (file)
@@ -2,8 +2,8 @@
 emacs_is_beta=
 emacs_major_version=21
 emacs_minor_version=4
-emacs_beta_version=1
-xemacs_codename="Copyleft"
+emacs_beta_version=2
+xemacs_codename="Developer-Friendly Unix APIs"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=8