XEmacs 21.2.12
authortomo <tomo>
Mon, 17 May 1999 09:42:30 +0000 (09:42 +0000)
committertomo <tomo>
Mon, 17 May 1999 09:42:30 +0000 (09:42 +0000)
61 files changed:
CHANGES-beta
ChangeLog
Makefile.in.in
PROBLEMS
configure
configure.in
etc/package-index.LATEST.pgp
lib-src/ChangeLog
lisp/ChangeLog
lisp/files.el
lisp/font-lock.el
lisp/info.el
lisp/menubar-items.el
lisp/package-ui.el
lisp/x-faces.el
lwlib/ChangeLog [new file with mode: 0644]
lwlib/xlwmenu.c
man/ChangeLog
man/lispref/extents.texi
man/lispref/faces.texi
man/lispref/glyphs.texi
man/lispref/markers.texi
man/lispref/menus.texi
man/lispref/objects.texi
man/lispref/positions.texi
man/lispref/sequences.texi
man/lispref/specifiers.texi
man/lispref/strings.texi
man/lispref/toolbar.texi
man/new-users-guide/modes.texi
man/new-users-guide/region.texi
man/termcap.texi
man/texinfo.texi
man/xemacs-faq.texi
man/xemacs/custom.texi
man/xemacs/keystrokes.texi
man/xemacs/mark.texi
man/xemacs/menus.texi
man/xemacs/startup.texi
nt/ChangeLog
nt/README
nt/compface.mak [new file with mode: 0644]
nt/xemacs.mak
src/ChangeLog
src/console.h
src/database.c
src/depend
src/device-x.c
src/elhash.c
src/emacs.c
src/event-stream.c
src/frame-msw.c
src/hash.c
src/hash.h
src/malloc.c
src/mem-limits.h
src/sgiplay.c
src/unexalpha.c
src/unexelfsgi.c
tests/ChangeLog
version.sh

index 4e0c83b..c50d243 100644 (file)
@@ -1,4 +1,16 @@
                                                        -*- indented-text -*-
+to 21.2.12 "Clio"
+-- event-stream unification for MS Windows from Andy Piper
+-- Determine best visual to use to avoid flashing from IENAGA Kazuyuki
+-- Fix for new Berkeley DB library from Paul Keusemann/Gregory Neal Shapiro
+-- Various package-ui fixes from Jan Vroonhof
+-- Fix for doubled font-locking during buffer reversion
+-- KFM browsing support from Neal Becker
+-- info fix from Didier Verna
+-- Build bug fixes from Martin Buchholz
+-- Various Documentation updates
+-- X-Face support for MS Windows native build from Gleb Arshinov
+
 to 21.2 beta11 "Calliope"
 -- Dialog box fix from Jan Vroonhof
 -- unified mswindows and tty event loops from Andy Piper
index d840e5b..6f853a9 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,23 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
+1999-03-04  Martin Buchholz  <martin@xemacs.org>
+
+       * Makefile.in.in (top_distclean): Remove confdefs.h as well.
+
+1999-03-03  Martin Buchholz  <martin@xemacs.org>
+
+       * configure.in:
+       `uname -v` -> "`uname -v`":
+       backquoted expressions need additional double
+       quotes to be a single token.
+       Use separate if's to avoid extra process invocations.
+
+1999-01-05  Gunnar Evermann  <ge204@eng.cam.ac.uk>
+
+       * PROBLEMS: Document crashes on SPARC with gcc 2.8.1. 
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
 
        * config.guess: Synched with latest FSF version.
 
-1998-07-12  Bj√∂rn Torkelsson  <torkel@hpc2n.umu.se>
+1998-07-12  Bjrn Torkelsson  <torkel@hpc2n.umu.se>
 
        * Makefile.in: added LDFLAGS.
 
index 4daf94e..946eb07 100644 (file)
@@ -545,7 +545,7 @@ clean: FRC.clean
 ##      `make distclean' should leave only the files that were in the
 ##      distribution.
 top_distclean=\
-       $(RM) config.status config.log config-tmp-* build-install Installation ; \
+       $(RM) config.status config.log confdefs.h config-tmp-* build-install Installation ; \
        $(RM) core .sbinit lock/* GNUmakefile Makefile Makefile.in ; \
        $(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \
        $(RM) packages mule-packages site-lisp
index 127ee47..3f57bc4 100644 (file)
--- a/PROBLEMS
+++ b/PROBLEMS
@@ -30,6 +30,12 @@ A general advice:
 ===============================
 
 ** General
+*** Don't use -O2 with gcc 2.8.1 and egcs 1.0 under SPARC architectures
+without also using `-fno-schedule-insns'.
+
+gcc will generate incorrect code otherwise, typically resulting in
+crashes in the function skip-syntax-backward.
+
 *** egcs-1.1
 
 There have been reports of egcs-1.1 not compiling XEmacs correctly on
index 6818c5f..8092ac2 100755 (executable)
--- a/configure
+++ b/configure
@@ -13239,12 +13239,12 @@ esac
 case "$with_dialogs" in
   motif    )
     echo "  Using Motif dialog boxes."
-    if test "$unexec" = "unexaix.o" -a `uname -v` = 4 -a `uname -r` -ge 3; then
+    if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
       echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
       echo "             We recommend using the Athena dialog boxes instead."
       echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
       echo "             Read the PROBLEMS file for more information."
-    fi 
+    fi; fi
     ;;
   athena   ) echo "  Using Athena dialog boxes."    ;;
   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
index f44e169..e7c7eb4 100644 (file)
@@ -4103,12 +4103,12 @@ esac
 case "$with_dialogs" in
   motif    )
     echo "  Using Motif dialog boxes."
-    if test "$unexec" = "unexaix.o" -a `uname -v` = 4 -a `uname -r` -ge 3; then
+    if test "$unexec" = "unexaix.o"; then if test "`uname -v`" = 4 -a "`uname -r`" -ge 3; then
       echo "  *WARNING*  The Motif dialog boxes cause problems on AIX 4.3 and higher."
       echo "             We recommend using the Athena dialog boxes instead."
       echo "             Install libXaw and re-run configure with --with-dialogs='athena'."
       echo "             Read the PROBLEMS file for more information."
-    fi 
+    fi; fi
     ;;
   athena   ) echo "  Using Athena dialog boxes."    ;;
   athena3d ) echo "  Using Athena-3d dialog boxes." ;;
index 0ae705e..a9ea8e9 100644 (file)
@@ -3,19 +3,19 @@
 (package-get-update-base-entry (quote
 (ediff
   (standards-version 1.0
-   version "1.17"
+   version "1.18"
    author-version "2.72"
-   date "1999-02-16"
-   build-date "1999-03-01"
+   date "1999-03-03"
+   build-date "1999-03-05"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
    distribution stable
    priority medium
    category "prog"
    dump nil
    description "Interface over GNU patch."
-   filename "ediff-1.17-pkg.tar.gz"
-   md5sum "b69c621d1943a9b668374f0babd243f3"
-   size 281481
+   filename "ediff-1.18-pkg.tar.gz"
+   md5sum "ece3aca382d80a7c03d71766987b9f2f"
+   size 281635
    provides (ediff)
    requires (pcl-cvs elib dired xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (locale
   (standards-version 1.0
-   version "1.11"
-   author-version "21.0b62"
-   date "1998-07-24"
-   build-date "1999-02-02"
+   version "1.12"
+   author-version "21.0b64"
+   date "1999-02-02"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution mule
    priority high
    category "mule"
    dump nil
    description "Localized menubars and localized splash screens."
-   filename "locale-1.11-pkg.tar.gz"
-   md5sum "245f5110c2adb4411e3f4e2db014c4bc"
-   size 32690
+   filename "locale-1.12-pkg.tar.gz"
+   md5sum "fbdb329b8e57e5eaf8c8fb9488357312"
+   size 33900
    provides ()
    requires (mule-base)
    type regular
 (package-get-update-base-entry (quote
 (psgml
   (standards-version 1.0
-   version "1.11"
+   version "1.12"
    author-version "1.01"
-   date "1998-07-06"
-   build-date "1999-02-02"
+   date "1999-03-05"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "oa"
    dump nil
    description "Validated HTML/SGML editing."
-   filename "psgml-1.11-pkg.tar.gz"
-   md5sum "e6d5a593138aa8861a5a178097c05594"
-   size 425005
+   filename "psgml-1.12-pkg.tar.gz"
+   md5sum "7303b3a604659b64f24b0847b3a686d5"
+   size 425458
    provides (psgml sgml)
    requires (edit-utils)
    type regular
 (package-get-update-base-entry (quote
 (viper
   (standards-version 1.0
-   version "1.13"
+   version "1.14"
    author-version "3.061"
-   date "1999-02-17"
-   build-date "1999-03-01"
+   date "1999-03-03"
+   build-date "1999-03-05"
    maintainer "Michael Kifer <kifer@cs.sunysb.edu>"
    distribution stable
    priority low
    category "wp"
    dump nil
    description "VI emulation support."
-   filename "viper-1.13-pkg.tar.gz"
-   md5sum "b369c53c499c3ab2e1478031ddaf6071"
-   size 317868
+   filename "viper-1.14-pkg.tar.gz"
+   md5sum "0e118822906e195dc352f28c8efc01e0"
+   size 317899
    provides (viper)
    requires (xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (reftex
   (standards-version 1.0
-   version "1.11"
-   author-version "3.42"
-   date "1998-08-11"
-   build-date "1999-02-02"
+   version "1.12"
+   author-version "3.43"
+   date "1999-03-01"
+   build-date "1999-03-02"
    maintainer "Carsten Dominik <dominik@strw.LeidenUniv.nl>"
    distribution stable
    priority medium
    category "wp"
    dump nil
    description "Emacs support for LaTeX cross-references, citations.."
-   filename "reftex-1.11-pkg.tar.gz"
-   md5sum "efe43ac8ef52b9f8cf949783e30bb4a9"
-   size 209331
+   filename "reftex-1.12-pkg.tar.gz"
+   md5sum "73efb58d055143d9322024d97fcca479"
+   size 215874
    provides (reftex)
    requires (fsf-compat xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (c-support
   (standards-version 1.0
-   version "1.11"
-   author-version "21.0b63"
-   date "1999-02-06"
-   build-date "1999-03-01"
+   version "1.12"
+   author-version "21.0b64"
+   date "1999-03-02"
+   build-date "1999-03-02"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution contrib
    priority low
    category "prog"
    dump nil
    description "Basic single-file add-ons for editing C code."
-   filename "c-support-1.11-pkg.tar.gz"
-   md5sum "d93566b09c3d9e79ac12a644250e7ca0"
-   size 69876
+   filename "c-support-1.12-pkg.tar.gz"
+   md5sum "a793cd83bb595d34771332a46d2abfd4"
+   size 69913
    provides (c-comment-edit cmacexp ctypes hideif hideshow)
    requires (cc-mode xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (misc-games
   (standards-version 1.0
-   version "1.09"
-   author-version "21.0b62"
-   date "1998-03-22"
-   build-date "1999-02-02"
+   version "1.10"
+   author-version "21.0b64"
+   date "1999-03-04"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority low
    category "games"
    dump nil
    description "Other amusements and diversions."
-   filename "misc-games-1.09-pkg.tar.gz"
-   md5sum "a4e7e18e7cf3ce771ad65dae24967603"
-   size 165698
+   filename "misc-games-1.10-pkg.tar.gz"
+   md5sum "d5d5c6c074fab908ba48a8a6ccdc4273"
+   size 165902
    provides (decipher gomoku hanoi life morse rot13)
    requires (xemacs-base)
    type single
 (package-get-update-base-entry (quote
 (gnus
   (standards-version 1.0
-   version "1.38"
-   author-version "5.6.45"
+   version "1.39"
+   author-version "5.6.45x1"
    date "1999-02-17"
-   build-date "1999-03-01"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "The Gnus Newsreader and Mailreader."
-   filename "gnus-1.38-pkg.tar.gz"
-   md5sum "22f00c391c4680d0a4fe53a5e6b85f40"
-   size 1869217
+   filename "gnus-1.39-pkg.tar.gz"
+   md5sum "5413e7508693bfcb16c5a4a0e0bce7c7"
+   size 1869261
    provides (gnus message)
    requires (gnus tm apel w3 mh-e mailcrypt rmail mail-lib xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (w3
   (standards-version 1.0
-   version "1.12"
-   author-version "4.0pre39"
-   date "1999-01-08"
-   build-date "1999-03-01"
+   version "1.13"
+   author-version "4.0pre39x1"
+   date "1999-03-02"
+   build-date "1999-03-02"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution experimental
    priority high
    category "comm"
    dump nil
    description "A Web browser."
-   filename "w3-1.12-pkg.tar.gz"
-   md5sum "e7afce350e99f71dfde7ec752290670c"
-   size 679826
+   filename "w3-1.13-pkg.tar.gz"
+   md5sum "8e9f70ef2c4b43090cfbf86974517c66"
+   size 682040
    provides (w3 url)
    requires (w3 mail-lib xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (vm
   (standards-version 1.0
-   version "1.16"
+   version "1.17"
    author-version "6.67"
    date "1998-09-22"
-   build-date "1999-03-01"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "comm"
    dump nil
    description "An Emacs mailer."
-   filename "vm-1.16-pkg.tar.gz"
-   md5sum "e5ad7011473b17f7d1e9521407199b64"
-   size 603773
+   filename "vm-1.17-pkg.tar.gz"
+   md5sum "9a95c6264135124db979bce745bf0e07"
+   size 609688
    provides (vm)
    requires (mail-lib xemacs-base)
    type regular
 (package-get-update-base-entry (quote
 (sounds-wav
   (standards-version 1.0
-   version "1.06"
-   author-version "21.0b62"
-   date "1998-06-30"
-   build-date "1999-02-02"
+   version "1.07"
+   author-version "21.0b64"
+   date "1999-02-02"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "libs"
    dump nil
    description "XEmacs Microsoft sound files."
-   filename "sounds-wav-1.06-pkg.tar.gz"
-   md5sum "7f3dfd84e88b418ea58233bde7d859fc"
-   size 148545
+   filename "sounds-wav-1.07-pkg.tar.gz"
+   md5sum "60a70b85e8711fb1c9a1c7d0f4bf8ee0"
+   size 149045
    provides ()
    requires ()
    type regular
 (package-get-update-base-entry (quote
 (sounds-au
   (standards-version 1.0
-   version "1.06"
-   author-version "21.0b62"
-   date "1998-06-30"
-   build-date "1999-02-02"
+   version "1.07"
+   author-version "21.0b64"
+   date "1999-02-02"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority high
    category "libs"
    dump nil
    description "XEmacs Sun sound files."
-   filename "sounds-au-1.06-pkg.tar.gz"
-   md5sum "aa4a6080061e802b72156f4ce59e9561"
-   size 125744
+   filename "sounds-au-1.07-pkg.tar.gz"
+   md5sum "4b5acd296b50102e50565650d9d7ec0b"
+   size 126184
    provides ()
    requires ()
    type regular
 (package-get-update-base-entry (quote
 (mail-lib
   (standards-version 1.0
-   version "1.21"
-   author-version "21.0b62"
-   date "1999-01-20"
-   build-date "1999-02-02"
+   version "1.22"
+   author-version "21.0b64"
+   date "1999-03-05"
+   build-date "1999-03-05"
    maintainer "XEmacs Development Team <xemacs-beta@xemacs.org>"
    distribution stable
    priority medium
    category "libs"
    dump nil
    description "Fundamental lisp files for providing email support."
-   filename "mail-lib-1.21-pkg.tar.gz"
-   md5sum "4011698f9a440406af74ee1694e5539b"
-   size 131218
+   filename "mail-lib-1.22-pkg.tar.gz"
+   md5sum "70a947a1980887430c53032e3dfcbe4f"
+   size 131476
    provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini rmailout sendmail smtpmail)
    requires (xemacs-base)
    type regular
index 581ff01..90677dc 100644 (file)
@@ -1,3 +1,7 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
index 1da4016..ad6e93e 100644 (file)
@@ -1,3 +1,46 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
+1999-03-05  SL Baur  <steve@xemacs.org>
+
+       * menubar-items.el (default-menubar): Add kfm browsing support.
+       From Neal Becker <nbecker@fred.net>
+
+1999-03-03  Steven Baur  <steve@gneiss.etl.go.jp>
+
+       * font-lock.el (font-lock-revert-cleanup): Null out to avoid repeated
+       calls to font-lock during buffer reversion.
+
+1999-02-12  Didier Verna  <verna@inf.enst.fr>
+
+       * info.el (Info-build-node-completions): unconditionally widen the
+       tag table buffer.
+
+1999-02-19  Paul Stodghill  <stodghil@cs.cornell.edu>
+
+       * x-faces.el (x-init-face-from-resources):
+       Only set fonts in the 'x locale.
+
+1999-03-04  Adrian Aichner  <aichner@ecf.teradyne.com>
+
+       * package-ui.el (pui-install-selected-packages): Don't throw on
+       `package-admin-delete-binary-package' returning nil since it's
+       normal.  Reindent function.
+       (pui-add-required-packages): Handle case where packages selected
+       for installation have never been installed.
+
+1999-03-03  Martin Buchholz  <martin@xemacs.org>
+
+       * menubar-items.el (default-menubar): 
+       Implement the ``Mule->Set coding system of process'' menu item.
+
+1999-02-18  Martin Buchholz  <martin@xemacs.org>
+
+       * files.el (auto-mode-alist): Use c-mode for *.i pre-processed cpp 
+       files
+       - Change some `if's to `when's
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
index fd4585a..2480c79 100644 (file)
@@ -788,37 +788,36 @@ If optional argument HACK-HOMEDIR is non-nil, then this also substitutes
        ;; If any elt of directory-abbrev-alist matches this name,
        ;; abbreviate accordingly.
        (while tail
-         (if (string-match (car (car tail)) filename)
-             (setq filename
-                   (concat (cdr (car tail)) (substring filename (match-end 0)))))
+         (when (string-match (car (car tail)) filename)
+           (setq filename
+                 (concat (cdr (car tail)) (substring filename (match-end 0)))))
          (setq tail (cdr tail))))
-      (if hack-homedir
-         (progn
-           ;; Compute and save the abbreviated homedir name.
-           ;; We defer computing this until the first time it's needed, to
-           ;; give time for directory-abbrev-alist to be set properly.
-           ;; We include a slash at the end, to avoid spurious matches
-           ;; such as `/usr/foobar' when the home dir is `/usr/foo'.
-           (or abbreviated-home-dir
-               (setq abbreviated-home-dir
-                     (let ((abbreviated-home-dir "$foo"))
-                       (concat "\\`" (regexp-quote (abbreviate-file-name
-                                                    (expand-file-name "~")))
-                               "\\(/\\|\\'\\)"))))
-           ;; If FILENAME starts with the abbreviated homedir,
-           ;; make it start with `~' instead.
-           (if (and (string-match abbreviated-home-dir filename)
-                    ;; If the home dir is just /, don't change it.
-                    (not (and (= (match-end 0) 1) ;#### unix-specific
-                              (= (aref filename 0) ?/)))
-                    (not (and (memq system-type '(ms-dos windows-nt))
-                              (save-match-data
-                                (string-match "^[a-zA-Z]:/$" filename)))))
-               (setq filename
-                     (concat "~"
-                             (substring filename
-                                        (match-beginning 1) (match-end 1))
-                             (substring filename (match-end 0)))))))
+      (when hack-homedir
+       ;; Compute and save the abbreviated homedir name.
+       ;; We defer computing this until the first time it's needed, to
+       ;; give time for directory-abbrev-alist to be set properly.
+       ;; We include a slash at the end, to avoid spurious matches
+       ;; such as `/usr/foobar' when the home dir is `/usr/foo'.
+       (or abbreviated-home-dir
+           (setq abbreviated-home-dir
+                 (let ((abbreviated-home-dir "$foo"))
+                   (concat "\\`" (regexp-quote (abbreviate-file-name
+                                                (expand-file-name "~")))
+                           "\\(/\\|\\'\\)"))))
+       ;; If FILENAME starts with the abbreviated homedir,
+       ;; make it start with `~' instead.
+       (if (and (string-match abbreviated-home-dir filename)
+                ;; If the home dir is just /, don't change it.
+                (not (and (= (match-end 0) 1) ;#### unix-specific
+                          (= (aref filename 0) ?/)))
+                (not (and (memq system-type '(ms-dos windows-nt))
+                          (save-match-data
+                            (string-match "^[a-zA-Z]:/$" filename)))))
+           (setq filename
+                 (concat "~"
+                         (substring filename
+                                    (match-beginning 1) (match-end 1))
+                         (substring filename (match-end 0))))))
       filename)))
 
 (defcustom find-file-not-true-dirname-list nil
@@ -1131,7 +1130,7 @@ run `normal-mode' explicitly."
 
 (defvar auto-mode-alist
   '(("\\.te?xt\\'" . text-mode)
-    ("\\.[ch]\\'" . c-mode)
+    ("\\.[chi]\\'" . c-mode)
     ("\\.el\\'" . emacs-lisp-mode)
     ("\\.\\(?:[CH]\\|cc\\|hh\\)\\'" . c++-mode)
     ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode)
index 2918ef3..ea1e1cb 100644 (file)
@@ -1536,7 +1536,12 @@ START should be at the beginning of a line."
 
 ;; If the buffer has just been reverted, normally that turns off
 ;; Font Lock mode.  So turn the mode back on if necessary.
-(defalias 'font-lock-revert-cleanup 'turn-on-font-lock)
+;; sb 1999-03-03 -- The above comment no longer appears to be operative as
+;; the first call to normal-mode *will* restore the font-lock state and
+;; this call forces a second font-locking to occur when reverting a buffer,
+;; which is wasteful at best.
+;(defalias 'font-lock-revert-cleanup 'turn-on-font-lock)
+(defun font-lock-revert-cleanup ())
 
 \f
 ;; Various functions.
index bc245ff..dc40409 100644 (file)
@@ -1542,6 +1542,7 @@ annotation for any node of any file.  (See `a' and `x' commands.)"
       (let ((compl (Info-build-annotation-completions)))
        (save-excursion
          (save-restriction
+           (widen)
            (if (marker-buffer Info-tag-table-marker)
                (progn
                  (set-buffer (marker-buffer Info-tag-table-marker))
@@ -1551,7 +1552,6 @@ annotation for any node of any file.  (See `a' and `x' commands.)"
                          (cons (list (buffer-substring (match-beginning 1)
                                                        (match-end 1)))
                                compl))))
-             (widen)
              (goto-char (point-min))
              (while (search-forward "\n\^_" nil t)
                (forward-line 1)
index 462aea8..1d400ab 100644 (file)
       ["Show Message Log" show-message-log]
       )
 
-     ,@(if (featurep 'mule)
-          '(("Mule"
-             ("Describe language support")
-             ("Set language environment")
-             "--"
-             ["Toggle input method" toggle-input-method]
-             ["Select input method" select-input-method]
-             ["Describe input method" describe-input-method]
-             "--"
-             ["Describe current coding systems"
-              describe-current-coding-system]
-             ["Set coding system of buffer file"
-              set-buffer-file-coding-system]
-             ;; not implemented yet
-             ["Set coding system of terminal"
-              set-terminal-coding-system :active nil]
-             ;; not implemented yet
-             ["Set coding system of keyboard"
-              set-keyboard-coding-system :active nil]
-             ;; not implemented yet
-             ["Set coding system of process"
-              set-current-process-coding-system :active nil]
-             "--"
-             ["Show character table" view-charset-by-menu]
-             ;; not implemented yet
-             ["Show diagnosis for MULE" mule-diag :active nil]
-             ["Show many languages" view-hello-file])))
+     ,@(when (featurep 'mule)
+        '(("Mule"
+           ("Describe language support")
+           ("Set language environment")
+           "--"
+           ["Toggle input method" toggle-input-method]
+           ["Select input method" select-input-method]
+           ["Describe input method" describe-input-method]
+           "--"
+           ["Describe current coding systems"
+            describe-current-coding-system]
+           ["Set coding system of buffer file"
+            set-buffer-file-coding-system]
+           ;; not implemented yet
+           ["Set coding system of terminal"
+            set-terminal-coding-system :active nil]
+           ;; not implemented yet
+           ["Set coding system of keyboard"
+            set-keyboard-coding-system :active nil]
+           ["Set coding system of process"
+            set-buffer-process-coding-system
+            :active (get-buffer-process (current-buffer))]
+           "--"
+           ["Show character table" view-charset-by-menu]
+           ;; not implemented yet
+           ["Show diagnosis for MULE" mule-diag :active nil]
+           ["Show many languages" view-hello-file])))
 
      ("Apps"
       ["Read Mail (VM)..." vm
        ["Set..." customize-customized]
        ["Apropos..." customize-apropos]
        ["Browse..." customize-browse])
-      
+
       ("Manage Packages"
        ("Add Download Site"
         :filter (lambda (&rest junk)
        ["Help" (Info-goto-node "(xemacs)Packages")])
 
       "---"
-      
+
       ("Editing Options"
        ["Overstrike"
        (progn
          (setq overwrite-mode (if overwrite-mode nil 'overwrite-mode-textual))
          (customize-set-variable 'overwrite-mode overwrite-mode))
        :style toggle :selected overwrite-mode]
-       ["Case Sensitive Search" 
-       (customize-set-variable 'case-fold-search 
+       ["Case Sensitive Search"
+       (customize-set-variable 'case-fold-search
                                (setq case-fold-search (not case-fold-search)))
        :style toggle :selected (not case-fold-search)]
-       ["Case Matching Replace" 
+       ["Case Matching Replace"
        (customize-set-variable 'case-replace (not case-replace))
        :style toggle :selected case-replace]
        ["Auto Delete Selection"
        :style toggle
        :selected (and (boundp 'pending-delete-mode) pending-delete-mode)
        :active (boundp 'pending-delete-mode)]
-       ["Active Regions" 
+       ["Active Regions"
        (customize-set-variable 'zmacs-regions (not zmacs-regions))
        :style toggle :selected zmacs-regions]
-       ["Mouse Paste At Text Cursor" 
+       ["Mouse Paste At Text Cursor"
        (customize-set-variable 'mouse-yank-at-point (not mouse-yank-at-point))
        :style toggle :selected mouse-yank-at-point]
        ("Newline at end of file..."
         (customize-set-variable 'require-final-newline 'ask)
         :style radio :selected (and require-final-newline
                                     (not (eq require-final-newline t)))])
-       ["Add Newline When Moving Past End" 
-       (customize-set-variable 'next-line-add-newlines 
+       ["Add Newline When Moving Past End"
+       (customize-set-variable 'next-line-add-newlines
                                (not next-line-add-newlines))
        :style toggle :selected next-line-add-newlines]
        )
       ("General Options"
-       ["Teach Extended Commands" 
+       ["Teach Extended Commands"
        (customize-set-variable 'teach-extended-commands-p
                                (not teach-extended-commands-p))
        :style toggle :selected teach-extended-commands-p]
        ["Debug On Error"
        (customize-set-variable 'debug-on-error (not debug-on-error))
        :style toggle :selected debug-on-error]
-       ["Debug On Quit" 
+       ["Debug On Quit"
        (customize-set-variable 'debug-on-quit (not debug-on-quit))
        :style toggle :selected debug-on-quit]
        )
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'statement))
         :active (boundp 'ps-paper-type)]
-       ["Executive" 
+       ["Executive"
         (customize-set-variable 'ps-paper-type 'executive)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'executive))
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'tabloid))
         :active (boundp 'ps-paper-type)]
-       ["Ledger" 
+       ["Ledger"
         (customize-set-variable 'ps-paper-type 'ledger)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'ledger))
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a3))
         :active (boundp 'ps-paper-type)]
-       ["A4" 
+       ["A4"
         (customize-set-variable 'ps-paper-type 'a4)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4))
         :active (boundp 'ps-paper-type)]
-       ["A4small" 
+       ["A4small"
         (customize-set-variable 'ps-paper-type 'a4small)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'a4small))
         :active (boundp 'ps-paper-type)]
-       ["B4" 
+       ["B4"
         (customize-set-variable 'ps-paper-type 'b4)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b4))
         :active (boundp 'ps-paper-type)]
-       ["B5" 
+       ["B5"
         (customize-set-variable 'ps-paper-type 'b5)
         :style radio
         :selected (and (boundp 'ps-paper-type) (eq ps-paper-type 'b5))
                    (set-face-background 'default original-face-background)))
              (t
               (customize-set-variable 'ps-print-color-p t)
-              (setq original-face-background 
+              (setq original-face-background
                     (face-background-instance 'default))
               (set-face-background 'default "white")))
-       :style toggle 
+       :style toggle
        :selected (and (boundp 'ps-print-color-p) ps-print-color-p)
        :active (boundp 'ps-print-color-p)])
       ("\"Other Window\" Location"
        ["Always in Same Frame"
-       (customize-set-variable 
+       (customize-set-variable
         'get-frame-for-buffer-default-instance-limit nil)
        :style radio
        :selected (null get-frame-for-buffer-default-instance-limit)]
        :selected (eq 0 get-frame-for-buffer-default-instance-limit)]
        "-----"
        ["Temp Buffers Always in Same Frame"
-       (customize-set-variable 'temp-buffer-show-function 
+       (customize-set-variable 'temp-buffer-show-function
                                'show-temp-buffer-in-current-frame)
        :style radio
        :selected (eq temp-buffer-show-function
        )
       "-----"
       ("Syntax Highlighting"
-       ["In This Buffer" 
+       ["In This Buffer"
        (progn ;; becomes buffer local
          (font-lock-mode)
          (customize-set-variable 'font-lock-mode font-lock-mode))
-       :style toggle 
+       :style toggle
        :selected (and (boundp 'font-lock-mode) font-lock-mode)
        :active (boundp 'font-lock-mode)]
        ["Automatic"
        :selected (and (boundp 'font-lock-auto-fontify) font-lock-auto-fontify)
        :active (fboundp 'font-lock-mode)]
        "-----"
-       ["Fonts" 
+       ["Fonts"
        (progn
          (require 'font-lock)
          (font-lock-use-default-fonts)
                                (not (eq t font-lock-maximum-decoration)))
                           (and (integerp font-lock-maximum-decoration)
                                (<= font-lock-maximum-decoration 0))))]
-       ["More" 
+       ["More"
        (progn
          (require 'font-lock)
          (if (and (integerp font-lock-maximum-decoration)
        :selected (and (boundp 'font-lock-maximium-decoration)
                       (integerp font-lock-maximum-decoration)
                       (= 1 font-lock-maximum-decoration))]
-       ["Even More" 
+       ["Even More"
        (progn
          (require 'font-lock)
          (if (and (integerp font-lock-maximum-decoration)
          ;; be a redisplay bug lurking somewhere (or
          ;; possibly another event handler bug)
          (redraw-modeline))
-       :active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode) 
+       :active (and (boundp 'font-lock-mode) (boundp 'lazy-shot-mode)
                     font-lock-mode)
        :style toggle
        :selected (and (boundp 'lazy-shot-mode) lazy-shot-mode)]
       ("Paren Highlighting"
        ["None"
        (customize-set-variable 'paren-mode nil)
-       :style radio 
+       :style radio
        :selected (and (boundp 'paren-mode) (not paren-mode))
        :active (boundp 'paren-mode)]
        ["Blinking Paren"
        :active (boundp 'paren-mode)]
        ["Steady Paren"
        (customize-set-variable 'paren-mode 'paren)
-       :style radio 
+       :style radio
        :selected (and (boundp 'paren-mode) (eq paren-mode 'paren))
        :active (boundp 'paren-mode)]
        ["Expression"
        (customize-set-variable 'paren-mode 'sexp)
-       :style radio 
+       :style radio
        :selected (and (boundp 'paren-mode) (eq paren-mode 'sexp))
        :active (boundp 'paren-mode)]
-;;      ["Nested Shading"           
+;;      ["Nested Shading"
 ;;       (customize-set-variable 'paren-mode 'nested)
-;;       :style radio               
+;;       :style radio
 ;;       :selected (and (boundp 'paren-mode) (eq paren-mode 'nested))
 ;;       :active (boundp 'paren-mode)]
        )
       "-----"
       ("Frame Appearance"
-       ["Frame-Local Font Menu" 
+       ["Frame-Local Font Menu"
        (customize-set-variable 'font-menu-this-frame-only-p
                                (not font-menu-this-frame-only-p))
-       :style toggle 
+       :style toggle
        :selected (and (boundp 'font-menu-this-frame-only-p)
                       font-menu-this-frame-only-p)]
        ,@(if (featurep 'scrollbar)
             '(["Scrollbars"
                (customize-set-variable 'scrollbars-visible-p
                                        (not scrollbars-visible-p))
-               :style toggle 
+               :style toggle
                :selected scrollbars-visible-p]))
        ;; I don't think this is of any interest. - dverna apr. 98
        ;; #### I beg to differ!  Many FSFmacs converts hate the 3D
        ;; off through the Options menu.  I would have uncommented this
        ;; source, but the code for saving options would not save the
        ;; modeline 3D-ness.  Grrr.  --hniksic
-;;      ["3D Modeline"                    
-;;       (progn                                   
+;;      ["3D Modeline"
+;;       (progn
 ;;         (if (zerop (specifier-instance modeline-shadow-thickness))
 ;;             (set-specifier modeline-shadow-thickness 2)
 ;;           (set-specifier modeline-shadow-thickness 0))
-;;         (redraw-modeline t))                   
-;;       :style toggle                    
-;;       :selected (let ((thickness       
+;;         (redraw-modeline t))
+;;       :style toggle
+;;       :selected (let ((thickness
 ;;                        (specifier-instance modeline-shadow-thickness)))
 ;;                   (and (integerp thickness)
 ;;                        (> thickness 0)))]
        :selected (and (boundp 'blink-cursor-mode) blink-cursor-mode)
        :active (boundp 'blink-cursor-mode)]
        "-----"
-       ["Block cursor" 
+       ["Block cursor"
        (progn
          (customize-set-variable 'bar-cursor nil)
          (force-cursor-redisplay))
        :style radio
        :selected (null bar-cursor)]
-       ["Bar cursor (1 pixel)" 
+       ["Bar cursor (1 pixel)"
        (progn
          (customize-set-variable 'bar-cursor t)
          (force-cursor-redisplay))
        :style radio
        :selected (eq bar-cursor t)]
-       ["Bar cursor (2 pixels)" 
+       ["Bar cursor (2 pixels)"
         (progn
           (customize-set-variable 'bar-cursor 2)
           (force-cursor-redisplay))
-        :style radio 
+        :style radio
         :selected (and bar-cursor (not (eq bar-cursor t)))]
        "------"
        ["Line Numbers"
        (customize-set-variable
         'buffers-menu-max-size
         ;; would it be better to open a customization buffer ?
-        (let ((val 
+        (let ((val
                (read-number
                 "Enter number of buffers to display (or 0 for unlimited): ")))
           (if (eq val 0) nil val)))]
                       buffers-menu-sort-function)]
        ["By Major Mode, Then Alphabetically"
         (progn
-          (customize-set-variable 
+          (customize-set-variable
            'buffers-menu-sort-function
            'sort-buffers-menu-by-mode-then-alphabetically)
-          (customize-set-variable 
+          (customize-set-variable
            'buffers-menu-grouping-function
            'group-buffers-menu-by-mode-then-alphabetically))
         :style radio
        ["Ignore Scaled Fonts"
        (customize-set-variable 'font-menu-ignore-scaled-fonts
                                (not font-menu-ignore-scaled-fonts))
-       :style toggle 
+       :style toggle
        :selected (and (boundp 'font-menu-ignore-scaled-fonts)
                       font-menu-ignore-scaled-fonts)]
        )
       ,@(if (featurep 'toolbar)
            '(("Toolbar Appearance"
-              ["Visible" 
+              ["Visible"
                (customize-set-variable 'toolbar-visible-p
                                        (not toolbar-visible-p))
                :style toggle
                :selected toolbar-visible-p]
-              ["Captioned" 
+              ["Captioned"
                (customize-set-variable 'toolbar-captioned-p
                                        (not toolbar-captioned-p))
                :style toggle
               ("Default Location"
                ["Top"
                 (customize-set-variable 'default-toolbar-position 'top)
-                :style radio 
+                :style radio
                 :selected (eq default-toolbar-position 'top)]
-               ["Bottom" 
+               ["Bottom"
                 (customize-set-variable 'default-toolbar-position 'bottom)
                 :style radio
                 :selected (eq default-toolbar-position 'bottom)]
               )))
       ("Mouse"
        ["Avoid Text..."
-       (customize-set-variable 'mouse-avoidance-mode 
+       (customize-set-variable 'mouse-avoidance-mode
                                (if mouse-avoidance-mode nil 'banish))
        :style toggle
        :selected (and (boundp 'mouse-avoidance-mode) mouse-avoidance-mode)
                     (device-on-window-system-p))]
        )
       ("Open URLs With"
-       ["Emacs-W3" 
+       ["Emacs-W3"
        (customize-set-variable 'browse-url-browser-function 'browse-url-w3)
        :style radio
        :selected (and (boundp 'browse-url-browser-function)
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-w3)
                     (fboundp 'w3-fetch))]
-       ["Netscape" 
-       (customize-set-variable 'browse-url-browser-function 
+       ["Netscape"
+       (customize-set-variable 'browse-url-browser-function
                                'browse-url-netscape)
        :style radio
        :selected (and (boundp 'browse-url-browser-function)
                       (eq browse-url-browser-function 'browse-url-netscape))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-netscape))]
-       ["Mosaic" 
+       ["Mosaic"
        (customize-set-variable 'browse-url-browser-function
                                'browse-url-mosaic)
        :style radio
                       (eq browse-url-browser-function 'browse-url-mosaic))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-mosaic))]
-       ["Mosaic (CCI)" 
+       ["Mosaic (CCI)"
        (customize-set-variable 'browse-url-browser-function 'browse-url-cci)
        :style radio
        :selected (and (boundp 'browse-url-browser-function)
                       (eq browse-url-browser-function 'browse-url-cci))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-cci))]
-       ["IXI Mosaic" 
-       (customize-set-variable 'browse-url-browser-function 
+       ["IXI Mosaic"
+       (customize-set-variable 'browse-url-browser-function
                                'browse-url-iximosaic)
        :style radio
        :selected (and (boundp 'browse-url-browser-function)
                       (eq browse-url-browser-function 'browse-url-iximosaic))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-iximosaic))]
-       ["Lynx (xterm)" 
+       ["Lynx (xterm)"
        (customize-set-variable 'browse-url-browser-function
                                'browse-url-lynx-xterm)
        :style radio
                       (eq browse-url-browser-function 'browse-url-lynx-emacs))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-lynx-emacs))]
-       ["Grail" 
+       ["Grail"
        (customize-set-variable 'browse-url-browser-function
                                'browse-url-grail)
        :style radio
                       (eq browse-url-browser-function 'browse-url-grail))
        :active (and (boundp 'browse-url-browser-function)
                     (fboundp 'browse-url-grail))]
+       ["Kfm" 
+       (customize-set-variable 'browse-url-browser-function
+                               'browse-url-kfm)
+       :style radio
+       :selected (and (boundp 'browse-url-browser-function)
+                      (eq browse-url-browser-function 'browse-url-kfm))
+       :active (and (boundp 'browse-url-browser-function)
+                    (fboundp 'browse-url-kfm))]
        )
       "-----"
       ["Edit Faces..." (customize-face nil)]
index 7eb73bd..4f948c7 100644 (file)
@@ -362,27 +362,22 @@ and whether or not it is up-to-date."
                                               (symbol-name pkg)
                                               )
                                            pui-deleted-packages)
-                                       'string<)
-                                      :activate-callback nil
-                                      :help-string "Packages selected for removal:\n"
-                                      :completion-string t
-                                      ))
-           (setq tmpbuf (get-buffer-create tmpbuf))
-           (display-buffer tmpbuf)
-           (setq do-delete (yes-or-no-p "Remove these packages? "))
-           (kill-buffer tmpbuf))           
+                                   'string<)
+                                  :activate-callback nil
+                                  :help-string "Packages selected for removal:\n"
+                                  :completion-string t
+                                  ))
+       (setq tmpbuf (get-buffer-create tmpbuf))
+       (display-buffer tmpbuf)
+       (setq do-delete (yes-or-no-p "Remove these packages? "))
+       (kill-buffer tmpbuf))       
       (when do-delete
        (message "Deleting selected packages ...") (sit-for 0)
-       (when (catch 'done
-               (mapcar (lambda (pkg)
-                         (if (not
-                              (package-admin-delete-binary-package
-                                 pkg (package-admin-get-install-dir pkg nil)))
-                                   (throw 'done nil)))
-                             pui-deleted-packages)
-                     t)
-         (message "Packages deleted")
-         ))))
+       (mapcar (lambda (pkg)
+                 (package-admin-delete-binary-package
+                  pkg (package-admin-get-install-dir pkg nil)))
+               pui-deleted-packages)
+       (message "Packages deleted"))))
         
   (let ( (tmpbuf "*Packages-To-Install*") do-install)
     (if pui-selected-packages
@@ -430,8 +425,8 @@ and whether or not it is up-to-date."
                      (message "Packages installed")
                      ))
                )
-             (clear-message)
-             )
+           (clear-message)
+           )
          )
       (if pui-deleted-packages
          (pui-list-packages)
@@ -454,12 +449,13 @@ and whether or not it is up-to-date."
                                      (package-get-info-find-package
                                       package-get-base pkg) nil)
                                     'version)))
-                              (if (< (if (stringp installed)
+                              (if (or (null installed)
+                                     (< (if (stringp installed)
                                          (string-to-number installed)
                                        installed)
                                      (if (stringp current)
                                          (string-to-number current)
-                                       current))
+                                       current)))
                                   pkg
                                 nil)))
                           (package-get-dependencies pui-selected-packages)))))
index 21895c3..74c1d35 100644 (file)
@@ -506,7 +506,7 @@ Otherwise, it returns the next larger version of this font that is defined."
        ;; globally.  This means we should override global
        ;; defaults for all X device classes.
        (remove-specifier (face-font face) locale x-tag-set nil))
-      (set-face-font face fn locale nil append))
+      (set-face-font face fn locale 'x append))
     ;; Kludge-o-rooni.  Set the foreground and background resources for
     ;; X devices only -- otherwise things tend to get all messed up
     ;; if you start up an X frame and then later create a TTY frame.
diff --git a/lwlib/ChangeLog b/lwlib/ChangeLog
new file mode 100644 (file)
index 0000000..c3c759d
--- /dev/null
@@ -0,0 +1,8 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
+1999-02-18  Martin Buchholz  <martin@xemacs.org>
+
+       * lwlib/xlwmenu.c (massage_resource_name): Fix compiler warning
+       - Have to toupper ((int) (unsigned char) x) to be portable.
index cf4de8d..313e46f 100644 (file)
@@ -483,7 +483,8 @@ massage_resource_name (CONST char *in, char *out)
       char ch = massaged_resource_char[(unsigned char) *in++];
       if (ch)
        {
-         *out++ = firstp ? tolower (ch) : toupper (ch);
+         int int_ch = (int) (unsigned char) ch;
+         *out++ = firstp ? tolower (int_ch) : toupper (int_ch);
          firstp = False;
          while ((ch = massaged_resource_char[(unsigned char) *in++]) != '\0')
            *out++ = ch;
index 06b9a90..0cf6243 100644 (file)
@@ -1,3 +1,7 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
index 5a40e19..150c00a 100644 (file)
@@ -546,7 +546,7 @@ priority over faces later in the list.  @xref{Extents and Events}.
 the extent.  This takes precedence over the @code{text-pointer-glyph}
 and @code{nontext-pointer-glyph} variables.  If for any reason this
 glyph is an invalid pointer, the standard glyphs will be used as
-fallbacks.  @xref{Mouse Pointer}
+fallbacks.  @xref{Mouse Pointer}.
 
 @item detachable
 (Boolean) Whether this extent becomes detached when all of the text it
index eddb7d0..09a0bc4 100644 (file)
@@ -28,7 +28,7 @@ Each built-in property of a face is controlled using a specifier,
 which allows it to have separate values in particular buffers, frames,
 windows, and devices and to further vary according to device type
 (X or TTY) and device class (color, mono, or grayscale).
-@xref{Specifiers} for more information.
+@xref{Specifiers}, for more information.
 
 The face named @code{default} is used for ordinary text.  The face named
 @code{modeline} is used for displaying the modeline.  The face named
index 5abe4b6..c2e2b06 100644 (file)
@@ -62,7 +62,7 @@ Specifiers}), but can also be a list of such instantiators (each one in
 turn is tried until an image is successfully produced), a cons of a
 locale (frame, buffer, etc.) and an instantiator, a list of such conses,
 or any other form accepted by @code{canonicalize-spec-list}.
-@xref{Specifiers} for more information about specifiers.
+@xref{Specifiers}, for more information about specifiers.
 
 @var{type} specifies the type of the glyph, which specifies in which
 contexts the glyph can be used, and controls the allowable image types
@@ -448,7 +448,7 @@ can be generated by many different image instantiator formats (e.g.
 @code{color-pixmap} can be generated by @code{xpm}, @code{gif},
 @code{jpeg}, etc.).
 
-  @xref{Image Instances} for a more detailed discussion of image
+  @xref{Image Instances}, for a more detailed discussion of image
 instance types.
 
   An image instantiator should be a string or a vector of the form
index 2ba1c5d..e157e8f 100644 (file)
@@ -668,7 +668,7 @@ described here.
 concept of an @dfn{active region} exists.  The region is active when the
 corresponding mark is active.  Note that only one active region at a
 time can exist -- i.e. only one buffer's region is active at a time.
-@xref{The Mark} for more information about active regions.
+@xref{The Mark}, for more information about active regions.
 
 @defopt zmacs-regions
 If non-@code{nil} (the default), active regions are used.  @xref{The Mark},
index 713aef1..3a815dd 100644 (file)
@@ -518,7 +518,7 @@ undo, this is changed to @samp{Undo More}.
 @end defun
 
 @defun buffers-menu-filter menu-items
-This function sets up the Buffers menu.  @xref{Buffers Menu} for
+This function sets up the Buffers menu.  @xref{Buffers Menu}, for
 more information.
 @end defun
 
index e3eca51..8b68361 100644 (file)
@@ -1059,7 +1059,7 @@ but the newline is ignored if escaped."
   A string can hold extents and properties of the text it contains, in
 addition to the characters themselves.  This enables programs that copy
 text between strings and buffers to preserve the extents and properties
-with no special effort.  @xref{Extents}; @xref{Text Properties}.
+with no special effort.  @xref{Extents}, @xref{Text Properties}.
 
   Note that FSF GNU Emacs has a special read and print syntax for
 strings with text properties, but XEmacs does not currently implement
index 0030e51..1383201 100644 (file)
@@ -82,7 +82,7 @@ omitted.
 This function returns the maximum accessible value of point in
 @var{buffer}.  This is @code{(1+ (buffer-size buffer))}, unless
 narrowing is in effect, in which case it is the position of the end of
-the region that you narrowed to. (@xref{Narrowing}).  @var{buffer}
+the region that you narrowed to. (@pxref{Narrowing}).  @var{buffer}
 defaults to the current buffer if omitted.
 @end defun
 
index a7e1ad4..54b2d95 100644 (file)
@@ -91,7 +91,7 @@ If the sequence is a string with extents or text properties, the extents
 and text properties in the copy are also copied, not shared with the
 original. (This means that modifying the extents or text properties of
 the original will not affect the copy.) However, the actual values of
-the properties are shared.  @xref{Extents}; @xref{Text Properties}.
+the properties are shared.  @xref{Extents}, @xref{Text Properties}.
 
 See also @code{append} in @ref{Building Lists}, @code{concat} in
 @ref{Creating Strings}, @code{vconcat} in @ref{Vectors}, and
@@ -272,7 +272,7 @@ Strings are printed in a way that shows the contents more clearly
 as characters.
 
 @item
-Strings can hold extent and text properties.  @xref{Extents}; @xref{Text
+Strings can hold extent and text properties.  @xref{Extents}, @xref{Text
 Properties}.
 
 @item
index 43d9088..6efb83f 100644 (file)
@@ -325,7 +325,7 @@ or the symbol @code{nil}.
 @item toolbar
 The valid instantiators are toolbar descriptors, which are lists
 of toolbar-button descriptors (each of which is a vector of two
-or four elements).  @xref{Toolbar} for more information.
+or four elements).  @xref{Toolbar}, for more information.
 @end table
 
 Color and font instance objects can also be used in turn as
@@ -335,9 +335,9 @@ directly as the new instance object, but only if they are of the same
 device.  If the devices differ, the base color or font of the
 instantiating object is effectively used instead as the instantiator.
 
-@xref{Faces and Window-System Objects} for more information on fonts,
-colors, and face-boolean specifiers.  @xref{Glyphs} for more information
-about image specifiers.  @xref{Toolbar} for more information on toolbar
+@xref{Faces and Window-System Objects}, for more information on fonts,
+colors, and face-boolean specifiers.  @xref{Glyphs}, for more information
+about image specifiers.  @xref{Toolbar}, for more information on toolbar
 specifiers.
 
 @defun specifier-type specifier
index 30565ad..95da8ee 100644 (file)
@@ -967,7 +967,7 @@ case.
 
 The definition of a word is any sequence of consecutive characters that
 are assigned to the word constituent syntax class in the current syntax
-table (@xref{Syntax Class Table}).
+table (@pxref{Syntax Class Table}).
 
 When the argument to @code{capitalize} is a character, @code{capitalize}
 has the same result as @code{upcase}.
index 2341bec..7e31f0a 100644 (file)
@@ -180,7 +180,7 @@ These are specifiers, which means you set them with @code{set-specifier}
 and query them with @code{specifier-specs} or @code{specifier-instance}.
 You will get an error if you try to set them using @code{setq}.  The
 valid instantiators for these specifiers are toolbar descriptors, as
-described above.  @xref{Specifiers} for more information.
+described above.  @xref{Specifiers}, for more information.
 
 Most of the time, you will set @code{default-toolbar}, which allows
 the user to choose where the toolbar should go.
index 289e31d..81f5c41 100644 (file)
@@ -241,7 +241,7 @@ M-x blink-paren
 Do not add the "-mode" to it.  You can also select the @b{Paren
 Highlighting} option from the @b{Options} menu. After you enable this
 command, put your cursor on one of the left parenthesis. The other
-matching parenthesis will start blinking. @xref{Options Menu,} for more
+matching parenthesis will start blinking. @xref{Options Menu}, for more
 information on the @b{Paren Highlighting} option.
 @end table
 
index 982931d..841f699 100644 (file)
@@ -156,7 +156,7 @@ Indent it with @kbd{C-x @key{TAB}} or @kbd{C-M-\}
   The most common way to move or copy text in Emacs is through
 @dfn{killing} or @samp{cutting} it and then @dfn{yanking} or
 @samp{pasting} it. You can also use the @b{Cut} or @b{Copy} option from
-the @b{Edit} menu for killing and copying respectively. @xref{Edit menu} 
+the @b{Edit} menu for killing and copying respectively. @xref{Edit menu}, 
 for reviewing the commands for killing text. All the killed text
 in Emacs is recorded in the @dfn{kill ring}. Since there is only one
 kill ring in Emacs, you can kill text in one buffer and yank it in
index 153d0f9..ec54d50 100644 (file)
@@ -2417,7 +2417,7 @@ least one character before it (possibly on a previous line) and output the
 @samp{so} magic cookie on the screen.  (It may also be possible to remove a
 cookie which is not at the beginning of a line by clearing that line.)  The
 @samp{xt} capability also has implications for the use of tab characters,
-but in that regard it is obsolete (@xref{Cursor Motion}).
+but in that regard it is obsolete (@pxref{Cursor Motion}).
 
 @table @samp
 @item so
index db6ac4a..0bc09a7 100644 (file)
@@ -648,8 +648,8 @@ Finding Badly Referenced Nodes
 
 How to Obtain @TeX{}
 
-* New Texinfo Mode Commands::   The updating commands are especially useful.
-* New Commands::                Many newly described @@-commands.
+@c * New Texinfo Mode Commands::   The updating commands are especially useful.
+@c * New Commands::                Many newly described @@-commands.
 @end detailmenu
 @end menu
 
index 9ad5a5f..405dc97 100644 (file)
@@ -972,7 +972,7 @@ are willing to fund the work, please mail to @email{xemacs-beta@@xemacs.org}.
 @node Q1.3.3, Q1.3.4, Q1.3.2, Introduction
 @unnumberedsubsec Q1.3.3: How do I type non-ASCII characters?
 
-See question 3.5.7 (@xref{Q3.5.7}) in part 3 of this FAQ.
+See question 3.5.7 (@pxref{Q3.5.7}) in part 3 of this FAQ.
 
 @node Q1.3.4, Q1.3.5, Q1.3.3, Introduction
 @unnumberedsubsec Q1.3.4: Can XEmacs messages come out in a different language?
@@ -1877,7 +1877,7 @@ your system administrator.
 
 It's possible that a core file didn't get produced, in which case you're
 out of luck.  Go complain to your system administrator and tell him not
-to disable core files by default.  Also @xref{Q2.1.15} for tips and
+to disable core files by default.  Also @xref{Q2.1.15}, for tips and
 techniques for dealing with a debugger.
 
 When making a problem report make sure that:
@@ -3304,7 +3304,7 @@ For the FAQ example you could use:
 
 This is fine if you only need a few functions within the lambda body.
 If you're doing more it's cleaner to define a separate function as in
-question 3.5.3 (@xref{Q3.5.3}).
+question 3.5.3 (@pxref{Q3.5.3}).
 
 @node Q3.5.2, Q3.5.3, Q3.5.1, Customization
 @unnumberedsubsec Q3.5.2: How can I stop down-arrow from adding empty lines to the bottom of my buffers?
@@ -3338,7 +3338,7 @@ Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynarik} and
 
 The key point is that you can only bind simple functions to keys; you
 can not bind a key to a function that you're also passing arguments to.
-(@xref{Q3.5.1} for a better answer).
+(@pxref{Q3.5.1} for a better answer).
 
 @node Q3.5.4, Q3.5.5, Q3.5.3, Customization
 @unnumberedsubsec Q3.5.4: Globally binding @kbd{Delete}?
@@ -4413,7 +4413,7 @@ Set @code{user-mail-address} to @samp{gail.gurman@@sybase.com} or
 
 VM supports MIME natively.
 
-You probably want to use the Tools for MIME (tm).  @xref{Q4.3.2} for
+You probably want to use the Tools for MIME (tm).  @xref{Q4.3.2}, for
 details.
 
 @email{trey@@cs.berkeley.edu, Trey Jackson} has an Emacs & MIME web page at
@@ -5291,7 +5291,7 @@ been put in @file{bin/hppa1.1-hp-hpux9.0}?
 
 @quotation
 The standard TeX modes leave much to be desired, and are somewhat
-leniently maintained.  Serious TeX users use AUC TeX (@xref{Q4.7.1}).
+leniently maintained.  Serious TeX users use AUC TeX (@pxref{Q4.7.1}).
 @end quotation
 
 @node Q5.0.20, Q5.1.1, Q5.0.19, Miscellaneous
@@ -5740,7 +5740,7 @@ versions.
 @node Q5.2.3, Q5.2.4, Q5.2.2, Miscellaneous
 @unnumberedsubsec Q5.2.3: What's NAS, how do I get it?
 
-@xref{Q2.0.3} for an explanation of the @dfn{Network Audio System}.
+@xref{Q2.0.3}, for an explanation of the @dfn{Network Audio System}.
 
 @node Q5.2.4, Q5.3.1, Q5.2.3, Miscellaneous
 @unnumberedsubsec Q5.2.4: Sunsite sounds don't play.
index f5c20ce..28abc84 100644 (file)
@@ -2206,7 +2206,7 @@ Emacs frames accept the following resources:
 
 @table @asis
 @item @code{geometry} (class @code{Geometry}): string
-Initial geometry for the frame.  @xref{Geometry Resources} for a
+Initial geometry for the frame.  @xref{Geometry Resources}, for a
 complete discussion of how this works.
 
 @item @code{iconic} (class @code{Iconic}): boolean
index 6be81fc..743b699 100644 (file)
@@ -440,7 +440,7 @@ and some previously-unassigned modifier bit.
 @section Representation of Characters
 
 This section briefly discusses how characters are represented in Emacs
-buffers.  @xref{Key Sequences} for information on representing key
+buffers.  @xref{Key Sequences}, for information on representing key
 sequences to create key bindings. 
 
   ASCII graphic characters in Emacs buffers are displayed with their
@@ -481,8 +481,8 @@ names}.  More information on this subject will appear in the @i{XEmacs
 Lisp Reference Manual}.
 
   The bindings between keys and functions are recorded in various tables
-called @dfn{keymaps}.  @xref{Key Bindings} for more information on key
-sequences you can bind commands to.  @xref{Keymaps} for information on
+called @dfn{keymaps}.  @xref{Key Bindings}, for more information on key
+sequences you can bind commands to.  @xref{Keymaps}, for information on
 creating keymaps.
 
   When we say  ``@kbd{C-n} moves down vertically one line'' we are
index 0d18a13..5600ae1 100644 (file)
@@ -115,7 +115,7 @@ If you are using XEmacs under the X window system, you can set
 the variable @code{zmacs-regions} to @code{t}. This makes the current
 region (defined by point and mark) highlight and makes it available as
 the X clipboard selection, which means you can use the menu bar items on
-it.  @xref{Active Regions} for more information.
+it.  @xref{Active Regions}, for more information.
  
   @kbd{C-x C-x} is also useful when you are satisfied with the location of
 point but want to move the mark; do @kbd{C-x C-x} to put point there and
index 7c47974..7b735c7 100644 (file)
@@ -69,8 +69,8 @@ situation, the command is disabled and its name appears faded.  You
 cannot invoke items that are faded.  For example, many commands on the
 @b{Edit} menu appear faded until you select text on which they are to
 operate; after you select a block of text, edit commands are enabled.
-@xref{Mouse Selection} for information on using the mouse to select
-text.  @xref{Using X Selections} for related information.
+@xref{Mouse Selection}, for information on using the mouse to select
+text.  @xref{Using X Selections}, for related information.
 
 There are also @kbd{M-x} equivalents for each menu item.  To find the
 equivalent for any left-button menu item, do the following:
@@ -398,7 +398,7 @@ menu to your @code{.emacs} file.
 @cindex Buffers menu
 The @b{Buffers} menu provides a selection of up to ten buffers and the
 item @b{List All Buffers}, which provides a Buffer List. @xref{List
-Buffers} for more information.  
+Buffers}, for more information.  
 
 @node Tools Menu
 @subsection The Tools Menu
@@ -417,7 +417,7 @@ there are sub-menus which you will need to select.
 
 The Help Menu gives you access to Emacs Info and provides a menu
 equivalent for each of the choices you have when using @kbd{C-h}. 
-@xref{Help} for more information. 
+@xref{Help}, for more information. 
 
 The Help menu also gives access to UNIX online manual pages via the
 @b{UNIX Manual Page} option.  
index 54ab1b3..35cba95 100644 (file)
@@ -125,7 +125,7 @@ architecture it runs on and typically reside under
 During installation, all of these directories may also reside directly
 under @file{<root>}, because that is where they are in the XEmacs tarball.
 
-If XEmacs runs with the @code{-debug-paths} option (@xref{Command
+If XEmacs runs with the @code{-debug-paths} option (@pxref{Command
 Switches}), it will print the values of these variables, hopefully
 aiding in debugging any problems which come up.
 
index 25bc2e2..ea9011f 100644 (file)
@@ -1,3 +1,26 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
+1999-03-03  Gleb Arshinov  <gleb@cs.stanford.edu>
+
+       * xemacs.mak (HAVE_XFACE): fix for building without X-Face support
+       provided by Brent B. Powers <bpowers@ms.com>.
+
+       * xemacs.mak (CONFIG_ERROR): Misc error detection for build with
+       X-Face.
+
+1999-02-01  Gleb Arshinov  <gleb@cs.stanford.edu>
+
+       * README: Document the X-Face build option.
+
+       * compface.mak: New file
+         Makefile for building compface library under MSVC.  Build
+         library only, not executables.  Should be extended to build
+         executables and propagated upstream, if possible.
+
+       * xemacs.mak: Link in X-Face/Compface for NT native build.
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
index 42c2293..a6e5c95 100644 (file)
--- a/nt/README
+++ b/nt/README
@@ -58,10 +58,15 @@ If you want to build for native GUI:
 4.  If you want JPEG support grab the latest version of jpegsrc (jpeg-6b at 
     time of writing) and read the README for details on how to build it.
 
-5.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
+5.  If you want X-Face support, grab compface distribution and unpack it 
+    somewhere.  Copy nt\compface.mak from xemacs sources to the compface
+    directory.  cd to that directory and build libcompface with 
+    'nmake -f compface.mak'.
+
+6.  cd to the nt subdirectory of the xemacs distribution and build xemacs:
     `nmake install -f xemacs.mak`, but read on before hitting Enter.
 
-6.  If you're building with XPM support, add this to the nmake command line:
+7.  If you're building with XPM support, add this to the nmake command line:
        HAVE_XPM=1 XPM_DIR="x:\location\of\your\xpm\sources"
     and similarly for JPEG and TIFF support.
 
@@ -72,7 +77,10 @@ If you want to build for native GUI:
     If you want to build with GIF support, add this to the nmake command line:
        HAVE_GIF=1
 
-7.  By default, XEmacs will expect to find its packages in the subdirectories
+    If you're building with X-Face support, add this to the nmake command line:
+    HAVE_XFACE=1 COMPFACE_DIR="x:\location\of\your\compface\sources"
+
+8.  By default, XEmacs will expect to find its packages in the subdirectories
     "site-packages", "mule-packages" and "xemacs-packages" under the package
     prefix directory "c:\Program Files\XEmacs". If you want it to look for
     these subdirectories elsewhere, add this to the nmake command line:
@@ -81,19 +89,19 @@ If you want to build for native GUI:
     after you've built XEmacs, delete the file .\obj\emacs.obj and rebuild with
     the new PACKAGE_PREFIX.
 
-8.  By default, XEmacs will be installed in directories under the directory
+9.  By default, XEmacs will be installed in directories under the directory
     "c:\Program Files\XEmacs\XEmacs-21.0". If you want to install it elsewhere,
     add this to the nmake command line:
        INSTALL_DIR="x:\your\installation\directory"
 
-9.  Now you can press Enter. nmake will build temacs, the DOC file, update the
+10. Now you can press Enter. nmake will build temacs, the DOC file, update the
     elc's, dump xemacs and install the relevant files in the directories under
     the installation directory. Unless you set INSTALL_DIR above, the file that
     you should run to start XEmacs will be installed as 
     "c:\Program Files\XEmacs\XEmacs-21.0\i386-pc-win32\runemacs.exe". You may
     want to create a shortcut to that file from your Desktop or Start Menu.
 
-10. The build process always creates debugging and "Source Browser" information
+11. The build process always creates debugging and "Source Browser" information
     in the source tree for use with MS DevStudio. If you actually want to debug
     XEmacs you should run XEmacs from the source directory instead of from the
     installation directory. You should probably also build a debug version of
diff --git a/nt/compface.mak b/nt/compface.mak
new file mode 100644 (file)
index 0000000..5ff065f
--- /dev/null
@@ -0,0 +1,40 @@
+#
+# Compface Makefile for Microsoft NMAKE
+# Based on xpm.mak
+#
+
+!if !defined(DEBUG_XEMACS)
+DEBUG_XEMACS=0
+!endif
+
+!if $(DEBUG_XEMACS)
+OPT=-Od -Zi
+!else
+OPT=-O2 -G5 -Zi
+!endif
+
+WARN_CPP_FLAGS = -W3
+
+#MSVC uses string.h, not strings.h
+DEFINES=-DSYSV32
+
+CC=cl
+CFLAGS=-nologo -DFOR_MSW $(WARN_CPP_FLAGS) $(OPT) $(INCLUDES) $(DEFINES) -Fo$@ -c
+
+OBJS= arith.obj file.obj compress.obj gen.obj uncompface.obj
+
+# nmake rule
+
+.SUFFIXES:
+.SUFFIXES:     .c
+
+.c.obj:
+       $(CC) $(CFLAGS) $< -Fo$@
+
+
+# targets
+
+all: libcompface.lib
+
+libcompface.lib: $(OBJS)
+       link.exe -lib -nologo -out:$@ $(OBJS)
index 4743085..fe7f4dd 100644 (file)
@@ -94,6 +94,9 @@ HAVE_TIFF=0
 !if !defined(HAVE_JPEG)
 HAVE_JPEG=0
 !endif
+!if !defined(HAVE_XFACE)
+HAVE_XFACE=0
+!endif
 !if !defined(HAVE_GIF)
 HAVE_GIF=1
 !endif
@@ -199,6 +202,14 @@ CONFIG_ERROR=1
 !message Specified JPEG directory does not contain "$(JPEG_DIR)\libjpeg.lib"
 CONFIG_ERROR=1
 !endif
+!if $(HAVE_MSW) && $(HAVE_XFACE) && !defined(COMPFACE_DIR)
+!message Please specify root directory for your COMPFACE installation: COMPFACE_DIR=path
+CONFIG_ERROR=1
+!endif
+!if $(HAVE_MSW) && $(HAVE_XFACE) && !exist("$(COMPFACE_DIR)\libcompface.lib")
+!message Specified COMPFACE directory does not contain "$(COMPFACE_DIR)\libcompface.lib"
+CONFIG_ERROR=1
+!endif
 !if $(HAVE_MSW) && $(HAVE_TOOLBARS) && !$(HAVE_XPM)
 !error Toolbars require XPM support
 CONFIG_ERROR=1
@@ -254,6 +265,9 @@ USE_INDEXED_LRECORD_IMPLEMENTATION=$(GUNG_HO)
 !if $(HAVE_JPEG)
 !message Compiling in support for JPEG images.
 !endif
+!if $(HAVE_XFACE)
+!message Compiling in support for X-Face message headers.
+!endif
 !if $(HAVE_TOOLBARS)
 !message Compiling in support for toolbars.
 !endif
@@ -345,6 +359,11 @@ MSW_DEFINES=$(MSW_DEFINES) -DHAVE_JPEG
 MSW_INCLUDES=$(MSW_INCLUDES) -I"$(JPEG_DIR)"
 MSW_LIBS=$(MSW_LIBS) "$(JPEG_DIR)\libjpeg.lib"
 !endif
+!if $(HAVE_XFACE)
+MSW_DEFINES=$(MSW_DEFINES) -DHAVE_XFACE
+MSW_INCLUDES=$(MSW_INCLUDES) -I"$(COMPFACE_DIR)"
+MSW_LIBS=$(MSW_LIBS) "$(COMPFACE_DIR)\libcompface.lib"
+!endif
 !if $(HAVE_TOOLBARS)
 MSW_DEFINES=$(MSW_DEFINES) -DHAVE_TOOLBARS
 MSW_TOOLBAR_SRC=$(XEMACS)\src\toolbar.c $(XEMACS)\src\toolbar-msw.c
index 44798e3..2dc99df 100644 (file)
@@ -1,3 +1,71 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
+1999-02-16  Kazuyuki IENAGA  <ienaga@jsys.co.jp>
+
+       * device-x.c: Support to find best visual without flashing.
+
+1999-03-02  Paul Keusemann  <pkeusem@visi.com>
+
+       * database.c (berkdb_map): Add flags argument to cursor call (must
+         be 0 according to docs) required for Berkeley DB 2.6.4 and later.
+
+1999-03-03  Martin Buchholz  <martin@xemacs.org>
+
+       * hash.c:
+       * hash.h:
+       General cleanup.  Get free-hook.c working again.
+       Remove unused functions:
+       make_strings_hash_table, copy_hash, expand_hash_table.
+
+       * malloc.c:
+       * mem-limits.h:
+       Always use new ANSI-style function prototypes.
+
+       * unexalpha.c (unexec): Never use implicit int.
+
+       * sgiplay.c (close_sound_file):
+       (play_sound_file):
+       (restore_audio_port):
+       (play_sound_data):
+       (audio_initialize):
+       (play_internal):
+       (drain_audio_port):
+       (write_mulaw_8_chunk):
+       (write_linear_chunk):
+       (write_linear_32_chunk):
+       (initialize_audio_port):
+       (open_audio_port):
+       (set_channels):
+       (set_output_format):
+       (adjust_audio_volume):
+       (get_current_volumes):
+       (parse_snd_header):
+       Always use new ANSI-style function prototypes.
+       Use unistd.h for missing prototypes.
+
+       * unexelfsgi.c (round_up):
+       (find_section):
+       (unexec): Always use new ANSI-style function prototypes
+
+       * elhash.c (struct Lisp_Hash_Table): rename golden to golden_ratio
+
+       * console.h (struct console_methods): Always use full ANSI prototypes
+
+       * emacs.c (__sti__iflPNGFile_c___): Always use full ANSI prototypes
+
+1999-03-02  Andy Piper  <andy@xemacs.org>
+
+       * event-stream.c (init_event_stream): make sure native mswindows
+       gets an appropriate event loop.
+
+1999-02-22  Andy Piper  <andy@xemacs.org>
+
+       * frame-msw.c (mswindows_make_frame_visible): use SW_SHOW rather
+       than SW_SHOWNORMAL to prevent resizing of maximised frames.
+       (mswindows_raise_frame): remove comment.
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
@@ -12,7 +80,7 @@
 
 1999-02-17  Kazuo Oishi <oishi@ae.agr.yamaguchi-u.ac.jp>
 
-       * glyphs-x.c (cononvert_EImage_to_XImage): correct 
+       * glyphs-x.c (cononvert_EImage_to_XImage): correct
        bytes per pixel counting.
 
 1999-02-15  Andy Piper  <andy@xemacs.org>
 
 1999-02-02  Gleb Arshinov  <gleb@cs.stanford.edu>
 
-       * process-nt.c (nt_send_process): 
+       * process-nt.c (nt_send_process):
        Fix for process-send-region/process-send-string breaking when size
        of the input > 128 chars: change maximum chunk size for process
        stream from 512 to 128, thus guaranteeing that ntpipe_shove_writer
        * bytecode.c (funcall_compiled_function): Call
        UNBIND_TO_GCPRO instead of UNBIND_TO_GCPRO_VARIABLES_ONLY.
 
-       * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY): 
+       * backtrace.h (UNBIND_TO_GCPRO_VARIABLES_ONLY):
        #ifdef 0 out unused macro.
 
 1999-01-27  Martin Buchholz  <martin@xemacs.org>
 
        * glyphs-eimage.c (gif_instantiate): Correct handling of
        interlaced gifs to avoid writing past the end of the eimage
-       buffer. 
+       buffer.
 
 1999-01-13  Hrvoje Niksic  <hniksic@srce.hr>
 
 
 1999-01-01    <martin@xemacs.org>
 
-       * device-x.c (Fx_set_font_path): 
+       * device-x.c (Fx_set_font_path):
        Add proper cast to permit compilation under C++.
 
-       * buffer.c (directory_is_current_directory): 
+       * buffer.c (directory_is_current_directory):
        Add proper casts to permit compilation under C++.
 
 1998-12-30  Damon Lipparelli  <lipp@primus.com>
 
 1998-12-29  Martin Buchholz  <martin@xemacs.org>
 
-       * file-coding.c (decode_coding_iso2022): 
+       * file-coding.c (decode_coding_iso2022):
        - Prevent crash when decoding ISO7/Lock detected files
        - the usual martin fiddling
 
          Removed compiler warning by removing bss_data variable.
 
 1998-12-18  Jim Radford  <radford@robby.caltech.edu>
+
        * device-x.c (Fx_set_font_path, Fx_get_font_path): New functions
        so that packages that distribute their own fonts can access them.
 
 
 1998-12-28  Martin Buchholz  <martin@xemacs.org>
 
-       * editfns.c (get_home_directory): 
+       * editfns.c (get_home_directory):
        (user-home-directory): Simplify.
-       
 
-       * callproc.c (child_setup): 
+
+       * callproc.c (child_setup):
        - Environment variables were being passed to inferior processes
          using internal encoding.
        - Convert to external encoding.
        - Remove one unneeded GCPRO.
 
        * buffer.h (initial_directory):
-       * buffer.c (init_initial_directory): 
+       * buffer.c (init_initial_directory):
        - use correct conversions between internal and external format.
        (directory_is_current_directory): new function
        (init_buffer): convert initial_directory to internal format.
        (lrecord_type_index): replace abort() with more readable assert().
 
        (reset_lcrecord_stats): remove.
-       (sweep_lcrecords_1): 
+       (sweep_lcrecords_1):
        - replace call to reset_lcrecord_stats() with call to xzero().
 
 1998-12-27  Martin Buchholz  <martin@xemacs.org>
index 034c585..9bcc81c 100644 (file)
@@ -89,7 +89,7 @@ struct console_methods
   void (*mark_device_method) (struct device *, void (*)(Lisp_Object));
   void (*asynch_device_change_method) (void);
   Lisp_Object (*device_system_metrics_method) (struct device *, enum device_metrics);
-  unsigned int (*device_implementation_flags_method) ();
+  unsigned int (*device_implementation_flags_method) (void);
 
   /* frame methods */
   Lisp_Object *device_specific_frame_props;
index 350f9af..8450333 100644 (file)
@@ -501,7 +501,11 @@ berkdb_map (Lisp_Database *db, Lisp_Object func)
   {
     DBC *dbcp;
 
+#if DB_VERSION_MAJOR > 2 || DB_VERSION_MINOR >=6
+    status = dbp->cursor (dbp, NULL, &dbcp, 0);
+#else
     status = dbp->cursor (dbp, NULL, &dbcp);
+#endif   
     for (status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_FIRST);
         status == 0;
         status = dbcp->c_get (dbcp, &keydatum, &valdatum, DB_NEXT))
index d26e1c9..a720c62 100644 (file)
@@ -11,7 +11,7 @@ console-msw.o: $(LISP_H) conslots.h console-msw.h console.h events.h lisp-disuni
 device-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-stream.h console.h device.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h systime.h toolbar.h
 dialog-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h opaque.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
 dired-msw.o: $(LISP_H) buffer.h bufslots.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h ndir.h nt.h regex.h symeval.h symsinit.h sysdir.h sysfile.h sysproc.h systime.h
-event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h systime.h syswait.h toolbar.h
+event-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console-tty.h console.h device.h dragdrop.h events-mod.h events.h faces.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h lstream.h menubar-msw.h mule-charset.h objects-msw.h objects.h process.h redisplay.h scrollbar-msw.h scrollbar.h specifier.h symeval.h symsinit.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h syswait.h toolbar.h
 frame-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h events.h faces.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h mule-charset.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h systime.h toolbar.h window.h winslots.h
 glyphs-msw.o: $(LISP_H) buffer.h bufslots.h conslots.h console-msw.h console.h device.h elhash.h faces.h file-coding.h frame.h frameslots.h glyphs-msw.h glyphs.h gui.h imgproc.h insdel.h lisp-disunion.h lisp-union.h lrecord.h lstream.h mule-charset.h objects-msw.h objects.h opaque.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h sysfile.h toolbar.h window.h winslots.h
 gui-msw.o: $(LISP_H) conslots.h console-msw.h console.h device.h elhash.h frame.h frameslots.h glyphs.h gui.h lisp-disunion.h lisp-union.h lrecord.h redisplay.h scrollbar.h specifier.h symeval.h symsinit.h toolbar.h
index c9ded38..b7531bd 100644 (file)
@@ -317,6 +317,136 @@ Dynarr_add_validified_lisp_string (char_dynarr *cda, Lisp_Object str)
   validify_resource_component (Dynarr_atp (cda, Dynarr_length (cda) - len), len);
 }
 
+#if 0
+/* compare visual info for qsorting */
+static int
+x_comp_visual_info (const void *elem1, const void *elem2)
+{
+  XVisualInfo *left, *right;
+
+  left = (XVisualInfo *)elem1;
+  right = (XVisualInfo *)elem2;
+
+  if ( left == NULL )
+    return -1;
+  if ( right == NULL )
+    return 1;
+
+  if ( left->depth > right->depth ) {
+    return 1;
+  }
+  else if ( left->depth == right->depth ) {
+    if ( left->colormap_size > right->colormap_size )
+      return 1;
+    if ( left->class > right->class )
+      return 1;
+    else if ( left->class < right->class )
+      return -1;
+    else
+      return 0;
+  }
+  else {
+    return -1;
+  }
+
+}
+#endif /* if 0 */
+
+#define XXX_IMAGE_LIBRARY_IS_SOMEWHAT_BROKEN
+static Visual *
+x_try_best_visual_class (Screen *screen, int scrnum, int visual_class)
+{
+  Display *dpy = DisplayOfScreen (screen);
+  XVisualInfo vi_in;
+  XVisualInfo *vi_out = NULL;
+  int out_count;
+
+  vi_in.class = visual_class;
+  vi_in.screen = scrnum;
+  vi_out = XGetVisualInfo (dpy, (VisualClassMask | VisualScreenMask),
+                          &vi_in, &out_count);
+  if ( vi_out )
+    {
+      int i, best;
+      Visual *visual;
+      for (i = 0, best = 0; i < out_count; i++)
+       /* It's better if it's deeper, or if it's the same depth with
+          more cells (does that ever happen?  Well, it could...)
+          NOTE: don't allow pseudo color to get larger than 8! */
+       if (((vi_out [i].depth > vi_out [best].depth) ||
+            ((vi_out [i].depth == vi_out [best].depth) &&
+             (vi_out [i].colormap_size > vi_out [best].colormap_size)))
+#ifdef XXX_IMAGE_LIBRARY_IS_SOMEWHAT_BROKEN
+           /* For now, the image library doesn't like PseudoColor visuals
+              of depths other than 1 or 8.  Depths greater than 8 only occur
+              on machines which have TrueColor anyway, so probably we'll end
+              up using that (it is the one that `Best' would pick) but if a
+              PseudoColor visual is explicitly specified, pick the 8 bit one.
+           */
+           && (visual_class != PseudoColor ||
+               vi_out [i].depth == 1 ||
+               vi_out [i].depth == 8)
+#endif
+             
+           /* SGI has 30-bit deep visuals.  Ignore them. 
+                (We only have 24-bit data anyway.)
+              */
+           && (vi_out [i].depth <= 24)
+           )
+         best = i;
+      visual = vi_out[best].visual;
+      XFree ((char *) vi_out);
+      return visual;
+    }
+  else
+    return 0;
+}
+
+static int
+x_get_visual_depth (Display *dpy, Visual *visual)
+{
+  XVisualInfo vi_in;
+  XVisualInfo *vi_out;
+  int out_count, d;
+
+  vi_in.visualid = XVisualIDFromVisual (visual);
+  vi_out = XGetVisualInfo (dpy, /*VisualScreenMask|*/VisualIDMask,
+                          &vi_in, &out_count);
+  if (! vi_out) abort ();
+  d = vi_out [0].depth;
+  XFree ((char *) vi_out);
+  return d;
+}
+
+static Visual *
+x_try_best_visual (Display *dpy, int scrnum)
+{
+  Visual *visual = NULL;
+  Screen *screen = ScreenOfDisplay (dpy, scrnum);
+  if ((visual = x_try_best_visual_class (screen, scrnum, TrueColor))
+      && x_get_visual_depth (dpy, visual) >= 16 )
+    return visual;
+  if ((visual = x_try_best_visual_class (screen, scrnum, PseudoColor)))
+    return visual;
+  if ((visual = x_try_best_visual_class (screen, scrnum, TrueColor)))
+    return visual;
+#ifdef DIRECTCOLOR_WORKS
+  if ((visual = x_try_best_visual_class (screen, scrnum, DirectColor)))
+    return visual;
+#endif
+
+  visual = DefaultVisualOfScreen (screen);
+  if ( x_get_visual_depth (dpy, visual) >= 8 )
+    return visual;
+
+  if ((visual = x_try_best_visual_class (screen, scrnum, StaticGray)))
+    return visual;
+  if ((visual = x_try_best_visual_class (screen, scrnum, GrayScale)))
+    return visual;
+  return DefaultVisualOfScreen (screen);
+}
+
+
 static void
 x_init_device (struct device *d, Lisp_Object props)
 {
@@ -333,6 +463,8 @@ x_init_device (struct device *d, Lisp_Object props)
   int depth = 8;               /* shut up the compiler */
   Colormap cmap;
   int screen;
+  /* */
+  int best_visual_found = 0;
 
   XSETDEVICE (device, d);
   display = DEVICE_CONNECTION (d);
@@ -347,7 +479,7 @@ x_init_device (struct device *d, Lisp_Object props)
    * Break apart the old XtOpenDisplay call into XOpenDisplay and
    * XtDisplayInitialize so we can figure out whether there
    * are any XEmacs resources in the resource database before
-   * we intitialize Xt.  This is so we can automagically support
+   * we initialize Xt.  This is so we can automagically support
    * both `Emacs' and `XEmacs' application classes.
    */
   slow_down_interrupts ();
@@ -487,8 +619,13 @@ x_init_device (struct device *d, Lisp_Object props)
       }
     if (visual == NULL)
       {
-       visual = DefaultVisual (dpy, screen);
-       depth  = DefaultDepth  (dpy, screen);
+       /*
+         visual = DefaultVisual(dpy, screen);
+         depth = DefaultDepth(dpy, screen);
+       */
+       visual = x_try_best_visual (dpy, screen);
+       depth = x_get_visual_depth (dpy, visual);
+       best_visual_found = (visual != DefaultVisual (dpy, screen));
       }
 
     /* If we've got the same visual as the default and it's PseudoColor,
@@ -509,10 +646,17 @@ x_init_device (struct device *d, Lisp_Object props)
       }
     else
       {
-       /* We have to create a matching colormap anyway...
-          ### think about using standard colormaps (need the Xmu libs?) */
-       cmap = XCreateColormap (dpy, RootWindow(dpy, screen), visual, AllocNone);
-       XInstallColormap (dpy, cmap);
+       if ( best_visual_found )
+         {
+           cmap = XCreateColormap (dpy,  RootWindow (dpy, screen), visual, AllocNone);
+         }
+       else
+         {
+           /* We have to create a matching colormap anyway...
+              ### think about using standard colormaps (need the Xmu libs?) */
+           cmap = XCreateColormap(dpy, RootWindow(dpy, screen), visual, AllocNone);
+           XInstallColormap(dpy, cmap);
+         }
       }
   }
 
index e956a2f..686f78f 100644 (file)
@@ -47,7 +47,7 @@ struct Lisp_Hash_Table
   size_t rehash_count;
   double rehash_size;
   double rehash_threshold;
-  size_t golden;
+  size_t golden_ratio;
   hash_table_hash_function_t hash_function;
   hash_table_test_function_t test_function;
   hentry *hentries;
@@ -66,7 +66,7 @@ typedef struct Lisp_Hash_Table Lisp_Hash_Table;
 
 #define HASH_CODE(key, ht)                                                     \
   (((((ht)->hash_function ? (ht)->hash_function (key) : LISP_HASH (key))       \
-     * (ht)->golden)                                                           \
+     * (ht)->golden_ratio)                                                             \
     % (ht)->size))
 
 #define KEYS_EQUAL_P(key1, key2, testfun) \
@@ -399,7 +399,7 @@ compute_hash_table_derived_values (Lisp_Hash_Table *ht)
 {
   ht->rehash_count = (size_t)
     ((double) ht->size * hash_table_rehash_threshold (ht));
-  ht->golden = (size_t)
+  ht->golden_ratio = (size_t)
     ((double) ht->size * (.6180339887 / (double) sizeof (Lisp_Object)));
 }
 
index d648161..e022334 100644 (file)
@@ -3131,6 +3131,7 @@ The configured initial path for info documentation.
  * cores on us when re-started from the dumped executable.
  * This will have to go for 21.1  -- OG.
  */
+void __sti__iflPNGFile_c___(void);
 void __sti__iflPNGFile_c___()
 {
 }
index 52e8006..b97a408 100644 (file)
@@ -5389,8 +5389,9 @@ init_event_stream (void)
          {
            /* For TTY's, use the Xt event loop if we can; it allows
               us to later open an X connection. */
-#if defined (HAVE_MS_WINDOWS) && defined (HAVE_MSG_SELECT) \
-           && !defined (DEBUG_TTY_EVENT_STREAM)
+#if defined (HAVE_MS_WINDOWS) && (!defined (HAVE_TTY) \
+                || (defined (HAVE_MSG_SELECT) \
+           && !defined (DEBUG_TTY_EVENT_STREAM)))
            init_event_mswindows_late ();
 #elif defined (HAVE_X_WINDOWS) && !defined (DEBUG_TTY_EVENT_STREAM)
            init_event_Xt_late ();
index 5a88a67..653f53f 100644 (file)
@@ -311,7 +311,7 @@ mswindows_make_frame_visible (struct frame *f)
   if (f->iconified)
     ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_RESTORE);
   else
-    ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOWNORMAL);
+    ShowWindow (FRAME_MSWINDOWS_HANDLE(f), SW_SHOW);
   f->visible = 1;
   f->iconified = 0;
 }
@@ -463,7 +463,6 @@ static void
 mswindows_raise_frame (struct frame *f)
 {
   BringWindowToTop (FRAME_MSWINDOWS_HANDLE(f));
-  /* XXX Should we do SetWindowForeground too ? */
 }
 
 static void
index d7714af..8c6a0ea 100644 (file)
@@ -20,53 +20,18 @@ Boston, MA 02111-1307, USA.  */
 
 /* Synched up with: Not in FSF. */
 
-#ifdef emacs
 #include <config.h>
 #include "lisp.h"
-
-#define NULL_ENTRY (LISP_TO_VOID (Qnil))
-
-#else /* !emacs */
-
-#define NULL_ENTRY ((void *) 1)
-
-#endif /* !emacs */
-
 #include "hash.h"
 
+#define NULL_ENTRY ((void *) 0xdeadbeef)
+
 #define COMFORTABLE_SIZE(size) (21 * (size) / 16)
 
-/* Knuth volume 3, hash functions */
-#define WORD_HASH_4(word) (0x9c406b55 * (word))
-#define WORD_HASH_8(word) (0x9c406b549c406b55 * (word))
+#define KEYS_DIFFER_P(old, new, testfun) \
+  (((old) != (new)) && (!(testfun) || !(testfun) ((old),(new))))
 
-static CONST hash_size_t
-primes [] =
-{
-  13,
-  29, 37, 47, 59, 71, 89, 107, 131, 163, 197, 239, 293, 353, 431, 521, 631,
-  761, 919, 1103, 1327, 1597, 1931, 2333, 2801, 3371, 4049, 4861, 5839, 7013,
-  8419, 10103, 12143, 14591, 17519, 21023, 25229, 30293, 36353, 43627, 52361,
-  62851, 75431, 90523, 108631, 130363, 156437, 187751, 225307, 270371, 324449,
-  389357, 467237, 560689, 672827, 807403, 968897, 1162687, 1395263, 1674319,
-  2009191, 2411033, 2893249
-};
-
-#if 0
-static CONST hash_size_t
-primes [] =
-{
- 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031, 1361,
- 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783, 19219, 24989,
- 32491, 42257, 54941, 71429, 92861, 120721, 156941, 204047, 265271,
- 344857, 448321, 582821, 757693, 985003, 1280519, 1664681, 2164111,
- 2813353, 3657361, 4754591, 6180989, 8035301, 10445899, 13579681,
- 17653589, 22949669, 29834603, 38784989, 50420551, 65546729, 85210757,
- 110774011, 144006217, 187208107, 243370577, 316381771, 411296309,
- 534685237, 695090819, 903618083, 1174703521, 1527114613, 1985248999,
- 2580823717, 3355070839, 4361592119
-};
-#endif
+static void rehash (hentry *harray, struct hash_table *ht, hash_size_t size);
 
 unsigned long
 memory_hash (CONST void *xv, size_t size)
@@ -87,16 +52,32 @@ memory_hash (CONST void *xv, size_t size)
   return h;
 }
 
-/* We've heard of binary search. */
-static hash_size_t
-prime_size (hash_size_t size)
+/* Return a suitable size for a hash table, with at least SIZE slots. */
+static size_t
+hash_table_size (size_t requested_size)
 {
+  /* Return some prime near, but greater than or equal to, SIZE.
+     Decades from the time of writing, someone will have a system large
+     enough that the list below will be too short... */
+  static CONST size_t primes [] =
+  {
+    19, 29, 41, 59, 79, 107, 149, 197, 263, 347, 457, 599, 787, 1031,
+    1361, 1777, 2333, 3037, 3967, 5167, 6719, 8737, 11369, 14783,
+    19219, 24989, 32491, 42257, 54941, 71429, 92861, 120721, 156941,
+    204047, 265271, 344857, 448321, 582821, 757693, 985003, 1280519,
+    1664681, 2164111, 2813353, 3657361, 4754591, 6180989, 8035301,
+    10445899, 13579681, 17653589, 22949669, 29834603, 38784989,
+    50420551, 65546729, 85210757, 110774011, 144006217, 187208107,
+    243370577, 316381771, 411296309, 534685237, 695090819, 903618083,
+    1174703521, 1527114613, 1985248999, 2580823717UL, 3355070839UL
+  };
+  /* We've heard of binary search. */
   int low, high;
   for (low = 0, high = countof (primes) - 1; high - low > 1;)
     {
       /* Loop Invariant: size < primes [high] */
       int mid = (low + high) / 2;
-      if (primes [mid] < size)
+      if (primes [mid] < requested_size)
        low = mid;
       else
        high = mid;
@@ -104,50 +85,47 @@ prime_size (hash_size_t size)
   return primes [high];
 }
 
-static void rehash (hentry *harray, struct hash_table *ht, hash_size_t size);
-
-#define KEYS_DIFFER_P(old, new, testfun) \
-  (((old) != (new)) && (!(testfun) || !(testfun) ((old),(new))))
-
 CONST void *
 gethash (CONST void *key, struct hash_table *hash_table, CONST void **ret_value)
 {
-  hentry *harray = hash_table->harray;
-  hash_table_test_function test_function = hash_table->test_function;
-  hash_size_t size = hash_table->size;
-  unsigned int hcode_initial =
-    hash_table->hash_function ?
-    hash_table->hash_function (key) :
-    (unsigned long) key;
-  unsigned int hcode = hcode_initial % size;
-  hentry *e = &harray [hcode];
-  CONST void *e_key = e->key;
-
   if (!key)
     {
       *ret_value = hash_table->zero_entry;
       return (void *) hash_table->zero_set;
     }
-
-  if (e_key ?
-      KEYS_DIFFER_P (e_key, key, test_function) :
-      e->contents == NULL_ENTRY)
+  else
     {
-      size_t h2 = size - 2;
-      unsigned int incr = 1 + (hcode_initial % h2);
-      do
-        {
-          hcode += incr; if (hcode >= size) hcode -= size;
-          e = &harray [hcode];
-          e_key = e->key;
-        }
-      while (e_key ?
-             KEYS_DIFFER_P (e_key, key, test_function) :
-             e->contents == NULL_ENTRY);
+      hentry *harray = hash_table->harray;
+      hash_table_test_function test_function = hash_table->test_function;
+      hash_size_t size = hash_table->size;
+      unsigned int hcode_initial =
+       hash_table->hash_function ?
+       hash_table->hash_function (key) :
+       (unsigned long) key;
+      unsigned int hcode = hcode_initial % size;
+      hentry *e = &harray [hcode];
+      CONST void *e_key = e->key;
+
+      if (e_key ?
+         KEYS_DIFFER_P (e_key, key, test_function) :
+         e->contents == NULL_ENTRY)
+       {
+         size_t h2 = size - 2;
+         unsigned int incr = 1 + (hcode_initial % h2);
+         do
+           {
+             hcode += incr; if (hcode >= size) hcode -= size;
+             e = &harray [hcode];
+             e_key = e->key;
+           }
+         while (e_key ?
+                KEYS_DIFFER_P (e_key, key, test_function) :
+                e->contents == NULL_ENTRY);
+       }
+
+      *ret_value = e->contents;
+      return e->key;
     }
-
-  *ret_value = e->contents;
-  return e->key;
 }
 
 void
@@ -170,7 +148,7 @@ struct hash_table*
 make_hash_table (hash_size_t size)
 {
   struct hash_table *hash_table = xnew_and_zero (struct hash_table);
-  hash_table->size = prime_size (COMFORTABLE_SIZE (size));
+  hash_table->size = hash_table_size (COMFORTABLE_SIZE (size));
   hash_table->harray = xnew_array (hentry, hash_table->size);
   clrhash (hash_table);
   return hash_table;
@@ -187,71 +165,14 @@ make_general_hash_table (hash_size_t size,
   return hash_table;
 }
 
-#if 0 /* unused strings code */
-struct hash_table *
-make_strings_hash_table (hash_size_t size)
-{
-  return make_general_hash_table (size, string_hash, string_eq);
-}
-
-/* from base/generic-hash.cc, and hence from Dragon book, p436 */
-unsigned long
-string_hash (CONST void *xv)
-{
-  unsigned int h = 0;
-  unsigned CONST char *x = (unsigned CONST char *) xv;
-
-  if (!x) return 0;
-
-  while (*x != 0)
-    {
-      unsigned int g;
-      h = (h << 4) + *x++;
-      if ((g = h & 0xf0000000) != 0)
-       h = (h ^ (g >> 24)) ^ g;
-    }
-
-  return h;
-}
-
-static int
-string_eq (CONST void *s1, CONST void *s2)
-{
-  return s1 && s2 ? !strcmp ((CONST char *) s1, (CONST char *) s2) : s1 == s2;
-}
-#endif /* unused strings code */
-
-void
-copy_hash (struct hash_table *dest, struct hash_table *src)
-{
-  if (dest->size != src->size)
-    {
-      xfree (dest->harray);
-
-      dest->size = src->size;
-      dest->harray = xnew_array (hentry, dest->size);
-    }
-  dest->fullness      = src->fullness;
-  dest->zero_entry    = src->zero_entry;
-  dest->zero_set      = src->zero_set;
-  dest->hash_function = src->hash_function;
-  dest->test_function = src->test_function;
-  memcpy (dest->harray, src->harray, sizeof (hentry) * dest->size);
-}
-
 static void
 grow_hash_table (struct hash_table *hash_table, hash_size_t new_size)
 {
   hash_size_t old_size   = hash_table->size;
   hentry     *old_harray = hash_table->harray;
-  hentry     *new_harray;
-
-  new_size = prime_size (new_size);
-
-  new_harray = xnew_array (hentry, new_size);
 
-  hash_table->size   = new_size;
-  hash_table->harray = new_harray;
+  hash_table->size   = hash_table_size (new_size);
+  hash_table->harray = xnew_array (hentry, hash_table->size);
 
   /* do the rehash on the "grown" table */
   {
@@ -267,94 +188,72 @@ grow_hash_table (struct hash_table *hash_table, hash_size_t new_size)
 }
 
 void
-expand_hash_table (struct hash_table *hash_table, hash_size_t needed_size)
-{
-  hash_size_t size = hash_table->size;
-  hash_size_t comfortable_size = COMFORTABLE_SIZE (needed_size);
-  if (size < comfortable_size)
-    grow_hash_table (hash_table, comfortable_size + 1);
-}
-
-void
 puthash (CONST void *key, void *contents, struct hash_table *hash_table)
 {
-  hash_table_test_function test_function = hash_table->test_function;
-  hash_size_t size     = hash_table->size;
-  hash_size_t fullness = hash_table->fullness;
-  hentry *harray;
-  CONST void *e_key;
-  hentry *e;
-  unsigned int hcode_initial =
-    hash_table->hash_function ?
-    hash_table->hash_function (key) :
-    (unsigned long) key;
-  unsigned int hcode;
-  unsigned int incr = 0;
-  size_t h2;
-  CONST void *oldcontents;
-
   if (!key)
     {
       hash_table->zero_entry = contents;
       hash_table->zero_set = 1;
-      return;
     }
-
-  if (size < (1 + COMFORTABLE_SIZE (fullness)))
-    {
-      grow_hash_table (hash_table, size + 1);
-      size = hash_table->size;
-      fullness = hash_table->fullness;
-    }
-
-  harray= hash_table->harray;
-  h2 = size - 2;
-
-  hcode = hcode_initial % size;
-
-  e_key = harray [hcode].key;
-  if (e_key && KEYS_DIFFER_P (e_key, key, test_function))
-    {
-      h2 = size - 2;
-      incr = 1 + (hcode_initial % h2);
-      do
-        {
-          hcode += incr;
-          if (hcode >= size) hcode -= size;
-          e_key = harray [hcode].key;
-        }
-      while (e_key && KEYS_DIFFER_P (e_key, key, test_function));
-    }
-  oldcontents = harray [hcode].contents;
-  harray [hcode].key = key;
-  harray [hcode].contents = contents;
-  /* If the entry that we used was a deleted entry,
-     check for a non deleted entry of the same key,
-     then delete it. */
-  if (!e_key && oldcontents == NULL_ENTRY)
+  else
     {
-      if (!incr) incr = 1 + ((unsigned long) key % h2);
-
-      do
-        {
-          hcode += incr; if (hcode >= size) hcode -= size;
-          e = &harray [hcode];
-          e_key = e->key;
-        }
-      while (e_key ?
-             KEYS_DIFFER_P (e_key, key, test_function):
-             e->contents == NULL_ENTRY);
-
-      if (e_key)
-        {
-          e->key = 0;
-          e->contents = NULL_ENTRY;
-        }
+      hash_table_test_function test_function = hash_table->test_function;
+      hash_size_t size = hash_table->size;
+      hentry *harray   = hash_table->harray;
+      unsigned int hcode_initial =
+       hash_table->hash_function ?
+       hash_table->hash_function (key) :
+       (unsigned long) key;
+      unsigned int hcode = hcode_initial % size;
+      size_t h2 = size - 2;
+      unsigned int incr = 1 + (hcode_initial % h2);
+      CONST void *e_key = harray [hcode].key;
+      CONST void *oldcontents;
+
+      if (e_key && KEYS_DIFFER_P (e_key, key, test_function))
+       {
+         do
+           {
+             hcode += incr; if (hcode >= size) hcode -= size;
+             e_key = harray [hcode].key;
+           }
+         while (e_key && KEYS_DIFFER_P (e_key, key, test_function));
+       }
+      oldcontents = harray [hcode].contents;
+      harray [hcode].key = key;
+      harray [hcode].contents = contents;
+      /* If the entry that we used was a deleted entry,
+        check for a non deleted entry of the same key,
+        then delete it. */
+      if (!e_key && oldcontents == NULL_ENTRY)
+       {
+         hentry *e;
+
+         do
+           {
+             hcode += incr; if (hcode >= size) hcode -= size;
+             e = &harray [hcode];
+             e_key = e->key;
+           }
+         while (e_key ?
+                KEYS_DIFFER_P (e_key, key, test_function):
+                e->contents == NULL_ENTRY);
+
+         if (e_key)
+           {
+             e->key = 0;
+             e->contents = NULL_ENTRY;
+           }
+       }
+
+      /* only increment the fullness when we used up a new hentry */
+      if (!e_key || KEYS_DIFFER_P (e_key, key, test_function))
+       {
+         hash_size_t comfortable_size = COMFORTABLE_SIZE (++(hash_table->fullness));
+         if (hash_table->size < comfortable_size)
+           grow_hash_table (hash_table, comfortable_size + 1);
+       }
     }
-
-  /* only increment the fullness when we used up a new hentry */
-  if (!e_key || KEYS_DIFFER_P (e_key, key, test_function))
-    hash_table->fullness++;
 }
 
 static void
@@ -372,45 +271,46 @@ rehash (hentry *harray, struct hash_table *hash_table, hash_size_t size)
 void
 remhash (CONST void *key, struct hash_table *hash_table)
 {
-  hentry *harray = hash_table->harray;
-  hash_table_test_function test_function = hash_table->test_function;
-  hash_size_t size = hash_table->size;
-  unsigned int hcode_initial =
-    (hash_table->hash_function) ?
-    (hash_table->hash_function (key)) :
-    ((unsigned long) key);
-  unsigned int hcode = hcode_initial % size;
-  hentry *e = &harray [hcode];
-  CONST void *e_key = e->key;
-
   if (!key)
     {
       hash_table->zero_entry = 0;
       hash_table->zero_set = 0;
-      return;
-    }
-
-  if (e_key ?
-      KEYS_DIFFER_P (e_key, key, test_function) :
-      e->contents == NULL_ENTRY)
-    {
-      size_t h2 = size - 2;
-      unsigned int incr = 1 + (hcode_initial % h2);
-      do
-        {
-          hcode += incr; if (hcode >= size) hcode -= size;
-          e = &harray [hcode];
-          e_key = e->key;
-        }
-      while (e_key?
-             KEYS_DIFFER_P (e_key, key, test_function):
-             e->contents == NULL_ENTRY);
     }
-  if (e_key)
+  else
     {
-      e->key = 0;
-      e->contents = NULL_ENTRY;
-      /* Note: you can't do fullness-- here, it breaks the world. */
+      hentry *harray = hash_table->harray;
+      hash_table_test_function test_function = hash_table->test_function;
+      hash_size_t size = hash_table->size;
+      unsigned int hcode_initial =
+       (hash_table->hash_function) ?
+       (hash_table->hash_function (key)) :
+       ((unsigned long) key);
+      unsigned int hcode = hcode_initial % size;
+      hentry *e = &harray [hcode];
+      CONST void *e_key = e->key;
+
+      if (e_key ?
+         KEYS_DIFFER_P (e_key, key, test_function) :
+         e->contents == NULL_ENTRY)
+       {
+         size_t h2 = size - 2;
+         unsigned int incr = 1 + (hcode_initial % h2);
+         do
+           {
+             hcode += incr; if (hcode >= size) hcode -= size;
+             e = &harray [hcode];
+             e_key = e->key;
+           }
+         while (e_key?
+                KEYS_DIFFER_P (e_key, key, test_function):
+                e->contents == NULL_ENTRY);
+       }
+      if (e_key)
+       {
+         e->key = 0;
+         e->contents = NULL_ENTRY;
+         /* Note: you can't do fullness-- here, it breaks the world. */
+       }
     }
 }
 
index a2dbec5..e55eb85 100644 (file)
@@ -50,8 +50,6 @@ make_general_hash_table (hash_size_t size,
                        hash_table_hash_function hash_function,
                        hash_table_test_function test_function);
 
-struct hash_table *make_strings_hash_table (hash_size_t size);
-
 /* Clear HASH-TABLE. A freshly created hash table is already cleared up. */
 void clrhash (struct hash_table *hash_table);
 
@@ -73,9 +71,6 @@ typedef int (*maphash_function) (CONST void* key, void* contents, void* arg);
 typedef int (*remhash_predicate) (CONST void* key, CONST void* contents,
                                   void* arg);
 
-typedef void (*generic_hash_table_op) (struct hash_table *hash_table,
-                                      void *arg1, void *arg2, void *arg3);
-
 /* Call MF (key, contents, arg) for every entry in HASH-TABLE */
 void maphash (maphash_function mf, struct hash_table *hash_table, void* arg);
 
@@ -83,11 +78,4 @@ void maphash (maphash_function mf, struct hash_table *hash_table, void* arg);
 void map_remhash (remhash_predicate predicate,
                  struct hash_table *hash_table, void *arg);
 
-/* Copy all the entries from SRC into DEST -- DEST is modified as needed
-   so it is as big as SRC. */
-void copy_hash (struct hash_table *dest, struct hash_table *src);
-
-/* Make sure HASH-TABLE can hold at least NEEDED_SIZE entries */
-void expand_hash_table (struct hash_table *hash_table, hash_size_t needed_size);
-
 #endif /* _HASH_H_ */
index c34403c..9f41290 100644 (file)
@@ -198,7 +198,7 @@ extern char *sbrk ();
 extern void *sbrk ();
 #endif /* __STDC__ */
 
-extern char *start_of_data ();
+extern char *start_of_data (void);
 
 #ifdef BSD
 #ifndef DATA_SEG_BITS
index 8dd2c49..f3d7226 100644 (file)
@@ -100,7 +100,7 @@ typedef char *POINTER;
 typedef unsigned long SIZE;
 #endif
 
-extern POINTER start_of_data ();
+extern POINTER start_of_data (void);
 #ifdef DATA_SEG_BITS
 #define EXCEEDS_LISP_PTR(ptr) \
   (((EMACS_UINT) (ptr) & ~DATA_SEG_BITS) >> VALBITS)
index 4fac17c..222a3e6 100644 (file)
@@ -24,12 +24,13 @@ Boston, MA 02111-1307, USA.  */
 #include <config.h>
 #include "lisp.h"
 
-#include <audio.h>
+#include <string.h>
 #include <sys/file.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <fcntl.h>
-#include <string.h>
+#include <unistd.h>
+#include <audio.h>
 #include <netinet/in.h>                /* for ntohl() etc. */
 
 /* Configuration options */
@@ -201,17 +202,14 @@ static int parse_snd_header (void*, long, AudioContext);
   (!strncmp(".snd", (char *)(address), 4))
 
 static Lisp_Object
-close_sound_file (closure)
-     Lisp_Object closure;
+close_sound_file (Lisp_Object closure)
 {
   close (XINT (closure));
   return Qnil;
 }
 
 void
-play_sound_file (sound_file, volume)
-     char * sound_file;
-     int volume;
+play_sound_file (char *sound_file, int volume)
 {
   int count = specpdl_depth ();
   int input_fd;
@@ -255,8 +253,7 @@ saved_device_state[] = {
 };
 
 static Lisp_Object
-restore_audio_port (closure)
-     Lisp_Object closure;
+restore_audio_port (Lisp_Object closure)
 {
   Lisp_Object * contents = XVECTOR_DATA (closure);
   saved_device_state[1] = XINT (contents[0]);
@@ -267,10 +264,7 @@ restore_audio_port (closure)
 }
 
 void
-play_sound_data (data, length, volume)
-     unsigned char * data;
-     int length;
-     int volume;
+play_sound_data (unsigned char *data, int length, int volume)
 {
   int count = specpdl_depth ();
   AudioContext ac;
@@ -284,10 +278,7 @@ play_sound_data (data, length, volume)
 }
 
 static AudioContext
-audio_initialize (data, length, volume)
-     unsigned char * data;
-     int length;
-     int volume;
+audio_initialize (unsigned char *data, int length, int volume)
 {
   Lisp_Object audio_port_state[3];
   static AudioContextRec desc;
@@ -331,10 +322,7 @@ audio_initialize (data, length, volume)
 }
 
 static void
-play_internal (data, length, ac)
-     unsigned char * data;
-     int length;
-     AudioContext ac;
+play_internal (unsigned char *data, int length, AudioContext ac)
 {
   unsigned char * limit;
   if (ac == (AudioContext) 0)
@@ -357,8 +345,7 @@ play_internal (data, length, ac)
 }
 
 static void
-drain_audio_port (ac)
-     AudioContext ac;
+drain_audio_port (AudioContext ac)
 {
   while (ALgetfilled (ac->ac_port) > 0)
     sginap(1);
@@ -374,8 +361,7 @@ drain_audio_port (ac)
 #include "libst.h"
 #else /* not USE_MULAW_DECODE_TABLE */
 static int
-st_ulaw_to_linear (u)
-     int u;
+st_ulaw_to_linear (int u)
 {
   static CONST short table[] = {0,132,396,924,1980,4092,8316,16764};
   int u1 = ~u;
@@ -387,10 +373,7 @@ st_ulaw_to_linear (u)
 #endif /* not USE_MULAW_DECODE_TABLE */
 
 static void
-write_mulaw_8_chunk (buffer, chunklimit, ac)
-     void * buffer;
-     void * chunklimit;
-     AudioContext ac;
+write_mulaw_8_chunk (void *buffer, void *chunklimit, AudioContext ac)
 {
   unsigned char * data = (unsigned char *) buffer;
   unsigned char * limit = (unsigned char *) chunklimit;
@@ -408,10 +391,7 @@ write_mulaw_8_chunk (buffer, chunklimit, ac)
 
 #if HAVE_LINEAR
 static void
-write_linear_chunk (data, limit, ac)
-     void * data;
-     void * limit;
-     AudioContext ac;
+write_linear_chunk (void *data, void *limit, AudioContext ac)
 {
   unsigned n_samples;
 
@@ -426,10 +406,7 @@ write_linear_chunk (data, limit, ac)
 
 #if HAVE_LINEAR_32
 static void
-write_linear_32_chunk (buffer, chunklimit, ac)
-     void * buffer;
-     void * chunklimit;
-     AudioContext ac;
+write_linear_32_chunk (void *buffer, void *chunklimit, AudioContext ac)
 {
   long * data = (long *) buffer;
   long * limit = (long *) chunklimit;
@@ -447,8 +424,7 @@ write_linear_32_chunk (buffer, chunklimit, ac)
 #endif /* HAVE_LINEAR */
 \f
 static AudioContext
-initialize_audio_port (desc)
-     AudioContext desc;
+initialize_audio_port (AudioContext desc)
 {
   /* we can't use the same port for mono and stereo */
   static AudioContextRec mono_port_state
@@ -515,9 +491,7 @@ initialize_audio_port (desc)
 }
 
 static int
-open_audio_port (return_ac, desc)
-     AudioContext return_ac;
-     AudioContext desc;
+open_audio_port (AudioContext return_ac, AudioContext desc)
 {
   ALconfig config = ALnewconfig();
   long params[2];
@@ -547,9 +521,7 @@ open_audio_port (return_ac, desc)
 }
 
 static int
-set_channels (config, nchan)
-     ALconfig config;
-     unsigned nchan;
+set_channels (ALconfig config, unsigned int nchan)
 {
   switch (nchan)
     {
@@ -566,9 +538,7 @@ set_channels (config, nchan)
 }
 
 static int
-set_output_format (config, format)
-     ALconfig config;
-     AudioFormat format;
+set_output_format (ALconfig config, AudioFormat format)
 {
   long samplesize;
   long old_samplesize;
@@ -609,8 +579,7 @@ set_output_format (config, format)
 }
 
 static void
-adjust_audio_volume (device)
-     AudioDevice device;
+adjust_audio_volume (AudioDevice device)
 {
   long params[4];
   params[0] = AL_LEFT_SPEAKER_GAIN;
@@ -621,8 +590,7 @@ adjust_audio_volume (device)
 }
 
 static void
-get_current_volumes (device)
-     AudioDevice device;
+get_current_volumes (AudioDevice device)
 {
   long params[4];
   params[0] = AL_LEFT_SPEAKER_GAIN;
@@ -678,10 +646,7 @@ typedef enum
 SNDFormatCode;
 
 static int
-parse_snd_header (header, length, desc)
-     void * header;
-     long length;
-     AudioContext desc;
+parse_snd_header (void *header, long length, AudioContext desc)
 {
 #define hp ((SNDSoundStruct *) (header))
   long limit;
index 3a1a12f..a8045f0 100644 (file)
@@ -210,7 +210,7 @@ unexec (char *new_name, char *a_name,
   nhdr.aout.bsize = 0;
   if (entry_address == 0)
     {
-      extern DEFAULT_ENTRY_ADDRESS ();
+      extern int DEFAULT_ENTRY_ADDRESS (void);
       nhdr.aout.entry = (unsigned long)DEFAULT_ENTRY_ADDRESS;
     }
   else
index a76a9f6..ae661ce 100644 (file)
@@ -541,9 +541,8 @@ typedef unsigned char byte;
 
 /* Round X up to a multiple of Y.  */
 
-int
-round_up (x, y)
-     int x, y;
+static int
+round_up (int x, int y)
 {
   int rem = x % y;
   if (rem == 0)
@@ -559,13 +558,12 @@ round_up (x, y)
    if NOERROR is 0; we return -1 if NOERROR is nonzero.  */
 
 static int
-find_section (name, section_names, file_name, old_file_h, old_section_h, noerror)
-     char *name;
-     char *section_names;
-     char *file_name;
-     l_Elf_Ehdr *old_file_h;
-     l_Elf_Shdr *old_section_h;
-     int noerror;
+find_section (char *name,
+             char *section_names,
+             char *file_name,
+             l_Elf_Ehdr *old_file_h,
+             l_Elf_Shdr *old_section_h,
+             int noerror)
 {
   int idx;
 
@@ -600,9 +598,11 @@ find_section (name, section_names, file_name, old_file_h, old_section_h, noerror
  *
  */
 int
-unexec (new_name, old_name, data_start, bss_start, entry_address)
-     char *new_name, *old_name;
-     uintptr_t data_start, bss_start, entry_address;
+unexec (char *new_name,
+       char *old_name,
+       uintptr_t data_start,
+       uintptr_t bss_start,
+       uintptr_t entry_address)
 {
   extern uintptr_t bss_end;
   int new_file, old_file, new_file_size;
index b440f1d..a975fc5 100644 (file)
@@ -1,3 +1,7 @@
+1999-03-05  XEmacs Build Bot <builds@cvs.xemacs.org>
+
+       * XEmacs 21.2.12 is released
+
 1999-03-01  XEmacs Build Bot <builds@cvs.xemacs.org>
 
        * XEmacs 21.2.11 is released
index 535a620..83342a3 100644 (file)
@@ -1,8 +1,8 @@
 #!/bin/sh
 emacs_major_version=21
 emacs_minor_version=2
-emacs_beta_version=11
-xemacs_codename="Calliope"
+emacs_beta_version=12
+xemacs_codename="Clio"
 infodock_major_version=4
 infodock_minor_version=0
 infodock_build_version=1