From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============7973864960013752747==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by adrian xemacsweb/Download ... Date: 2005-11-01 15:48:12 +0000 Message-ID: <20051101154812.15280.qmail@sunsite.dk> --===============7973864960013752747== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: adrian = Date: 05/11/01 16:48:12 Modified: xemacsweb/Download ChangeLog elispPackages.content Log: xemacsweb: Update to canonical upstream cperl-mode URL = -------------------- ChangeLog entries follow: -------------------- = Download/ChangeLog addition: = 2005-11-01 Adrian Aichner = * elispPackages.content: Update to canonical upstream cperl-mode URL. = Architecting-XEmacs/ChangeLog addition: = 2005-11-01 Adrian Aichner = * index.content: Update to canonical upstream cperl-mode URL. = Revision Changes Path 1.55 +4 -0 XEmacs/xemacsweb/Architecting-XEmacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Architecting-XEmacs/ChangeLog,v retrieving revision 1.54 retrieving revision 1.55 diff -u -p -r1.54 -r1.55 --- ChangeLog 2005/10/25 20:43:17 1.54 +++ ChangeLog 2005/11/01 15:47:54 1.55 @@ -1,3 +1,7 @@ +2005-11-01 Adrian Aichner + + * index.content: Update to canonical upstream cperl-mode URL. + 2005-10-25 Adrian Aichner = * index.content: Update link to upstream cperl-mode. = = = 1.39 +1 -1 XEmacs/xemacsweb/Architecting-XEmacs/index.content = Index: index.content =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Architecting-XEmacs/index.cont= ent,v retrieving revision 1.38 retrieving revision 1.39 diff -u -p -r1.38 -r1.39 --- index.content 2005/10/25 20:43:17 1.38 +++ index.content 2005/11/01 15:47:55 1.39 @@ -205,7 +205,7 @@ Ben Wing
  • GNAT Project - Ada Mode
  • Heiko Muenkel - hm--html-menus
  • Herbert Damp= el - battery.el info-look.el
  • -
  • Ilya = Zakharevich - (cperl-mode)
  • +
  • Ilya Zakharevich - (= cperl-mode)
  • Jari Aalto - Tiny = Tools
  • Kazu Yamamoto - Mew
  • Ken S= tevens - ispell.el interface to ispell
  • = = = 1.173 +5 -0 XEmacs/xemacsweb/Download/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Download/ChangeLog,v retrieving revision 1.172 retrieving revision 1.173 diff -u -p -r1.172 -r1.173 --- ChangeLog 2005/10/27 23:12:19 1.172 +++ ChangeLog 2005/11/01 15:48:12 1.173 @@ -1,3 +1,8 @@ +2005-11-01 Adrian Aichner + + * elispPackages.content: Update to canonical upstream cperl-mode + URL. + 2005-10-28 Adrian Aichner = * index.content: Fix html errors. = = = 1.71 +1 -1 XEmacs/xemacsweb/Download/elispPackages.content = Index: elispPackages.content =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/Download/elispPackages.content= ,v retrieving revision 1.70 retrieving revision 1.71 diff -u -p -r1.70 -r1.71 --- elispPackages.content 2005/10/25 20:43:03 1.70 +++ elispPackages.content 2005/11/01 15:48:12 1.71 @@ -58,7 +58,7 @@ Adrian Aichner adding index, link mendin
  • antlr-mode
  • CC Mode
  • Erlang Mode<= /li> -
  • Ilya = Zakharevich's Elisp files (cperl-mode)
  • +
  • Ilya Zakharevich's E= lisp files (cperl-mode)
  • Verilog Mode
  • VHDL = Mode
  • Etags - turns symbols in= souce code into hyperlinks
  • = = =20 --===============7973864960013752747==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============0930322435271711719==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-01 22:51:00 +0000 Message-ID: <20051101225100.16082.qmail@sunsite.dk> --===============0930322435271711719== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/01 23:51:00 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1331 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1330 retrieving revision 1.1331 diff -u -p -r1.1330 -r1.1331 --- version.sh 2005/10/31 22:51:20 1.1330 +++ version.sh 2005/11/01 22:50:59 1.1331 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051031)" +xemacs_extra_name=3D"(+CVS-20051101)" xemacs_release_date=3D"2005-10-26" = = =20 --===============0930322435271711719==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============8064692690166964708==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/lisp ... Date: 2005-11-02 03:26:54 +0000 Message-ID: <20051102032654.25113.qmail@sunsite.dk> --===============8064692690166964708== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/02 04:26:54 Modified: xemacs/lisp ChangeLog diagnose.el Log: 2005-11-02 Marcus Crestani = * diagnose.el: Rename `show-lrecord-stats' to `show-object-memory-usage-stats', to keep in sync with the C sources. = Revision Changes Path 1.691 +6 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.690 retrieving revision 1.691 diff -u -p -r1.690 -r1.691 --- ChangeLog 2005/10/26 15:13:47 1.690 +++ ChangeLog 2005/11/02 03:26:51 1.691 @@ -1,3 +1,9 @@ +2005-11-02 Marcus Crestani + + * diagnose.el: Rename `show-lrecord-stats' to + `show-object-memory-usage-stats', to keep in sync with the C + sources. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.5 +5 -5 XEmacs/xemacs/lisp/diagnose.el = Index: diagnose.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/diagnose.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- diagnose.el 2005/05/15 16:37:56 1.4 +++ diagnose.el 2005/11/02 03:26:52 1.5 @@ -166,12 +166,12 @@ grandtotal)))) = =0C -(defun show-lrecord-stats () - "Show statistics about lrecord usage in XEmacs." +(defun show-object-memory-usage-stats () + "Show statistics about object memeory usage in XEmacs." (interactive) (garbage-collect) - (let ((buffer "*lrecord statistics*") - (plist (lrecord-stats)) + (let ((buffer "*object memory usage statistics*") + (plist (object-memory-usage-stats)) (fmt "%-30s%10s%10s\n") (grandtotal 0) begin) @@ -233,7 +233,7 @@ (save-excursion (set-buffer buffer) (setq begin (point)) - (princ "Allocated with new allocator:\n") + (princ "Allocated with lisp allocator:\n") (show-stats "\\(.*\\)-storage$") (princ "\n\n") (setq begin (point)) = = =20 --===============8064692690166964708==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============3975226525384554275==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/src ... Date: 2005-11-02 03:30:21 +0000 Message-ID: <20051102033021.26180.qmail@sunsite.dk> --===============3975226525384554275== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/02 04:30:21 Modified: xemacs/src ChangeLog realpath.c Log: * realpath.c (readlink_or_correct_case): Mark parameter as unused. = Revision Changes Path 1.880 +4 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.879 retrieving revision 1.880 diff -u -p -r1.879 -r1.880 --- ChangeLog 2005/10/29 07:18:19 1.879 +++ ChangeLog 2005/11/02 03:30:17 1.880 @@ -1,3 +1,7 @@ +2005-11-02 Marcus Crestani + + * realpath.c (readlink_or_correct_case): Mark parameter as unused. + 2005-10-29 Steve Youngs = * unexelf.c (unexec): Fix data types. = = = 1.22 +4 -0 XEmacs/xemacs/src/realpath.c = Index: realpath.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/realpath.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 --- realpath.c 2005/01/28 02:36:26 1.21 +++ realpath.c 2005/11/02 03:30:19 1.22 @@ -80,7 +80,11 @@ abs_start (const Ibyte *name) = static int readlink_or_correct_case (const Ibyte *name, Ibyte *buf, Bytecount size, +#ifndef WIN32_ANY + Boolint UNUSED (links_only)) +#else Boolint links_only) +#endif { #ifndef WIN32_ANY return qxe_readlink (name, buf, (size_t) size); = = =20 --===============3975226525384554275==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============2886473962935112740==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/modules/canna .cvsignore Date: 2005-11-02 03:33:18 +0000 Message-ID: <20051102033318.26287.qmail@sunsite.dk> --===============2886473962935112740== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/02 04:33:18 Added: xemacs/modules/canna .cvsignore Log: * canna/.cvsignore: shut down cvs warnings = Revision Changes Path 1.49 +4 -0 XEmacs/xemacs/modules/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.48 retrieving revision 1.49 diff -u -p -r1.48 -r1.49 --- ChangeLog 2005/10/26 15:14:13 1.48 +++ ChangeLog 2005/11/02 03:33:10 1.49 @@ -1,3 +1,7 @@ +2005-11-02 Marcus Crestani + + * canna/.cvsignore: New. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.1 XEmacs/xemacs/modules/canna/.cvsignore = Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.ell *_i.c GNUmakefile Makefile Makefile.in = = =20 --===============2886473962935112740==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============3641712563505771859==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/text-modes ... Date: 2005-11-02 07:02:18 +0000 Message-ID: <20051102070218.24172.qmail@sunsite.dk> --===============3641712563505771859== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 08:02:18 Modified: packages/xemacs-packages/text-modes ChangeLog htmlize.el Log: Sync savehist and htmlize with upstream. = Revision Changes Path 1.206 +4 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Chan= geLog,v retrieving revision 1.205 retrieving revision 1.206 diff -u -p -r1.205 -r1.206 --- ChangeLog 2005/10/16 17:19:17 1.205 +++ ChangeLog 2005/11/02 07:02:13 1.206 @@ -1,3 +1,7 @@ +2005-11-02 Norbert Koch + + * savehist.el: Sync with upstream version 22. + 2005-10-16 Norbert Koch = * Makefile (VERSION): XEmacs package 2.26 released. = = = 1.3 +319 -153 XEmacs/packages/xemacs-packages/edit-utils/savehist.= el = Index: savehist.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/save= hist.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- savehist.el 1999/11/27 20:49:59 1.2 +++ savehist.el 2005/11/02 07:02:14 1.3 @@ -1,57 +1,56 @@ -;;; savehist.el --- Save minibuffer history +;;; savehist.el --- Save minibuffer history. = -;; Copyright (c) 1997 Free Software Foundation +;; Copyright (C) 1997,2005 Free Software Foundation = ;; Author: Hrvoje Niksic ;; Keywords: minibuffer -;; Version: 0.4 +;; Version: 22 = -;; This file is part of XEmacs. +;; This file is part of GNU Emacs. = -;; XEmacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation; either version 2, or (at your option) ;; any later version. = -;; XEmacs is distributed in the hope that it will be useful, +;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. = ;; You should have received a copy of the GNU General Public License -;; along with XEmacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; along with GNU Emacs; see the file COPYING. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = -;;; Synched up with: not in FSF - ;;; Commentary: = ;; Many editors (e.g. Vim) have the feature of saving minibuffer ;; history to an external file after exit. This package provides the -;; same feature in Emacs. When Emacs is about the exit, -;; `savehist-save' will dump the contents of various minibuffer -;; histories (as determined by `savehist-history-variables') to a save -;; file (`~/.emacs-history' by default). Although the package was -;; designed for saving the minibuffer histories, any variables can be -;; saved that way. +;; same feature in Emacs. When set up, it saves recorded minibuffer +;; histories to a file (`~/.emacs-history' by default). Additional +;; variables may be specified by customizing +;; `savehist-additional-variables'. = -;; To use savehist, put the following to `~/.emacs': +;; To use savehist, turn on savehist-mode by putting the following in +;; `~/.emacs': ;; -;; (require 'savehist) -;; (savehist-load) - -;; Be sure to have `savehist.el' in a directory that is in your -;; load-path, and byte-compile it. +;; (savehist-mode 1) +;; +;; or with customize: `M-x customize-option RET savehist-mode RET'. +;; +;; You can also explicitly save history with `M-x savehist-save' and +;; load it by loading the `savehist-file' with `M-x load-file'. = -;; This code should work on XEmacs 19.14 and later, as well as GNU -;; Emacs 19.34 and later. It requires the Customize library, however -;; (shipped with XEmacs 19.15 and later, and with GNU Emacs 20.x). +;; If you are using a version of Emacs that does not ship with this +;; package, be sure to have `savehist.el' in a directory that is in +;; your load-path, and to byte-compile it. = -=0C ;;; Code: = (require 'custom) +(eval-when-compile + (require 'cl)) = ;; User variables = @@ -59,147 +58,314 @@ "Save minibuffer history." :group 'minibuffer) = +;;;###autoload +(defcustom savehist-mode nil + "Mode for automatic saving of minibuffer history. +Set this by calling the `savehist-mode' function or using the customize +interface." + :type 'boolean + :set (lambda (symbol value) (savehist-mode (or value 0))) + :initialize 'custom-initialize-default + :require 'savehist + :group 'savehist) = -(defcustom savehist-history-variables - '( - ;; Catch-all minibuffer history - minibuffer-history - ;; File-oriented commands - file-name-history - ;; Regexp-related reads - regexp-history - ;; Searches in minibuffer (via `M-r' and such) - minibuffer-history-search-history - ;; Query replace - query-replace-history - ;; eval-expression (`M-:') - read-expression-history - ;; shell-command (`M-!') - shell-command-history - ;; compile - compile-history - ;; find-tag (`M-.') - find-tag-history - ;; grep - grep-history - ;; Viper stuff - vip-ex-history vip-search-history - vip-replace1-history vip-replace2-history - vip-shell-history vip-search-history - - ;; XEmacs-specific: - ;; Buffer-related commands - buffer-history - ;; Reads of variables and functions - variable-history function-history - ;; Extended commands - read-command-history - - ;; Info, lookup, and bookmark historys - Info-minibuffer-history - Manual-page-minibuffer-history - - ;; GNU Emacs-specific: - ;; Extended commands - extended-command-history) - "*List of symbols to be saved. -Every symbol should refer to a variable. The variable will be saved -only if it is bound and has a non-nil value. Thus it is safe to -specify a superset of the variables a user is expected to want to -save. - -Default value contains minibuffer history variables used by XEmacs, GNU -Emacs and Viper (uh-oh)." - :type '(repeat (symbol :tag "Variable")) - :group 'savehist) - -(defcustom savehist-file "~/.emacs-history" - "*File name to save minibuffer history to. -The minibuffer history is a series of Lisp expressions, which should be -loaded using `savehist-load' from your .emacs. See `savehist-load' for -more details." - :type 'file +(defcustom savehist-save-minibuffer-history t + "*If non-nil, save all recorded minibuffer histories. +If you want to save only specific histories, use `savehist-save-hook' to +modify the value of `savehist-minibuffer-history-variables'." + :type 'boolean :group 'savehist) = -(defcustom savehist-length 100 - "*Maximum length of a minibuffer list. -If set to nil, the length is unlimited." - :type '(choice integer - (const :tag "Unlimited" nil)) +(defcustom savehist-additional-variables () + "*List of additional variables to save. +Each element is a symbol whose value will be persisted across Emacs +sessions that use savehist. The contents of variables should be +printable with the Lisp printer. You don't need to add minibuffer +history variables to this list, all minibuffer histories will be +saved automatically as long as `savehist-save-minibuffer-history' is +non-nil. + +User options should be saved with the customize interface. This +list is useful for saving automatically updated variables that are not +minibuffer histories, such as `compile-command' or `kill-ring'." + :type '(repeat variable) :group 'savehist) = -(defcustom savehist-modes 384 +(defcustom savehist-file + (cond + ;; Backward compatibility with previous versions of savehist. + ((file-exists-p "~/.emacs-history") "~/.emacs-history") + ((and (not (featurep 'xemacs)) (file-directory-p "~/.emacs.d/")) + "~/.emacs.d/history") + ((and (featurep 'xemacs) (file-directory-p "~/.xemacs/")) + "~/.xemacs/history") + ;; For users without `~/.emacs.d/' or `~/.xemacs/'. + (t "~/.emacs-history")) + "*File name where minibuffer history is saved to and loaded from. +The minibuffer history is a series of Lisp expressions loaded +automatically when `savehist-mode' is turned on. See `savehist-mode' +for more details. + +If you want your minibuffer history shared between Emacs and XEmacs, +customize this value and make sure that `savehist-coding-system' is +set to a coding system that exists in both emacsen." + :type 'file + :group 'savehist) + +(defcustom savehist-file-modes #o600 "*Default permissions of the history file. -This is decimal, not octal. The default is 384 (0600 in octal)." +This is decimal, not octal. The default is 384 (0600 in octal). +Set to nil to use the default permissions that Emacs uses, typically +mandated by umask. The default is a bit more restrictive to protect +the user's privacy." :type 'integer :group 'savehist) = +(defcustom savehist-autosave-interval (* 5 60) + "*The interval between autosaves of minibuffer history. +If set to nil, disables timer-based autosaving." + :type 'integer + :group 'savehist) + +(defcustom savehist-save-hook nil + "Hook called by `savehist-save' before saving the variables. +You can use this hook to influence choice and content of variables to +save." + :type 'hook) + +;; This should be capable of representing characters used by Emacs. +;; We prefer UTF-8 over ISO 2022 because it is well-known outside +;; Mule. XEmacs prir to 21.5 had UTF-8 provided by an external +;; package which may not be loaded, which is why we check for version. +(defvar savehist-coding-system (if (and (featurep 'xemacs) + (< emacs-major-version 21) (< emacs-minor-version 5)) + 'iso-2022-8 'utf-8) + "The coding system savehist uses for saving the minibuffer history. +Changing this value while Emacs is running is supported, but considered +unwise, unless you know what you are doing.") + +;; Internal variables. + +(defvar savehist-timer nil) + +(defvar savehist-last-checksum nil) + +(defvar savehist-minibuffer-history-variables nil + "List of minibuffer histories. +The contents of this variable is built while Emacs is running, and saved +along with minibuffer history. You can change its value off +`savehist-save-hook' to influence which variables are saved.") + +;; Coding system without any conversion, used for calculating an +;; internal checksum. Should be as fast as possible, ideally simply +;; exposing the internal representation of buffer text. +(defconst savehist-no-conversion (if (featurep 'xemacs) 'binary 'no-conv= ersion)) + +;; Whether the history has already been loaded. This prevents +;; toggling savehist-mode from destroying existing minibuffer history. +(defvar savehist-loaded nil) + +(when (featurep 'xemacs) + ;; Must declare this under XEmacs, which doesn't have built-in + ;; minibuffer history truncation. + (defvar history-length 100)) =0C -;; Functions +;; Functions. = ;;;###autoload -(defun savehist-load (&optional no-hook) - "Load the minibuffer histories from `savehist-file'. -Unless NO-HOOK is specified, the function will also add the save function -to `kill-emacs-hook', thus ensuring that the minibuffer contents will be -saved before leaving Emacs. - -This function should be normally used from your Emacs init file. Since = it -removes your current minibuffer histories, it is unwise to call it at any -other time." +(defun savehist-mode (arg) + "Toggle savehist-mode. +Positive ARG turns on `savehist-mode'. When on, savehist-mode causes +minibuffer history to be saved periodically and when exiting Emacs. +When turned on for the first time in an Emacs session, it causes the +previous minibuffer history to be loaded from `savehist-file'. + +This mode should normally be turned on from your Emacs init file. +Calling it at any other time replaces your current minibuffer histories, +which is probably undesirable." (interactive "P") - (unless no-hook - (add-hook 'kill-emacs-hook 'savehist-save)) - (load savehist-file t)) - -;;;###autoload -(defun savehist-save () - "Save the histories from `savehist-history-variables' to `savehist-fil= e'. -A variable will be saved if it is bound and non-nil." - (interactive) - (save-excursion - ;; Is it wise to junk `find-file-hooks' just like that? How else - ;; should I avoid font-lock et al.? - (let ((find-file-hooks nil) - (buffer-exists-p (get-file-buffer savehist-file))) - (set-buffer (find-file-noselect savehist-file)) - (unwind-protect + (setq savehist-mode + (if (null arg) + (not savehist-mode) + (> (prefix-numeric-value arg) 0))) + (if (not savehist-mode) + (savehist-uninstall) + (when (and (not savehist-loaded) + (file-exists-p savehist-file)) + (condition-case errvar (progn - (erase-buffer) - (insert - ";; -*- emacs-lisp -*-\n" - ";; Minibuffer history file.\n\n" - ";; This file is automatically generated by `savehist-save'" - " or when\n" - ";; exiting Emacs.\n" - ";; Do not edit. Unless you really want to, that is.\n\n") - (let ((print-length nil) - (print-string-length nil) - (print-level nil) - (print-readably t)) - (dolist (sym savehist-history-variables) - (when (and (boundp sym) - (symbol-value sym)) - (prin1 - `(setq ,sym (quote ,(savehist-delimit (symbol-value sym) - savehist-length))) - (current-buffer)) - (insert ?\n)))) - (save-buffer) - (set-file-modes savehist-file savehist-modes)) - (or buffer-exists-p - (kill-buffer (current-buffer))))))) - -;; If ARG is a list with less than N elements, return it, else return -;; its subsequence of N elements. If N is nil or ARG is not a list, -;; always return ARG. -(defun savehist-delimit (arg n) - (if (and n - (listp arg) - (> (length arg) n)) - (subseq arg 0 n) - arg)) + ;; Don't set coding-system-for-read -- we rely on the + ;; coding cookie to convey that information. That way, if + ;; the user changes the value of savehist-coding-system, + ;; we can still correctly load the old file. + (load savehist-file nil (not (interactive-p))) + (setq savehist-loaded t)) + (error + ;; Don't install the mode if reading failed. Doing so would + ;; effectively destroy the user's data at the next save. + (setq savehist-mode nil) + (savehist-uninstall) + (signal (car errvar) (cdr errvar))))) + (savehist-install)) + ;; Return the new setting. + savehist-mode) +(add-minor-mode 'savehist-mode "") + +(defun savehist-load () + "Obsolete function provided for transition from old versions of savehi= st. +Don't call this from new code, use (savehist-mode 1) instead. + +This function loads the variables stored in `savehist-file' and turns on +savehist-mode. If savehist-file is in the old format that doesn't record +the value of `savehist-minibuffer-history-variables', that value is +deducted from the contents of the file." + (savehist-mode 1) + ;; Old versions of savehist distributed with XEmacs didn't save + ;; savehist-minibuffer-history-variables. If that variable is nil + ;; after loading the file, try to intuit the intended value. + (when (null savehist-minibuffer-history-variables) + (setq savehist-minibuffer-history-variables + (with-temp-buffer + (ignore-errors + (insert-file-contents savehist-file)) + (let ((vars ()) form) + (while (setq form (condition-case nil + (read (current-buffer)) (error nil))) + ;; Each form read is of the form (setq VAR VALUE). + ;; Collect VAR, i.e. (nth form 1). + (push (nth 1 form) vars)) + vars))))) +(make-obsolete 'savehist-load 'savehist-mode) + +(defun savehist-install () + "Hook savehist into Emacs. +Normally invoked by calling `savehist-mode' to set the minor mode. +Installs `savehist-autosave' in `kill-emacs-hook' and on a timer. To +undo this, call `savehist-uninstall'." + (add-hook 'minibuffer-setup-hook 'savehist-minibuffer-hook) + (add-hook 'kill-emacs-hook 'savehist-autosave) + ;; Install an invocation of savehist-autosave on a timer. This + ;; should not cause noticeable delays for users -- savehist-autosave + ;; executes in under 5 ms on my system. + (when (and savehist-autosave-interval + (null savehist-timer)) + (setq savehist-timer + (if (featurep 'xemacs) + (start-itimer + "savehist" 'savehist-autosave savehist-autosave-interval + savehist-autosave-interval) + (run-with-timer savehist-autosave-interval + savehist-autosave-interval 'savehist-autosave))))) + +(defun savehist-uninstall () + "Undo installing savehist. +Normally invoked by calling `savehist-mode' to unset the minor mode." + (remove-hook 'minibuffer-setup-hook 'savehist-minibuffer-hook) + (remove-hook 'kill-emacs-hook 'savehist-autosave) + (when savehist-timer + (if (featurep 'xemacs) + (delete-itimer savehist-timer) + (cancel-timer savehist-timer)) + (setq savehist-timer nil))) + +(defun savehist-save (&optional auto-save) + "Save the values of minibuffer history variables. +Unbound symbols referenced in `savehist-additional-variables' are ignore= d. +If AUTO-SAVE is non-nil, compare the saved contents to the one last save= d, + and don't save the buffer if they are the same." + (interactive) + (with-temp-buffer + (insert + (format ";; -*- mode: emacs-lisp; coding: %s -*-\n" savehist-coding= -system) + ";; Minibuffer history file, automatically generated by `savehist'.= \n\n") + (run-hooks 'savehist-save-hook) + (let ((print-length nil) + (print-string-length nil) + (print-level nil) + (print-readably t) + (print-quoted t)) + ;; Save the minibuffer histories, along with the value of + ;; savehist-minibuffer-history-variables itself. + (when savehist-save-minibuffer-history + (prin1 `(setq savehist-minibuffer-history-variables + ',savehist-minibuffer-history-variables) + (current-buffer)) + (insert ?\n) + (dolist (symbol savehist-minibuffer-history-variables) + (when (boundp symbol) + (let ((value (savehist-trim-history (symbol-value symbol)))) + (when value ; don't save empty histories + (prin1 `(setq ,symbol ',value) (current-buffer)) + (insert ?\n)))))) + ;; Save the additional variables. + (dolist (symbol savehist-additional-variables) + (when (boundp symbol) + (let ((value (symbol-value symbol))) + (when (savehist-printable value) + (prin1 `(setq ,symbol ',value) (current-buffer)) + (insert ?\n)))))) + ;; If autosaving, avoid writing if nothing has changed since the + ;; last write. + (let ((checksum (md5 (current-buffer) nil nil savehist-no-conversion= ))) + (unless (and auto-save (equal checksum savehist-last-checksum)) + ;; Set file-precious-flag when saving the buffer because we + ;; don't want a half-finished write ruining the entire + ;; history. Remember that this is run from a timer and from + ;; kill-emacs-hook, and also that multiple Emacs instances + ;; could write to this file at once. + (let ((file-precious-flag t) + (coding-system-for-write savehist-coding-system)) + (write-region (point-min) (point-max) savehist-file nil + (unless (interactive-p) 'quiet))) + (when savehist-file-modes + (set-file-modes savehist-file savehist-file-modes)) + (setq savehist-last-checksum checksum))))) + +(defun savehist-autosave () + "Save the minibuffer history if it has been modified since the last sa= ve. +Does nothing if savehist-mode is off." + (when savehist-mode + (savehist-save t))) + +(defun savehist-trim-history (value) + ;; Retain only the first history-length items in VALUE. Only used + ;; under XEmacs, which doesn't (yet) implement automatic trimming of + ;; history lists to history-length items. + (if (and (featurep 'xemacs) + (natnump history-length) + (> (length value) history-length)) + ;; Equivalent to `(subseq value 0 history-length)', but doesn't + ;; need cl-extra at run-time. + (loop repeat history-length collect (pop value)) + value)) + +(defun savehist-printable (value) + "Return non-nil if VALUE is printable." + (cond + ;; Quick response for oft-encountered types known to be printable. + ((stringp value)) + ((numberp value)) + ((symbolp value)) + (t + ;; For others, check explicitly. + (with-temp-buffer + (condition-case nil + (let ((print-readably t) (print-level nil)) + ;; Print the value into a buffer... + (prin1 value (current-buffer)) + ;; ...and attempt to read it. + (read (point-min-marker)) + ;; The attempt worked: the object is printable. + t) + ;; The attempt failed: the object is not printable. + (error nil)))))) + +(defun savehist-minibuffer-hook () + (add-to-list 'savehist-minibuffer-history-variables + minibuffer-history-variable)) = (provide 'savehist) +=0C +;; arch-tag: b3ce47f4-c5ad-4ebc-ad02-73aba705cf9f = ;;; savehist.el ends here = = = 1.158 +4 -0 XEmacs/packages/xemacs-packages/text-modes/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/text-modes/Chan= geLog,v retrieving revision 1.157 retrieving revision 1.158 diff -u -p -r1.157 -r1.158 --- ChangeLog 2005/09/21 07:15:44 1.157 +++ ChangeLog 2005/11/02 07:02:17 1.158 @@ -1,3 +1,7 @@ +2005-11-02 Norbert Koch + + * htmlize.el: Sync with upstream version 1.28. + 2005-09-21 Norbert Koch = * Makefile (VERSION): XEmacs package 1.89 released. = = = 1.14 +154 -37 XEmacs/packages/xemacs-packages/text-modes/htmlize.el = Index: htmlize.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/text-modes/html= ize.el,v retrieving revision 1.13 retrieving revision 1.14 diff -u -p -r1.13 -r1.14 --- htmlize.el 2003/11/18 16:31:00 1.13 +++ htmlize.el 2005/11/02 07:02:17 1.14 @@ -1,6 +1,6 @@ ;; htmlize.el -- Convert buffer text and decorations to HTML. = -;; Copyright (C) 1997,1998,1999,2000,2001,2002,2003 Hrvoje Niksic +;; Copyright (C) 1997,1998,1999,2000,2001,2002,2003,2005 Hrvoje Niksic = ;; Author: Hrvoje Niksic ;; Keywords: hypermedia, extensions @@ -70,8 +70,8 @@ = ;; Thanks go to the multitudes of people who have sent reports and ;; contributed comments, suggestions, and fixes. They include Ron -;; Gut, Bob Weiner, Toni Drabik, Peter Breton, Thomas Vogels and many -;; others. +;; Gut, Bob Weiner, Toni Drabik, Peter Breton, Thomas Vogels, Juri +;; Linkov, and many others. = ;; User quotes: "You sir, are a sick, sick, _sick_ person. :)" ;; -- Bill Perry, author of Emacs/W3 @@ -93,7 +93,7 @@ ;; `cl' is loaded. (load "cl-extra"))) = -(defconst htmlize-version "1.16") +(defconst htmlize-version "1.28") = ;; Incantations to make custom stuff work without customize, e.g. on ;; XEmacs 19.14 or GNU Emacs 19.34. @@ -144,7 +144,7 @@ do your own hyperlinkification from html :type 'boolean :group 'htmlize) = -(defcustom htmlize-hyperlink-style "\ +(defcustom htmlize-hyperlink-style " a { color: inherit; background-color: inherit; @@ -159,6 +159,14 @@ do your own hyperlinkification from html :type 'string :group 'htmlize) = +(defcustom htmlize-replace-form-feeds t + "*Non-nil means replace form feed characters in source code with
    . +If this is a string, it additionally specifies the replacement to use. +If you need more elaborate processing, set this to nil and use +htmlize-after-hook." + :type 'boolean + :group 'htmlize) + (defcustom htmlize-html-charset nil "*The charset declared by the resulting HTML documents. When non-nil, causes htmlize to insert the following in the HEAD section @@ -401,7 +409,7 @@ output.") (defun htmlize-protect-string (string) "HTML-protect string, escaping HTML metacharacters and I18N chars." ;; Only protecting strings that actually contain unsafe or non-ASCII - ;; chars removes a lot of unnecessary consing. + ;; chars removes a lot of unnecessary funcalls and consing. (if (not (string-match "[^\r\n\t -%'-;=3D?-~]" string)) string (mapconcat (lambda (char) @@ -423,8 +431,8 @@ output.") (setf (gethash char htmlize-extended-character-cache) (format "&#%d;" char))) ((and (fboundp 'encode-char) - ;; Have to check: encode-char fails for Arabic - ;; and possibly other chars. + ;; Must check if encode-char works for CHAR; + ;; it fails for Arabic and possibly elsewhere. (encode-char char 'ucs)) (setf (gethash char htmlize-extended-character-cache) (format "&#%d;" (encode-char char 'ucs)))) @@ -435,20 +443,56 @@ output.") (char-to-string char))))) string ""))) = +(defconst htmlize-ellipsis "...") +(put-text-property 0 (length htmlize-ellipsis) 'htmlize-ellipsis t htmli= ze-ellipsis) + (defun htmlize-buffer-substring-no-invisible (beg end) ;; Like buffer-substring-no-properties, but don't copy invisible - ;; parts of the region. + ;; parts of the region. Where buffer-substring-no-properties + ;; mandates an ellipsis to be shown, htmlize-ellipsis is inserted. (let ((pos beg) - visible-list invisible next-change) + visible-list invisible show next-change) ;; Iterate over the changes in the `invisible' property and filter ;; out the portions where it's non-nil, i.e. where the text is ;; invisible. (while (< pos end) (setq invisible (get-char-property pos 'invisible) next-change (htmlize-next-change pos 'invisible end)) - (unless invisible - (push (buffer-substring-no-properties pos next-change) - visible-list)) + (if (not (listp buffer-invisibility-spec)) + ;; If buffer-invisibility-spec is not a list, then all + ;; characters with non-nil `invisible' property are visible. + (setq show (not invisible)) + ;; Otherwise, the value of a non-nil `invisible' property can be: + ;; 1. a symbol -- make the text invisible if it matches + ;; buffer-invisibility-spec. + ;; 2. a list of symbols -- make the text invisible if + ;; any symbol in the list matches + ;; buffer-invisibility-spec. + ;; If the match of buffer-invisibility-spec has a non-nil + ;; CDR, replace the invisible text with an ellipsis. + (let (match) + (if (symbolp invisible) + (setq match (member* invisible buffer-invisibility-spec + :key (lambda (i) + (if (symbolp i) i (car i))))) + (setq match (block nil + (dolist (elem invisible) + (let ((m (member* + elem buffer-invisibility-spec + :key (lambda (i) + (if (symbolp i) i (car i)))))) + (when m (return m)))) + nil))) + (setq show (cond ((null match) t) + ((and (cdr-safe (car match)) + ;; Conflate successive ellipses. + (not (eq show htmlize-ellipsis))) + htmlize-ellipsis) + (t nil))))) + (cond ((eq show t) + (push (buffer-substring-no-properties pos next-change) visible-lis= t)) + ((stringp show) + (push show visible-list))) (setq pos next-change)) (if (=3D (length visible-list) 1) ;; If VISIBLE-LIST consists of only one element, return it @@ -457,6 +501,15 @@ output.") (car visible-list) (apply #'concat (nreverse visible-list))))) = +(defun htmlize-trim-ellipsis (text) + ;; Remove htmlize-ellipses ("...") from the beginning of TEXT if it + ;; starts with it. It checks for the special property of the + ;; ellipsis so it doesn't work on ordinary text that begins with + ;; "...". + (if (get-text-property 0 'htmlize-ellipsis text) + (substring text (length htmlize-ellipsis)) + text)) + (defconst htmlize-tab-spaces ;; A table of strings with spaces. (aref htmlize-tab-spaces 5) is ;; like (make-string 5 ?\ ), except it doesn't cons. @@ -542,6 +595,16 @@ without modifying their meaning." ;; ;; ;; + +(defun htmlize-defang-local-variables () + ;; Juri Linkov reports that an HTML-ized "Local variables" can lead + ;; visiting the HTML to fail with "Local variables list is not + ;; properly terminated". He suggested changing the phrase to + ;; syntactically equivalent HTML that Emacs doesn't recognize. + (goto-char (point-min)) + (while (search-forward "Local Variables:" nil t) + (replace-match "Local Variables:" nil t))) + = =0C ;;; Color handling. = @@ -633,11 +696,25 @@ If no rgb.txt file is found, return nil. ;; return "unspecified-fg" or "unspecified-bg". If the face is ;; `default' and the color is unspecified, look up the color in ;; frame parameters. - (let ((color (if fg (face-foreground face) (face-background face)))) + (let* ((function (if fg #'face-foreground #'face-background)) + color) + (if (>=3D emacs-major-version 22) + ;; For GNU Emacs 22+ set INHERIT to get the inherited values. + (setq color (funcall function face nil t)) + (setq color (funcall function face)) + ;; For GNU Emacs 21 (which has `face-attribute'): if the color + ;; is nil, recursively check for the face's parent. + (when (and (null color) + (fboundp 'face-attribute) + (face-attribute face :inherit) + (not (eq (face-attribute face :inherit) 'unspecified))) + (setq color (htmlize-face-color-internal + (face-attribute face :inherit) fg)))) (when (and (eq face 'default) (null color)) (setq color (cdr (assq (if fg 'foreground-color 'background-color) (frame-parameters))))) - (when (or (equal color "unspecified-fg") + (when (or (eq color 'unspecified) + (equal color "unspecified-fg") (equal color "unspecified-bg")) (setq color nil)) (when (and (eq face 'default) @@ -680,7 +757,7 @@ If no rgb.txt file is found, return nil. ;; returns nil. ) ((string-match "\\`#" color) - ;; The color is alredy in #rrggbb format. + ;; The color is already in #rrggbb format. (setq rgb-string color)) ((and htmlize-use-rgb-txt htmlize-color-rgb-hash) @@ -724,7 +801,7 @@ If no rgb.txt file is found, return nil. italicp ; whether face is italic underlinep ; whether face is underlined overlinep ; whether face is overlined - strikep ; whether face is striked through + strikep ; whether face is struck through css-name ; CSS name of face ) = @@ -776,9 +853,12 @@ If no rgb.txt file is found, return nil. (setf (htmlize-fstruct-underlinep fstruct) (face-underline-p face)))) ((fboundp 'face-attribute) - ;; GNU Emacs 21. + ;; GNU Emacs 21 and further. (dolist (attr '(:weight :slant :underline :overline :strike-through)) - (let ((value (face-attribute face attr))) + (let ((value (if (>=3D emacs-major-version 22) + ;; Use the INHERIT arg in GNU Emacs 22. + (face-attribute face attr nil t) + (face-attribute face attr)))) (when (and value (not (eq value 'unspecified))) (htmlize-face-emacs21-attr fstruct attr value))))) (t @@ -849,8 +929,7 @@ If no rgb.txt file is found, return nil. (defun htmlize-face-list-p (face-prop) "Return non-nil if FACE-PROP is a list of faces, nil otherwise." ;; If not for attrlists, this would return (listp face-prop). This - ;; way we have to be more careful because some an attrlist is also a - ;; list! + ;; way we have to be more careful because attrlist is also a list! (cond ((eq face-prop nil) ;; FACE-PROP being nil means empty list (no face), so return t. @@ -900,6 +979,12 @@ If no rgb.txt file is found, return nil. (push new-name css-names))))) face-map)) = +(defun htmlize-unstringify-face (face) + "If FACE is a string, return it interned, otherwise return it unchange= d." + (if (stringp face) + (intern face) + face)) + (defun htmlize-faces-in-buffer () "Return a list of faces used in the current buffer. Under XEmacs, this returns the set of faces specified by the extents @@ -931,16 +1016,20 @@ property and by buffer overlays that spe next (or (next-single-property-change pos 'face) (point-max))) ;; FACE-PROP can be a face/attrlist or a list thereof. (setq faces (if (htmlize-face-list-p face-prop) - (union face-prop faces :test 'equal) - (adjoin face-prop faces :test 'equal))) + (union (mapcar #'htmlize-unstringify-face face-prop) + faces :test 'equal) + (adjoin (htmlize-unstringify-face face-prop) + faces :test 'equal))) (setq pos next))) ;; Faces used by overlays. (dolist (overlay (overlays-in (point-min) (point-max))) (let ((face-prop (overlay-get overlay 'face))) ;; FACE-PROP can be a face/attrlist or a list thereof. (setq faces (if (htmlize-face-list-p face-prop) - (union face-prop faces :test 'equal) - (adjoin face-prop faces :test 'equal)))))) + (union (mapcar #'htmlize-unstringify-face face-prop) + faces :test 'equal) + (adjoin (htmlize-unstringify-face face-prop) + faces :test 'equal)))))) faces)) = ;; htmlize-faces-at-point returns the faces in use at point. The @@ -968,8 +1057,9 @@ property and by buffer overlays that spe ;; Faces from text properties. (let ((face-prop (get-text-property (point) 'face))) (setq all-faces (if (htmlize-face-list-p face-prop) - (reverse face-prop) - (list face-prop)))) + (nreverse (mapcar #'htmlize-unstringify-face + face-prop)) + (list (htmlize-unstringify-face face-prop))))) ;; Faces from overlays. (let ((overlays ;; Collect overlays at point that specify `face'. @@ -991,14 +1081,21 @@ property and by buffer overlays that spe (dolist (overlay overlays) (setq face-prop (overlay-get overlay 'face)) (setq list (if (htmlize-face-list-p face-prop) - (nconc (reverse face-prop) list) - (cons face-prop list)))) - (setq all-faces (nconc all-faces list))))))) + (nconc (nreverse (mapcar + #'htmlize-unstringify-face + face-prop)) + list) + (cons (htmlize-unstringify-face face-prop) list)))) + ;; Under "Merging Faces" the manual explicitly states + ;; that faces specified by overlays take precedence over + ;; faces specified by text properties. + (setq all-faces (nconc all-faces list))) + all-faces)))) =0C ;; htmlize supports generating HTML in two several fundamentally ;; different ways, one with the use of CSS and nested tags, and ;; the other with the use of the old tags. Rather than adding -;; a bunch of if's to many places, we take a semi-OO approach. +;; a bunch of ifs to many places, we take a semi-OO approach. ;; `htmlize-buffer-1' calls a number of "methods", which indirect to ;; the functions that depend on `htmlize-output-type'. The currently ;; used methods are `doctype', `insert-head', `body-tag', and @@ -1108,19 +1205,19 @@ property and by buffer overlays that spe = ;; To make generated HTML legal, htmlize.el used to specify the SGML ;; declaration of "HTML Pro" DTD here. HTML Pro aka Silmaril DTD - ;; was a project whose goal was to produce a DTD that would + ;; was a project whose goal was to produce a GPL'ed DTD that would ;; encompass all the incompatible HTML extensions procured by ;; Netscape, MSIE, and other players in the field. Apparently the ;; project got abandoned, the last available version being "Draft 0 ;; Revision 11" from January 1997, as documented at - ;; . + ;; . = - ;; Since by now (2001) HTML Pro is remembered by none but the most + ;; Since by now (2005) HTML Pro is remembered by none but the most ;; die-hard early-web-days nostalgics and used by not even them, ;; there is no use in specifying it. So we return the standard HTML ;; 4.0 declaration, which makes generated HTML technically illegal. ;; If you have a problem with that, use the `css' generation engine - ;; which I believe creates fully conformant HTML. + ;; which I believe creates fully conforming HTML. = "" = @@ -1222,7 +1319,7 @@ property and by buffer overlays that spe ;; Declare variables used in loop body outside the loop ;; because it's faster to establish `let' bindings only ;; once. - next-change text face-list fstruct-list) + next-change text face-list fstruct-list trailing-ellipsis) ;; This loop traverses and reads the source buffer, appending ;; the resulting HTML to HTMLBUF with `princ'. This method is ;; fast because: 1) it doesn't require examining the text @@ -1242,6 +1339,13 @@ property and by buffer overlays that spe ;; untabify it and escape the HTML metacharacters. (setq text (htmlize-buffer-substring-no-invisible (point) next-change)) + (when trailing-ellipsis + (setq text (htmlize-trim-ellipsis text))) + ;; If TEXT ends up empty, don't change trailing-ellipsis. + (when (> (length text) 0) + (setq trailing-ellipsis + (get-text-property (1- (length text)) + 'htmlize-ellipsis text))) (setq text (htmlize-untabify text (current-column))) (setq text (htmlize-protect-string text)) ;; Don't bother writing anything if there's no text (this @@ -1252,11 +1356,24 @@ property and by buffer overlays that spe (funcall insert-text-method text fstruct-list htmlbuf)) (goto-char next-change))) = - ;; Insert the epilog. + ;; Insert the epilog and post-process the buffer. (with-current-buffer htmlbuf (insert "\n \n\n") (when htmlize-generate-hyperlinks (htmlize-make-hyperlinks)) + (htmlize-defang-local-variables) + (when htmlize-replace-form-feeds + ;; Change each "^L\n" to "\n
    ". + (goto-char (point-min)) + (let ((source + ;; ^L has already been escaped, so search for that. + (htmlize-protect-string "\^L\n")) + (replacement + (concat "\n" (if (stringp htmlize-replace-form-feeds) + htmlize-replace-form-feeds + "
    ")))) + (while (search-forward source nil t) + (replace-match replacement t t)))) (goto-char (point-min)) (when htmlize-html-major-mode ;; What sucks about this is that the minor modes, most notably = = =20 --===============3641712563505771859==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============7433343726703510427==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-02 07:05:47 +0000 Message-ID: <20051102070547.24343.qmail@sunsite.dk> --===============7433343726703510427== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 08:05:46 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.578 +4 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.577 retrieving revision 1.578 diff -u -p -r1.577 -r1.578 --- ChangeLog 2005/10/29 18:11:35 1.577 +++ ChangeLog 2005/11/02 07:05:46 1.578 @@ -1,3 +1,7 @@ +2005-11-02 Norbert Koch + + * Packages released: edit-utils text-modes. + 2005-10-29 Norbert Koch = * Packages released: supercite. = = =20 --===============7433343726703510427==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============2766233384048444095==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/edit-utils ... Date: 2005-11-02 07:06:46 +0000 Message-ID: <20051102070646.24412.qmail@sunsite.dk> --===============2766233384048444095== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 08:06:46 Modified: packages/xemacs-packages/edit-utils ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.207 +2 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Chan= geLog,v retrieving revision 1.206 retrieving revision 1.207 diff -u -p -r1.206 -r1.207 --- ChangeLog 2005/11/02 07:02:13 1.206 +++ ChangeLog 2005/11/02 07:06:45 1.207 @@ -1,5 +1,7 @@ 2005-11-02 Norbert Koch = + * Makefile (VERSION): XEmacs package 2.27 released. + * savehist.el: Sync with upstream version 22. = 2005-10-16 Norbert Koch = = = 1.139 +1 -1 XEmacs/packages/xemacs-packages/edit-utils/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Make= file,v retrieving revision 1.138 retrieving revision 1.139 diff -u -p -r1.138 -r1.139 --- Makefile 2005/10/16 17:19:17 1.138 +++ Makefile 2005/11/02 07:06:45 1.139 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 2.26 +VERSION =3D 2.27 AUTHOR_VERSION =3D MAINTAINER =3D XEmacs Development Team PACKAGE =3D edit-utils = = =20 --===============2766233384048444095==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============5263459025394342566==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/text-modes ... Date: 2005-11-02 07:07:37 +0000 Message-ID: <20051102070737.24475.qmail@sunsite.dk> --===============5263459025394342566== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 08:07:37 Modified: packages/xemacs-packages/text-modes ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.159 +2 -0 XEmacs/packages/xemacs-packages/text-modes/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/text-modes/Chan= geLog,v retrieving revision 1.158 retrieving revision 1.159 diff -u -p -r1.158 -r1.159 --- ChangeLog 2005/11/02 07:02:17 1.158 +++ ChangeLog 2005/11/02 07:07:36 1.159 @@ -1,5 +1,7 @@ 2005-11-02 Norbert Koch = + * Makefile (VERSION): XEmacs package 1.90 released. + * htmlize.el: Sync with upstream version 1.28. = 2005-09-21 Norbert Koch = = = 1.99 +1 -1 XEmacs/packages/xemacs-packages/text-modes/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/text-modes/Make= file,v retrieving revision 1.98 retrieving revision 1.99 diff -u -p -r1.98 -r1.99 --- Makefile 2005/09/21 07:15:44 1.98 +++ Makefile 2005/11/02 07:07:36 1.99 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 1.89 +VERSION =3D 1.90 AUTHOR_VERSION =3D MAINTAINER =3D XEmacs Development Team PACKAGE =3D text-modes = = =20 --===============5263459025394342566==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============1085353423314414043==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs-builds/viteno ... Date: 2005-11-02 07:23:48 +0000 Message-ID: <20051102072348.25981.qmail@sunsite.dk> --===============1085353423314414043== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 08:23:48 Modified: xemacs-builds/viteno package-index setup-packages.ini Log: Package database backup: - edit-utils-2.27 - text-modes-1.90 = Revision Changes Path 1.256 +12 -12 XEmacs/xemacs-builds/viteno/package-index = Index: package-index =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/package-index,v retrieving revision 1.255 retrieving revision 1.256 diff -u -p -r1.255 -r1.256 --- package-index 2005/10/29 18:20:15 1.255 +++ package-index 2005/11/02 07:23:46 1.256 @@ -779,19 +779,19 @@ semantic-sas (package-get-update-base-entry (quote (text-modes (standards-version 1.1 - version "1.89" + version "1.90" author-version "No-Upstream-Ver" - date "2005-09-21" - build-date "2005-09-21" + date "2005-11-02" + build-date "2005-11-02" maintainer "XEmacs Development Team " distribution xemacs priority high category "standard" dump nil description "Miscellaneous support for editing text files." - filename "text-modes-1.89-pkg.tar.gz" - md5sum "7c1a22dece026f65e212524db334ff10" - size 440448 + filename "text-modes-1.90-pkg.tar.gz" + md5sum "f2d5111f6e561b595aead30333b704cf" + size 442526 provides (ansi-color autoinsert crontab-edit desktop-entry-mode filla= dapt flyspell folding fold-isearch hexl htmlize image-mode iso-acc iso-asci= i iso-cvt iso-insert iso-swed rtf-support swedish tabify whitespace-mode wh= itespace-visual-mode winmgr-mode xpm-mode xrdb-mode apache-mode po-mode po-= compat css-mode) requires (ispell fsf-compat xemacs-base) type regular @@ -889,19 +889,19 @@ semantic-sas (package-get-update-base-entry (quote (edit-utils (standards-version 1.1 - version "2.26" + version "2.27" author-version "No-Upstream-Ver" - date "2005-10-16" - build-date "2005-10-16" + date "2005-11-02" + build-date "2005-11-02" maintainer "XEmacs Development Team " distribution xemacs priority high category "standard" dump nil description "Miscellaneous editor extensions, you probably need this." - filename "edit-utils-2.26-pkg.tar.gz" - md5sum "b2ee8cdf5111834a627cc7dbb09c84ad" - size 930930 + filename "edit-utils-2.27-pkg.tar.gz" + md5sum "e711a2bd205f757e030f59e662465c5c" + size 934559 provides (abbrevlist after-save-commands atomic-extents avoid backup-= dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w co= mpletion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part = floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select= info-look iswitchb lazy-lock lazy-shot live-icon makesum man mic-paren par= en mode-motion+ outl-mouse outln-18 page-ext blink-paren paren permanent-bu= ffers popper power-macros recent-files redo reportmail resume rsz-minibuf s= aveconf savehist saveplace scroll-in-place setnu shell-font tempo toolbar-u= tils tree-menu uniquify vertical-mode where-was-i-db winring autorevert ali= gn allout outline narrow-stack highline) requires (xemacs-base xemacs-devel fsf-compat dired mail-lib) type single = = = 1.244 +4 -4 XEmacs/xemacs-builds/viteno/setup-packages.ini = Index: setup-packages.ini =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/setup-packages.ini,v retrieving revision 1.243 retrieving revision 1.244 diff -u -p -r1.243 -r1.244 --- setup-packages.ini 2005/10/29 18:20:15 1.243 +++ setup-packages.ini 2005/11/02 07:23:46 1.244 @@ -320,8 +320,8 @@ version: 1.11 install: packages/ps-print-1.11-pkg.tar.gz 156222 = @ edit-utils -version: 2.26 -install: packages/edit-utils-2.26-pkg.tar.gz 930930 +version: 2.27 +install: packages/edit-utils-2.27-pkg.tar.gz 934559 = @ fsf-compat version: 1.15 @@ -340,8 +340,8 @@ version: 1.66 install: packages/pcl-cvs-1.66-pkg.tar.gz 161505 = @ text-modes -version: 1.89 -install: packages/text-modes-1.89-pkg.tar.gz 440448 +version: 1.90 +install: packages/text-modes-1.90-pkg.tar.gz 442526 = @ tramp version: 1.28 = = =20 --===============1085353423314414043==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============4093571180590071363==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/src ... Date: 2005-11-02 10:02:00 +0000 Message-ID: <20051102100200.23290.qmail@sunsite.dk> --===============4093571180590071363== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/02 11:02:00 Modified: xemacs/src ChangeLog realpath.c Log: * realpath.c (readlink_or_correct_case): Move the closing paren outside the ifdef. = Revision Changes Path 1.881 +5 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.880 retrieving revision 1.881 diff -u -p -r1.880 -r1.881 --- ChangeLog 2005/11/02 03:30:17 1.880 +++ ChangeLog 2005/11/02 10:01:57 1.881 @@ -1,5 +1,10 @@ 2005-11-02 Marcus Crestani = + * realpath.c (readlink_or_correct_case): Move the closing paren + outside the ifdef. + +2005-11-02 Marcus Crestani + * realpath.c (readlink_or_correct_case): Mark parameter as unused. = 2005-10-29 Steve Youngs = = = 1.23 +3 -2 XEmacs/xemacs/src/realpath.c = Index: realpath.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/realpath.c,v retrieving revision 1.22 retrieving revision 1.23 diff -u -p -r1.22 -r1.23 --- realpath.c 2005/11/02 03:30:19 1.22 +++ realpath.c 2005/11/02 10:01:58 1.23 @@ -81,10 +81,11 @@ abs_start (const Ibyte *name) static int readlink_or_correct_case (const Ibyte *name, Ibyte *buf, Bytecount size, #ifndef WIN32_ANY - Boolint UNUSED (links_only)) + Boolint UNUSED (links_only) #else - Boolint links_only) + Boolint links_only #endif + ) { #ifndef WIN32_ANY return qxe_readlink (name, buf, (size_t) size); = = =20 --===============4093571180590071363==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============4806685155554975120==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc, vc.el ... Date: 2005-11-02 19:03:12 +0000 Message-ID: <20051102190312.8882.qmail@sunsite.dk> --===============4806685155554975120== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/02 20:03:12 Modified: packages/unsupported/scop/vc ChangeLog vc-cvs.el vc-sccs.el vc.el Log: Sync vc with upstream. = Revision Changes Path 1.48 +1 -1 XEmacs/packages/unsupported/scop/STATUS = Index: STATUS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/STATUS,v retrieving revision 1.47 retrieving revision 1.48 diff -u -p -r1.47 -r1.48 --- STATUS 2005/10/08 15:07:39 1.47 +++ STATUS 2005/11/02 19:03:08 1.48 @@ -17,5 +17,5 @@ generic-modes: generic.el and generic-x. - Compiles, seems to work, auto-mode-alist and autoloads may need spanki= ng. = vc: vc*.el and a few other related files from GNU Emacs -- Up to date with GNU Emacs CVS HEAD as of 2005-10-08. +- Up to date with GNU Emacs CVS HEAD as of 2005-11-02. - Compiles, something even works. = = = 1.31 +4 -0 XEmacs/packages/unsupported/scop/vc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.30 retrieving revision 1.31 diff -u -p -r1.30 -r1.31 --- ChangeLog 2005/10/08 13:35:00 1.30 +++ ChangeLog 2005/11/02 19:03:11 1.31 @@ -1,3 +1,7 @@ +2005-11-02 Ville Skytt=C3=A4 + + * vc.el, vc-cvs.el, vc-sccs.el: Sync with upstream. + 2005-10-08 Ville Skytt=C3=A4 = * log-edit.el, vc.el, vc-mcvs.el: Sync with upstream. = = = 1.13 +4 -1 XEmacs/packages/unsupported/scop/vc/vc-cvs.el = Index: vc-cvs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-cvs.el,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- vc-cvs.el 2005/08/16 18:38:13 1.12 +++ vc-cvs.el 2005/11/02 19:03:11 1.13 @@ -459,7 +459,10 @@ REV is the revision to check out into WO (message "Checking out %s...done" filename))))) = (defun vc-cvs-delete-file (file) - (vc-cvs-command nil 0 file "remove" "-f")) + (vc-cvs-command nil 0 file "remove" "-f") + ;; XEmacs change: don't commit it (vc-{arch,svn} nor old vc-cvs don't = either) + ;;(vc-cvs-command nil 0 file "commit" "-mRemoved.") + ) = (defun vc-cvs-revert (file &optional contents-done) "Revert FILE to the version it was based on." = = = 1.5 +1 -1 XEmacs/packages/unsupported/scop/vc/vc-sccs.el = Index: vc-sccs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-sccs.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- vc-sccs.el 2005/08/16 18:38:13 1.4 +++ vc-sccs.el 2005/11/02 19:03:11 1.5 @@ -1,7 +1,7 @@ ;;; vc-sccs.el --- support for SCCS version-control = ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. = ;; Author: FSF (see vc.el for full credits) ;; Maintainer: Andre Spiegel = = = 1.20 +10 -4 XEmacs/packages/unsupported/scop/vc/vc.el = Index: vc.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc.el,v retrieving revision 1.19 retrieving revision 1.20 diff -u -p -r1.19 -r1.20 --- vc.el 2005/10/08 14:43:00 1.19 +++ vc.el 2005/11/02 19:03:11 1.20 @@ -551,7 +551,7 @@ These are passed to the checkin program = :group 'vc :version "20.3") = -(defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS" "MCVS" ".svn= ") +(defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS" "MCVS" ".svn= " "{arch}") "*List of directory names to be ignored when walking directory trees." :type '(repeat string) :group 'vc) @@ -2077,10 +2077,13 @@ There is a special command, `*l', to mar ;; when vc-dired-mode-map is initialized. (set-keymap-parent vc-dired-mode-map dired-mode-map) (add-hook 'dired-after-readin-hook 'vc-dired-hook nil t) - ;; The following is slightly modified from dired.el, + ;; The following is slightly modified from files.el, ;; because file lines look a bit different in vc-dired-mode ;; (the column before the date does not end in a digit). - (set (make-local-variable 'dired-move-to-filename-regexp) + ;; albinus: It should be done in the original declaration. Problem + ;; is the optional empty state-info; otherwise ")" would be good + ;; enough as delimeter. + (set (make-local-variable 'directory-listing-before-filename-regexp) (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)") ;; In some locales, month abbreviations are as short as 2 lette= rs, ;; and they can be followed by ".". @@ -2610,9 +2613,12 @@ By default, this command cycles through = To get a prompt, use a prefix argument." (interactive (list - buffer-file-name + (or buffer-file-name + (error "There is no version-controlled file in this buffer")) (let ((backend (vc-backend buffer-file-name)) (backends nil)) + (unless backend + (error "File %s is not under version control" buffer-file-name)) ;; Find the registered backends. (dolist (backend vc-handled-backends) (when (vc-call-backend backend 'registered buffer-file-name) = = =20 --===============4806685155554975120==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============5944562520507265464==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-02 22:51:15 +0000 Message-ID: <20051102225115.26768.qmail@sunsite.dk> --===============5944562520507265464== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/02 23:51:15 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1332 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1331 retrieving revision 1.1332 diff -u -p -r1.1331 -r1.1332 --- version.sh 2005/11/01 22:50:59 1.1331 +++ version.sh 2005/11/02 22:51:15 1.1332 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051101)" +xemacs_extra_name=3D"(+CVS-20051102)" xemacs_release_date=3D"2005-10-26" = = =20 --===============5944562520507265464==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============6155583949481253328==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-03 22:51:07 +0000 Message-ID: <20051103225107.25920.qmail@sunsite.dk> --===============6155583949481253328== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/03 23:51:07 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1333 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1332 retrieving revision 1.1333 diff -u -p -r1.1332 -r1.1333 --- version.sh 2005/11/02 22:51:15 1.1332 +++ version.sh 2005/11/03 22:51:06 1.1333 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051102)" +xemacs_extra_name=3D"(+CVS-20051103)" xemacs_release_date=3D"2005-10-26" = = =20 --===============6155583949481253328==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============5027163559406015313==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/ediff, ChangeLog ... Date: 2005-11-04 05:43:40 +0000 Message-ID: <20051104054340.4540.qmail@sunsite.dk> --===============5027163559406015313== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/04 06:43:40 Modified: packages/xemacs-packages/ediff ediff-util.el ediff-merg.el ChangeLog Log: * ediff-merge.el (ediff-merge-region-is-non-clash): return t, if not merging. = * ediff-util.el (ediff-previous-difference): don't skip regions that have merge clashes. = Revision Changes Path 1.30 +1 -0 XEmacs/packages/xemacs-packages/ediff/ediff-util.el = Index: ediff-util.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff-uti= l.el,v retrieving revision 1.29 retrieving revision 1.30 diff -u -p -r1.29 -r1.30 --- ediff-util.el 2005/10/06 00:17:44 1.29 +++ ediff-util.el 2005/11/04 05:43:37 1.30 @@ -1794,6 +1794,7 @@ With a prefix argument, go back that man skip-changed ;; skip difference regions that differ in white space (and ediff-ignore-similar-regions + (ediff-merge-region-is-non-clash n) (or (eq (ediff-no-fine-diffs-p n) t) (and (ediff-merge-job) (eq (ediff-no-fine-diffs-p n) 'C))) = = = 1.13 +4 -1 XEmacs/packages/xemacs-packages/ediff/ediff-merg.el = Index: ediff-merg.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff-mer= g.el,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- ediff-merg.el 2005/10/06 00:17:44 1.12 +++ ediff-merg.el 2005/11/04 05:43:37 1.13 @@ -104,8 +104,11 @@ Buffer B." (make-variable-buffer-local 'ediff-skip-merge-regions-that-differ-from-d= efault) = ;; check if there is no clash between the ancestor and one of the varian= ts. +;; if it is not a merge job then return true (defsubst ediff-merge-region-is-non-clash (n) - (string-match "prefer" (or (ediff-get-state-of-merge n) ""))) + (if (ediff-merge-job) + (string-match "prefer" (or (ediff-get-state-of-merge n) "")) + t)) = ;; If ediff-show-clashes-only, check if there is no clash between the an= cestor ;; and one of the variants. = = = 1.92 +9 -1 XEmacs/packages/xemacs-packages/ediff/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog= ,v retrieving revision 1.91 retrieving revision 1.92 diff -u -p -r1.91 -r1.92 --- ChangeLog 2005/10/06 17:37:12 1.91 +++ ChangeLog 2005/11/04 05:43:37 1.92 @@ -1,7 +1,15 @@ +2005-11-04 Michael Kifer + = + * ediff-merge.el (ediff-merge-region-is-non-clash): return t, if not + merging. + = + * ediff-util.el (ediff-previous-difference): don't skip regions that + have merge clashes. + 2005-10-06 Norbert Koch = * Makefile (VERSION): XEmacs package 1.56 released. - + = 2005-10-05 Michael Kifer = * ediff-merge.el (ediff-merge-region-is-non-clash): new defsubst. = = =20 --===============5027163559406015313==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============1847179261531656751==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/viper ... Date: 2005-11-04 05:48:15 +0000 Message-ID: <20051104054815.4810.qmail@sunsite.dk> --===============1847179261531656751== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/04 06:48:15 Modified: packages/xemacs-packages/viper viper.el ChangeLog Log: * viper.el: quote the form in every occurrence of eval-after-load. = Revision Changes Path 1.34 +39 -39 XEmacs/packages/xemacs-packages/viper/viper.el = Index: viper.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/viper.el,v retrieving revision 1.33 retrieving revision 1.34 diff -u -p -r1.33 -r1.34 --- viper.el 2005/10/06 00:22:01 1.33 +++ viper.el 2005/11/04 05:48:13 1.34 @@ -942,55 +942,55 @@ It also can't undo some Viper settings." ;; the advice. (eval-after-load "iso-acc" - (defadvice iso-accents-mode (around viper-iso-accents-advice activate) - "Set viper-automatic-iso-accents to iso-accents-mode." - (let ((arg (ad-get-arg 0))) - ad-do-it - (setq viper-automatic-iso-accents - (if (eq viper-current-state 'vi-state) - (if arg - ;; if iso-accents-mode was called with positive arg, turn - ;; accents on - (> (prefix-numeric-value arg) 0) - ;; else: toggle viper-automatic-iso-accents - (not viper-automatic-iso-accents)) - ;; other states: accept what iso-accents-mode has done - iso-accents-mode)) - ;; turn off ISO accents in vi-state - (if (eq viper-current-state 'vi-state) - (viper-set-iso-accents-mode nil)) - (if (memq viper-current-state '(vi-state insert-state replace-sta= te)) - (message "Viper ISO accents mode: %s" - (if viper-automatic-iso-accents "on" "off"))) - ))) + '(defadvice iso-accents-mode (around viper-iso-accents-advice activat= e) + "Set viper-automatic-iso-accents to iso-accents-mode." + (let ((arg (ad-get-arg 0))) + ad-do-it + (setq viper-automatic-iso-accents + (if (eq viper-current-state 'vi-state) + (if arg + ;; if iso-accents-mode was called with positive arg, turn + ;; accents on + (> (prefix-numeric-value arg) 0) + ;; else: toggle viper-automatic-iso-accents + (not viper-automatic-iso-accents)) + ;; other states: accept what iso-accents-mode has done + iso-accents-mode)) + ;; turn off ISO accents in vi-state + (if (eq viper-current-state 'vi-state) + (viper-set-iso-accents-mode nil)) + (if (memq viper-current-state '(vi-state insert-state replace-state)) + (message "Viper ISO accents mode: %s" + (if viper-automatic-iso-accents "on" "off"))) + ))) = ;; International input methods (if viper-emacs-p (eval-after-load "mule-cmds" - (progn - (defadvice inactivate-input-method (after viper-mule-advice activate) - "Set viper-special-input-method to disable intl. input methods." - (viper-inactivate-input-method-action)) - (defadvice activate-input-method (after viper-mule-advice activate) - "Set viper-special-input-method to enable intl. input methods." - (viper-activate-input-method-action)) - )) + '(progn + (defadvice inactivate-input-method (after viper-mule-advice activate) + "Set viper-special-input-method to disable intl. input methods." + (viper-inactivate-input-method-action)) + (defadvice activate-input-method (after viper-mule-advice activate) + "Set viper-special-input-method to enable intl. input methods." + (viper-activate-input-method-action)) + )) ;; XEmacs Although these hooks exist in Emacs, they don't seem to be= always ;; called on input-method activation/deactivation, so we the above a= dvise ;; functions instead. (eval-after-load "mule-cmds" - (progn - (add-hook 'input-method-activate-hook - 'viper-activate-input-method-action t) - (add-hook 'input-method-inactivate-hook - 'viper-inactivate-input-method-action t))) + '(progn + (add-hook 'input-method-activate-hook + 'viper-activate-input-method-action t) + (add-hook 'input-method-inactivate-hook + 'viper-inactivate-input-method-action t))) ) (eval-after-load "mule-cmds" - (defadvice toggle-input-method (around viper-mule-advice activate) - "Adjust input-method toggling in vi-state." - (if (and viper-special-input-method (eq viper-current-state 'vi-st= ate)) - (viper-inactivate-input-method) - ad-do-it))) + '(defadvice toggle-input-method (around viper-mule-advice activate) + "Adjust input-method toggling in vi-state." + (if (and viper-special-input-method (eq viper-current-state 'vi-s= tate)) + (viper-inactivate-input-method) + ad-do-it))) = ) ; viper-set-hooks = = = = 1.66 +4 -0 XEmacs/packages/xemacs-packages/viper/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog= ,v retrieving revision 1.65 retrieving revision 1.66 diff -u -p -r1.65 -r1.66 --- ChangeLog 2005/10/06 17:38:04 1.65 +++ ChangeLog 2005/11/04 05:48:13 1.66 @@ -1,3 +1,7 @@ +2005-11-04 Michael Kifer + = + * viper.el: quote the form in every occurrence of eval-after-load. + = 2005-10-06 Norbert Koch = * Makefile (VERSION): XEmacs package 1.44 released. = = =20 --===============1847179261531656751==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:12 2017 Content-Type: multipart/mixed; boundary="===============6991156006279774492==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-04 22:51:07 +0000 Message-ID: <20051104225107.29026.qmail@sunsite.dk> --===============6991156006279774492== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/04 23:51:06 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1334 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1333 retrieving revision 1.1334 diff -u -p -r1.1333 -r1.1334 --- version.sh 2005/11/03 22:51:06 1.1333 +++ version.sh 2005/11/04 22:51:05 1.1334 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051103)" +xemacs_extra_name=3D"(+CVS-20051104)" xemacs_release_date=3D"2005-10-26" = = =20 --===============6991156006279774492==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============5620926749112871322==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-05 22:50:55 +0000 Message-ID: <20051105225055.15303.qmail@sunsite.dk> --===============5620926749112871322== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/05 23:50:54 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1335 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1334 retrieving revision 1.1335 diff -u -p -r1.1334 -r1.1335 --- version.sh 2005/11/04 22:51:05 1.1334 +++ version.sh 2005/11/05 22:50:54 1.1335 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051104)" +xemacs_extra_name=3D"(+CVS-20051105)" xemacs_release_date=3D"2005-10-26" = = =20 --===============5620926749112871322==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============1055329519865034112==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/lisp next-error.el occur.el xemacs/lisp sjt-xft Date: 2005-11-06 16:18:20 +0000 Message-ID: <20051106161820.833.qmail@sunsite.dk> --===============1055329519865034112== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/06 17:18:20 Branch: xemacs/lisp sjt-xft Added: xemacs/lisp next-error.el occur.el Log: Forgot to add these in last commit. <87oe4x4v7r.fsf(a)tleepslib.sk.tsukub= a.ac.jp> = Revision Changes Path 1.2.2.1 +0 -0 XEmacs/xemacs/lisp/next-error.el = Index: next-error.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/next-error.el,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -p -r1.2 -r1.2.2.1 = = = 1.2.2.1 +0 -0 XEmacs/xemacs/lisp/occur.el = Index: occur.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/occur.el,v retrieving revision 1.2 retrieving revision 1.2.2.1 diff -u -p -r1.2 -r1.2.2.1 = = =20 --===============1055329519865034112==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============6520298718033182500==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by adrian packages/xemacs-packages/games ... Date: 2005-11-06 20:13:17 +0000 Message-ID: <20051106201317.8221.qmail@sunsite.dk> --===============6520298718033182500== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: adrian = Date: 05/11/06 21:13:17 Modified: packages/xemacs-packages/games ChangeLog Makefile Log: packages: Update games package maintainer address = -------------------- ChangeLog entries follow: -------------------- = xemacs-packages/games/ChangeLog addition: = 2005-11-06 Adrian Aichner = * Makefile (MAINTAINER): Update email address. = Revision Changes Path 1.15 +11 -0 XEmacs/packages/xemacs-packages/games/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/ChangeLog= ,v retrieving revision 1.14 retrieving revision 1.15 diff -u -p -r1.14 -r1.15 --- ChangeLog 2003/10/31 16:52:38 1.14 +++ ChangeLog 2005/11/06 20:13:16 1.15 @@ -1,3 +1,14 @@ +2005-11-06 Adrian Aichner + + * Makefile (MAINTAINER): Update email address. + +2005-11-06 Adrian Aichner + + * gamegrid.el (gamegrid-add-score): Fix loss of scores with + non-octal digits. + * tetris.el (tetris-score-file): Default to (temp-directory), not + "/tmp". + 2003-10-31 Norbert Koch = * Makefile (VERSION): XEmacs package 1.15 released. = = = 1.23 +1 -1 XEmacs/packages/xemacs-packages/games/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/Makefile,v retrieving revision 1.22 retrieving revision 1.23 diff -u -p -r1.22 -r1.23 --- Makefile 2003/10/31 16:52:38 1.22 +++ Makefile 2005/11/06 20:13:17 1.23 @@ -21,7 +21,7 @@ = VERSION =3D 1.15 AUTHOR_VERSION =3D 1.04 -MAINTAINER =3D Glynn Clements +MAINTAINER =3D Glynn Clements PACKAGE =3D xemacs-base PACKAGE =3D games PKG_TYPE =3D regular = = =20 --===============6520298718033182500==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============5064322864280042683==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-06 22:51:26 +0000 Message-ID: <20051106225126.3216.qmail@sunsite.dk> --===============5064322864280042683== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/06 23:51:26 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1336 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1335 retrieving revision 1.1336 diff -u -p -r1.1335 -r1.1336 --- version.sh 2005/11/05 22:50:54 1.1335 +++ version.sh 2005/11/06 22:51:25 1.1336 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051105)" +xemacs_extra_name=3D"(+CVS-20051106)" xemacs_release_date=3D"2005-10-26" = = =20 --===============5064322864280042683==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============8466965897227735608==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/tests ... Date: 2005-11-06 16:15:42 +0000 Message-ID: <20051106161542.711.qmail@sunsite.dk> --===============8466965897227735608== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/06 17:15:41 Branch: xemacs sjt-xft xemacs/etc sjt-xft xemacs/lib-src sjt-xft xemacs/lisp sjt-xft xemacs/lisp/mule sjt-xft xemacs/lwlib sjt-xft xemacs/man sjt-xft xemacs/man/internals sjt-xft xemacs/man/lispref sjt-xft xemacs/modules sjt-xft xemacs/modules/canna sjt-xft xemacs/modules/ldap sjt-xft xemacs/modules/postgresql sjt-xft xemacs/netinstall sjt-xft xemacs/nt sjt-xft xemacs/nt/installer/Wise sjt-xft xemacs/src sjt-xft xemacs/tests sjt-xft Modified: xemacs/tests ChangeLog Log: Sync to mainline 21.5.23 plus minor changes. <87oe4x4v7r.fsf(a)tleepslib.sk.tsukuba.ac.jp> Sun Nov 6 23:57:02 JST 2005 Stephen J. Turnbull * Make sure inlines get instantiated for included modules (LDAP, Postgr= eSQL). = Sun Nov 6 23:55:48 JST 2005 Stephen J. Turnbull * Detect -lcrypto -lssl for PostgreSQL on Darwin. = Sun Nov 6 23:46:56 JST 2005 Stephen J. Turnbull * Use new macros for lcrecords in Xft support. = Sun Nov 6 23:42:10 JST 2005 Stephen J. Turnbull * Canonicalize my name in man/ChangeLog. = Sun Nov 6 23:29:11 JST 2005 Stephen J. Turnbull * netinstall/ChangeLog: Nuke useless CVS keyword. = Sun Nov 6 23:17:02 JST 2005 Stephen J. Turnbull * INSTALL: Substitute "with" for "enable" in option names. = Sun Nov 6 23:15:25 JST 2005 Stephen J. Turnbull * INSTALL: Describe --with-modules and add notes to OEMs. = Sun Nov 6 23:13:52 JST 2005 Stephen J. Turnbull * INSTALL: Minor accuracy improvements 2005-11-06. = Sun Nov 6 23:09:36 JST 2005 Stephen J. Turnbull * INSTALL: Add appendix listing new configure options. = Sun Nov 6 23:08:40 JST 2005 Stephen J. Turnbull * INSTALL: Remove "Updated by" paragraph; nobody updates this. = Sun Nov 6 22:23:30 JST 2005 Clemens Fruhwirth * glyphs-x.c: Conditionalize Xft-specific code. = Sun Nov 6 16:19:16 JST 2005 Stephen J. Turnbull * Xft and Motif don't mix well yet, do they. = Revision Changes Path 1.218.2.4 +77 -1 XEmacs/xemacs/CHANGES-beta = Index: CHANGES-beta =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/CHANGES-beta,v retrieving revision 1.218.2.3 retrieving revision 1.218.2.4 diff -u -p -r1.218.2.3 -r1.218.2.4 --- CHANGES-beta 2005/09/20 16:04:31 1.218.2.3 +++ CHANGES-beta 2005/11/06 16:13:44 1.218.2.4 @@ -1,8 +1,84 @@ +to 21.5.23 "daikon" +Major features + +-- New: all-singing, all-dancing --with/--enable aliasing. -- Malcolm P= urvis +-- New: native NT support for building gmp, db, postgresql, ldap. -- Ben= Wing +-- New: non-XPM color images can be mouse pointers. -- Ben Wing + +User-Visible Bug Fixes and Minor Improvements + +-- Fix: change address for crash reporting to xemacs-beta. -- Ben Wing +-- Fix: configure requires explicit choice of Motif (from 21.4). -- Malc= olm Purvis +-- Fix: crash due to duplicate subrs with MC_ALLOC and modules. -- Marcu= s Crestani +-- Improve: memory usage reporting, especially with MC_ALLOC. -- Ben Wing +-- Improve: remove obsolete autoconf 2.13 files. -- Malcolm Purvis. +-- Improve: --with-cflags-optimization now forces optimization. -- Ben W= ing +-- Update: sync package-get.el mirrors with website. -- Adrian Aichner, = Ville Skytt=C3=A4 + +Build Infrastructure + +-- Fix: Cygwin, non-X build needs XPM header and library files in XE_CFL= AGS. -- Mike Alexander, Rick Rankin +-- Fix: guess VC++ version; set debug and browser flags appropriately. -= - Ben Wing +-- Fix: pass -I$(SRC) to minitar.c so it compiles. -- Ben Wing +-- Fix: pass module sources, not objects, to make-docfile. -- Ben Wing +-- Fix: stop installexe.sh from adding redundant exe extension. -- Rick = Rankin +-- Fix: variable initialization misordering in xemacs.mak. -- Adrian Aic= hner +-- Improve: Canna API is now a module. -- Stephen Turnbull +-- Improve: delete more stuff in `make clean'. -- Ben Wing +-- Improve: options now added to one OPT_*, rather than many FOO_*, vari= ables. -- Ben Wing +-- Improve: replace support for autoconf 2.13 with warning to use autoco= nf 2.59. -- Malcolm Purvis +-- Improve: update config.inc.samp to recent versions and add gmp, db, p= ostgresql, ldap support; also optimization in non-debug builds. -- Ben Wing +-- Improve: xemacs.mak now caters to VC++ version, support for building= gmp, db, postgresql, ldap; other fixes. -- Ben Wing + +Documentation + +-- Fix: force C-h N to find etc/NEWS, not some package's. -- Steve Youngs +-- Fix: texinfmt.el can build all Info files again. -- Adrian Aichner +-- Fix: typos in Texinfo docs. -- Adrian Aichner +-- Improve: Texinfo docs about specifiers. -- Ben Wing +-- Improve: comment style, 'foo -> `foo'. -- Ben Wing +-- Improve: comments and docstrings. -- Stephen Turnbull +-- Improve: document --with/--enable, improve Mac OS X in INSTALL. -- Ma= lcolm Purvis +-- Improve: emodules.texi tells how to add modules to core. -- Stephen T= urnbull +-- Improve: FAQ includes examples of 21.5 configure options. -- Malcolm = Purvis +-- Improve: nt/README tells how to compile optional libs. -- Ben Wing +-- New: FAQ on `rebaseall' under Cygwin. -- Ben Wing +-- New: internals documents XEmacs treatment of --with/--enable configur= e args. -- Malcolm Purvis + +Lisp API + +-- Fix: finder-find-library returns accurate filename. -- Adrian Aichner +-- Fix: xemacs-composefunc kvetching when noninteractive. -- Stephen Tur= nbull +-- Improve: GC now triggers on relative, not absolute, consing. -- Ben W= ing +-- Improve: memory usage reporting. -- Ben Wing +-- Improve: sync build-report.el to Adrian's version. -- Stephen Turnbull +-- Improve: sync read-buffer, line-number-at-pos, delete-dups, occur to = GNU Emacs 22.0.50. -- Malcolm Purvis +-- New: batch-build-report command. -- Stephen Turnbull +-- New: inherit properties for faces and custom. -- Ben Wing +-- New: next-error from GNU Emacs. -- Malcolm Purvis +-- New: `specifier-instantiator' and related primitives. -- Ben Wing + +Internal API and Implementation + +-- Fix: address of register variable can't be taken. -- Ben Wing +-- Fix: asserts in lwlib are now consistent with src. -- Ben Wing +-- Fix: bitrot in sysdep.c and nt.c. -- Ben Wing +-- Fix: bug in range tables with non-default closure. -- Ben Wing +-- Fix: don't use C++ reserved words "new" and "catch", append '_'. -- B= en Wing +-- Fix: initialization in mc-alloc. -- Marcus Crestani +-- Fix: non-MULE needs mswindows_current_locale too. -- Mike Alexander +-- Fix: setlocale return string is volatile, dup it. -- Olivier Galibert +-- Fix: unexec for _LP64 ELF architectures. -- Andrey Slusar +-- Fix: use of config.h, especially in Windows files. -- Ben Wing +-- Improve: refactor MC_ALLOC to reduce #ifdefs. -- Ben Wing +-- Improve: use _CRT_SECURE_NO_DEPRECATE to suppress VC8 warnings. -- Be= n Wing +-- Improve: warning elimination. -- Ben Wing, Stephen Turnbull + to 21.5.22 "cucumber" = Major features = ---New: support for Unnnn-style keysyms on X11. -- Aidan Kehoe +-- New: support for Unnnn-style keysyms on X11. -- Aidan Kehoe = User-Visible Bug Fixes and Minor Improvements = = = = 1.418.2.19 +33 -3 XEmacs/xemacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.418.2.18 retrieving revision 1.418.2.19 diff -u -p -r1.418.2.18 -r1.418.2.19 --- ChangeLog 2005/09/24 15:15:30 1.418.2.18 +++ ChangeLog 2005/11/06 16:13:44 1.418.2.19 @@ -1,6 +1,36 @@ -2005-09-22 Stephen J. Turnbull +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-25 Malcolm Purvis + + * configure.ac: Prefer Xaw to Motif on Linux, Mac and BSD. From + 21.4. + * configure.ac (XE_PARSE_COMPLEX_OPTION): Remove debugging. + Fix broken --with-=3Dno. + +2005-10-20 Malcolm Purvis + + * INSTALL: Reflect changes in the configure options. Update MacOS + X X11 installation instructions to reflect the changes in recent + OS releases. + +2005-10-15 Malcolm Purvis + + * configure.ac: Added XE_MERGED_ARG to alias all local --enable + and --with options. Configure can only be built with autoconf + 2.59. Prevent many unwanted blank lines from appearing in + configure. + +2005-10-13 Ben Wing = - * configure.ac (Canna): Disable if MC_ALLOC is enabled. + * configure.ac (XE_COMPLEX_ARG_ENABLE): + Break lines. + * configure.ac (TAB): + Rewrite optimization help to be accurate. Setting + `--with-cflags-optimization=3D""' will now unilaterally turn off + optimization; setting it to something non-null unilaterally turns it + on. = 2005-09-22 Stephen J. Turnbull = @@ -162,7 +192,7 @@ Use it. = * configure.ac (sound): - AC_DEFINE_UNQUOTED seems OK, if it's not m4-quoted. = + AC_DEFINE_UNQUOTED seems OK, if it's not m4-quoted. = 2005-02-18 Stephen J. Turnbull = = = = 1.1.2.4 +0 -4 XEmacs/xemacs/Attic/ChangeLog.Xft = Index: ChangeLog.Xft =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/Attic/ChangeLog.Xft,v retrieving revision 1.1.2.3 retrieving revision 1.1.2.4 diff -u -p -r1.1.2.3 -r1.1.2.4 --- ChangeLog.Xft 2005/09/23 18:20:28 1.1.2.3 +++ ChangeLog.Xft 2005/11/06 16:13:45 1.1.2.4 @@ -1,7 +1,3 @@ -2005-09-24 Stephen J. Turnbull - - * .cvsignore: Add _darcs for Darcs users. - 2005-03-05 Malcolm Purvis = * configure.ac: Correct the filename of the old copy of configure. = = = 1.41.2.4 +269 -272 XEmacs/xemacs/INSTALL = Index: INSTALL =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/INSTALL,v retrieving revision 1.41.2.3 retrieving revision 1.41.2.4 diff -u -p -r1.41.2.3 -r1.41.2.4 --- INSTALL 2005/03/15 05:18:54 1.41.2.3 +++ INSTALL 2005/11/06 16:13:45 1.41.2.4 @@ -16,8 +16,6 @@ Copyright (c) 1994-1999, 2003 Free Softw and that any new or changed statements about the activities of the Free Software Foundation are approved by the Foundation. = -Last modified by Stephen J. Turnbull 2003-02-12 - BUILDING AND INSTALLATION FOR UNIX AND CYGWIN = (for Microsoft Windows, see nt/README also.) @@ -74,16 +72,17 @@ ADD-ON LIBRARIES = Decide which libraries you would like to use with XEmacs, but are not yet available on your system. On some systems, X11, Motif and CDE are -optional additions. On MacOS/X systems, you may download X11R6 for -Mac OS X from http://www.apple.com/macosx/x11/download/. You need -both the runtime libraries and the SDK (in a sidebar of that page at -the time of writing). There is also a 3rd-party implementation of -X11R6 for the Mac at http://www.xdarwin.org/. On Solaris, the -SUNWaudmo package enables native sound support. There are also a -number of free software applications that XEmacs can use. If these -are not yet available on your system, obtain, build and install those -external libraries before building XEmacs. The libraries XEmacs can -use are: +optional additions. On MacOS/X systems prior to 10.2, you may download +X11R6 for Mac OS X from http://www.apple.com/macosx/x11/download/. In +later releases X11 is available as an optional package on the +installation CDs. In either case you need both the runtime libraries +and the SDK (in a sidebar of that page at the time of writing). There +is also a 3rd-party implementation of X11R6 for the Mac at +http://www.xdarwin.org/. On Solaris, the SUNWaudmo package enables +native sound support. There are also a number of free software +applications that XEmacs can use. If these are not yet available on +your system, obtain, build and install those external libraries before +building XEmacs. The libraries XEmacs can use are: = Xaw3d, XPM, JPEG, compface, PNG, zlib, GNU DBM, Berkeley DB, socks, term, NAS, Canna, Kinput2, SJ3, Wnn, PostgreSQL, LDAP. @@ -137,239 +136,17 @@ In the top level directory of the XEmacs program `configure' as follows: = ./configure [CONFIGURATION-NAME] [--OPTION[=3DVALUE]] ... - -autoconf 2.5x compatibility ---------------------------- - -This version of XEmacs includes Malcolm Purvis's support for autoconf 2.= 5x. -The distributed version (CVS) of configure is created with autoconf 2.59. -There should be no significant differences from configure created with -autoconf version 2.13 from configure.in as of this writing (2005-01-28, -pre-21.5.19). configure.in is still distributed, and will be automatica= lly -used by autoconf 2.13 (since autoconf 2.13 doesn't know about configure.= ac), -and normally ignored by autoconf 2.5x (which prefer configure.ac). - -Here are Malcolm's notes from xemacs-patches . -The remainder of this file uses the nomenclature relevant to configure.i= n; -these notes provide a translation. - -The most significant change is with the command line arguments. The only -custom command line arguments allowed in 2.59 are --with-X for using ext= ernal -packages and --enable-X for compiling in optional internal features. I h= ave -renamed the options to conform to this pattern. This results in changes= such -as --with-mule now being --enable-mule. - -The full translation of command line arguments are: - -Old | New ------------------------------------------- -General options: ----------------- - ---help Unchanged ---verbose Unchanged ---extra-verbose Removed - -Compilation options: --------------------- - ---compiler --with-compiler ---xemacs-compiler --with-xemacs-compiler ---with-gcc Unchanged ---cflags --with-cflags ---cflags-warning --with-cflags-warning ---cpp --with-cpp ---cppflags --with-cppflags ---libs --with-libs ---ldflags --with-ldflags ---site-includes --with-site-includes ---site-libraries --with-site-libraries ---site-prefixes --with-site-prefixes ---site-runtime-libraries --with-site-runtime-libraries = ---dynamic --with-dynamic ---srcdir Unchanged - -Installation options: ---------------------- - ---prefix Unchanged ---with-prefix Unchanged ---with-netinstall Unchanged ---bindir Unchanged ---datadir Unchanged ---statedir Unchanged ---libdir Unchanged ---infodir Unchanged ---mandir Unchanged ---lispdir --with-lispdir ---sitelispdir Removed ---etcdir --with-etcdir ---lockdir Removed ---archlibdir --with-archlibdir ---docdir --with-docdir ---moduledir --with-moduledir - -Run-time path-searching options: --------------------------------- - ---with-site-lisp Unchanged ---with-site-modules Unchanged ---package-prefix --with-package-prefix ---package-path --with-package-path ---infopath --with-infopath - -Window-system options: ----------------------- - ---with-gtk Unchanged ---with-gnome Unchanged ---with-x11 Unchanged ---x-includes Unchanged ---x-libraries Unchanged ---with-msw Unchanged ---with-toolbars --enable-toolbars ---with-wmcommand Unchanged ---with-athena Unchanged ---with-menubars --enable-menubars ---with-scrollbars --enable-scrollbars ---with-dialogs --enable-dialogs ---with-widgets --enable-widgets ---with-dragndrop Unchanged ---with-cde Unchanged ---with-offix Unchanged ---with-xmu Unchanged ---external-widget --enable-external-widget - -TTY (character terminal) options: ---------------------------------- - ---with-tty Unchanged ---with-ncurses Unchanged ---with-gpm Unchanged - -Image options: --------------- - ---with-xpm Unchanged ---with-png Unchanged ---with-jpeg Unchanged ---with-tiff Unchanged ---with-xface Unchanged ---with-gif Unchanged - -Sound options: --------------- - ---with-sound --enable-sound ---native-sound-lib=3DLIB --with-native-sound-lib - -Internationalization options: ------------------------------ - ---with-mule --enable-mule ---with-xim Unchanged ---with-canna Unchanged ---with-wnn Unchanged ---with-wnn6 Unchanged ---with-xfs Unchanged - -File-related options: ---------------------- - ---with-default-eol-detection --enable-default-eol-detection ---with-clash-detection --enable-clash-detection - -Database options: ------------------ - ---with-database --enable-database ---with-ldap Unchanged ---with-postgresql Unchanged - -Mail options: -------------- - ---mail-locking=3DTYPE --with-mail-locking ---with-pop Unchanged ---with-kerberos Unchanged ---with-hesiod Unchanged = -Networking options: -------------------- - ---with-tooltalk Unchanged ---with-socks Unchanged ---with-dnet Unchanged ---with-ipv6-cname Unchanged - -Memory allocation options: --------------------------- - ---rel-alloc --with-rel-alloc ---with-dlmalloc Unchanged ---with-system-malloc Unchanged ---with-debug-malloc Unchanged - -Emacs Lisp options: -------------------- - ---use-number-lib --enable-bignum - -Debugging options: ------------------- - ---debug --enable-debug ---error-checking --enable-error-checking ---memory-usage-stats --enable-memory-usage-stats ---quick-build --enable-quick-build ---use-union-type --enable-union-type ---with-quantify Unchanged ---with-purify Unchanged - -Developer options: ------------------- - ---with-workshop Unchanged ---pdump --enable-pdump ---use-kkcc --enable-kkcc ---with-modules --enable-modules - -The output files produced by this new configure should be almost identic= al to -those produced by the old. This can be tested with the attached regress= ion -test script. This script runs the two versions of configure with the su= pplied -list of command line arguments and reports any differences. Please add = your -favorite configuration command lines to the list before running the test= . The -script is run as: - -$ regressiontest.pl /absolute/path/to/2.13/configure \ - /absolute/path/to/2.59/configure >diffs.txt - -The only differences should be: -- those related to changes in the command line arguments -- the change of SYS_SIGLIST_DECLARED to HAVE_DECL_SYS_SIGLIST (because t= he old - form has been removed), and -- The removal of trailing comments in src/config.h. Applying the attach= ed - patch config-h-213.patch to the 2.13 work area will remove these. This - patch makes no functional changes to the configuration and will cut th= e size - of diffs.txt by about 60%. - -At this stage please review this patch for the accuracy of the generated -configuration files and the command line arguments. I shall improve the -documentation and formatting before posting the final patch. - -End of Malcolm's notes on the port of configure to autoconf 2.59. - -The regression test script mentioned in Malcolm's notes is in -tests/autoconf/. - -I have a few differences of opinion about naming; for now we'll go with -Malcolm's names but you should pay attention as some of the flag names m= ay -change again. There's also the problem that Malcolm's naming does not -conform to GNU autoconf's option naming rules. I think that these rules= are -a crock (or maybe even a whole cesspit) of shit (well, what else is GNU?= ). -However, if other projects are following them I think we should seriously -consider doing so, too. After all, God gave us opposable thumbs so that= we -could hold our noses in situations like this. +Options are generally of the form `--with-FEATURE' or +`--enable-FEATURE' to use a feature or `--without-FEATURE' or +`--disable-FEATURE' to not use a feature. Unlike the `configure' +program used in other applications, either `--with-FEATURE' or +`--enable-FEATURE' can be used to use the same feature. + +If you haven't built XEmacs 21.5 recently, the change from the +configure script based on Autoconf 2.13 can be a shock. Appendix: +Correspondence to Old Configure Options (at the end of this document) +contains a list of old options and their new equivalents. = Controlling the Host Type ------------------------- @@ -431,23 +208,37 @@ CFLAGS is consulted. If that is also un = The `--with-cflags-warning=3DFLAGS' option specifies the warnings to be generated. There is normally no reason to use this flag, as XEmacs -turns on as many warnings as possible, and is still expected to build -with no, or at most a few warnings. +turns on as many warnings as possible, and is still intended to build +with no warnings. If you get any undocumented warnings, please report +them as bugs---they very often are, or at least indicate possible +bitrot. = The `--with-cflags-optimization=3DFLAGS' option specifies the -optimizations to be used. There is normally no reason to use this flag, -as XEmacs will already set the maximum safe -optimization flags appropriate for the compiler being invoked. +optimizations to be used. There is normally no reason to use this +flag, as XEmacs will already set the maximum safe optimization flags +appropriate for the compiler being invoked. = The `--with-cflags-debugging=3DFLAGS' option specifies debugging -information to be generated. There is normally no reason to use this -flag, as XEmacs will include debugging information whenever possible -(i.e. unless optimization is turned on and the compiler does not permit -debugging and optimization simultaneously). +information to be generated. You should avoid using this flag, as it +makes most severe or fatal bugs hard-to-impossible to diagnose and +fix. Debugging information does not slow down XEmacs at runtime, and +it doesn't make the binary very much bigger. + +The `--with-dynamic' option specifies that configure should try to +link XEmacs dynamically rather than statically. `--with-static' +specifies the reverse. XEmacs's configure script detects whether +dynamic linking can be done on all platforms we know of; these options +are normally unnecessary. + +The `--with-modules' option specifies that XEmacs be built with +support for runtime loadable modules. NOTE TO OEMS: XEmacs can be +distributed configured to support several options based on external +APIs (currently LDAP, PostgreSQL, and Canna) as loadable modules. You +can distribute an XEmacs binary package with these options enabled +without depending on the external package. XEmacs will fail +gracefully at runtime, issuing an error message indicating that the +required support was not found on the system. = -The `--with-dynamic' option specifies that configure should try to link -emacs dynamically rather than statically. - You can build XEmacs for several different machine types from a single source directory. To do this, you must use a version of `make' that supports the `VPATH' variable, such as GNU `make'. Create separate @@ -501,27 +292,27 @@ system has X Window System support, and = The `--without-xmu' option can be used if your vendor doesn't ship the Xmu library. = -The `--enable-menubars=3DTYPE' option allows you to specify which X +The `--with-menubars=3DTYPE' option allows you to specify which X toolkit you wish to use for the menubar. The valid options are `lucid', `motif' and `no'. The default is `lucid' which is a Motif-lookalike menubar. We highly recommend its usage over the real Motif menubar. (In fact, the Motif menubar is currently broken.) If `no' is specified then support for menubars will not be compiled in. = -The `--enable-scrollbars=3DTYPE' option allows you to specify which X +The `--with-scrollbars=3DTYPE' option allows you to specify which X toolkit you wish to use for the scrollbars. The valid options are `lucid', `motif', `athena', `athena3d', and `no'. The default is `lucid' which is a Motif-lookalike scrollbar. If `no' is specified then support for scrollbars will not be compiled in. = -The `--enable-dialogs=3DTYPE' option allows you to specify which X toolk= it +The `--with-dialogs=3DTYPE' option allows you to specify which X toolkit you wish to use for the dialog boxes. The valid options are `athena', `athena3d', `motif, and `no. The `lucid' option is accepted and will result in the `athena' toolkit being used. If the Motif toolkit can be found the default is `motif'. Otherwise, the default is `athena'. If `no' is specified then support for dialog boxes will not be compiled in. = -The `--enable-toolbars' option allows you to enable or disable toolbar +The `--with-toolbars' option allows you to enable or disable toolbar support. The default is `yes' if support for a windowing system is included. = @@ -533,38 +324,41 @@ The `--with-xface' option specifies that X-Faces. `configure' will attempt to detect if you have the compface library and define `--with-xface' for you. = -The `--enable-database' option specifies that XEmacs should be built +The `--with-database' option specifies that XEmacs should be built with simple database support. The valid options are `no' or a comma-separated list of one or more of `dbm', `gnudbm' or `berkdb'. `configure' will attempt to detect the necessary libraries and header -files and define `--enable-database' for you. +files and define `--with-database' for you. = The `--with-postgresql' option specifies that XEmacs should be built with PostgreSQL support, linking with libpq. `configure' will attempt to detect whether PostgreSQL support is available, and automatically -define `--with-postgresql' for you. +define `--with-postgresql' for you. NOTE TO OEMS: If modules are +supported and enabled, the libpq API support will be build as a +module. = The `--with-ldap' option specifies that XEmacs should be build with LDAP support, using the OpenLDAP libraries. `configure' will attempt to detect whether LDAP support is available, and automatically define -`--with-ldap' for you. +`--with-ldap' for you. NOTE TO OEMS: If modules are supported and +enabled, the OpenLDAP API support will be build as a module. = The `--with-socks' option specifies that XEmacs should be built with SOCKS support. This requires the libsocks library. = -The `--enable-external-widget' option specifies that XEmacs should be +The `--with-external-widget' option specifies that XEmacs should be built with support for being used as a widget by other X11 applications. This functionality should be considered beta. = -The `--enable-sound=3DTYPE' option specifies that XEmacs should be built -with sound support. Native (`--enable-sound=3Dnative') sound support is +The `--with-sound=3DTYPE' option specifies that XEmacs should be built +with sound support. Native (`--with-sound=3Dnative') sound support is currently available only on Sun SparcStations, SGI's, HP9000s, and systems (such as Linux) with soundcard.h. Network Audio Support (NAS) -(`--enable-sound=3Dnas') is an extension to X that you may or may not ha= ve +(`--with-sound=3Dnas') is an extension to X that you may or may not have for your system. For NAS, you will probably need to provide the paths to the nas include and library directories to configure. If -`--enable-sound' is not specified, `configure' will attempt to determine -if your configuration supports native sound and define --enable-sound +`--with-sound' is not specified, `configure' will attempt to determine +if your configuration supports native sound and define --with-sound for you. If your native sound library is not in a standard location you can specify it with the `--with-native-sound-lib=3DLIB' flag. For Linux, `/dev/audio' is required for SunAudio files and `/dev/dsp' is required @@ -594,7 +388,7 @@ support can be explicitly disabled via t Internationalization Options ---------------------------- = -The `--enable-mule' option enables MUlti-Lingual Emacs (Mule) support, +The `--with-mule' option enables MUlti-Lingual Emacs (Mule) support, needed to support non-Latin-1 (including Asian) languages. Mule support is required for Asian language and Unicode (multibyte and wide character) support. With the advent of the Euro and European @@ -635,7 +429,8 @@ still unknown. If Canna is already inst it, so you never need to explicitly use this option unless your Canna libraries are somewhere strange. Canna run time support is currently bundled with the `mule-base' package so there is nothing additional to -install in order to use it. +install in order to use it. NOTE TO OEMS: If modules are supported +and enabled, the libcanna API support will be build as a module. = The `--with-wnn' and `--with-wnn6' options are for compiling with the Wnn multi-language input method. `--with-wnn' is for compiling with Wnn-4.2, @@ -1014,3 +809,205 @@ without downloading some additional pack See the file PROBLEMS in this directory for a list of various problems sometimes encountered, and what to do about them. PROBLEMS is also the place where platform-specific build notes can be found. + +APPENDIX: CORRESPONDENCE TO OLD CONFIGURE OPTIONS +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Here is a full translation of command line arguments. Note that any +option starting with "--with" may also be specified with "--enable". +This list may not be up-to-date. + +Old | New +------------------------------------------ +General options: +---------------- + +--help Unchanged +--usage Removed +--verbose Unchanged +--extra-verbose Removed + +Compilation options: +-------------------- + +--compiler --with-compiler +--xemacs-compiler --with-xemacs-compiler +--with-gcc Unchanged +--cflags --with-cflags +--cflags-warning --with-cflags-warning +--debug --with-debug +New --with-cflags-debug +New --with-optimization +New --with-cflags-optimization +--cpp --with-cpp +--cppflags --with-cppflags +--libs --with-libs +--ldflags --with-ldflags +--site-includes --with-site-includes +--site-libraries --with-site-libraries +--site-prefixes --with-site-prefixes +--site-runtime-libraries --with-site-runtime-libraries = +--dynamic --with-dynamic +--srcdir Unchanged + +Installation options: +--------------------- + +--prefix Unchanged +--with-prefix Unchanged +--with-netinstall Unchanged +--bindir Unchanged +--datadir Unchanged +--statedir Unchanged +--libdir Unchanged +--infodir Unchanged +--mandir Unchanged +--lispdir --with-lispdir +--sitelispdir Removed +--etcdir --with-etcdir +--lockdir Removed +--archlibdir --with-archlibdir +--docdir --with-docdir +--moduledir --with-moduledir + +Run-time path-searching options: +-------------------------------- + +--with-site-lisp Unchanged +--with-site-modules Unchanged +--package-prefix --with-package-prefix +--package-path --with-package-path +--infopath --with-infopath + +Window-system options: +---------------------- + +--with-gtk Unchanged +--with-gnome Unchanged +--with-x11 Unchanged +--x-includes Unchanged +--x-libraries Unchanged +--with-msw Unchanged +--with-toolbars Unchanged +--with-wmcommand Unchanged +--with-athena Unchanged +--with-menubars Unchanged +--with-scrollbars Unchanged +--with-dialogs Unchanged +--with-widgets Unchanged +--with-dragndrop Unchanged +--with-cde Unchanged +--with-offix Unchanged +--with-xmu Unchanged +--external-widget --with-external-widget + +TTY (character terminal) options: +--------------------------------- + +--with-tty Unchanged +--with-ncurses Unchanged +--with-gpm Unchanged + +Image options: +-------------- + +--with-xpm Unchanged +--with-png Unchanged +--with-jpeg Unchanged +--with-tiff Unchanged +--with-xface Unchanged +--with-gif Unchanged + +Sound options: +-------------- + +--with-sound Unchanged +--native-sound-lib=3DLIB --with-native-sound-lib + +Internationalization options: +----------------------------- + +--with-mule Unchanged +--with-xim Unchanged +--with-canna Unchanged +--with-wnn Unchanged +--with-wnn6 Unchanged +--with-xfs Unchanged + +File-related options: +--------------------- + +--with-default-eol-detection Unchanged +--with-clash-detection Unchanged + +Database options: +----------------- + +--with-database Unchanged +--with-ldap Unchanged +--with-postgresql Unchanged + +Mail options: +------------- + +--mail-locking=3DTYPE --with-mail-locking +--with-pop Unchanged +--with-kerberos Unchanged +--with-hesiod Unchanged + +Networking options: +------------------- + +--with-tooltalk Unchanged +--with-socks Unchanged +--with-dnet Unchanged +--with-ipv6-cname Unchanged + +Memory allocation options: +-------------------------- + +--rel-alloc --with-rel-alloc +--with-dlmalloc Unchanged +--with-system-malloc Unchanged +--with-debug-malloc Unchanged + +Emacs Lisp options: +------------------- + +--use-number-lib --with-bignum + +Debugging options: +------------------ + +--debug --with-debug +--error-checking --with-error-checking +--memory-usage-stats --with-memory-usage-stats +--quick-build --with-quick-build +--use-union-type --with-union-type +--with-quantify Unchanged +--with-purify Unchanged + +Developer options: +------------------ + +--with-workshop Unchanged +--pdump --with-pdump +--use-kkcc --with-kkcc +--with-modules Unchanged + +The output files produced by this new configure should be almost +identical to those produced by the old. This can be tested with the +provided regression test script. This script runs the two versions of +configure with the supplied list of command line arguments and reports +any differences. Please add your favorite configuration command lines +to the list before running the test. The script is run as: + +$ tests/autoconf/regressiontest.pl /absolute/path/to/2.13/configure \ + /absolute/path/to/2.59/configure >diffs.txt + +The only differences should be: +- those related to changes in the command line arguments +- the change of SYS_SIGLIST_DECLARED to HAVE_DECL_SYS_SIGLIST (because t= he old + form has been removed), and +- The removal of trailing comments in src/config.h. + = = = 1.1.14.15 +302 -252 XEmacs/xemacs/configure.ac = Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.1.14.14 retrieving revision 1.1.14.15 diff -u -p -r1.1.14.14 -r1.1.14.15 --- configure.ac 2005/09/24 15:16:01 1.1.14.14 +++ configure.ac 2005/11/06 16:13:46 1.1.14.15 @@ -15,13 +15,17 @@ ac_compile=3D'$CC -c $CFLAGS '"$xe_cppflag ac_link=3D'$CC -o conftest$ac_exeext $CFLAGS '"$xe_cppflags $xe_ldflags"= ' conftest.$ac_ext '"$xe_libs"' >&AS_MESSAGE_LOG_FD' ac_compiler_gnu=3D$ac_cv_c_compiler_gnu ]) - +dnl dnl --------------------------------------------------------------------= ----- dnl Autoconf startup. - +dnl +dnl Due to a dependence on the implementation of certain internal autoco= nf +dnl macros, die if any version other than 2.59 is used. AC_PREREQ(2.59)dnl +m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [2.59]), 1, + [m4_fatal([This script can only be generated with autoconf 2.59])], [])= dnl AC_INIT(src/lisp.h)dnl - +dnl dnl --------------------------------------------------------------------= ----- dnl Local copyright notices. = @@ -85,39 +89,39 @@ dnl dnl If there's reason to prefer $0 over this, make sure you fix all the dnl uses in this script!! progname=3D"`echo $0 | sed 's:^\./\./:\./:'`" - +dnl dnl --------------------------------------------------------------------= ----- dnl Local macros - +dnl define([USAGE_ERROR], [(echo "$progname: Usage error:" echo " " $1 -echo " Use \`$progname --help' to show usage.") >&2 && exit 1]) - +echo " Use \`$progname --help' to show usage.") >&2 && exit 1])dnl +dnl dnl PRINT_VAR(var var ...) prints values of shell variables define([PRINT_VAR],[for var in patsubst([$1],[[ -]+],[ ]); do eval "echo \"$var =3D '\$$var'\""; done]) - +]+],[ ]); do eval "echo \"$var =3D '\$$var'\""; done])dnl +dnl dnl XE_ADD_OBJS(foo.o) define([XE_ADD_OBJS], [extra_objs=3D"$extra_objs [$1]" && dnl if test "$verbose" =3D "yes"; then echo " xemacs will be linked with \"[$1]\"" fi])dnl XE_ADD_OBJS - +dnl dnl XE_APPEND(value, varname) define([XE_APPEND], [[$2]=3D"$[$2] [$1]" && dnl - if test "$verbose" =3D "yes"; then echo " Appending \"[$1]\" to \$[$= 2]"; fi]) - + if test "$verbose" =3D "yes"; then echo " Appending \"[$1]\" to \$[$= 2]"; fi])dnl +dnl dnl XE_PREPEND(value, varname) define([XE_PREPEND], [[$2]=3D"[$1] $[$2]" && dnl - if test "$verbose" =3D "yes"; then echo " Prepending \"[$1]\" to \$[= $2]"; fi]) - + if test "$verbose" =3D "yes"; then echo " Prepending \"[$1]\" to \$[= $2]"; fi])dnl +dnl dnl XE_DIE(message) -define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }]) - +define([XE_DIE], [{ echo "Error:" $1 >&2; exit 1; }])dnl +dnl dnl XE_CHECK_FEATURE_DEPENDENCY(feature1, feature2) define([XE_CHECK_FEATURE_DEPENDENCY], [if test "$with_[$1] $with_[$2]" =3D "yes no"; then @@ -125,13 +129,13 @@ define([XE_CHECK_FEATURE_DEPENDENCY], elif test "$with_[$2]" =3D "no" ; then with_[$1]=3Dno elif test "$with_[$1]" =3D "yes"; then with_[$2]=3Dyes fi -]) - +])dnl +dnl dnl XE_STRIP_4TH_COMPONENT(var) dnl Changes i986-pc-linux-gnu to i986-pc-linux, as God (not RMS) intende= d. define([XE_STRIP_4TH_COMPONENT], -[$1=3D`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'= `]) - +[$1=3D`echo "$$1" | sed '[s/^\([^-][^-]*-[^-][^-]*-[^-][^-]*\)-.*$/\1/]'= `])dnl +dnl dnl Do our best to deal with automounter brokenness dnl CANONICALIZE_PATH(varname) define([CANONICALIZE_PATH], @@ -140,7 +144,7 @@ define([CANONICALIZE_PATH], $1=3D`echo "[$]$1" | \ sed -e "s|^${tdir}/|/net/|" -e "s|^/a/|/net/|" -e "s|^/amd/|/net/|"` fi])dnl - +dnl dnl XE_PROTECT_LINKER_FLAGS(shell_var) define([XE_PROTECT_LINKER_FLAGS], [ if test "$GCC" =3D "yes"; then @@ -155,11 +159,11 @@ if test "$GCC" =3D "yes"; then shift done fi])dnl - +dnl dnl Allow use of either ":" or spaces for lists of directories define(COLON_TO_SPACE, [case "$[$1]" in *:* [)] [$1]=3D"`echo '' $[$1] | sed -e 's/^ //' -e '= s/:/ /g'`";; esac])dnl - +dnl dnl XE_ADD_RUNPATH_DIR(directory) define([XE_ADD_RUNPATH_DIR],[{ xe_runpath_dir=3D$1 @@ -169,7 +173,7 @@ dnl PRINT_VAR(ld_switch_site ld_switch_x -n "`ls ${xe_runpath_dir}/*.s[[ol]] 2>/dev/null`" && \ eval "$xe_add_unique_runpath_dir" }])dnl - +dnl dnl XE_COMPUTE_RUNPATH() define([XE_COMPUTE_RUNPATH],[ if test "$add_runtime_path" =3D "yes" -a -n "$dash_r"; then @@ -204,6 +208,7 @@ if test "$add_runtime_path" =3D "yes" -a - case "$arg" in -L*) XE_ADD_RUNPATH_DIR(`echo '' "$arg" | sed -e 's= :^ ::' -e 's/^-L//'`);; esac done dnl Sometimes /opt/SUNWdt/lib is the only installed Motif available + dnl #### this test always fails here as need_motif is null if test "$opsys $need_motif" =3D "sol2 yes"; then xe_runpath_dir=3D"/opt/SUNWdt/lib"; eval "$xe_add_unique_runpath_dir"; @@ -217,7 +222,7 @@ if test "$add_runtime_path" =3D "yes" -a - fi fi ])dnl - +dnl dnl The construct foo=3D`echo $w1 $w2 $w3` fails on some systems if $w1 = =3D -e or -n dnl So we use the following instead. dnl XE_SPACE(var, words) @@ -226,7 +231,42 @@ T=3D"" for W in $2; do if test -z "$T"; then T=3D"$W"; else T=3D"$T $W"; fi; do= ne $1=3D"$T" ])dnl XE_SPACE - +dnl +dnl XE_MERGED_ARG(FEATURE, HELP-STRING, [ACTION-IF-TRUE], [ACTION-IF-FAL= SE]) +dnl --------------------------------------------------------------------= ---- +dnl +dnl Arguments that can be specified with either --enable or --with. The +dnl majority of XEmacs arguments do not fit neatly into the division be= tween +dnl --enable and --with, so allow those to be specified by either argume= nt. +dnl The value is stored in both enable_FEATURE and with_FEATURE. +AC_DEFUN([XE_MERGED_ARG], +[m4_divert_once([HELP_ENABLE], [[ +Optional Features: + --with-FEATURE[=3DARG] include FEATURE [ARG=3Dyes] + --enable-FEATURE[=3DARG] alias for --with-FEATURE + --without-FEATURE do not use FEATURE (same as --with-FEATURE=3Dn= o) + --disable-FEATURE alias for --without-FEATURE]])dnl +m4_divert_once([HELP_ENABLE], m4_bpatsubst([[$2]],[--enable\([^ ]+\) ],[= --with\1 ]))dnl +# If --with-$1 or --without-$1 were given then copy the value to the +# equivalent enable_$1 variable. +if test "[${with_]m4_bpatsubst([$1], -, _)+set}" =3D set; then + [enable_]m4_bpatsubst([$1], -, _)=3D"[$with_]m4_bpatsubst([$1], -, _)" +fi; +# If -enable-$1 or --disable-$1 were given then copy the value to the +# equivalent with_$1 variable. +if test "[${enable_]m4_bpatsubst([$1], -, _)+set}" =3D set; then + [with_]m4_bpatsubst([$1], -, _)=3D"[$enable_]m4_bpatsubst([$1], -, _)" +fi; +# Check whether --with-$1 or --without-$1 was given. +if test "[${with_]m4_bpatsubst([$1], -, _)+set}" =3D set; then + enableval=3D"[$with_]m4_bpatsubst([$1], -, _)" + withval=3D"[$with_]m4_bpatsubst([$1], -, _)" + $3 +m4_ifvaln([$4], [else + $4])dnl +fi; dnl +])dnl XE_MERGED_ARG +dnl dnl XEmacs keyword option support dnl =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D dnl = @@ -249,7 +289,7 @@ dnl define([XE_PARSE_KEYWORD_OPTION], [_[$1]_bogus=3Dyes for x in XE_KEYWORD_LIST ; do - if test $x =3D $[$1] ; then + if test $x =3D $with_[$1] ; then _[$1]_bogus=3Dno fi done @@ -258,7 +298,7 @@ define([XE_PARSE_KEYWORD_OPTION], fi unset _[$1]_bogus undefine([XE_KEYWORD_LIST])dnl -undefine([XE_KEYWORD_VALUES])]) +undefine([XE_KEYWORD_VALUES])])dnl dnl dnl XE_KEYWORD(keyword) dnl -------------------------------- @@ -269,35 +309,21 @@ define([XE_KEYWORD], dnl Separate with a ':' instead of a ',' (see the parsing code above) to= avoid dnl confusion with marco parameter lists. m4_append([XE_KEYWORD_VALUES],[\`$1'],[:])dnl -]) -dnl -dnl XE_KEYWORD_ARG_WITH(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION-IF-= FALSE, -dnl [XE_KEYWORD(keyword), ....]) -dnl --------------------------------------------------------------------= ------ -dnl -dnl Expanded version of AC_ARG_WITH for keyword options. All the parame= ters -dnl are required. -dnl -define([XE_KEYWORD_ARG_WITH], -[m4_map([XE_KEYWORD],m4_shiftn(4, $@)) -AC_ARG_WITH([$1],[$2], -[XE_PARSE_KEYWORD_OPTION([with_]patsubst([$1], -, _), [--with-$1]) -$3 -],[$4])]) +])dnl dnl -dnl XE_KEYWORD_ARG_ENABLE(FEATURE, HELP-STRING, ACTION-IF-TRUE, ACTION-I= F-FALSE, +dnl XE_KEYWORD_ARG(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION-IF-FALSE, dnl [XE_KEYWORD(keyword), ....]) dnl --------------------------------------------------------------------= ------ dnl -dnl Expanded version of AC_ARG_ENABLE for keyword options. All the para= meters +dnl Expanded version of XE_MERGED_ARG for keyword options. All the para= meters dnl are required. dnl -define([XE_KEYWORD_ARG_ENABLE], +define([XE_KEYWORD_ARG], [m4_map([XE_KEYWORD],m4_shiftn(4, $@)) -AC_ARG_ENABLE([$1],[$2], -[XE_PARSE_KEYWORD_OPTION([enable_]patsubst([$1], -, _), [--enable-$1]) +XE_MERGED_ARG([$1],[$2], +[XE_PARSE_KEYWORD_OPTION(patsubst([$1], -, _), [--with-$1]) $3 -],[$4])]) +],[$4])])dnl dnl dnl XEmacs complex option support dnl =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D @@ -320,7 +346,8 @@ dnl Internal macro create the option's s dnl value and to note the values in an option list. dnl define([XE_EXPAND_COMPLEX_OPTION], -[[$1]_[$2]=3D[$3] +[with_[$1]_[$2]=3D[$3] +enable_[$1]_[$2]=3D[$3] m4_append([XE_COMPONENT_LIST],[$2],[ ])dnl dnl Separate with a ':' instead of a ',' (see _default below) to= avoid dnl confusion with marco parameter lists. @@ -335,7 +362,7 @@ dnl define([XE_EXPAND_COMPLEX_OPTIONS], [m4_if([$2], [[]], [], [XE_EXPAND_COMPLEX_OPTION([$1], m4_fst($2))[]dnl -XE_EXPAND_COMPLEX_OPTIONS([$1], m4_cdr($2))])]) +XE_EXPAND_COMPLEX_OPTIONS([$1], m4_cdr($2))])])dnl dnl dnl XE_INIT_COMPLEX_OPTION(prefix, option_list) dnl ------------------------------------------- @@ -347,7 +374,7 @@ dnl and _default contains a comm dnl values. dnl define([XE_INIT_COMPLEX_OPTION], -[[$1]_notfirst=3D"" +[_[$1]_notfirst=3D"" dnl XE_EXPAND_COMPLEX_OPTIONS($@) _[$1]_types=3D"XE_COMPONENT_LIST" @@ -356,8 +383,8 @@ dnl Undefine these macros so that they c dnl options. undefine([XE_COMPONENT_LIST]) undefine([XE_COMPONENT_DEFAULT]) -]) - +])dnl +dnl dnl XE_PARSE_COMPLEX_OPTION(prefix, cmdline-flag) dnl --------------------------------------------- dnl @@ -365,7 +392,7 @@ dnl Internal macro to parse the option v dnl found then an error is generated. dnl define([XE_PARSE_COMPLEX_OPTION], -[for x in `echo "$[$1]" | sed -e 's/,/ /g'` ; do +[for x in `echo "$with_[$1]" | sed -e 's/,/ /g'` ; do _[$1]_all_default=3D"" _[$1]_found=3D"" case "$x" in @@ -380,12 +407,14 @@ define([XE_PARSE_COMPLEX_OPTION], dnl echo "$x" =3D "$y" _[$1]_found=3Dyes dnl echo eval `echo "[$1]_$y=3Dyes"` - eval "[$1]_$y=3Dyes" + eval "with_[$1]_$y=3Dyes" + eval "enable_[$1]_$y=3Dyes" elif test "$x" =3D "no$y"; then dnl echo "$x" =3D "no$y" _[$1]_found=3Dyes dnl echo eval `echo "[$1]_$y=3Dno"` - eval "[$1]_$y=3Dno" + eval "with_[$1]_$y=3Dno" + eval "enable_[$1]_$y=3Dno" fi done test -z "$_[$1]_found" && _[$1]_bogus=3Dyes @@ -398,15 +427,16 @@ Defaults may be overridden with \`all' o Hardcoded default is: $_[$1]_default."]) elif test -n "$_[$1]_all_default" ; then for y in $_[$1]_types; do - eval "[$1]_$y=3D$_[$1]_all_default" + eval "with_[$1]_$y=3D$_[$1]_all_default" + eval "enable_[$1]_$y=3D$_[$1]_all_default" done fi _[$1]_notfirst=3Dyes done unset _[$1]_bogus _[$1]_found _[$1]_notfirst _[$1]_types unset _[$1]_default _[$1]_all_default x y -]) - +])dnl +dnl dnl XE_COMPLEX_OPTION(option, yesno) dnl -------------------------------- dnl @@ -423,35 +453,21 @@ dnl define([XE_COMPLEX_OPTION_HELP_STRING], [AC_HELP_STRING([$1],[Compile with support for $2. Components that can u= se $3 are $4. Prefix component with `no' to disable its use of $3. Requires -$5 support. Default is $6.])]) +$5 support. Default is $6.])])dnl dnl -dnl XE_COMPLEX_ARG_WITH(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION-IF-= FALSE, +dnl XE_COMPLEX_ARG(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION-IF-FALSE, dnl [XE_COMPLEX_OPTION(a,yes), ....]) dnl --------------------------------------------------------------------= ------ -dnl -dnl Expanded version of AC_ARG_WITH for complex options. All the parame= ters -dnl are required. -dnl -define([XE_COMPLEX_ARG_WITH], -[XE_INIT_COMPLEX_OPTION([with_]patsubst([$1], -, _), m4_shiftn(4, $@)) -AC_ARG_WITH([$1],[$2], -[XE_PARSE_COMPLEX_OPTION([with_]patsubst([$1], -, _), [--with-$1]) -$3 -],[$4])]) -dnl -dnl XE_COMPLEX_ARG_ENABLE(FEATURE, HELP-STRING, ACTION-IF-TRUE, ACTION-I= F-FALSE, -dnl [XE_COMPLEX_OPTION, ....]) -dnl --------------------------------------------------------------------= ------ dnl -dnl Expanded version of AC_ARG_ENABLE for complex options. All the para= meters +dnl Expanded version of XE_MERGED_ARG for complex options. All the para= meters dnl are required. dnl -define([XE_COMPLEX_ARG_ENABLE], -[XE_INIT_COMPLEX_OPTION([enable_]patsubst([$1], -, _), m4_shiftn(4, $@)) -AC_ARG_ENABLE([$1],[$2], -[XE_PARSE_COMPLEX_OPTION([enable_]patsubst([$1], -, _), [--enable-$1]) +define([XE_COMPLEX_ARG], +[XE_INIT_COMPLEX_OPTION(patsubst([$1], -, _), m4_shiftn(4, $@)) +XE_MERGED_ARG([$1],[$2], +[XE_PARSE_COMPLEX_OPTION(patsubst([$1], -, _), [--with-$1]) $3 -],[$4])]) +],[$4])])dnl dnl dnl --------------------------------------------------------------------= ----- XE_APPEND(lib-src, MAKE_SUBDIR) @@ -462,19 +478,6 @@ dnl Command line argument processing. dnl Note that AC_HELP_STRING compresses whitespace, wraps, and indents t= he dnl string to fit the --help display; there's no need to preformat. dnl -dnl Error-checking on old-style flags -AC_ARG_WITH([mule],[],[XE_DIE([--enable-mule, NOT --with-mule])],[]) -AC_ARG_WITH([menubars],[],[XE_DIE([--enable-menubars, NOT --with-menubar= s])],[]) -AC_ARG_WITH([scrollbars],[],[XE_DIE([--enable-scrollbars, NOT --with-scr= ollbars])],[]) -AC_ARG_WITH([dialogs],[],[XE_DIE([--enable-dialogs, NOT --with-dialogs])= ],[]) -AC_ARG_WITH([widgets],[],[XE_DIE([--enable-widgets, NOT --with-widgets])= ],[]) -AC_ARG_WITH([sound],[],[XE_DIE([--enable-sound, NOT --with-sound])],[]) -AC_ARG_WITH([default-eol-detection],[],[XE_DIE([--enable-default-eol-det= ection, NOT --with-default-eol-detection])],[]) -AC_ARG_WITH([clash-detection],[],[XE_DIE([--enable-clash-detection, NOT = --with-clash-detection])],[]) -AC_ARG_WITH([database],[],[XE_DIE([--enable-database, NOT --with-databas= e])],[]) -AC_ARG_WITH([modules],[],[XE_DIE([--enable-modules, NOT --with-modules])= ],[]) -AC_ARG_WITH([toolbars],[],[XE_DIE([--enable-toolbars, NOT --with-toolbar= s])],[]) - dnl I think these will be caught by autoconf internal checks, dnl only --with-* are unchecked dnl --external-widget --enable-external-widget @@ -489,52 +492,52 @@ dnl --quick-build --enable-q dnl --use-union-type --enable-union-type dnl --pdump --enable-pdump dnl --use-kkcc --enable-kkcc - +dnl dnl parse flags -AC_ARG_WITH([prefix], +XE_MERGED_ARG([prefix], AC_HELP_STRING([--with-prefix=3Dno],[Don't compile the value for `prefi= x' into the executable.]), [true], [with_prefix=3Dyes]) -AC_ARG_WITH([site-lisp], +XE_MERGED_ARG([site-lisp], AC_HELP_STRING([--with-site-lisp=3Dno],[Allow for a site-lisp directory= in the XEmacs hierarchy searched before the installation packages.]), [true], [with_site_lisp=3Dno]) -AC_ARG_WITH([site-modules], +XE_MERGED_ARG([site-modules], AC_HELP_STRING([--with-site-modules],[Disable site-modules directory in= the XEmacs hierarchy, which is searched before the installation modules.]), [], []) -AC_ARG_WITH([gtk], +XE_MERGED_ARG([gtk], AC_HELP_STRING([--with-gtk],[Support GTK on the X Window System. (EXPER= IMENTAL)]), [true], [with_gtk=3Dno]) -AC_ARG_WITH([gnome], +XE_MERGED_ARG([gnome], AC_HELP_STRING([--with-gnome],[Support GNOME on the X Window System. (E= XPERIMENTAL)]), [true], [with_gnome=3Dno]) -AC_ARG_WITH([msw], +XE_MERGED_ARG([msw], AC_HELP_STRING([--with-msw],[Support MS Windows as a window system (onl= y under Cygwin and MinGW). `--with-msw=3Dno' may be needed on *nix systems= with Wine installed.]), [], []) -AC_ARG_WITH([gcc], +XE_MERGED_ARG([gcc], AC_HELP_STRING([--with-gcc],[Use GCC to compile XEmacs.]), [], []) -AC_ARG_WITH([dynamic], +XE_MERGED_ARG([dynamic], AC_HELP_STRING([--with-dynamic],[Link dynamically if supported by syste= m. 'No' forces static linking.]), [], []) -AC_ARG_WITH([ncurses], +XE_MERGED_ARG([ncurses], AC_HELP_STRING([--with-ncurses],[Use the ncurses library for tty suppor= t.]), [], []) -AC_ARG_WITH([dnet], +XE_MERGED_ARG([dnet], AC_HELP_STRING([--with-dnet],[Compile with support for DECnet.]), [], []) -AC_ARG_WITH([socks], +XE_MERGED_ARG([socks], AC_HELP_STRING([--with-socks],[Compile with support for SOCKS (an Inter= net proxy).]), [], []) -AC_ARG_WITH([dragndrop], +XE_MERGED_ARG([dragndrop], AC_HELP_STRING([--with-dragndrop],[Compile in the generic drag and drop= API. This is automatically added if one of the drag and drop protocols is found (currently CDE, OffiX, MSWind= ows, and GTK). *WARNING* The Drag'n'drop support is under deve= lopment and is considered experimental.]), [], []) -AC_ARG_WITH([cde], +XE_MERGED_ARG([cde], AC_HELP_STRING([--with-cde],[Compile in support for CDE drag and drop.]= ), [], []) -AC_ARG_WITH([offix], +XE_MERGED_ARG([offix], AC_HELP_STRING([--with-offix],[Compile in support for OffiX drag and dr= op. *WARNING* If you compile in OffiX, you may not = be able to use multiple X displays succe= ss- @@ -542,40 +545,39 @@ AC_ARG_WITH([offix], different vendors, the results may be unpredictable.]), [], []) -AC_ARG_WITH([gpm], +XE_MERGED_ARG([gpm], AC_HELP_STRING([--with-gpm],[Compile in GPM mouse support for ttys.]), [], []) -AC_ARG_WITH([xpm], +XE_MERGED_ARG([xpm], AC_HELP_STRING([--with-xpm],[Compile with support for XPM images. PRAC= TICALLY REQUIRED. Although this library is nonstandard = and a real hassle to build, many basic things (e.g. toolbars) depend on it, and you will run into many problems without it.]), [], []) -AC_ARG_WITH([xface], +XE_MERGED_ARG([xface], AC_HELP_STRING([--with-xface],[Compile with support for X-Face mail hea= ders. Requires the compface package.]), [], []) -AC_ARG_WITH([gif], +XE_MERGED_ARG([gif], AC_HELP_STRING([--with-gif],[Compile without the (builtin) support for = GIF images.]), [], []) -AC_ARG_WITH([jpeg], +XE_MERGED_ARG([jpeg], AC_HELP_STRING([--with-jpeg],[Compile with support for JPEG images. Us= eful if you are using a mail, news reader, or web browser in XEmacs, so that JPEG images can be displayed.= ]), [], []) -AC_ARG_WITH([png], +XE_MERGED_ARG([png], AC_HELP_STRING([--with-png],[Compile with support for PNG images. Reco= mmended because the images on the About page are not vie= wable without it.]), [], []) -AC_ARG_WITH([tiff], +XE_MERGED_ARG([tiff], AC_HELP_STRING([--with-tiff],[Compile with support for TIFF images. Po= ssibly useful, for the same reason as JPEG images.]), [], []) - dnl if you change defaults, make sure to fix arg 6 of the OPTION_HELP ma= cro. -XE_COMPLEX_ARG_WITH([xft], +XE_COMPLEX_ARG([xft], [XE_COMPLEX_OPTION_HELP_STRING([--with-xft], [Xft client-side font rendering and anti-aliasing], [Xft], @@ -587,182 +589,173 @@ XE_COMPLEX_ARG_WITH([xft], XE_COMPLEX_OPTION([menubars],[yes]), XE_COMPLEX_OPTION([tabs],[yes]), XE_COMPLEX_OPTION([gauges],[yes])]) -dnl sanity checking -dnl #### Maybe we should XE_DIE here instead? Or fix the UI so that -dnl emacs is always implicit? (I worry that --without-xft would be weir= d.) -if test \( "$with_xft_menubars" =3D "yes" -o "$with_xft_tabs" =3D "yes" \ - -o "$with_xft_gauges" =3D "yes" \) -a "$with_xft_emacs" =3D "= no"; then - AC_MSG_WARN([Forcing --with-xft=3Demacs because Xft is enabled]) - with_xft_emacs=3Dyes -fi -# end of Xft parsing -AC_ARG_WITH([zlib], +XE_MERGED_ARG([zlib], AC_HELP_STRING([--with-zlib],[Support inflate (de)compression internall= y.]), [], []) -AC_ARG_WITH([wmcommand], +XE_MERGED_ARG([wmcommand], AC_HELP_STRING([--with-wmcommand],[Compile without realized leader wind= ow which will keep the WM_COMMAND property.]), [], []) -AC_ARG_WITH([xmu], +XE_MERGED_ARG([xmu], AC_HELP_STRING([--with-xmu],[Use Xmu utilities. Default: yes.]), [], []) -AC_ARG_WITH([purify], +XE_MERGED_ARG([purify], AC_HELP_STRING([--with-purify],[Support memory debugging using Purify.]= ), [], []) -AC_ARG_WITH([quantify], +XE_MERGED_ARG([quantify], AC_HELP_STRING([--with-quantify],[Support performance debugging using Q= uantify.]), [], []) -AC_ARG_ENABLE([toolbars], - AC_HELP_STRING([--with-toolbars],[Enable toolbar support. Default: yes.= ]), +XE_MERGED_ARG([toolbars], + AC_HELP_STRING([--enable-toolbars],[Enable toolbar support. Default: ye= s.]), [], []) -AC_ARG_WITH([tty], +XE_MERGED_ARG([tty], AC_HELP_STRING([--with-tty],[Enable TTY support. Default: yes.]), [], []) -AC_ARG_WITH([xfs], +XE_MERGED_ARG([xfs], AC_HELP_STRING([--with-xfs],[Enable XFontSet support for internationali= zed menubar. Incompatible with `--with-xim=3Dmotif'= and `--with-xft'. `--enable-menubars=3Dlucid' (the default) is des= irable.]), [], []) -AC_ARG_ENABLE([mule], - AC_HELP_STRING([--enable-mule],[Compile with Mule (MUlti-Lingual Emacs)= support, +XE_MERGED_ARG([mule], + AC_HELP_STRING([--enable-mule],[Compile with Mule (Multi-Lingual Emacs)= support, needed to support non-Latin-1 (including Asian) languages.]), [], []) -AC_ARG_ENABLE([default-eol-detection], +XE_MERGED_ARG([default-eol-detection], AC_HELP_STRING([--enable-default-eol-detection],[Turns on by default au= to-detection of end-of-line type when reading a file. Applies to those platforms where auto-detection is off by default (non-Mule Unix). Has no effect otherwise.]), [], []) -AC_ARG_WITH([canna], +XE_MERGED_ARG([canna], AC_HELP_STRING([--with-canna],[Support the Canna Japanese input method.= Requires Mule.]), [], []) -AC_ARG_WITH([wnn], +XE_MERGED_ARG([wnn], AC_HELP_STRING([--with-wnn],[Support the Wnn Asian language input method. Requires Mule.]), [], []) -AC_ARG_WITH([wnn6], +XE_MERGED_ARG([wnn6], AC_HELP_STRING([--with-wnn6],[Support the Wnn6 Asian language input method (proprietary). Requires Mule.]), [], []) -AC_ARG_WITH([workshop], +XE_MERGED_ARG([workshop], AC_HELP_STRING([--with-workshop],[Support the Sun WorkShop (formerly Sp= arcworks) development environment.]), [], []) -AC_ARG_WITH([sparcworks], +XE_MERGED_ARG([sparcworks], AC_HELP_STRING([--with-sparcworks],[Alias for --with-workshop]), [], []) -AC_ARG_WITH([tooltalk], +XE_MERGED_ARG([tooltalk], AC_HELP_STRING([--with-tooltalk],[Support the ToolTalk IPC protocol.]), [], []) -AC_ARG_WITH([ldap], +XE_MERGED_ARG([ldap], AC_HELP_STRING([--with-ldap],[Support the LDAP protocol.]), [], []) -AC_ARG_WITH([postgresql], +XE_MERGED_ARG([postgresql], AC_HELP_STRING([--with-postgresql],[Support the PostgreSQL RDBMS.]), [], []) -AC_ARG_WITH([pop], +XE_MERGED_ARG([pop], AC_HELP_STRING([--with-pop],[Support POP for mail retrieval.]), [], []) -AC_ARG_WITH([kerberos], +XE_MERGED_ARG([kerberos], AC_HELP_STRING([--with-kerberos],[Support Kerberos-authenticated POP.]), [], []) -AC_ARG_WITH([hesiod], +XE_MERGED_ARG([hesiod], AC_HELP_STRING([--with-hesiod],[Support Hesiod to get the POP server ho= st.]), [], []) -AC_ARG_WITH([infodock], +XE_MERGED_ARG([infodock], AC_HELP_STRING([--with-infodock],[Support the Infodock version of XEmac= s. Infodock is a SourceForge project).]), [], []) -AC_ARG_WITH([native-sound-lib], +XE_MERGED_ARG([native-sound-lib], AC_HELP_STRING([--with-native-sound-lib],[Path to sound library (for sy= stems with name conflicts).]), [], []) -AC_ARG_WITH([netinstall], +XE_MERGED_ARG([netinstall], AC_HELP_STRING([--with-netinstall],[Support for installation over the i= nternet. Only functional on the MS Windows platforms.]), [], [with_netinstall=3D"no"]) -AC_ARG_WITH([optimization], +XE_MERGED_ARG([optimization], AC_HELP_STRING([--with-optimization],[Control whether compilation is op= timized. By default, optimization is on in release versions and off in bet= a versions, since it can interfere with proper stack backtraces.]), [], []) -AC_ARG_WITH([ipv6-cname], +XE_MERGED_ARG([ipv6-cname], AC_HELP_STRING([--with-ipv6-cname],[Try IPv6 information first when can= onicalizing host names. This option has no effect unless system supports g= etaddrinfo(3) and getnameinfo(3).]), [], [with_ipv6_cname=3D"no"]) -AC_ARG_WITH([site-includes], +XE_MERGED_ARG([site-includes], AC_HELP_STRING([--with-site-includes],[Prepend to include search path.]= ), [], []) -AC_ARG_WITH([site-libraries], +XE_MERGED_ARG([site-libraries], AC_HELP_STRING([--with-site-libraries],[Prepend to library search path.= ]), [], []) -AC_ARG_WITH([site-prefixes], +XE_MERGED_ARG([site-prefixes], AC_HELP_STRING([--with-site-prefixes],[Prepend to include and library s= earch paths, with /include and /lib added. Comes after site-includes and s= ite-libraries, if any.]), [], []) -AC_ARG_WITH([statedir], +XE_MERGED_ARG([statedir], AC_HELP_STRING([--with-statedir],[]), [], [with_statedir=3D'${prefix}/lib']) -AC_ARG_WITH([lispdir], +XE_MERGED_ARG([lispdir], AC_HELP_STRING([--with-lispdir],[]), [AC_DEFINE(LISPDIR_USER_DEFINED)], [with_lispdir=3D'${datadir}/${instva= rdir}/lisp']) -AC_ARG_WITH([archlibdir], +XE_MERGED_ARG([archlibdir], AC_HELP_STRING([--with-archlibdir],[]), [AC_DEFINE(ARCHLIBDIR_USER_DEFINED)], [with_archlibdir=3D'${libdir}/${i= nstvardir}/${configuration}']) -AC_ARG_WITH([moduledir], +XE_MERGED_ARG([moduledir], AC_HELP_STRING([--with-moduledir],[]), [AC_DEFINE(MODULEDIR_USER_DEFINED)], [with_moduledir=3D'${libdir}/${ins= tvardir}/${configuration}/modules']) -AC_ARG_WITH([etcdir], +XE_MERGED_ARG([etcdir], AC_HELP_STRING([--with-etcdir],[]), [AC_DEFINE(ETCDIR_USER_DEFINED)], [with_etcdir=3D'${datadir}/${instvard= ir}/etc']) -AC_ARG_WITH([infopath], +XE_MERGED_ARG([infopath], AC_HELP_STRING([--with-infopath],[]), [AC_DEFINE(INFOPATH_USER_DEFINED)], []) -AC_ARG_WITH([docdir], +XE_MERGED_ARG([docdir], AC_HELP_STRING([--with-docdir],[]), [AC_DEFINE(DOCDIR_USER_DEFINED)], [with_docdir=3D'${archlibdir}']) -AC_ARG_WITH([site-runtime-libraries], +XE_MERGED_ARG([site-runtime-libraries], AC_HELP_STRING([--with-site-runtime-libraries],[]), [], []) -AC_ARG_WITH([package-prefix], +XE_MERGED_ARG([package-prefix], AC_HELP_STRING([--with-package-prefix],[Specify packages root.]), [AC_DEFINE(PACKAGE_PATH_USER_DEFINED)], []) -AC_ARG_WITH([package-path], +XE_MERGED_ARG([package-path], AC_HELP_STRING([--with-package-path],[Search path for package hierarchi= es.]), [AC_DEFINE(PACKAGE_PATH_USER_DEFINED)], []) -AC_ARG_ENABLE([external-widget], +XE_MERGED_ARG([external-widget], AC_HELP_STRING([--enable-external-widget],[Support XEmacs server for te= xt widgets in other applications.]), [], []) -AC_ARG_ENABLE([kkcc], +XE_MERGED_ARG([kkcc], AC_HELP_STRING([--enable-kkcc],[Enable new GC algorithms.]), - [], []) -AC_ARG_ENABLE([mc-alloc], + [], [enable_kkcc=3Dyes]) +XE_MERGED_ARG([mc-alloc], AC_HELP_STRING([--enable-mc-alloc],[Enable new allocator.]), - [], []) -AC_ARG_ENABLE([union-type], + [], [enable_mc_alloc=3Dyes]) +XE_MERGED_ARG([union-type], AC_HELP_STRING([--enable-union-type],[Use union definition of Lisp_Obje= ct type. Known to trigger bugs in some compilers.]), [], []) -AC_ARG_ENABLE([pdump], +XE_MERGED_ARG([pdump], AC_HELP_STRING([--enable-pdump],[Enable portable LISP preloader.]), [], []) -AC_ARG_ENABLE([dump-in-exec], +XE_MERGED_ARG([dump-in-exec], AC_HELP_STRING([--enable-dump-in-exec],[Enable dumping into executable = (enabled by default for `pdump', not enabled by default in combination = with `mc-alloc').]), [], []) -AC_ARG_ENABLE([debug], +XE_MERGED_ARG([debug], AC_HELP_STRING([--enable-debug],[Enable additional debugging informatio= n. No time cost.]), [], []) -AC_ARG_ENABLE([assertions], +XE_MERGED_ARG([assertions], AC_HELP_STRING([--enable-assertions],[]), [], []) -AC_ARG_ENABLE([memory-usage-stats], +XE_MERGED_ARG([memory-usage-stats], AC_HELP_STRING([--enable-memory-usage-stats],[Enable LISP memory usage = API.]), [], []) -AC_ARG_ENABLE([clash-detection], +XE_MERGED_ARG([clash-detection], AC_HELP_STRING([--enable-clash-detection],[Disable use of lock files to= detect multiple edits of the same file.]), [], []) -AC_ARG_ENABLE([modules], +XE_MERGED_ARG([modules], AC_HELP_STRING([--enable-modules],[Compile in experimental support for = dynamically loaded libraries (Dynamic Shared Objects).]), [], []) -AC_ARG_ENABLE([quick-build], +XE_MERGED_ARG([quick-build], AC_HELP_STRING([--enable-quick-build],[Speed up the build cycle by leav= ing out steps where XEmacs will still work (more or less) without th= em. Potentially dangerous if you don't know what you= 're @@ -775,81 +768,81 @@ AC_ARG_ENABLE([quick-build], to be rebuilt.]), [], []) = -AC_ARG_WITH([compiler], +XE_MERGED_ARG([compiler], AC_HELP_STRING([--with-compiler],[C compiler to use]), [], []) = -AC_ARG_WITH([xemacs-compiler], - AC_HELP_STRING([--with-xemacs-compiler],[compiler to use to compile jus= t the xemacs executable and C modules. +XE_MERGED_ARG([xemacs-compiler], + AC_HELP_STRING([--with-xemacs-compiler], + [compiler to use to compile just the xemacs executable and C modules. If you want to compile XEmacs as C++, use e.g. `--with-xemacs-compiler=3Dg++'. This turns on a lot of additional error-checking.]), [], []) = -AC_ARG_WITH([cflags], - AC_HELP_STRING([--with-cflags],[Compiler flags (such as -O); setting th= is overrides - all default compiler flags except those that con= trol - warnings.]), +XE_MERGED_ARG([cflags], + AC_HELP_STRING([--with-cflags], + [Compiler flags. These flags will be placed after any flags inserted f= or warnings, debugging or optimization; setting this does not disable the i= nsertion of those flags. Use configure settings such as `--with-optimizati= on=3Dno' or `enable-debug=3Dno' to turn them off, or override them with `--= with-cflags-optimization', `--with-cflags-debugging', or `with-cflags-warni= ng'.]), [], []) = -AC_ARG_WITH([cflags-warning], +XE_MERGED_ARG([cflags-warning], AC_HELP_STRING([--with-cflags-warning],[Override compiler flags used to= control warnings. Normally, don't set this, as XEmacs already turn= s on the maximum safe warning level.]), [], []) = -AC_ARG_WITH([cflags-optimization], +XE_MERGED_ARG([cflags-optimization], AC_HELP_STRING([--with-cflags-optimization=3DFLAGS], - [Override compiler flags used to control optimization. Only has an eff= ect when optimization is enabled. Normally, don't set this, as XEmacs will= already set the maximum safe optimization flags appropriate for the compil= er being invoked.]), + [Override compiler flags used to control optimization. If blank, force= s no optimization; if non-blank, forces optimization. Normally, don't set = this; XEmacs automatically sets the maximum safe optimization flags appropr= iate for the compiler being invoked. If you just want to turn optimization= on or off, use `with-optimization' instead.]), [], []) = -AC_ARG_WITH([cflags-debugging], +XE_MERGED_ARG([cflags-debugging], AC_HELP_STRING([--with-cflags-debugging=3DFLAGS], [Override compiler flags used to add debugging information to the execu= table. Normally, debugging information is added whenever possible (i.e. un= less optimization is turned on and the compiler does not permit debugging a= nd optimization simultaneously).]), [], []) = -AC_ARG_WITH([cpp], +XE_MERGED_ARG([cpp], AC_HELP_STRING([--with-cpp],[C preprocessor to use (e.g. /usr/ccs/lib/c= pp or cc -E)]), [CPP=3D"$with_cpp"], []) = -AC_ARG_WITH([cppflags], +XE_MERGED_ARG([cppflags], AC_HELP_STRING([--with-cppflags],[C preprocessor flags (e.g. -I/foo or = -Dfoo=3Dbar)]), [CPPFLAGS=3D"$with_cppflags"], []) = -AC_ARG_WITH([libs], +XE_MERGED_ARG([libs], AC_HELP_STRING([--with-libs],[Additional libraries (e.g. -lfoo)]), [LIBS=3D"$with_libs"], []) = -AC_ARG_WITH([ldflags], +XE_MERGED_ARG([ldflags], AC_HELP_STRING([--with-ldflags],[Additional linker flags (e.g. -L/foo)]= ), [LDFLAGS=3D"$with_ldflags"], []) = -AC_ARG_WITH([rel-alloc], +XE_MERGED_ARG([rel-alloc], AC_HELP_STRING([--with-rel-alloc],[Enable the relocating allocator.]), [], [with_rel_alloc=3D'default']) = -AC_ARG_WITH([dlmalloc], +XE_MERGED_ARG([dlmalloc], AC_HELP_STRING([--with-dlmalloc],[Use Doug Lea's malloc implementation.= ]), [], [with_dlmalloc=3D'default']) = -AC_ARG_WITH([debug-malloc], +XE_MERGED_ARG([debug-malloc], AC_HELP_STRING([--with-debug-malloc],[Use a debugging malloc.]), [], []) = -AC_ARG_WITH([system-malloc], +XE_MERGED_ARG([system-malloc], AC_HELP_STRING([--with-system-malloc],[Use the system malloc, not the o= ne distributed with XEmacs.]), [], [with_system_malloc=3D'default']) = #Enable code. = -XE_COMPLEX_ARG_ENABLE([database], +XE_COMPLEX_ARG([database], AC_HELP_STRING([--enable-database],[Compile with database support. Val= id types are `no' or a comma-separated list of one or more of `berkdb' and either `dbm' or `gnudbm'.]), [ if test "$enable_database_dbm" =3D "yes" -a "$enable_database_gdbm" =3D= "yes"; then USAGE_ERROR("Only one of \`dbm' and \`gnudbm' may be specified -with the \`--enable-database' option.") +with the \`--with-database' option.") fi ], [], @@ -857,7 +850,7 @@ fi XE_COMPLEX_OPTION([dbm],[""]), XE_COMPLEX_OPTION([gdbm],[""])]) = -XE_COMPLEX_ARG_ENABLE([sound], +XE_COMPLEX_ARG([sound], AC_HELP_STRING([--enable-sound],[Compile with sound support. Valid types are `native', `nas' and `esd'. Prefix a type with 'no' to disable. @@ -872,26 +865,26 @@ XE_COMPLEX_ARG_ENABLE([sound], XE_COMPLEX_OPTION([nas],[""]), XE_COMPLEX_OPTION([esd],[no])]) = -XE_KEYWORD_ARG_WITH([athena], +XE_KEYWORD_ARG([athena], AC_HELP_STRING([--with-athena],[Use TYPE Athena widgets (xaw, 3d, next,= 95, or xpm).]), [],[],[xaw,3d,next,95,xpm])dnl = -XE_KEYWORD_ARG_WITH([xim],[],[],[],[yes,no,xlib,motif])dnl +XE_KEYWORD_ARG([xim],[],[],[],[yes,no,xlib,motif])dnl = -XE_KEYWORD_ARG_WITH([mail-locking], +XE_KEYWORD_ARG([mail-locking], AC_HELP_STRING([--with-mail-locking],[Specify the locking to be used by= movemail to prevent concurrent updates of mail spool files. Valid ty= pes are `lockf', `flock', `dot', `locking' or `mmdf'= .]), [],[],[lockf,flock,file,locking,mmdf,pop])dnl = = -XE_KEYWORD_ARG_ENABLE([bignum], +XE_KEYWORD_ARG([bignum], AC_HELP_STRING([--enable-bignum=3DTYPE],[Compile in support for bignums= , ratios, or bigfloats using library support. TYPE must be one of "gmp" (for GNU MP), "mp" (for BSD MP), or "no" (disabl= ed).]), [], [enable_bignum=3D"no"],[no,gmp,mp]) = -XE_COMPLEX_ARG_ENABLE([error-checking], +XE_COMPLEX_ARG([error-checking], AC_HELP_STRING([--enable-error-checking],[Compile with internal error-c= hecking added. Causes noticeable loss of speed. Valid types are extents, bufpos, malloc, gc, types, text, by= te_code, glyphs, display, structures.]), @@ -906,25 +899,25 @@ XE_COMPLEX_ARG_ENABLE([error-checking], XE_COMPLEX_OPTION([display],[""]), XE_COMPLEX_OPTION([structures],[""])]) = -XE_KEYWORD_ARG_ENABLE([menubars], +XE_KEYWORD_ARG([menubars], AC_HELP_STRING([--enable-menubars=3DTYPE],[Use TYPE menubars (lucid, mo= tif, or no). The Lucid widgets emulate Motif (mostly) but are faster. *WARNING* The Motif menubar is currently broken. Lucid menubars are the default.]), [], [],[yes,no,lucid,motif,athena,gtk,msw]) = -XE_KEYWORD_ARG_ENABLE([scrollbars], +XE_KEYWORD_ARG([scrollbars], AC_HELP_STRING([--enable-scrollbars=3DTYPE],[Use TYPE scrollbars (lucid= , motif, athena, or no). Lucid scrollbars are the default.]), [], [],[yes,no,lucid,motif,athena,gtk,msw]) = -XE_KEYWORD_ARG_ENABLE([dialogs], +XE_KEYWORD_ARG([dialogs], AC_HELP_STRING([--enable-dialogs=3DTYPE],[Use TYPE dialog boxes (lucid,= motif, athena, or no). There are no true Lucid dialogs; Motif dialogs w= ill be used if Motif can be found, else Athena is used.= ]), [], [],[yes,no,lucid,motif,athena,gtk,msw]) = -XE_KEYWORD_ARG_ENABLE([widgets], +XE_KEYWORD_ARG([widgets], AC_HELP_STRING([--enable-widgets],[Use TYPE native widgets (lucid, moti= f, athena, or no). Other widget types are currently unsupported. There are no true Lucid widgets; Motif widgets w= ill be @@ -942,6 +935,15 @@ fi dnl CDE requires tooltalk XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk) = +dnl Xft sanity checking +dnl #### Maybe we should XE_DIE here instead? Or fix the UI so that +dnl emacs is always implicit? (I worry that --without-xft would be weir= d.) +if test \( "$with_xft_menubars" =3D "yes" -o "$with_xft_tabs" =3D "yes" \ + -o "$with_xft_gauges" =3D "yes" \) -a "$with_xft_emacs" =3D "= no"; then + AC_MSG_WARN([Forcing --with-xft=3Demacs because Xft is enabled]) + with_xft_emacs=3Dyes +fi + dnl XFS and Xft in menubars conflict if test "$with_xfs" =3D "yes" -a "$with_xft_menubars" =3D "yes"; then USAGE_ERROR("XFS and Xft in the menubars are incompatible!") @@ -2102,7 +2104,15 @@ dnl Calculate optimization flags. These dnl versions and on in release versions. = if test -z "$with_optimization"; then - if test -z "$emacs_is_beta" -o "$cflags_optimization_specified" =3D "y= es"; then + # If user set --with-cflags-optimization, use it to unilaterally + # determine whether optimization should be enabled. + if test "$cflags_optimization_specified" =3D "yes" ; then + if -z "$with_cflags_optimization" ; then + with_optimization=3Dno + else + with_optimization=3Dyes + fi + elif test -z "$emacs_is_beta" ; then with_optimization=3Dyes else with_optimization=3Dno @@ -3768,16 +3778,29 @@ dnl Look for these standard header file = libpq_fe_h_file=3D${header_dir}libpq-fe.h; break) done = - test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq= =3Dyes) } + pq_libs=3D + extra_libs=3D + if test -n "$libpq_fe_h_file"; then + dnl #### Would it be nicer to do this with a loop? + AC_CHECK_LIB(pq, PQconnectdb,[pq_libs=3D"-lpq"],[ + unset ac_cv_lib_pq_PQconnectdb; + AC_CHECK_LIB(pq, PQconnectdb,[pq_libs=3D"-lpq -lcrypto -lssl"],, + [-lcrypto -lssl])]) + if test -z "$pq_libs"; then + have_libpq=3D"no" + else + have_libpq=3D"yes" + fi + fi = if test -n "$libpq_fe_h_file" -a "$have_libpq" =3D "yes"; then with_postgresql=3Dyes AC_DEFINE(HAVE_POSTGRESQL) AC_CHECK_LIB(pq,PQconnectStart, [ with_postgresqlv7=3Dyes; - AC_DEFINE(HAVE_POSTGRESQLV7)]) + AC_DEFINE(HAVE_POSTGRESQLV7)], [:], $extra_libs) AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file") - XE_PREPEND(-lpq, postgresql_libs) + XE_PREPEND([$pq_libs], postgresql_libs) XE_APPEND(modules/postgresql, MAKE_SUBDIR) need_modules_common=3Dyes if test "$enable_modules" =3D "yes"; then @@ -3986,14 +4009,15 @@ if test "$with_x11" =3D "yes"; then AC_CHECKING([for X11 graphics libraries]) fi = -dnl We don't automatically trigger widgets if athena is present -dnl because of stability concerns. -dnl But if the user wants widgets, still offer him autodetections case "$enable_widgets" in - "yes" | "athena") detect_athena=3Dyes ;; + "" | "yes" | "athena") detect_athena=3Dyes ;; *) detect_athena=3Dno ;; esac = +case "$enable_dialogs" in + "" | "yes" | "athena") detect_athena=3Dyes ;; +esac + if test "$with_x11" =3D "yes" -a "$detect_athena" =3D "yes" ; then AC_CHECKING([for the Athena widgets]) = @@ -4146,8 +4170,13 @@ fi dnl "$with_x11" =3D "yes" = dnl Finish ensuring that we have values for the various toolkit items. dnl Not all toolkits support all widgets -dnl if Motif is available we use it for the dialog boxes. = +dnl Avoid using Motif :-( +case "$opsys" in + *linux* | *darwin* | *bsd* ) lucid_prefers_motif=3D"no" ;; + * ) lucid_prefers_motif=3D"yes" ;; +esac + case "$enable_menubars" in "" | "yes" | "athena" ) enable_menubars=3D"lucid" ;; esac @@ -4160,20 +4189,36 @@ if test "$with_xft_menubars" !=3D "no" ; t fi fi case "$enable_dialogs" in "" | "yes" | "lucid" ) - if test "$have_motif" =3D "yes"; then enable_dialogs=3D"motif" - elif test "$have_xaw" =3D "yes"; then enable_dialogs=3D"athena" - elif test "$with_msw" =3D "yes"; then enable_dialogs=3D"msw" - else enable_dialogs=3Dno + if test "$lucid_prefers_motif" =3D "yes"; then + if test "$have_motif" =3D "yes"; then enable_dialogs=3D"motif" + elif test "$have_xaw" =3D "yes"; then enable_dialogs=3D"athena" + elif test "$with_msw" =3D "yes"; then enable_dialogs=3D"msw" + else enable_dialogs=3Dno + fi + else + if test "$have_xaw" =3D "yes"; then enable_dialogs=3D"athena" + elif test "$have_motif" =3D "yes"; then enable_dialogs=3D"motif" + elif test "$with_msw" =3D "yes"; then enable_dialogs=3D"msw" + else enable_dialogs=3Dno + fi fi ;; esac case "$enable_scrollbars" in "" | "yes" ) enable_scrollbars=3D"lucid" ;; esac case "$enable_widgets" in "" | "yes" | "lucid") - if test "$have_motif" =3D "yes"; then enable_widgets=3D"motif" - elif test "$have_xaw" =3D "yes"; then enable_widgets=3D"athena" - elif test "$with_msw" =3D "yes"; then enable_widgets=3D"msw" - else enable_widgets=3Dno + if test "$lucid_prefers_motif" =3D "yes"; then + if test "$have_motif" =3D "yes"; then enable_widgets=3D"motif" + elif test "$have_xaw" =3D "yes"; then enable_widgets=3D"athena" + elif test "$with_msw" =3D "yes"; then enable_widgets=3D"msw" + else enable_widgets=3Dno + fi + else + if test "$have_xaw" =3D "yes"; then enable_widgets=3D"athena" + elif test "$have_motif" =3D "yes"; then enable_widgets=3D"motif" + elif test "$with_msw" =3D "yes"; then enable_widgets=3D"msw" + else enable_widgets=3Dno + fi fi ;; esac dnl this is not in xft reloaded #3 @@ -4303,6 +4348,10 @@ if test "$enable_default_eol_detection" = AC_DEFINE(HAVE_DEFAULT_EOL_DETECTION) fi = +dnl initialize _libs variables for possible modules at top level +canna_libs=3D +wnn_libs=3D + if test "$enable_mule" =3D "yes" ; then AC_CHECKING([for Mule-related features]) AC_DEFINE(MULE) @@ -4319,7 +4368,10 @@ if test "$enable_mule" =3D "yes" ; then AC_CHECKING([for XIM]) AC_CHECK_LIB(X11, XOpenIM, with_xim=3Dxlib, with_xim=3Dno) dnl XIM + Lesstif is not (yet?) usable - if test "$have_motif $have_lesstif" =3D "yes no"; then + dnl Only use Motif if linking Motif anyway, or don't have xlib XIM + if test "$need_motif $have_lesstif" =3D "yes no"; then + AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=3Dmotif) + elif test "$have_motif $have_lesstif $with_xim" =3D "yes no no"; then AC_CHECK_LIB(Xm, XmImMbLookupString, with_xim=3Dmotif) fi ;; esac @@ -4379,7 +4431,7 @@ if test "$enable_mule" =3D "yes" ; then fi = dnl Autodetect canna - canna_libs=3D + dnl canna_libs variable is initialized at toplevel canna_includes_found=3Dno if test "$with_canna" !=3D "no"; then AC_CHECK_HEADER(canna/jrkanji.h,canna_includes_found=3Dyes) @@ -4400,18 +4452,13 @@ if test "$enable_mule" =3D "yes" ; then test -z "$with_canna" && { AC_CHECK_LIB(canna,jrKanjiControl,[:],with_= canna=3Dno) } test -z "$with_canna" && with_canna=3Dyes if test "$with_canna" =3D "yes"; then - if test "$enable_mc_alloc" =3D "yes"; then - dnl #### REMOVE THIS BRANCH WHEN CANNA_MC_ALLOC CONFLICT IS FIXED = #### - with_canna=3Ddisabled - else - AC_DEFINE(HAVE_CANNA) - XE_APPEND(modules/canna, MAKE_SUBDIR) - need_modules_common=3Dyes - if test "$with_modules" =3D "yes"; then - XE_APPEND(modules/canna, INSTALL_ARCH_DEP_SUBDIR) - fi - XE_PREPEND(-lcanna -lRKC, canna_libs) + AC_DEFINE(HAVE_CANNA) + XE_APPEND(modules/canna, MAKE_SUBDIR) + need_modules_common=3Dyes + if test "$with_modules" =3D "yes"; then + XE_APPEND(modules/canna, INSTALL_ARCH_DEP_SUBDIR) fi + XE_PREPEND(-lcanna -lRKC, canna_libs) fi AC_SUBST(canna_libs) = @@ -5264,7 +5311,7 @@ dnl Use XE_SPACE instead of plain assign if test "$enable_modules" =3D "yes"; then ld_libs_module=3D else - XE_SPACE(ld_libs_module, $ldap_libs $postgresql_libs) + XE_SPACE(ld_libs_module, $ldap_libs $postgresql_libs $canna_libs) fi = XE_SPACE(CFLAGS, $CFLAGS) @@ -5717,6 +5764,16 @@ if test "$with_x11" =3D "yes"; then echo " - Compiling in support for Xft antialiased fonts (EXPERIME= NTAL)." fi fi +if test "$need_motif" =3D "yes" ; then + echo " Compiling in support for Motif." + if test "$have_lesstif" =3D "yes"; then + echo " - Using LessTif implementation." + fi + echo " *WARNING* Many versions of Motif are buggy, requiring workaro= unds." + echo " You are likely to experience slow redisplay." + echo " You may need to install vendor patches to Motif." + echo " See PROBLEMS for more information." +fi if test "$need_athena" =3D "yes"; then echo " Compiling in support for the Athena widget set:" echo " - Athena headers location: $athena_h_path" @@ -5842,13 +5899,6 @@ test "$with_xim" =3D motif && echo " - = test "$with_xim" =3D xlib && echo " - Using raw Xlib to provide XIM s= upport." test "$with_xfs" =3D yes && echo " - Using XFontSet to provide biling= ual menubar." test "$with_canna" =3D yes && echo " Compiling in support for Canna on = Mule." -if test "$with_canna" =3D disabled; then - echo " WARNING: -----------------------------------------------------= ----" - echo " WARNING: Canna found but disabled due to conflict with MC_ALLO= C!" - echo " WARNING: To configure with Canna you must use --disable-mc-all= oc." - echo " WARNING: If you don't know what Canna is, you don't need it." - echo " WARNING: -----------------------------------------------------= ----" -fi if test "$with_wnn" =3D yes; then echo " Compiling in support for the WNN input method on Mule." test "$with_wnn6" =3D yes && echo " - Using WNN version 6." = = = 1.984.2.9 +4 -4 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.984.2.8 retrieving revision 1.984.2.9 diff -u -p -r1.984.2.8 -r1.984.2.9 --- version.sh 2005/09/27 16:28:45 1.984.2.8 +++ version.sh 2005/11/06 16:13:46 1.984.2.9 @@ -2,11 +2,11 @@ emacs_is_beta=3Dt emacs_major_version=3D21 emacs_minor_version=3D5 -emacs_beta_version=3D22 -xemacs_codename=3D"cucumber" +emacs_beta_version=3D23 +xemacs_codename=3D"daikon" emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+Xft+CVS-20050926)" -xemacs_release_date=3D"2005-09-14" +xemacs_extra_name=3D"(+Xft)" +xemacs_release_date=3D"2005-10-26" = = = 1.48.2.6 +4 -0 XEmacs/xemacs/etc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/ChangeLog,v retrieving revision 1.48.2.5 retrieving revision 1.48.2.6 diff -u -p -r1.48.2.5 -r1.48.2.6 --- ChangeLog 2005/09/23 18:20:33 1.48.2.5 +++ ChangeLog 2005/11/06 16:13:51 1.48.2.6 @@ -1,3 +1,7 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + 2005-09-17 Malcolm Purvis = * configure-2.13: Remove. autoconf 2.59 support is stable. = = = 1.178.2.7 +12 -0 XEmacs/xemacs/lib-src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/ChangeLog,v retrieving revision 1.178.2.6 retrieving revision 1.178.2.7 diff -u -p -r1.178.2.6 -r1.178.2.7 --- ChangeLog 2005/09/23 18:20:35 1.178.2.6 +++ ChangeLog 2005/11/06 16:13:52 1.178.2.7 @@ -1,3 +1,15 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-13 Ben Wing + + * i.c: + * mmencode.c: + Always include config.h first. + * winclient.c: + Move include of windows.h after config.h. + 2005-09-18 Mike Alexander = * installexe.sh: Don't add an exe extention to a file that already = = = 1.4.2.2 +4 -0 XEmacs/xemacs/lib-src/i.c = Index: i.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/i.c,v retrieving revision 1.4.2.1 retrieving revision 1.4.2.2 diff -u -p -r1.4.2.1 -r1.4.2.2 --- i.c 2004/12/11 05:12:54 1.4.2.1 +++ i.c 2005/11/06 16:13:52 1.4.2.2 @@ -31,6 +31,10 @@ does. It can be used also when xemacs s command ina script, especially when its standart output should be obtained programmatically. */ = +#ifdef HAVE_CONFIG_H +# include +#endif + #include #include #include = = = 1.8.8.1 +3 -0 XEmacs/xemacs/lib-src/mmencode.c = Index: mmencode.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/mmencode.c,v retrieving revision 1.8 retrieving revision 1.8.8.1 diff -u -p -r1.8 -r1.8.8.1 --- mmencode.c 2001/08/13 04:45:48 1.8 +++ mmencode.c 2005/11/06 16:13:52 1.8.8.1 @@ -13,6 +13,9 @@ OF THIS MATERIAL FOR ANY PURPOSE. IT IS WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES. */ = +#ifdef HAVE_CONFIG_H +# include +#endif #define NEWLINE_CHAR '\n' #include #include = = = 1.3.8.1 +2 -1 XEmacs/xemacs/lib-src/winclient.c = Index: winclient.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/winclient.c,v retrieving revision 1.3 retrieving revision 1.3.8.1 diff -u -p -r1.3 -r1.3.8.1 --- winclient.c 2002/05/28 08:44:26 1.3 +++ winclient.c 2005/11/06 16:13:53 1.3.8.1 @@ -22,10 +22,11 @@ = /* -- Includes ---------------------------------------------------------= ----- */ = -#include #ifdef HAVE_CONFIG_H # include #endif +#include +#include #include #include #include = = = 1.599.2.12 +142 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.599.2.11 retrieving revision 1.599.2.12 diff -u -p -r1.599.2.11 -r1.599.2.12 --- ChangeLog 2005/09/27 16:28:49 1.599.2.11 +++ ChangeLog 2005/11/06 16:13:54 1.599.2.12 @@ -1,3 +1,145 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-25 Ben Wing + + * cus-face.el: + * cus-face.el (custom-face-attributes): + * cus-face.el (custom-face-background-pixmap): + * cus-face.el (custom-set-face-inherit): New. + * cus-face.el (custom-face-inherit): New. + * faces.el: + * faces.el (face-property): + * faces.el (convert-face-property-into-specifier): + * faces.el (face-property-instance): + * faces.el (set-face-property): + * faces.el (reset-face): + * faces.el (set-face-parent): + * faces.el (face-font-name): + * faces.el (face-font): + * faces.el (face-font-instance): + * faces.el (set-face-font): + * faces.el (face-foreground): + * faces.el (face-foreground-instance): + * faces.el (set-face-foreground): + * faces.el (face-background): + * faces.el (face-background-instance): + * faces.el (set-face-background): + * faces.el (face-background-pixmap): + * faces.el (face-background-pixmap-instance): + * faces.el (set-face-background-pixmap): + * faces.el (face-display-table): + * faces.el (face-display-table-instance): + * faces.el (face-equal): + * faces.el (init-face-from-resources): + Provide a basic implementation of the `inherit' property for + faces and the :inherit property in custom. Use the new + `specifier-instantiator' function. + + Update the documentation for various places in faces.el. + + 'foo -> `foo'. + +2005-10-25 Adrian Aichner + + * package-get.el (package-get-download-sites): Fixes after + checklink and linklint testing. + * package-get.el (package-get-pre-release-download-sites): Ditto. + +2005-10-24 Ben Wing + + * next-error.el (compilation-current-error): + * next-error.el (compilation-current-error)): New. + * next-error.el (compilation-context-lines)): New. + * occur.el (occur-accumulate-lines): + * occur.el (multi-occur): + Fix some byte-compile warnings. + +2005-10-23 Adrian Aichner + + * package-get.el (package-get-download-sites): Sync packages + mirrors list with website, based on Ville's work. + * package-get.el (package-get-pre-release-download-sites): Sync + with `package-get-download-sites'. + +2005-10-18 Ville Skytt=C3=A4 + + * package-get.el (package-get-download-sites): Sync mirrors list + with the XEmacs website. + (package-get-pre-release-download-sites): Ditto. + +2005-10-21 Stephen J. Turnbull + + UNDO: + * mule/canna-leim.el: Rename canna_api to canna-api. + +2005-10-21 Stephen J. Turnbull + + * build-report.el: Note synch to XEmacs build package version 1.49. + +2005-10-04 Stephen J. Turnbull = + + * build-report.el (build-report): Refactor into interactive + portion and `build-report-create-report'. + (build-report-create-report): New function. + (batch-build-report): Non-interactive version of `build-report' + using `build-report-create-report'. + +2005-10-10 Malcolm Purvis + + * minibuf.el: + * minibuf.el (read-buffer): Follow GNU Emacs behaviour: Can return + empty string if require-match is t and default is nil. + * replace.el: Moved occur code to occur.el + * simple.el: + * simple.el (line-number-at-pos): New. + * subr.el: + * subr.el (delete-dups): New. + * occur.el: New. Sync with 22.0.50.1 (CVS) + * next-error.el: New. Sync with 22.0.50.1 (CVS) + +2005-10-10 Steve Youngs + + * help.el (view-emacs-news): Use `expand-file-name' instead of + `locate-data-file' as the latter will find any "NEWS" files that + might exist in packages _before_ the one in core. + +2005-10-09 Adrian Aichner + + * finder.el (finder-find-library): Return filename actually + searched for. + +2005-10-04 Stephen J. Turnbull + + * simple.el (xemacs-default-composefunc): Don't warn when batch. + +2005-10-04 Stephen J. Turnbull = + + * build-report.el: Synch to Adrian's packaged version. + +2005-10-04 Stephen J. Turnbull + + * mule/canna-leim.el: Rename canna_api to canna-api. + +2005-09-30 Stephen J. Turnbull + + * mule/canna-leim.el (canna-activate): Fix typo in error symbol. + Improve docstring. + +2005-09-22 Stephen J. Turnbull + + * mule/canna-leim.el: Add comment on autoloading strategy. + (canna-activate): Handle CANNA in ELL. + + * dumped-lisp.el (preloaded-file-list): Remove dependency of + canna-leim on CANNA. Canna may be an ELL. + +2005-09-21 Stephen J. Turnbull + + * mule/mule-cmds.el (input-method-alist, register-input-method): + Improve docstrings and formal parameter names. + 2005-09-14 Stephen J. Turnbull = * XEmacs 21.5.22 "cucumber" is released. = = = 1.1.2.6 +0 -13 XEmacs/xemacs/lisp/Attic/ChangeLog.Xft = Index: ChangeLog.Xft =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/Attic/ChangeLog.Xft,v retrieving revision 1.1.2.5 retrieving revision 1.1.2.6 diff -u -p -r1.1.2.5 -r1.1.2.6 --- ChangeLog.Xft 2005/09/27 16:28:51 1.1.2.5 +++ ChangeLog.Xft 2005/11/06 16:13:56 1.1.2.6 @@ -1,16 +1,3 @@ -2005-09-22 Stephen J. Turnbull - - * mule/canna-leim.el: Add comment on autoloading strategy. - (canna-activate): Handle CANNA in ELL. - - * dumped-lisp.el (preloaded-file-list): Remove dependency of - canna-leim on CANNA. Canna may be an ELL. - -2005-09-21 Stephen J. Turnbull - - * mule/mule-cmds.el (input-method-alist, register-input-method): - Improve docstrings and formal parameter names. - 2005-09-07 Clemens Fruhwirth = * font.el (font-default-font-for-device): Remove vestigial code = = = 1.11.6.1 +106 -68 XEmacs/xemacs/lisp/build-report.el = Index: build-report.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/build-report.el,v retrieving revision 1.11 retrieving revision 1.11.6.1 diff -u -p -r1.11 -r1.11.6.1 --- build-report.el 2002/08/28 05:36:31 1.11 +++ build-report.el 2005/11/06 16:13:56 1.11.6.1 @@ -1,8 +1,10 @@ ;;; build-report.el --- Automatically formatted build reports for XEmacs = -;; Copyright (C) 1997-2001 Adrian Aichner +;; Copyright (C) 1997-2003 Adrian Aichner = ;; Author: Adrian Aichner +;; Date: $Date: 2005/11/06 16:13:56 $ +;; Version: $Revision: 1.11.6.1 $ ;; Keywords: internal = ;; This file is part of XEmacs. @@ -22,7 +24,7 @@ ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA ;; 02111-1307, USA. = -;;; Synched up with: Not synched. +;;; Synched up with: XEmacs build package build-report.el Revision 1.49. = ;;; Commentary: = @@ -66,8 +68,8 @@ "emacs_major_version\\s-*=3D\\s-*\\([0-9]+\\) emacs_minor_version\\s-*=3D\\s-*\\([0-9]+\\) emacs_beta_version\\s-*=3D\\s-*\\([0-9]+\\)? -xemacs_codename\\s-*=3D\\s-*\"\\([^\"]+\\)\" -xemacs_extra_name\\s-*=3D\\s-*\"\\([^\"]+\\)\"" +xemacs_codename\\s-*=3D\\s-*\"\\([^\"]+\\)\"\\( +xemacs_extra_name\\s-*=3D\\s-*\"\\([^\"]+\\)\"\\)?" "*REGEXP matching XEmacs Beta Version variable assignments in `build-report-version-file' file. This variable is used by `build-report-version-file-data'.") @@ -113,7 +115,11 @@ go to." "^Note:" "Installing" "[Ff]ile(s) copied" - "\\s-+tests\\s-+") + "\\s-+tests\\s-+" + "^[A-Z] [^ ]+$" + "^Wrong number of arguments:" + "^ \\*\\* " + "^\\(FAIL\\|SKIP\\):") "*Regexp of make process output lines to keep in the report." :type '(repeat :custom-show t @@ -125,6 +131,8 @@ go to." (list "confl.*with.*auto-inlining" "^Formatting:" + "^\\s-*0 .*\\(failure\\|error\\)s?" + "^PASS:" "(100%) tests successful") "*Regexp of make process output lines to delete from the report." :type '(repeat @@ -198,6 +206,8 @@ under csh, so that you get beta.err when = (defcustom build-report-subject (concat "[%s] " emacs-version " on " system-configuration) + ;; #### this should allow variable names which will be evalled and + ;; formatted using %s, see `build-report-prompts' "*XEmacs Build Report Subject Line. %s-sequences will be substituted with user input through `build-report' according to `build-report-prompts' using `format'." @@ -208,6 +218,8 @@ under csh, so that you get beta.err when = (defcustom build-report-prompts (quote (("Status?: " ("Success" "Failure")))) + ;; #### this should allow variable names which will be evalled and + ;; formatted using %s, see `build-report-prompts' "*XEmacs Build Report Prompt(s). This is a list of prompt-string lists used by `build-report' in conjunction with `build-report-subject'. Each list consists of a prompt string @@ -248,7 +260,7 @@ under csh, so that you get beta.err when 'mime-editor/insert-binary-file))) = (defun build-report-make-output-get () - "Returns the filename the XEmacs make output is saved in." + "Return the filename the XEmacs make output is saved in." (interactive) (if (or (string-equal build-report-make-output-dir "") (null build-report-make-output-dir)) @@ -306,59 +318,85 @@ See also `mail-user-agent', `build-repor (setq prompts (cdr prompts)) (setq arg (cons (read-string prompt "" 'hist) arg))) arg))) + (let ((destination-address + ;; `build-report-destination' used to be a single string, so + ;; let's test if we really get a list of destinations. + (if (listp build-report-destination) + (read-string + "Build Report Destination: " + (car build-report-destination) + 'build-report-destination) + (read-string + "Build Report Destination: " + build-report-destination) + ))) + (save-excursion + (build-report-create-report destination-address args)))) + +;;;###autoload +(defun batch-build-report (&optional status destination) + "Format a build report. Save it as \"./BUILD-REPORT\". +If the file \"./BUILD-REPORT-COMMENT\" is readable, insert its contents. +Optional STATUS is a string to insert in the subject. It defaults to +\"Success\". \(This will be made customizable.) +Optional DESTINATION is a string containing the destination mailbox. It +defaults to \"XEmacs Build Reports \". +\(This will be made customizable.) +This function may be invoked as a command." + (interactive) + (unless (stringp status) (setq status "Success")) + (unless (stringp destination) + (setq destination "XEmacs Build Reports ")) (save-excursion - (if (file-exists-p build-report-installation-file) - (multiple-value-bind - (major minor beta codename extraname configuration) - (build-report-installation-data build-report-installation-fi= le) - (setq build-report-subject - (format "[%%s] XEmacs %s.%s%s \"%s\" %s %s" - major minor beta codename extraname configuratio= n))) + (build-report-create-report destination + ;; #### listify in the internal function? + (list status))) + (when (file-readable-p "BUILD-REPORT-COMMENT") + (insert-file "BUILD-REPORT-COMMENT")) + (write-file "BUILD-REPORT")) + +(defun build-report-create-report (destination status) + "Format current buffer as an XEmacs build report to DESTINATION. + +DESTINATION is the mailbox to which the report will be submitted. +STATUS is the status of the build. +You probably don't want to use this function; see `build-report' for the +interactive command, and `batch-build-report' for a command suitable for +use in shell scripts and Makefiles." + (if (file-exists-p build-report-installation-file) (multiple-value-bind - (major minor beta codename extraname) - (build-report-version-file-data build-report-version-file) - (setq build-report-subject - (format "[%%s] XEmacs %s.%s%s \"%s\" %s %s" - major minor beta codename extraname system-configu= ration)))) - (compose-mail - ;; `build-report-destination' used to be a single string, so - ;; let's test if we really get a list of destinations. - (if (listp build-report-destination) - (read-string - "Build Report Destination: " - (car build-report-destination) - 'build-report-destination) - (read-string - "Build Report Destination: " - build-report-destination) - ) - (apply 'format build-report-subject args) - nil - nil - nil - nil - nil) - (let* ((report-begin (point)) - (files (reverse (build-report-make-output-get))) - (file (car files))) - (while file - (if (file-exists-p file) - (insert (build-report-insert-make-output report-begin file)) - (insert (format "%s not found!\n" file))) - (insert "\n") - (setq files (cdr files)) - (setq file (car files))) - (if (file-exists-p build-report-installation-file) - (insert (build-report-insert-installation-file - report-begin - build-report-installation-insert-all)) - (insert (format "%s not found!\n" build-report-installation-file= ))) -;;; (when (and (>=3D major 21) (>=3D minor 2) (or (null beta) (>= =3D beta 32))) -;;; (insert "\n") -;;; (insert (build-report-insert-config-inc report-begin))) + (major minor beta codename extraname configuration) + (build-report-installation-data build-report-installation-file) + (setq build-report-subject + (format "[%%s] XEmacs %s.%s%s \"%s\" %s%s" + major minor beta codename extraname configuration))) + (multiple-value-bind + (major minor beta codename extraname) + (build-report-version-file-data build-report-version-file) + (setq build-report-subject + (format "[%%s] XEmacs %s.%s%s \"%s\" %s%s" + major minor beta codename extraname system-configuration)))) + (compose-mail destination + (apply 'format build-report-subject status) + nil nil nil nil nil) + (let* ((report-begin (point)) + (files (reverse (build-report-make-output-get))) + (file (car files))) + (while file + (if (file-exists-p file) + (insert (build-report-insert-make-output report-begin file)) + (insert (format "%s not found!\n" file))) (insert "\n") - (insert (build-report-insert-header report-begin)) - (goto-char report-begin)))) + (setq files (cdr files)) + (setq file (car files))) + (if (file-exists-p build-report-installation-file) + (insert (build-report-insert-installation-file + report-begin + build-report-installation-insert-all)) + (insert (format "%s not found!\n" build-report-installation-file))) + (insert "\n") + (insert (build-report-insert-header report-begin)) + (goto-char report-begin))) = (defun build-report-insert-header (where) "Inserts the build-report-header at the point specified by `where'." @@ -501,15 +539,15 @@ which defaults to `build-report-installa (cond ((looking-at build-report-installation-version-regexp) (goto-char (match-end 0)) - (setq major (match-string 1)) - (setq minor (match-string 2)) - (setq beta (match-string 3)) - (setq codename (match-string 6)) - (setq extraname (match-string 7)) - (setq configuration (match-string 8))) + (setq major (or (match-string 1) "")) + (setq minor (or (match-string 2) "")) + (setq beta (or (match-string 3) "")) + (setq codename (or (match-string 6) "")) + (setq extraname (or (match-string 7) "")) + (setq configuration (or (match-string 8) ""))) ((looking-at build-report-installation-srcdir-regexp) (goto-char (match-end 0)) - (setq srcdir (match-string 1))) + (setq srcdir (or (match-string 1) ""))) ;; We avoid matching a potentially zero-length string to avoid ;; infinite looping. ((looking-at @@ -535,11 +573,11 @@ defaults to `build-report-version-file'. (cond ((looking-at build-report-version-file-regexp) (goto-char (match-end 0)) - (setq major (match-string 1)) - (setq minor (match-string 2)) - (setq beta (match-string 3)) - (setq codename (match-string 4)) - (setq extraname (match-string 5))) + (setq major (or (match-string 1) "")) + (setq minor (or (match-string 2) "")) + (setq beta (or (match-string 3) "")) + (setq codename (or (match-string 4) "")) + (setq extraname (or (match-string 6) ""))) ;; We avoid matching a potentially zero-length string to avoid ;; infinite looping. ((looking-at = = = 1.11.8.1 +37 -6 XEmacs/xemacs/lisp/cus-face.el = Index: cus-face.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/cus-face.el,v retrieving revision 1.11 retrieving revision 1.11.8.1 diff -u -p -r1.11 -r1.11.8.1 --- cus-face.el 2002/03/13 08:52:04 1.11 +++ cus-face.el 2005/11/06 16:13:56 1.11.8.1 @@ -8,13 +8,12 @@ ;; Version: 1.9960-x ;; X-URL: http://www.dina.kvl.dk/~abraham/custom/ = +;;; Synched with: Not synched. + ;;; Commentary: ;; ;; See `custom.el'. = -;; This file should probably be dissolved, and code moved to faces.el, -;; like Stallman did. - ;;; Code: = ;; it is now safe to put the `provide' anywhere. if an error occurs whi= le @@ -102,7 +101,26 @@ Control whether the text should be strik (:inverse-video (toggle :format "%[Inverse Video%]: %v\n" :help-echo "\ Control whether the text should be inverted. Works only on TTY-s") - set-face-reverse-p face-reverse-p)) + set-face-reverse-p face-reverse-p) + (:inherit + (repeat :tag "Inherit" + :help-echo "List of faces to inherit attributes from." + (face :Tag "Face" default)) + ;; FSF 21.3 +; ;; filter to make value suitable for customize +; (lambda (real-value) +; (cond ((or (null real-value) (eq real-value 'unspecified)) +; nil) +; ((symbolp real-value) +; (list real-value)) +; (t +; real-value))) +; ;; filter to make customized-value suitable for storing +; (lambda (cus-value) +; (if (and (consp cus-value) (null (cdr cus-value))) +; (car cus-value) +; cus-value)) + custom-set-face-inherit custom-face-inherit)) "Alist of face attributes. = The elements are lists of the form (KEY TYPE SET GET) where: @@ -199,10 +217,23 @@ If FRAME is nil, use the default face." = (defun custom-face-background-pixmap (face &rest args) "Return the name of the background pixmap file used for FACE." - (let ((image (apply 'specifier-instance - (face-background-pixmap face) args))) + (let ((image (apply 'specifier-instance + (face-background-pixmap face) args))) (and image (image-instance-file-name image)))) + +(defun custom-set-face-inherit (face value &optional frame tags) + "Set FACE to inherit its properties from another face." + (if (listp value) (setq value (car value))) ;; #### Temporary hack! + (if (find-face value) + (set-face-parent face value frame tags))) + +(defun custom-face-inherit (face &rest args) + "Return the value (instance) of the `inherit' property for FACE." + ;; #### Major, temporary hack! + (let ((spec (apply 'specifier-instantiator + (face-font face) args))) + (and spec (vector spec) (aref spec 0)))) = ;; This consistently fails to dtrt ;;(defun custom-set-face-font-size (face size &optional locale tags) = = = 1.34.4.3 +139 -62 XEmacs/xemacs/lisp/faces.el = Index: faces.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/faces.el,v retrieving revision 1.34.4.2 retrieving revision 1.34.4.3 diff -u -p -r1.34.4.2 -r1.34.4.3 --- faces.el 2005/07/13 04:44:37 1.34.4.2 +++ faces.el 2005/11/06 16:13:56 1.34.4.3 @@ -2,7 +2,7 @@ = ;; Copyright (C) 1992-4, 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995 Board of Trustees, University of Illinois -;; Copyright (C) 1995, 1996, 2002 Ben Wing +;; Copyright (C) 1995, 1996, 2002, 2005 Ben Wing = ;; Author: Ben Wing ;; Keywords: faces, internal, dumped @@ -41,6 +41,8 @@ ;; authored for 19.12 by Chuck Thompson , ;; rewritten by Ben Wing with the advent of specifiers. = +;; Face refactoring: this file's API is *compatible* with the API +;; proposed in fontconfig.el. Implementation is *unchecked*. = ;;; Some stuff in FSF's faces.el is in our x-faces.el. = @@ -97,35 +99,55 @@ Such a collection of attributes is calle (defun face-property (face property &optional locale tag-set exact-p) "Return FACE's value of the given PROPERTY. = +NOTE: If you are looking for the \"value\" of a built-in face property + (`foreground', `background', `font', `background-pixmap', etc.), you + are probably better off calling `face-property-instance'. The return + value of `face-property' for built-in properties describes the original + specification used to determine the face property, which may be nil, + a list of instantiators, or something else that is unexpected. For + example, if you ask for a face property in a particular buffer (by + specifying a buffer for LOCALE), you will get a non-nil return value + only if a buffer-local specification for that particular buffer had + previously been given. + +For a full list of built-in property names and their semantics, see + `set-face-property'. + If LOCALE is omitted, the FACE's actual value for PROPERTY will be - returned. For built-in properties, this will be a specifier object - of a type appropriate to the property (e.g. a font or color - specifier). For other properties, this could be anything. - -If LOCALE is supplied, then instead of returning the actual value, - the specification(s) for the given locale or locale type will - be returned. This will only work if the actual value of - PROPERTY is a specifier (this will always be the case for built-in - properties, but not or not may apply to user-defined properties). - If the actual value of PROPERTY is not a specifier, this value - will simply be returned regardless of LOCALE. + returned. In this case, this function appears to behave rather + differently depending on whether PROPERTY is a built-in face property = of + a user-defined face property. This is because the most basic value of= a + user-defined property is simply whatever was set using + `set-face-property', but for a built-in property it's always a specifi= er, + which is an abstract object encapsulating all the specifications for t= hat + particular property. + +LOCALE, if supplied, will generally be a buffer, frame or + `global' (for the global value), but there are other possibilities -- = see + the following paragraph. This mostly applies to built-in properties. = In + this case, the return value will not be a specifier object but the + specification(s) for the given locale or locale type will be returned + (equivalent to calling `specifier-specs' on the specifier). + (Technically, the same thing happens if the basic value of a user- + defined property is a specifier, although this usage is rare.) = The return value will be a list of instantiators (e.g. strings specifying a font or color name), or a list of specifications, each of which is a cons of a locale and a list of instantiators. Specifically, if LOCALE is a particular locale (a buffer, window, - frame, device, or 'global), a list of instantiators for that locale + frame, device, or `global'), a list of instantiators for that locale will be returned. Otherwise, if LOCALE is a locale type (one of - the symbols 'buffer, 'window, 'frame, or 'device), the specifications + the symbols `buffer', `window', `frame', or `device'), the specificati= ons for all locales of that type will be returned. Finally, if LOCALE is - 'all, the specifications for all locales of all types will be returned. + `all', the specifications for all locales of all types will be returne= d. = The specifications in a specifier determine what the value of PROPERTY will be in a particular \"domain\" or set of circumstances, - which is typically a particular Emacs window along with the buffer - it contains and the frame and device it lies within. The value is + which is typically a particular Emacs window -- which in turn defines + a buffer (the buffer in the window), a frame (the frame that the window + is in), and a device (the device that the frame is in). The value is derived from the instantiator associated with the most specific - locale (in the order buffer, window, frame, device, and 'global) + locale (in the order buffer, window, frame, device, and `global') that matches the domain in question. In other words, given a domain (i.e. an Emacs window, usually), the specifier for PROPERTY will first be searched for a specification whose locale is the buffer @@ -134,11 +156,10 @@ The specifications in a specifier determ frame that the window is contained within; etc. The first instantiator that is valid for the domain (usually this means that the instantiator is recognized by the device [i.e. MS Windows, the X - server or TTY device] that the domain is on. The function - `face-property-instance' actually does all this, and is used to - determine how to display the face. - -See `set-face-property' for the built-in property-names." + server or TTY device]) will be \"instantiated\", which generates + a Lisp object encapsulating the original instantiator and the underlyi= ng + window-system object describing the property. The function + `face-property-instance' actually does all this." = (setq face (get-face face)) (let ((value (get face property))) @@ -155,7 +176,7 @@ See `set-face-property' for the built-in ;; if a user-property does not have a specifier but a ;; locale was specified, put a specifier there. ;; If there was already a value there, convert it to a - ;; specifier with the value as its 'global instantiator. + ;; specifier with the value as its `global' instantiator. (unless (specifierp specifier) (let ((new-specifier (make-specifier 'generic))) (if (or (not (null specifier)) @@ -180,11 +201,11 @@ Under most circumstances, DOMAIN will be the returned instance would be different. = The returned instance will typically be a color-instance, - font-instance, or pixmap-instance object, and you can query + font-instance, or image-instance object, and you can query it using the appropriate object-specific functions. For example, you could use `color-instance-rgb-components' to find out the - RGB (red, green, and blue) components of how the 'background - property of the 'highlight face is displayed in a particular + RGB (red, green, and blue) components of how the `background' + property of the `highlight' face is displayed in a particular window. The results might be different from the results you would get for another window (perhaps the user specified a different color for the frame that window is on; @@ -266,7 +287,7 @@ If PROPERTY is a built-in property, the = -- If VALUE is a simple instantiator (e.g. a string naming a font or color) or a list of instantiators, then the instantiator(s) will be added as a specification of the property for the given LOCALE - (which defaults to 'global if omitted). + (which defaults to `global' if omitted). -- If VALUE is a list of specifications (each of which is a cons of a locale and a list of instantiators), then LOCALE must be nil (it does not make sense to explicitly specify a locale in this @@ -278,12 +299,12 @@ If PROPERTY is a built-in property, the = `copy-specifier' and LOCALE has the same semantics (if it is a particular locale, the specification for the locale will be copied; if a locale type, specifications for all locales of - that type will be copied; if nil or 'all, then all + that type will be copied; if nil or `all', then all specifications will be copied). = -HOW-TO-ADD should be either nil or one of the symbols 'prepend, - 'append, 'remove-tag-set-prepend, 'remove-tag-set-append, 'remove-loca= le, - 'remove-locale-type, or 'remove-all. See `copy-specifier' and +HOW-TO-ADD should be either nil or one of the symbols `prepend', + `append', `remove-tag-set-prepend', `remove-tag-set-append', `remove-l= ocale', + `remove-locale-type', or `remove-all'. See `copy-specifier' and `add-spec-to-specifier' for a description of what each of these means. Most of the time, you do not need to worry about this argument; the default behavior usually is fine. @@ -292,7 +313,7 @@ In general, it is OK to pass an instance by `face-property-instance') as an instantiator in place of an actual instantiator. In such a case, the instantiator used to create that instance object will be used (for example, if - you set a font-instance object as the value of the 'font + you set a font-instance object as the value of the `font' property, then the font name used to create that object will be used instead). If some cases, however, doing this conversion does not make sense, and this will be noted in @@ -303,7 +324,7 @@ If PROPERTY is not a built-in property, = given, then this function will attempt to add VALUE as the instantiator for the given LOCALE, using `add-spec-to-specifier'. If the value of the property is not a specifier, it will - automatically be converted into a 'generic specifier. + automatically be converted into a `generic' specifier. = = The following symbols have predefined meanings: @@ -345,6 +366,11 @@ The following symbols have predefined me Only used by faces on TTY devices. For valid instantiators, see `make-face-boolean-spec= ifier'. = + inherit Face name or face object from which to inherit attributes, + or a list of such elements. Attributes from inherit= ed + faces are merged into the face like an underlying fa= ce + would be, with higher priority than underlying faces. + doc-string Description of what the face's normal use is. NOTE: This is not a specifier, unlike all the other built-in properties, and cannot @@ -378,7 +404,7 @@ arguments." = (defun reset-face (face &optional locale tag-set exact-p) "Clear all existing built-in specifications from FACE. -This makes FACE inherit all its display properties from 'default. +This makes FACE inherit all its display properties from `default'. WARNING: Be absolutely sure you want to do this!!! It is a dangerous operation and is not undoable. = @@ -396,9 +422,8 @@ This makes all properties of FACE inheri (mapcar (lambda (x) (set-face-property face x (vector parent) locale tag-set how-to-add)) - (delq 'display-table - (delq 'background-pixmap - (copy-sequence built-in-face-specifiers)))) + (set-difference built-in-face-specifiers + '(display-table background-pixmap inherit))) (set-face-background-pixmap face (vector 'inherit ':face parent) locale tag-set how-to-add) nil) @@ -414,18 +439,25 @@ This makes all properties of FACE inheri = (defun face-font-name (face &optional domain charset) "Return the font name of FACE in DOMAIN, or nil if it is unspecified. -DOMAIN is as in `face-font-instance'." +DOMAIN is as in `face-font-instance'. + +Font names are strings, as described in `make-font-specifier'." (let ((f (face-font-instance face domain charset))) (and f (font-instance-name f)))) = (defun face-font (face &optional locale tag-set exact-p) - "Return the font of FACE in LOCALE, or nil if it is unspecified. + "Return the font spec of FACE in LOCALE, or nil if it is unspecified. + +NOTE: This returns a locale-specific specification, not any sort of value +corresponding to the actual font being used. If you want to know the +actual font used in a particular domain, use `face-font-instance', or +`face-font-name' for its name (i.e. the instantiator used to create it). = FACE may be either a face object or a symbol representing a face. = LOCALE may be a locale (the instantiators for that particular locale will be returned), a locale type (the specifications for all locales - of that type will be returned), 'all (all specifications will be + of that type will be returned), `all' (all specifications will be returned), or nil (the actual specifier object will be returned). = See `face-property' for more information." @@ -434,6 +466,9 @@ See `face-property' for more information (defun face-font-instance (face &optional domain charset) "Return the instance of FACE's font in DOMAIN. = +Return value will be a font instance object; query its properties using +`font-instance-name', `font-instance-height', `font-instance-width', etc. + FACE may be either a face object or a symbol representing a face. = Normally DOMAIN will be a window or nil (meaning the selected window), @@ -455,23 +490,29 @@ FONT should be an instantiator (see `mak locale to an instantiator list), or a font specifier object. = If FONT is an alist, LOCALE must be omitted. If FONT is a - specifier object, LOCALE can be a locale, a locale type, 'all, + specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to 'global. + will be added, and defaults to `global'. = See `set-face-property' for more information." (interactive (face-interactive "font")) (set-face-property face 'font font locale tag-set how-to-add)) = (defun face-foreground (face &optional locale tag-set exact-p) - "Return the foreground of FACE in LOCALE, or nil if it is unspecified. + "Return the foreground spec of FACE in LOCALE, or nil if it is unspeci= fied. + +NOTE: This returns a locale-specific specification, not any sort of value +corresponding to the actual foreground being used. If you want to know = the +actual foreground color used in a particular domain, use +`face-foreground-instance', or `face-foreground-name' for its name +\(i.e. the instantiator used to create it). = FACE may be either a face object or a symbol representing a face. = LOCALE may be a locale (the instantiators for that particular locale will be returned), a locale type (the specifications for all locales - of that type will be returned), 'all (all specifications will be + of that type will be returned), `all' (all specifications will be returned), or nil (the actual specifier object will be returned). = See `face-property' for more information." @@ -480,6 +521,9 @@ See `face-property' for more information (defun face-foreground-instance (face &optional domain default no-fallba= ck) "Return the instance of FACE's foreground in DOMAIN. = +Return value will be a color instance object; query its properties using +`color-instance-name' or `color-instance-rgb-properties'. + FACE may be either a face object or a symbol representing a face. = Normally DOMAIN will be a window or nil (meaning the selected window), @@ -512,10 +556,10 @@ COLOR should be an instantiator (see `ma an instantiator list), or a color specifier object. = If COLOR is an alist, LOCALE must be omitted. If COLOR is a - specifier object, LOCALE can be a locale, a locale type, 'all, + specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to 'global. + will be added, and defaults to `global'. = See `set-face-property' for more information." (interactive (face-interactive "foreground")) @@ -524,11 +568,17 @@ See `set-face-property' for more informa (defun face-background (face &optional locale tag-set exact-p) "Return the background color of FACE in LOCALE, or nil if it is unspec= ified. = +NOTE: This returns a locale-specific specification, not any sort of value +corresponding to the actual background being used. If you want to know = the +actual background color used in a particular domain, use +`face-background-instance', or `face-background-name' for its name +\(i.e. the instantiator used to create it). + FACE may be either a face object or a symbol representing a face. = LOCALE may be a locale (the instantiators for that particular locale will be returned), a locale type (the specifications for all locales - of that type will be returned), 'all (all specifications will be + of that type will be returned), `all' (all specifications will be returned), or nil (the actual specifier object will be returned). = See `face-property' for more information." @@ -537,6 +587,9 @@ See `face-property' for more information (defun face-background-instance (face &optional domain default no-fallba= ck) "Return the instance of FACE's background in DOMAIN. = +Return value will be a color instance object; query its properties using +`color-instance-name' or `color-instance-rgb-properties'. + FACE may be either a face object or a symbol representing a face. = Normally DOMAIN will be a window or nil (meaning the selected window), @@ -569,24 +622,29 @@ COLOR should be an instantiator (see `ma an instantiator list), or a color specifier object. = If COLOR is an alist, LOCALE must be omitted. If COLOR is a - specifier object, LOCALE can be a locale, a locale type, 'all, + specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to 'global. + will be added, and defaults to `global'. = See `set-face-property' for more information." (interactive (face-interactive "background")) (set-face-property face 'background color locale tag-set how-to-add)) = (defun face-background-pixmap (face &optional locale tag-set exact-p) - "Return the background pixmap of FACE in LOCALE, or nil if it is unspe= cified. + "Return the background pixmap spec of FACE in LOCALE, or nil if unspec= ified. This property is only used on window system devices. = +NOTE: This returns a locale-specific specification, not any sort of value +corresponding to the actual background pixmap being used. If you want to +know the actual background pixmap used in a particular domain, use +`face-background-pixmap-instance'. + FACE may be either a face object or a symbol representing a face. = LOCALE may be a locale (the instantiators for that particular locale will be returned), a locale type (the specifications for all locales - of that type will be returned), 'all (all specifications will be + of that type will be returned), `all' (all specifications will be returned), or nil (the actual specifier object will be returned). = See `face-property' for more information." @@ -596,6 +654,12 @@ See `face-property' for more information no-fallback) "Return the instance of FACE's background pixmap in DOMAIN. = +Return value will be an image instance object; query its properties using +`image-instance-instantiator' (the original instantiator used to create +the image, which may be a complex beast -- see `make-image-specifier'), +`image-instance-file-name' (the file, if any, from which the image was +created), `image-instance-height', etc. + FACE may be either a face object or a symbol representing a face. = Normally DOMAIN will be a window or nil (meaning the selected window), @@ -617,10 +681,10 @@ PIXMAP should be an instantiator (see `m to an instantiator list), or an image specifier object. = If PIXMAP is an alist, LOCALE must be omitted. If PIXMAP is a - specifier object, LOCALE can be a locale, a locale type, 'all, + specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to 'global. + will be added, and defaults to `global'. = See `set-face-property' for more information." (interactive (face-interactive "background-pixmap")) @@ -648,13 +712,18 @@ designed for interactive use." (set-face-property face 'background-pixmap file)) = (defun face-display-table (face &optional locale tag-set exact-p) - "Return the display table of FACE in LOCALE. + "Return the display table spec of FACE in LOCALE, or nil if unspecifie= d.. + +NOTE: This returns a locale-specific specification, not any sort of value +corresponding to the actual display table being used. If you want to +know the actual display table used in a particular domain, use +`face-display-table-instance'. = -A vector (as returned by `make-display-table') will be returned. +FACE may be either a face object or a symbol representing a face. = LOCALE may be a locale (the instantiators for that particular locale will be returned), a locale type (the specifications for all locales - of that type will be returned), 'all (all specifications will be + of that type will be returned), `all' (all specifications will be returned), or nil (the actual specifier object will be returned). = See `face-property' for more information." @@ -662,9 +731,17 @@ See `face-property' for more information = (defun face-display-table-instance (face &optional domain default no-fal= lback) "Return the instance of FACE's display table in DOMAIN. -A vector (as returned by `make-display-table') will be returned. = -See `face-property-instance' for the semantics of the DOMAIN argument." +Return value will be a vector, char table or range table; see +`current-display-table'. + +FACE may be either a face object or a symbol representing a face. + +Normally DOMAIN will be a window or nil (meaning the selected window), + and the actual display table used in that particular window and buffer + will be returned. + +See `face-property-instance' for more information." (face-property-instance face 'display-table domain default no-fallback= )) = (defun set-face-display-table (face display-table &optional locale tag-s= et @@ -788,7 +865,7 @@ See `face-property-instance' for the sem (error "Invalid specifier domain")) (let ((device (dfw-device domain)) (common-props '(foreground background font display-table underline - dim)) + dim inherit)) (win-props '(background-pixmap strikethru)) (tty-props '(highlight blinking reverse))) = @@ -1632,10 +1709,10 @@ Don't use this function in your program. = (defun init-face-from-resources (face &optional locale) "Initialize FACE from the resource database. -If LOCALE is specified, it should be a frame, device, or 'global, and +If LOCALE is specified, it should be a frame, device, or `global', and the face will be resourced over that locale. Otherwise, the face will be resourced over all possible locales (i.e. all frames, all devices, -and 'global)." +and `global')." (cond ((null init-face-from-resources) ;; Do nothing. ) = = = 1.7.2.1 +1 -1 XEmacs/xemacs/lisp/finder.el = Index: finder.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/finder.el,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -p -r1.7 -r1.7.2.1 --- finder.el 2003/02/20 08:19:29 1.7 +++ finder.el 2005/11/06 16:13:57 1.7.2.1 @@ -288,7 +288,7 @@ arguments compiles from `load-path'." found) (while (and dirs (not found)) (if (file-exists-p (expand-file-name (concat file ".el") (car dirs))) - (setq found (expand-file-name file (car dirs))) + (setq found (expand-file-name (concat file ".el") (car dirs))) (if (file-exists-p (expand-file-name file (car dirs))) (setq found (expand-file-name file (car dirs))))) (setq dirs (cdr dirs))) = = = 1.15.2.8 +102 -82 XEmacs/xemacs/lisp/font.el = Index: font.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font.el,v retrieving revision 1.15.2.7 retrieving revision 1.15.2.8 diff -u -p -r1.15.2.7 -r1.15.2.8 --- font.el 2005/09/20 16:05:24 1.15.2.7 +++ font.el 2005/11/06 16:13:57 1.15.2.8 @@ -72,29 +72,38 @@ (defmacro defcustom (var value doc &rest args) `(defvar ,var ,value ,doc)))) = -; delete alternate defn of try-font-name +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; ancient gomi +;; will be deleted soon 2005-09-25 + +;; ; delete alternate defn of try-font-name + +;; (if (not (fboundp 'facep)) +;; (defun facep (face) +;; "Return t if X is a face name or an internal face vector." +;; (if (not window-system) +;; nil ; FIXME if FSF ever does TTY faces +;; (and (or (internal-facep face) +;; (and (symbolp face) (assq face global-face-data))) +;; t)))) + +;; (if (not (fboundp 'set-face-property)) +;; (defun set-face-property (face property value &optional locale +;; tag-set how-to-add) +;; "Change a property of FACE." +;; (and (symbolp face) +;; (put face property value)))) + +;; (if (not (fboundp 'face-property)) +;; (defun face-property (face property &optional locale tag-set exac= t-p) +;; "Return FACE's value of the given PROPERTY." +;; (and (symbolp face) (get face property)))) + +;; end of condemned stuff +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; = -(if (not (fboundp 'facep)) - (defun facep (face) - "Return t if X is a face name or an internal face vector." - (if (not window-system) - nil ; FIXME if FSF ever does TTY faces - (and (or (internal-facep face) - (and (symbolp face) (assq face global-face-data))) - t)))) - -(if (not (fboundp 'set-face-property)) - (defun set-face-property (face property value &optional locale - tag-set how-to-add) - "Change a property of FACE." - (and (symbolp face) - (put face property value)))) - -(if (not (fboundp 'face-property)) - (defun face-property (face property &optional locale tag-set exact-p) - "Return FACE's value of the given PROPERTY." - (and (symbolp face) (get face property)))) - (require 'disp-table) = =0C @@ -108,11 +117,13 @@ (gtk . (x-font-create-name x-font-create-object)) ;; #### FIXME should this handle fontconfig font objects? (fc . (fc-font-create-name fc-font-create-object)) - (ns . (ns-font-create-name ns-font-create-object)) (mswindows . (mswindows-font-create-name mswindows-font-create-objec= t)) - (pm . (x-font-create-name x-font-create-object)) ; Change? FI= XME ;; #### what is this bogosity? - (tty . (tty-font-create-plist tty-font-create-object))) + (tty . (tty-font-create-plist tty-font-create-object)) + ;; NeXTstep and Presentation Manager are scheduled for demolition + ;; (ns . (ns-font-create-name ns-font-create-object)) + ;; (pm . (x-font-create-name x-font-create-object)) ; Change? FI= XME + ) "An assoc list mapping device types to a list of translations. = The first function creates a font name from a font descriptor object. @@ -844,63 +855,72 @@ The type may be the strings \"px\", \"pi (fc-name-unparse pattern))) = =0C -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;; -;;; The window-system dependent code (NS-style) -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;; -(defun ns-font-families-for-device (&optional device no-resetp) - ;; For right now, assume we are going to have the same storage for - ;; device fonts for NS as we do for X. Is this a valid assumption? - (or device (setq device (selected-device))) - (if (boundp 'device-fonts-cache) - (let ((menu (or (cdr-safe (assq device device-fonts-cache))))) - (if (and (not menu) (not no-resetp)) - (progn - (reset-device-font-menus device) - (ns-font-families-for-device device t)) - (let ((scaled (mapcar #'(lambda (x) (if x (aref x 0))) - (aref menu 0))) - (normal (mapcar #'(lambda (x) (if x (aref x 0))) - (aref menu 1)))) - (sort (font-unique (nconc scaled normal)) 'string-lessp)))))) - -(defun ns-font-create-name (fontobj &optional device) - "Return a font name constructed from FONTOBJ, appropriate for NextSTEP= devices." - (let ((family (or (font-family fontobj) - (ns-font-families-for-device device))) - (weight (or (font-weight fontobj) :medium)) - (style (or (font-style fontobj) (list :normal))) - (size (font-size fontobj))) - ;; Create a font, wow! - (if (stringp family) - (setq family (list family))) - (if (or (symbolp style) (numberp style)) - (setq style (list style))) - (setq weight (font-higher-weight weight (car-safe (memq :bold style)= ))) - (if (stringp size) - (setq size (font-spatial-to-canonical size device))) - (setq weight (or (cdr-safe (assq weight ns-font-weight-mappings)) - "medium")) - (let ((done nil) ; Did we find a good font yet? - (font-name nil) ; font name we are currently checking - (cur-family nil) ; current family we are checking - ) - (while (and family (not done)) - (setq cur-family (car family) - family (cdr family)) - (if (assoc cur-family font-x-family-mappings) - ;; If the family name is an alias as defined by - ;; font-x-family-mappings, then append those families - ;; to the front of 'family' and continue in the loop. - ;; #### jhar: I don't know about ns font names, so using X mappings - (setq family (append - (cdr-safe (assoc cur-family - font-x-family-mappings)) - family)) - ;; CARL: Need help here - I am not familiar with the NS font - ;; model - (setq font-name "UNKNOWN FORMULA GOES HERE" - done (try-font-name font-name device)))) - (if done font-name)))) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; +;; ancient gomi +;; will be deleted soon 2005-09-25 + +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;;;; +;; ;;; The window-system dependent code (NeXTstep-style) +;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;;;;; +;; (defun ns-font-families-for-device (&optional device no-resetp) +;; ;; For right now, assume we are going to have the same storage for +;; ;; device fonts for NS as we do for X. Is this a valid assumption? +;; (or device (setq device (selected-device))) +;; (if (boundp 'device-fonts-cache) +;; (let ((menu (or (cdr-safe (assq device device-fonts-cache))))) +;; (if (and (not menu) (not no-resetp)) +;; (progn +;; (reset-device-font-menus device) +;; (ns-font-families-for-device device t)) +;; (let ((scaled (mapcar #'(lambda (x) (if x (aref x 0))) +;; (aref menu 0))) +;; (normal (mapcar #'(lambda (x) (if x (aref x 0))) +;; (aref menu 1)))) +;; (sort (font-unique (nconc scaled normal)) 'string-lessp)))))) + +;; (defun ns-font-create-name (fontobj &optional device) +;; "Return a font name constructed from FONTOBJ, appropriate for NextS= TEP devices." +;; (let ((family (or (font-family fontobj) +;; (ns-font-families-for-device device))) +;; (weight (or (font-weight fontobj) :medium)) +;; (style (or (font-style fontobj) (list :normal))) +;; (size (font-size fontobj))) +;; ;; Create a font, wow! +;; (if (stringp family) +;; (setq family (list family))) +;; (if (or (symbolp style) (numberp style)) +;; (setq style (list style))) +;; (setq weight (font-higher-weight weight (car-safe (memq :bold sty= le)))) +;; (if (stringp size) +;; (setq size (font-spatial-to-canonical size device))) +;; (setq weight (or (cdr-safe (assq weight ns-font-weight-mappings)) +;; "medium")) +;; (let ((done nil) ; Did we find a good font yet? +;; (font-name nil) ; font name we are currently checking +;; (cur-family nil) ; current family we are checking +;; ) +;; (while (and family (not done)) +;; (setq cur-family (car family) +;; family (cdr family)) +;; (if (assoc cur-family font-x-family-mappings) +;; ;; If the family name is an alias as defined by +;; ;; font-x-family-mappings, then append those families +;; ;; to the front of 'family' and continue in the loop. +;; ;; #### jhar: I don't know about ns font names, so using X mappi= ngs +;; (setq family (append +;; (cdr-safe (assoc cur-family +;; font-x-family-mappings)) +;; family)) +;; ;; CARL: Need help here - I am not familiar with the NS font +;; ;; model +;; (setq font-name "UNKNOWN FORMULA GOES HERE" +;; done (try-font-name font-name device)))) +;; (if done font-name)))) + +;; end of condemned stuff +;; +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; = =0C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;;; = = = 1.1.2.7 +195 -42 XEmacs/xemacs/lisp/Attic/fontconfig.el = Index: fontconfig.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/Attic/fontconfig.el,v retrieving revision 1.1.2.6 retrieving revision 1.1.2.7 diff -u -p -r1.1.2.6 -r1.1.2.7 --- fontconfig.el 2005/09/27 16:28:51 1.1.2.6 +++ fontconfig.el 2005/11/06 16:13:57 1.1.2.7 @@ -1,9 +1,117 @@ +;;; fontconfig.el --- New font model, NG + +;; Copyright (c) 2003 Eric Knauel and Matthias Neubauer +;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +;; Authors: Eric Knauel +;; Matthias Neubauer +;; Stephen J. Turnbull +;; Created: 27 Oct 2003 +;; Updated: 05 Mar 2005 by Stephen J. Turnbull +;; Keywords: faces + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in GNU + +;;; Commentary: + +;; This file is one of the pillars of the face refactoring effort +;; (another will be colorconfig.el, and there may be others). + +;; The overall plan is to have a sensible modern model for values of +;; each of the components of a face (starting with fonts and colors), +;; implemented in a single module. Of course we must be able to +;; convert such values to appropriate descriptors for any device type +;; on the one hand, but on the other it seems unreasonable to force +;; users to deal with a large number of different (and arcane, in the +;; case of XLFD) naming formats. + +;; This file implements font specification. We call a specification a +;; *pattern* to conform to fontconfig usage. The internal +;; representation of a pattern will have Keith Packard's fontconfig +;; API. For one, there is a robust and free C implementation, which +;; is available as a package for all platforms supported by X.org or +;; XFree86. For another, it seems to be capable of representing any +;; specification of any of the font models I know. Third, on X +;; platforms that internal representation can be passed verbatim to +;; libXft to get high quality TrueType fonts rendered with +;; anti-aliasing and hinting. + +;; We will support the following user interfaces: + +;; 1. fontconfig font names +;; 2. X Logical Font Descriptions (XLFD) +;; 3. MS Windows font names +;; 4. Mac OS X font names + +;; and possibly others (such as ad hoc abbreviations used in older X11 +;; implementations). This is called the *fontname UI* (for the +;; platform) to distinguish it from XEmacs's internal model +;; (fontconfig patterns) and the API for rendering engines (called the +;; *font API* for the engine). + +;; We will support the following rendering engine APIs: + +;; 1. fontconfig patterns (the native language of Xft); to emphasize +;; the engine-specific nature, we will call these *Xft fonts* +;; 2. XLFD strings +;; 3. MS Windows font names + +;; and possibly others (such as Mac OS X font names). This is called +;; the *font API* (for the platform) to distinguish it from XEmacs's +;; internal model (fontconfig *patterns*) and the names used by users +;; (called the *fontname UI* for the platform). + + ;; TODO (possible enhancements) ;; 1. add a more complete docstring for properties as such (would be a ;; hash table?) to describe things like special symbolic values, and ;; Emacs-relevant semantics ;; 2. add a special value defining macro for constants = +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; The fontconfig pattern API +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-pattern-". These are +;; +;; fc-pattern-p +;; fc-pattern-create +;; fc-pattern-duplicate +;; fc-pattern-add +;; fc-pattern-del +;; fc-pattern-get +;; fc-pattern-destroy + +;; We provide a LISP-y alias, `make-fc-pattern' for the pattern +;; constructor function `fc-pattern-create'. #### It might make sense +;; to generalize `make-fc-pattern' by allowing a plist of properties +;; as an optional argument. We also provide accessors +;; `fc-pattern-get-PROPERTY' and mutators `fc-pattern-add-PROPERTY' +;; for each of the standard properties used by Xft, which overlap +;; substantially with the properties defined by X11. #### We probably +;; should provide `fc-pattern-delete-PROPERTY', too. + +(defalias 'make-fc-pattern 'fc-pattern-create) + (defmacro fc-define-property (property type docfrag &optional obsolete-p) "Define PROPERTY as a fontconfig font property of type TYPE using DOCF= RAG. = @@ -156,9 +264,18 @@ See `fc-pattern-add' for documentation o ;; (,fc-font-name-property-render . fc-pattern-get-render) )) = -(defvar fc-find-available-font-families-fc-fonts-only t - "If `fc-find-available-font-families-fc-fonts-only' is set to `t', -`fc-find-available-font-families' will ignore core fonts.") +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; fontconfig API for massaging property values +;; +;; Note that functions that actually manipulate values in patterns for +;; the purpose of changing size or creating a group of related faces +;; (eg, roman, italic, bold, and bold-italic) _do not_ belong here. +;; Those belong in the face code. +;; +;; #### This is way overcomplexified. It's not obvious to me that we +;; need to expose the fontconfig integer values to LISP, and we should +;; not if we can avoid it. = (defconst fc-font-name-slant-roman 0) (defconst fc-font-name-slant-italic 100) @@ -267,28 +384,6 @@ corresponding Xft font slant constant." (let ((pair (assoc str fc-font-name-weight-mapping-string-reverse))) (if pair (cdr pair)))) = -;; #### it might make sense to generalize `make-fc-pattern' by allowing -;; a plist of properties as an optional argument. - -;; A LISP-y alias for the pattern constructor function. -(defalias 'make-fc-pattern 'fc-pattern-create) - -;; #### it might make sense to generalize `fc-try-font' by having a -;; global variable that contains a list of font name parsers. They are -;; tried in order, and the first one to return an fc-pattern is matched. - -(defun fc-try-font (font &optional device) - "Return list of pattern objects matching FONT on DEVICE. - -FONT may be a fontconfig pattern object or a fontconfig font name (a str= ing). -Optional DEVICE is the device object to query, defaulting to the current= ly -selected device." - (fc-list-fonts-pattern-objects (or device (default-x-device)) - (if (fc-pattern-p font) = - font - (fc-name-parse font)) - nil)) - (defun fc-copy-pattern-partial (pattern attribute-list) "Return a copy of PATTERN restricted to ATTRIBUTE-LIST. = @@ -307,6 +402,64 @@ A new object is allocated and returned." (setq attrs (cdr attrs))) new)) = +(defun fc-pattern-get-all-attributes (fc-pattern fc-pattern-get-function) + (let ((count 0) + res end val) + (while (not end) + (setq val (funcall fc-pattern-get-function fc-pattern count)) + (if (or (equal val 'fc-result-no-id) + (equal val 'fc-result-no-match)) + (setq end t) + (setq res (append res (list val)) + count (+ count 1)))) + res)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; The fontconfig fontname UI +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-name-". These are +;; +;; fc-name-parse +;; fc-name-unparse +;; xft-name-unparse + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; The fontconfig font API +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-font-". These are +;; +;; fc-font-match +;; fc-list-fonts-pattern-objects +;; fc-font-sort +;; fc-font-real-pattern + +;; #### it might make sense to generalize `fc-try-font' by having a +;; global variable that contains a list of font name parsers. They are +;; tried in order, and the first one to return an fc-pattern is matched. + +;; #### Probably useless. If not, make it a defcustom. +(defvar fc-find-available-font-families-fc-fonts-only t + "If `fc-find-available-font-families-fc-fonts-only' is set to `t', +`fc-find-available-font-families' will ignore core fonts.") + +(defun fc-try-font (font &optional device) + "Return list of pattern objects matching FONT on DEVICE. + +FONT may be a fontconfig pattern object or a fontconfig font name (a str= ing). +Optional DEVICE is the device object to query, defaulting to the current= ly +selected device." + (fc-list-fonts-pattern-objects (or device (default-x-device)) + (if (fc-pattern-p font) = + font + (fc-name-parse font)) + nil)) + (defun fc-find-available-font-families (&optional device filter-fun) "Find all available font families." (let ((device (or device (default-x-device))) @@ -351,6 +504,23 @@ A new object is allocated and returned." (fc-font-weight-translate-from-constant fc-weight-constant)))) (fc-list-fonts-pattern-objects device pattern objectset)))) = +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; The XLFD fontname UI +;; + +;; xlfd-font-name-p + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;;; +;; +;; Utility functions +;; + +(defun fc-pattern-get-successp (result) + (and (not (equal result 'fc-result-no-match)) + (not (equal result 'fc-result-no-id)) + (not (equal result 'fc-internal-error)))) + ;;; DELETE-DUPLICATES and REMOVE-DUPLICATES from cl-seq.el do not ;;; seem to work on list of strings... ;;; #### Presumably just use :test 'equal! @@ -372,23 +542,6 @@ A new object is allocated and returned." (setq res (append res (list (car in))))) (setq in (cdr in))) res)) - -(defun fc-pattern-get-all-attributes (fc-pattern fc-pattern-get-function) - (let ((count 0) - res end val) - (while (not end) - (setq val (funcall fc-pattern-get-function fc-pattern count)) - (if (or (equal val 'fc-result-no-id) - (equal val 'fc-result-no-match)) - (setq end t) - (setq res (append res (list val)) - count (+ count 1)))) - res)) - -(defun fc-pattern-get-successp (result) - (and (not (equal result 'fc-result-no-match)) - (not (equal result 'fc-result-no-id)) - (not (equal result 'fc-internal-error)))) = (provide 'fontconfig) = = = = 1.43.2.2 +1 -1 XEmacs/xemacs/lisp/help.el = Index: help.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/help.el,v retrieving revision 1.43.2.1 retrieving revision 1.43.2.2 diff -u -p -r1.43.2.1 -r1.43.2.2 --- help.el 2005/03/15 05:20:48 1.43.2.1 +++ help.el 2005/11/06 16:13:58 1.43.2.2 @@ -838,7 +838,7 @@ of the key sequence that ran this comman (defun view-emacs-news () "Display info on recent changes to XEmacs." (interactive) - (Help-find-file (locate-data-file "NEWS"))) + (Help-find-file (expand-file-name "NEWS" data-directory))) = (defun xemacs-www-page () "Go to the XEmacs World Wide Web page." = = = 1.26.2.3 +3 -3 XEmacs/xemacs/lisp/minibuf.el = Index: minibuf.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/minibuf.el,v retrieving revision 1.26.2.2 retrieving revision 1.26.2.3 diff -u -p -r1.26.2.2 -r1.26.2.3 --- minibuf.el 2005/07/13 04:44:41 1.26.2.2 +++ minibuf.el 2005/11/06 16:13:58 1.26.2.3 @@ -23,8 +23,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the -;; Free Software Foundation, 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Synched up with: all the minibuffer history stuff is synched with ;;; 19.30. Not sure about the rest. @@ -1495,7 +1495,7 @@ only existing buffer names are allowed." (setq result default) nil) ((not default) - t) + nil) ((not (get-buffer default)) t) (t = = = 1.68.2.2 +30 -22 XEmacs/xemacs/lisp/package-get.el = Index: package-get.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/package-get.el,v retrieving revision 1.68.2.1 retrieving revision 1.68.2.2 diff -u -p -r1.68.2.1 -r1.68.2.2 --- package-get.el 2005/09/20 16:05:25 1.68.2.1 +++ package-get.el 2005/11/06 16:13:58 1.68.2.2 @@ -204,6 +204,7 @@ directory." ("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ;; In alphabetical order of Country, our mirrors... + ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/pa= ckages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/pack= ages") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/package= s") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/packa= ges") @@ -211,7 +212,7 @@ directory." ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/pac= kages") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/package= s") - ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/pac= kages") + ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/package= s") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.x= emacs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/pac= kages") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xema= cs.org/pub/tux/xemacs/packages") @@ -219,32 +220,32 @@ directory." ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packag= es") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/t= ux/xemacs/packages") - ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xema= cs/packages") + ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.o= rg/pub/xemacs/packages") + ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/packa= ges") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/p= ackages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/p= ackages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/package= s") ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/package= s") - ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") +; ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xema= cs/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs= /packages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemac= s.org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xema= cs/packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") - ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/= packages") - ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp= .xemacs.org/packages") +; ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp= .xemacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packag= es") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/pa= ckages") + ("Taiwan (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" "Unix/Editors/XEma= cs/packages") ("UK (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/= xemacs/packages") - ("US (ibiblio.org)" "ibiblio.org" "pub/packages/editors/xemacs/packa= ges") + ("US (ibiblio.org)" "mirrors.ibiblio.org" "pub/mirrors/xemacs/packag= es") ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pu= b/xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/packa= ges") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages") - ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") - ) + ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")) "*List of remote sites available for downloading packages. List format is '(site-description site-name directory-on-site). SITE-DESCRIPTION is a textual description of the site. SITE-NAME @@ -263,20 +264,24 @@ variable actually used to specify packag ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ;; In alphabetical order of Country, our mirrors... + ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" + "pub/mirrors/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Austria Pre-Releases (at.xemacs.org)" "ftp.at.xemacs.org" - "editors/xemacs/beta/experimentsl/packages") + "editors/xemacs/beta/experimental/packages") + ("Belgium (be.xemacs.org)" "ftp.be.xemacs.org" + "xemacs/beta/experimental/packages") ("Brazil Pre-Releases (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/xemacs-21.5/experimental/packages") ("Canada Pre-Releases (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") - ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca" - "pub/Mirror/xemacs/beta/experimental/packages") + ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca" + "pub/packages/editors/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/package= s") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" @@ -291,10 +296,12 @@ variable actually used to specify packag "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") - ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" - "pub/editors/xemacs/beta/experimental/packages") + ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" + "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") + ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" + "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" @@ -309,27 +316,28 @@ variable actually used to specify packag "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") - ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" "mir= ror/ftp.xemacs.org/packages") + ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" + "pub/tools/emacs/xemacs/beta/experimental/packages") + ("New Zealand Pre-Releases (nz.xemacs.org)" "ftp.nz.xemacs.org" + "mirror/ftp.xemacs.org/packages") ("Norway Pre-Releases (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/beta/experimental/packages") ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/beta/experimental/packages") - ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" - "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/package= s") - ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" - "pub/mirrors/xemacs/beta/experimental/packages") - ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" - "mirrorsites/ftp.xemacs.org/beta/experimental/packages") +; ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" +; "mirrorsites/ftp.xemacs.org/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/beta/experimental/packages") ("Switzerland Pre-Releases (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/beta/experimental/packages") + ("Taiwan Pre-Releases (ftp.tw.xemacs.org)" "ftp.tw.xemacs.org" + "Unix/Editors/XEmacs/beta/experimental/packages") ("UK Pre-Releases (uk.xemacs.org)" "ftp.uk.xemacs.org" "sites/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") - ("US Pre-Releases (ibiblio.org)" "ibiblio.org" - "pub/packages/editors/xemacs/beta/experimental/packages") + ("US Pre-Releases (ibiblio.org)" "mirrors.ibiblio.org" + "pub/mirrors/xemacs/beta/experimental/packages") ("US Pre-Releases (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") ("US Pre-Releases (unc.edu)" "metalab.unc.edu" = = = 1.10.2.2 +3 -267 XEmacs/xemacs/lisp/replace.el = Index: replace.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/replace.el,v retrieving revision 1.10.2.1 retrieving revision 1.10.2.2 diff -u -p -r1.10.2.1 -r1.10.2.2 --- replace.el 2005/03/15 05:20:54 1.10.2.1 +++ replace.el 2005/11/06 16:13:58 1.10.2.2 @@ -19,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the Free -;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -;; 02111-1307, USA. +;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Synched up with: FSF 19.34 [Partially]. = @@ -455,271 +455,7 @@ kill ring as one block of text." (message "%d occurrences" count))))) = =0C -(defvar occur-mode-map ()) -(if occur-mode-map - () - (setq occur-mode-map (make-sparse-keymap)) - (set-keymap-name occur-mode-map 'occur-mode-map) ; XEmacs - (define-key occur-mode-map 'button2 'occur-mode-mouse-goto) ; XEmacs - (define-key occur-mode-map "\C-c\C-c" 'occur-mode-goto-occurrence) - (define-key occur-mode-map "\C-m" 'occur-mode-goto-occurrence)) - -(defvar occur-buffer nil) -(defvar occur-nlines nil) -(defvar occur-pos-list nil) - -(defun occur-mode () - "Major mode for output from \\[occur]. -\\Move point to one of the items in this buffer, then use -\\[occur-mode-goto-occurrence] to go to the occurrence that the item ref= ers to. -Alternatively, click \\[occur-mode-mouse-goto] on an item to go to it. - -\\{occur-mode-map}" - (kill-all-local-variables) - (use-local-map occur-mode-map) - (setq major-mode 'occur-mode) - (setq mode-name (gettext "Occur")) ; XEmacs - (make-local-variable 'occur-buffer) - (make-local-variable 'occur-nlines) - (make-local-variable 'occur-pos-list) - (require 'mode-motion) ; XEmacs - (setq mode-motion-hook 'mode-motion-highlight-line) ; XEmacs - (run-hooks 'occur-mode-hook)) - -;; FSF Version of next function: -; (let (buffer pos) -; (save-excursion -; (set-buffer (window-buffer (posn-window (event-end event)))) -; (save-excursion -; (goto-char (posn-point (event-end event))) -; (setq pos (occur-mode-find-occurrence)) -; (setq buffer occur-buffer))) -; (pop-to-buffer buffer) -; (goto-char (marker-position pos)))) - -(defun occur-mode-mouse-goto (event) - "Go to the occurrence highlighted by mouse. -This function should be bound to a mouse key in the `*Occur*' buffer." - (interactive "e") - (let ((window-save (selected-window)) - (frame-save (selected-frame))) - ;; preserve the window/frame setup - (unwind-protect - (progn - (mouse-set-point event) - (occur-mode-goto-occurrence)) - (select-frame frame-save) - (select-window window-save)))) - -;; Called occur-mode-find-occurrence in FSF -(defun occur-mode-goto-occurrence () - "Go to the occurrence the current line describes." - (interactive) - (if (or (null occur-buffer) - (null (buffer-name occur-buffer))) - (progn - (setq occur-buffer nil - occur-pos-list nil) - (error "Buffer in which occurrences were found is deleted"))) - (let* ((line-count - (count-lines (point-min) - (save-excursion - (beginning-of-line) - (point)))) - (occur-number (save-excursion - (beginning-of-line) - (/ (1- line-count) - (cond ((< occur-nlines 0) - (- 2 occur-nlines)) - ((> occur-nlines 0) - (+ 2 (* 2 occur-nlines))) - (t 1))))) - (pos (nth occur-number occur-pos-list)) - ;; removed t arg from Bob Weiner, 10/6/95 - (window (get-buffer-window occur-buffer)) - (occur-source-buffer occur-buffer)) - (if (< line-count 1) - (error "No occurrence on this line")) - (or pos - (error "No occurrence on this line")) - ;; XEmacs: don't raise window unless it isn't visible - ;; allow for the possibility that the occur buffer is on another fra= me - (or (and window - (window-live-p window) - (frame-visible-p (window-frame window)) - (set-buffer occur-source-buffer)) - (and (pop-to-buffer occur-source-buffer) - (setq window (get-buffer-window occur-source-buffer)))) - (goto-char pos) - (set-window-point window pos))) - -=0C -(defvar list-matching-lines-default-context-lines 0 - "*Default number of context lines to include around a `list-matching-l= ines' -match. A negative number means to include that many lines before the ma= tch. -A positive number means to include that many lines both before and after= .") - -;; XEmacs addition -;;; Damn you Jamie, this is utter trash. -(defvar list-matching-lines-whole-buffer t - "If t, occur operates on whole buffer, otherwise occur starts from poi= nt. -default is t.") - -(define-function 'occur 'list-matching-lines) -(defun list-matching-lines (regexp &optional nlines) - "Show all lines in the current buffer containing a match for REGEXP. - -If a match spreads across multiple lines, all those lines are shown. - -If variable `list-matching-lines-whole-buffer' is non-nil, the entire -buffer is searched, otherwise search begins at point. - -Each line is displayed with NLINES lines before and after, or -NLINES -before if NLINES is negative. -NLINES defaults to `list-matching-lines-default-context-lines'. -Interactively it is the prefix arg. - -The lines are shown in a buffer named `*Occur*'. -It serves as a menu to find any of the occurrences in this buffer. -\\[describe-mode] in that buffer will explain how." - (interactive - ;; XEmacs change - (list (let* ((default (or (symbol-near-point) - (and regexp-history - (car regexp-history)))) - (minibuffer-history-minimum-string-length 0) - (input - (if default - ;; rewritten for I18N3 snarfing - (read-from-minibuffer - (format "List lines matching regexp (default `%s'): " - default) nil nil nil 'regexp-history nil - default) - (read-from-minibuffer - "List lines matching regexp: " - nil nil nil - 'regexp-history)))) - (if (and (equal input "") default) - (progn - (setq input default) - (setcar regexp-history default))) - ;; clear extra entries - (setcdr regexp-history (delete (car regexp-history) - (cdr regexp-history))) - input) - current-prefix-arg)) - (if (equal regexp "") - (error "Must pass non-empty regexp to `list-matching-lines'")) - (setq nlines (if nlines (prefix-numeric-value nlines) - list-matching-lines-default-context-lines)) - (let ((first t) - (dir default-directory) - (buffer (current-buffer)) - (linenum 1) - (prevpos (point-min)) - ;; The rest of this function is very different from FSF. - ;; Presumably that's due to Jamie's misfeature - (final-context-start (make-marker))) - (if (not list-matching-lines-whole-buffer) - (save-excursion - (beginning-of-line) - (setq linenum (1+ (count-lines (point-min) (point)))) - (setq prevpos (point)))) - (with-output-to-temp-buffer "*Occur*" - (save-excursion - (set-buffer standard-output) - (setq default-directory dir) - ;; We will insert the number of lines, and "lines", later. - ;; #### Needs fixing for I18N3 - (let ((print-escape-newlines t)) - (insert (format " matching %s in buffer %s.\n" - regexp (buffer-name buffer)))) - (occur-mode) - (setq occur-buffer buffer) - (setq occur-nlines nlines) - (setq occur-pos-list ())) - (if (eq buffer standard-output) - (goto-char (point-max))) - (with-interactive-search-caps-disable-folding regexp t - (save-excursion - (if list-matching-lines-whole-buffer - (beginning-of-buffer)) - (message "Searching for %s ..." regexp) - ;; Find next match, but give up if prev match was at end of buffer. - (while (and (not (=3D prevpos (point-max))) - (re-search-forward regexp nil t)) - (goto-char (match-beginning 0)) - (beginning-of-line) - (save-match-data - (setq linenum (+ linenum (count-lines prevpos (point))))) - (setq prevpos (point)) - (goto-char (match-end 0)) - (let* ((start (save-excursion - (goto-char (match-beginning 0)) - (forward-line (if (< nlines 0) nlines (- nlines))) - (point))) - (end (save-excursion - (goto-char (match-end 0)) - (if (> nlines 0) - (forward-line (1+ nlines)) - (forward-line 1)) - (point))) - (tag (format "%5d" linenum)) - (empty (make-string (length tag) ?\ )) - tem) - (save-excursion - (setq tem (make-marker)) - (set-marker tem (point)) - (set-buffer standard-output) - (setq occur-pos-list (cons tem occur-pos-list)) - (or first (zerop nlines) - (insert "--------\n")) - (setq first nil) - (insert-buffer-substring buffer start end) - (set-marker final-context-start - (- (point) (- end (match-end 0)))) - (backward-char (- end start)) - (setq tem (if (< nlines 0) (- nlines) nlines)) - (while (> tem 0) - (insert empty ?:) - (forward-line 1) - (setq tem (1- tem))) - (let ((this-linenum linenum)) - (while (< (point) final-context-start) - (if (null tag) - (setq tag (format "%5d" this-linenum))) - (insert tag ?:) - ;; FSFmacs -- - ;; we handle this using mode-motion-highlight-line, above. - ;; (put-text-property (save-excursion - ;; (beginning-of-line) - ;; (point)) - ;; (save-excursion - ;; (end-of-line) - ;; (point)) - ;; 'mouse-face 'highlight) - (forward-line 1) - (setq tag nil) - (setq this-linenum (1+ this-linenum))) - (while (<=3D (point) final-context-start) - (insert empty ?:) - (forward-line 1) - (setq this-linenum (1+ this-linenum)))) - (while (< tem nlines) - (insert empty ?:) - (forward-line 1) - (setq tem (1+ tem))) - (goto-char (point-max))) - (forward-line 1))) - (set-buffer standard-output) - ;; Put positions in increasing order to go with buffer. - (setq occur-pos-list (nreverse occur-pos-list)) - (goto-char (point-min)) - (if (=3D (length occur-pos-list) 1) - (insert "1 line") - (insert (format "%d lines" (length occur-pos-list)))) - (if (interactive-p) - (message "%d matching lines." (length occur-pos-list)))))))) +;;; occur code moved to occur.el =0C ;; It would be nice to use \\[...], but there is no reasonable way ;; to make that display both SPC and Y. = = = 1.47.2.3 +11 -7 XEmacs/xemacs/lisp/simple.el = Index: simple.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/simple.el,v retrieving revision 1.47.2.2 retrieving revision 1.47.2.3 diff -u -p -r1.47.2.2 -r1.47.2.3 --- simple.el 2005/07/13 04:44:42 1.47.2.2 +++ simple.el 2005/11/06 16:13:59 1.47.2.3 @@ -21,12 +21,12 @@ = ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the Free -;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -;; 02111-1307, USA. +;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Synched up with: FSF 19.34 [But not very closely]. -;;; Occasional synching to FSF 21.2, as marked. Comment stuff also -;;; synched, and in newcomment.el. +;;; Occasional synching to FSF 21.2 and FSF 22.0, as marked. Comment st= uff +;;; also synched, and in newcomment.el. = ;;; Commentary: = @@ -746,6 +746,10 @@ be given to `goto-line' to get back to t (line-number nil respect-narrowing)) (1+ (count-lines (if respect-narrowing (point-min) 1) (point-at-bol)= )))) = +;; FSF 22.0.50.1 (CVS) version of above. +(defun line-number-at-pos (&optional pos) + (line-number pos t)) + (defun count-lines (start end &optional ignore-invisible-lines-flag) "Return number of lines between START and END. This is usually the number of newlines between them, @@ -3417,7 +3421,8 @@ The properties used on SYMBOL are `compo (defun xemacs-default-composefunc (&rest args) = "Warn that the default mail-reading package is heinously underfeatured; compose a mail using it, all the same. " - (warn " + (unless (noninteractive) + (warn " = Defaulting to the GNU Emacs-derived `sendmail.el' mail client. This faci= lity, while part of base XEmacs, is heinously underfeatured, and not going to = get @@ -3431,11 +3436,10 @@ To choose a package from those installed list. Gnus and VM are full-featured and have active user communities. = To disable this warning and stick with the old behavior, you can explici= tly -initialize `mail-user-agent' to 'sendmail-user-agent . ") = +initialize `mail-user-agent' to 'sendmail-user-agent . ")) (setq mail-user-agent 'sendmail-user-agent) (apply (get 'sendmail-user-agent 'composefunc) args)) = - = (defun xemacs-default-sendfunc (&rest args) = "Set `mail-user-agent' to `sendmail-user-agent'; call the send function associated with that package, passing it the supplied arguments. " = = = 1.35.2.2 +16 -2 XEmacs/xemacs/lisp/subr.el = Index: subr.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/subr.el,v retrieving revision 1.35.2.1 retrieving revision 1.35.2.2 diff -u -p -r1.35.2.1 -r1.35.2.2 --- subr.el 2005/03/15 05:20:57 1.35.2.1 +++ subr.el 2005/11/06 16:13:59 1.35.2.2 @@ -23,8 +23,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the Free -;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA -;; 02111-1307, USA. +;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Synched up with: FSF 19.34. Some things synched up with later versi= ons. = @@ -1619,6 +1619,20 @@ FILE should be the name of a library, wi (make-compatible 'eval-next-after-load "") = ;; END SYNC WITH FSF 21.2 + +;; BEGIN SYNC WITH FSF 22.0.50.1 (CVS) +(defun delete-dups (list) + "Destructively remove `equal' duplicates from LIST. +Store the result in LIST and return it. LIST must be a proper list. +Of several `equal' occurrences of an element in LIST, the first +one is kept." + (let ((tail list)) + (while tail + (setcdr tail (delete (car tail) (cdr tail))) + (setq tail (cdr tail)))) + list) + +;; END SYNC WITH FSF 22.0.50.1 (CVS) = ;; (defun shell-quote-argument (argument) in process.el. = = = = 1.7.8.2 +3 -3 XEmacs/xemacs/lisp/mule/canna-leim.el = Index: canna-leim.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mule/canna-leim.el,v retrieving revision 1.7.8.1 retrieving revision 1.7.8.2 diff -u -p -r1.7.8.1 -r1.7.8.2 --- canna-leim.el 2005/09/24 14:02:22 1.7.8.1 +++ canna-leim.el 2005/11/06 16:14:05 1.7.8.2 @@ -46,10 +46,10 @@ (defun canna-activate (&optional name) ;; XEmacs 21.5.10 and later have 3-argument require. (unless (require 'CANNA "canna/canna_api" 'no-error) - (error file-error - "Neither built-in nor ELL support for the Canna API was found.")) + (error 'file-error + "No Canna API support!? See M-x describe-installation & C-h v module= -load-path.")) (unless (require 'canna nil 'no-error) - (error file-error + (error 'file-error "Canna LISP support not found. Is the mule-base package missing?")) (setq inactivate-current-input-method-function 'canna-inactivate) (unless (featurep 'leim-canna-initialized) = = = 1.64.2.12 +18 -0 XEmacs/xemacs/lwlib/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.64.2.11 retrieving revision 1.64.2.12 diff -u -p -r1.64.2.11 -r1.64.2.12 --- ChangeLog 2005/09/20 16:05:33 1.64.2.11 +++ ChangeLog 2005/11/06 16:14:06 1.64.2.12 @@ -1,3 +1,21 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-25 Ben Wing + + * lwlib-internal.h (assert): + redo assert macros to follow lisp.h and not trigger warnings. + = + * lwlib.c (merge_scrollbar_values): + * lwlib.c (merge_widget_value_args): + * xlwtabs.c: + * xlwtabs.c (TabsInit): + * xlwtabs.c (TabsConstraintInitialize): + * xlwtabs.c (TabsSetValues): + * xlwtabs.c (TabsConstraintSetValues): + new -> new_. + 2005-09-14 Stephen J. Turnbull = * XEmacs 21.5.22 "cucumber" is released. = = = 1.4.2.1 +3 -3 XEmacs/xemacs/lwlib/lwlib-internal.h = Index: lwlib-internal.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-internal.h,v retrieving revision 1.4 retrieving revision 1.4.2.1 diff -u -p -r1.4 -r1.4.2.1 --- lwlib-internal.h 2003/08/28 15:44:05 1.4 +++ lwlib-internal.h 2005/11/06 16:14:06 1.4.2.1 @@ -8,12 +8,12 @@ /* (thanks, Jamie, I feel better now -- ben) */ EXTERN_C void assert_failed (const char *, int, const char *); # define abort() (assert_failed (__FILE__, __LINE__, "abort()")) -# define assert(x) ((x) ? 1 : (assert_failed (__FILE__, __LINE__, #x), 0= )) +# define assert(x) ((x) ? (void) 0 : assert_failed (__FILE__, __LINE__, = #x)) #else # ifdef DEBUG_XEMACS -# define assert(x) ((x) ? 1 : ((void) abort (), 0)) +# define assert(x) ((x) ? (void) 0 : (void) abort ()) # else -# define assert(x) (1) +# define assert(x) ((void) 0) # endif #endif = = = = 1.19.2.1 +10 -10 XEmacs/xemacs/lwlib/lwlib.c = Index: lwlib.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib.c,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -u -p -r1.19 -r1.19.2.1 --- lwlib.c 2004/09/20 19:19:17 1.19 +++ lwlib.c 2005/11/06 16:14:06 1.19.2.1 @@ -193,7 +193,7 @@ copy_scrollbar_values (widget_value *val = /* * Return true if old->scrollbar_data were not equivalent - * to new->scrollbar_data. + * to new_->scrollbar_data. */ static Boolean merge_scrollbar_values (widget_value *old, widget_value *new_) @@ -238,33 +238,33 @@ merge_scrollbar_values (widget_value *ol #ifdef HAVE_X_WIDGETS /* * Return true if old->args was not equivalent - * to new->args. + * to new_->args. */ static Boolean -merge_widget_value_args (widget_value *old, widget_value *new) +merge_widget_value_args (widget_value *old, widget_value *new_) { Boolean changed =3D False; = - if (new->args && !old->args) + if (new_->args && !old->args) { - lw_copy_widget_value_args (new, old); + lw_copy_widget_value_args (new_, old); changed =3D True; } /* Generally we don't want to lose values that are already in the widget. */ - else if (!new->args && old->args) + else if (!new_->args && old->args) { - lw_copy_widget_value_args (old, new); + lw_copy_widget_value_args (old, new_); changed =3D True; } - else if (new->args && old->args && new->args !=3D old->args) + else if (new_->args && old->args && new_->args !=3D old->args) { /* #### Do something more sensible here than just copying the new values (like actually merging the values). */ - lw_copy_widget_value_args (new, old); + lw_copy_widget_value_args (new_, old); changed =3D True; } - else if (new->args && new->args =3D=3D old->args && new->args->args_ch= anged =3D=3D True) + else if (new_->args && new_->args =3D=3D old->args && new_->args->args= _changed =3D=3D True) { changed =3D True; } = = = 1.4.2.11 +23 -23 XEmacs/xemacs/lwlib/xlwtabs.c = Index: xlwtabs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwtabs.c,v retrieving revision 1.4.2.10 retrieving revision 1.4.2.11 diff -u -p -r1.4.2.10 -r1.4.2.11 --- xlwtabs.c 2005/03/09 09:30:26 1.4.2.10 +++ xlwtabs.c 2005/11/06 16:14:06 1.4.2.11 @@ -255,7 +255,7 @@ static void TabsAllocGreyGC() ; #else = static void TabsClassInit(void) ; -static void TabsInit( Widget req, Widget new, ArgList, Cardinal *nargs) ; +static void TabsInit( Widget req, Widget new_, ArgList, Cardinal *nargs)= ; static void TabsConstraintInitialize(Widget, Widget, ArgList, Cardinal *= ) ; static void TabsRealize(Widget, Mask *, XSetWindowAttributes *) ; static void TabsDestroy( Widget w) ; @@ -459,10 +459,10 @@ TabsClassInit(void) /* ARGSUSED */ = static void -TabsInit(Widget request, Widget new, ArgList UNUSED (args), +TabsInit(Widget request, Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - TabsWidget newTw =3D (TabsWidget)new; + TabsWidget newTw =3D (TabsWidget)new_; = newTw->tabs.numRows =3D 0 ; newTw->tabs.realRows =3D 0; @@ -501,9 +501,9 @@ TabsInit(Widget request, Widget new, Arg { Dimension w,h ; PreferredSize(newTw, &w, &h, NULL,NULL) ; - if( request->core.width =3D=3D 0 ) new->core.width =3D w ; - if( request->core.height =3D=3D 0 ) new->core.height =3D h ; - XtClass(new)->core_class.resize(new) ; + if( request->core.width =3D=3D 0 ) new_->core.width =3D w ; + if( request->core.height =3D=3D 0 ) new_->core.height =3D h ; + XtClass(new_)->core_class.resize(new_) ; } = /* defer GC allocation, etc., until Realize() time. */ @@ -531,15 +531,15 @@ TabsInit(Widget request, Widget new, Arg */ /* ARGSUSED */ static void -TabsConstraintInitialize(Widget UNUSED (request), Widget new, +TabsConstraintInitialize(Widget UNUSED (request), Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - TabsConstraints tab =3D (TabsConstraints) new->core.constraints ; + TabsConstraints tab =3D (TabsConstraints) new_->core.constraints ; tab->tabs.greyAlloc =3D False ; /* defer allocation of pixel */ tab->tabs.visible =3D False ; = - getBitmapInfo((TabsWidget)XtParent(new), tab) ; - TabWidth(new) ; + getBitmapInfo((TabsWidget)XtParent(new_), tab) ; + TabWidth(new_) ; } = = @@ -658,11 +658,11 @@ TabsExpose(Widget w, XEvent *UNUSED (eve = /* ARGSUSED */ static Boolean -TabsSetValues(Widget current, Widget UNUSED (request), Widget new, +TabsSetValues(Widget current, Widget UNUSED (request), Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { TabsWidget curtw =3D (TabsWidget) current ; - TabsWidget tw =3D (TabsWidget) new ; + TabsWidget tw =3D (TabsWidget) new_ ; Boolean needRedraw =3D False ; Widget *childP ; int i ; @@ -705,7 +705,7 @@ TabsSetValues(Widget current, Widget UNU = /* TODO: if any color changes, need to recompute GCs and redraw */ = - if (tw->core.background_pixel !=3D curtw->core.background_pixel || + if( tw->core.background_pixel !=3D curtw->core.background_pixel || tw->core.background_pixmap !=3D curtw->core.background_pixmap || #ifdef USE_XFT_TABS tw->tabs.renderFont !=3D curtw->tabs.renderFont @@ -713,11 +713,11 @@ TabsSetValues(Widget current, Widget UNU tw->tabs.font !=3D curtw->tabs.font #endif ) - if (XtIsRealized(new)) + if( XtIsRealized(new_) ) { - TabsFreeGCs(tw); - TabsAllocGCs(tw); - needRedraw =3D True; + TabsFreeGCs(tw) ; + TabsAllocGCs(tw) ; + needRedraw =3D True ; } = if( tw->core.sensitive !=3D curtw->core.sensitive ) @@ -757,12 +757,12 @@ TabsSetValues(Widget current, Widget UNU = /* ARGSUSED */ static Boolean -TabsConstraintSetValues(Widget current, Widget UNUSED (request), Widget = new, +TabsConstraintSetValues(Widget current, Widget UNUSED (request), Widget = new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - TabsWidget tw =3D (TabsWidget) XtParent(new) ; + TabsWidget tw =3D (TabsWidget) XtParent(new_) ; TabsConstraints ctab =3D (TabsConstraints) current->core.constraints ; - TabsConstraints tab =3D (TabsConstraints) new->core.constraints ; + TabsConstraints tab =3D (TabsConstraints) new_->core.constraints ; = = /* if label changes, need to re-layout the entire widget */ @@ -775,7 +775,7 @@ TabsConstraintSetValues(Widget current, = if( tab->tabs.label !=3D ctab->tabs.label || /* Tab size has changed. = */ tab->tabs.left_bitmap !=3D ctab->tabs.left_bitmap ) { - TabWidth(new) ; + TabWidth(new_) ; tw->tabs.needs_layout =3D True ; = if( tab->tabs.left_bitmap !=3D ctab->tabs.left_bitmap ) @@ -794,7 +794,7 @@ TabsConstraintSetValues(Widget current, = * Tabs widget might. */ = - if( XtIsRealized(new) ) + if( XtIsRealized(new_) ) { if( tw->tabs.needs_layout ) { XClearWindow(XtDisplay((Widget)tw), XtWindow((Widget)tw)) ; @@ -802,7 +802,7 @@ TabsConstraintSetValues(Widget current, = } = else if( tab->tabs.foreground !=3D ctab->tabs.foreground ) - DrawTab(tw, new, True) ; + DrawTab(tw, new_, True) ; } = return False ; = = = 1.269.2.11 +48 -0 XEmacs/xemacs/man/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.269.2.10 retrieving revision 1.269.2.11 diff -u -p -r1.269.2.10 -r1.269.2.11 --- ChangeLog 2005/09/27 16:28:57 1.269.2.10 +++ ChangeLog 2005/11/06 16:14:08 1.269.2.11 @@ -1,3 +1,51 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-20 Malcolm Purvis + + * xemacs-faq.texi (Q1.2.2): + * xemacs-faq.texi (Q2.1.1): + * xemacs-faq.texi (Q2.1.6): + * xemacs-faq.texi (Q2.2.1): + * xemacs-faq.texi (Q2.3.6): + * xemacs-faq.texi (Q2.4.3): + * xemacs-faq.texi (Q2.4.4): + * xemacs-faq.texi (Q2.4.7): + * xemacs-faq.texi (Q5.3.3): + * xemacs-faq.texi (Q6.0.8): + * xemacs-faq.texi (Q7.2.1): + Add 21.5 specific examples of configure options in addition to the + existing 21.4 ones. + +2005-10-15 Malcolm Purvis + + * internals/internals.texi: "API's" -> "APIs". This fixes + problems generating dvi and pdf versions. + * internals/internals.texi (The configure Script): + Describe the use of XE_MERGED_ARG. + +2005-10-13 Ben Wing + + * xemacs-faq.texi (Top): + * xemacs-faq.texi (External Subsystems): + * xemacs-faq.texi (Q5.4.4): + * xemacs-faq.texi (Q5.4.5): + * xemacs-faq.texi (Q5.4.6): + Add question about need to run `rebaseall' under Cygwin. + +2005-10-04 Stephen J. Turnbull + + * emodules.texi (Distribution with XEmacs): New node describing + organization of module-related code in top-level configure.ac and + src/Makefile.in.in. + +2005-09-27 Adrian Aichner + + * lispref/compile.texi (Compilation Options): Lowercase SYMBOL + argument in `byte-compile-print-gensym' documentation, as + suggested by Stephen. + 2005-09-27 Adrian Aichner = * lispref/packaging.texi: Get file to compile with teinfmt.el. = = = 1.6.6.1 +51 -2 XEmacs/xemacs/man/emodules.texi = Index: emodules.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/emodules.texi,v retrieving revision 1.6 retrieving revision 1.6.6.1 diff -u -p -r1.6 -r1.6.6.1 --- emodules.texi 2002/06/24 22:00:17 1.6 +++ emodules.texi 2005/11/06 16:14:08 1.6.6.1 @@ -124,6 +124,7 @@ module support documentation. * Introduction:: Introducing Emacs Modules * Anatomy of a Module:: Basic module layout and technology * Using ellcc:: How to use the module compiler +* Distribution with XEmacs:: Adding your module to the distribution * Defining Functions:: Creating new Lisp primitives * Defining Variables:: Creating new Lisp variables * Index:: Concept Index @@ -497,7 +498,7 @@ shared library containing those symbols, that library. Otherwise, interactions between modules must take place via Lisp function calls and Lisp variables accesses. = -(a)node Using ellcc, Defining Functions, Anatomy of a Module, Top +(a)node Using ellcc, Distribution with XEmacs, Anatomy of a Module, Top @chapter Using @code{ellcc} @cindex @code{ellcc} @cindex module compiler @@ -822,7 +823,55 @@ Sets the name of the @file{make-docfile} Used during the compile phase of @value{emacs} itself. @end table = -(a)node Defining Functions, Defining Variables, Using ellcc, Top +(a)node Distribution with XEmacs, Defining Functions, Using ellcc, Top +(a)chapter Adding Modules to the XEmacs Distribution +(a)cindex XEmacs integration +(a)cindex integration, XEmacs +(a)cindex modules and configure.ac +(a)cindex configure.ac, modules and +(a)cindex modules and Makefiles +(a)cindex Makefiles, modules and + +#### This section needs to be filled out. + +(a)strong{Warning: The procedure described in the section is subject to +change, as it is very stylized and thus a good candidate for further +automation.} + +Modules distributed with XEmacs are placed in the @file{modules} +subdirectory of the root of the source tree. Each module's code is +placed in a separate subdirectory. The build infrastructure for a +module consists of a @file{Makefile.in.in}, a @file{configure.ac}, and +(a)file{install-sh}. @file{install-sh} is a constant, and may simply be +copied from an existing module. + +Most of the job of building a module is encapsulated in +(a)file{modules/common/Makefile.common} and in @file{ellcc}. The module= 's +(a)file{Makefile.in.in} normally needs only to define module name and +version information, and include @file{modules/common/Makefile.common}. +The @file{configure.ac} is very module-specific, and little can be said +about its contents. However, since no logic that depends on XEmacs +itself or other modules needs to be present, it is easier to write and +maintain than if it were contained in the XEmacs distribution's +(a)file{configure.ac}. + +Modules can usually be trivially built in to the XEmacs binary. To make +this work, you need to duplicate the detection logic for any resources +the module requires in the top-level @file{configure.ac}. Since module +objects may be linked into modules or into @file{xemacs}, instead of +adding library path and library information directly to some +(a)file{@var{subsystem}_libs} variable, you should add them to a +(a)file{@var{module}_libs} variable, which in turn must be added to +(a)code{ld_libs_module} in the section ``Compute SUBST-itutable variable= s.'' + +Furthermore, in @file{src/Makefile.in.in} you add rules to build the +object without the module wrapper, and conditionalize these and the +addition of the object to @code{objs} on @code{HAVE_SHLIB}. The right +way to do this is somewhat indirect. Study the integration of LDAP and +PostgreSQL for the details. + + +(a)node Defining Functions, Defining Variables, Distribution with XEmacs= , Top @chapter Defining Functions @cindex defining functions = = = = 1.78.2.3 +5809 -4748XEmacs/xemacs/man/xemacs-faq.texi = Index: xemacs-faq.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/xemacs-faq.texi,v retrieving revision 1.78.2.2 retrieving revision 1.78.2.3 diff -u -p -r1.78.2.2 -r1.78.2.3 --- xemacs-faq.texi 2005/07/13 04:45:12 1.78.2.2 +++ xemacs-faq.texi 2005/11/06 16:14:09 1.78.2.3 @@ -7,7 +7,7 @@ @finalout @titlepage @title XEmacs FAQ -(a)subtitle Frequently asked questions about XEmacs @* Last Modified: $D= ate: 2005/07/13 04:45:12 $ +(a)subtitle Frequently asked questions about XEmacs @* Last Modified: $D= ate: 2005/11/06 16:14:09 $ @sp 1 @author Ben Wing @author Tony Rossini @@ -55,12 +55,7 @@ magic to coerce them into the right form = Then, = -1. Use the Lisp line below to get the spacing correct for the Q#.#.# - menu entries. - -(set (make-local-variable 'texinfo-column-for-description) 14) - -2. C-u C-c C-u m (C-u M-x texinfo-master-menu) will update the menus +6. C-u C-c C-u m (C-u M-x texinfo-master-menu) will update the menus and nodes. However, it appears that even though it tries to preserve the existing menu structure as much as possible, it doesn't do a perfect job. It messes up in at least two ways: The @@ -69,20 +64,26 @@ Then, detailmenu and the individual chapter menus. In addition, sometimes random things get screwed up in individual parts of the menus. Therefore: + + 1. Use the Lisp line below to get the spacing correct for the Q#.#.# + menu entries. + +(set (make-local-variable 'texinfo-column-for-description) 14) = - 1. Copy the whole detailmenu beforehand. - 2. Run C-u C-C C-u m to fix up the nodes. - 3. Run `fix-main-menu' and `fix-omitted-menu-lines'. - 4. Check the new detailmenu carefully to see if anything is screwed up + 2. Copy the whole detailmenu beforehand. + 3. Run C-u C-c C-u m to fix up the nodes. + 4. Run `fix-main-menu' and `fix-omitted-menu-lines'. + 5. Check the new detailmenu carefully to see if anything is screwed up compared to the old detailmenu you copied. - 5. If so, paste back the appropriate sections and fix up the correspo= nding + 6. If so, paste back the appropriate sections and fix up the correspo= nding part of the chapter-specific menu. = (defun fix-main-menu () (interactive) (save-restriction (let (p q) - (search-forward "@menu") + (goto-char (point-min)) + (re-search-forward "^@menu") (setq p (match-beginning 0)) (re-search-forward "^$") (setq q (match-end 0)) @@ -94,22 +95,22 @@ Then, (defun fix-omitted-menu-lines () (interactive) (save-excursion - (loop for x from 1 to 7 do + (loop for x from 1 to 10 do (goto-char (point-min)) (re-search-forward (format "@unnumberedsec \\(%d.0: .*\\)" x)) (let ((line (match-string 1))) - (search-backward "@menu") + (re-search-backward "^@menu") (forward-line 1) - (unless (looking-at "[0-9].0:") + (unless (looking-at "[0-9]+.0:") (insert line) (insert "\n")) (goto-char (point-min)) - (search-forward "@menu") + (re-search-forward "^@menu") (search-forward (format "Q%d.0.1:" x)) (forward-line -1) - (unless (looking-at "[0-9].0:") - (insert line) - (insert "\n")))))) + (unless (looking-at "[0-9]+.0:") + (insert "\n") + (insert line)))))) = ***************************************** ***** Other work ***** @@ -180,10 +181,12 @@ library directory>/info/}. For example i @menu * Introduction:: Introduction, Policy, Credits. * Installation:: Installation and Troubleshooting. -* Display Subsystems:: Basic Display-Related Subsystems. +* Editing:: Editing Functions. +* Display:: Display Functions. * External Subsystems:: Interfacing with the OS and External Devices. * Internet:: Connecting to the Internet. * Advanced:: Advanced Customization Using XEmacs Lisp. +* Other Packages:: Other External Packages. * Current Events:: What the Future Holds. * Legacy Versions:: New information about old XEmacsen. = @@ -192,335 +195,374 @@ library directory>/info/}. For example i = 1 Introduction, Policy, Credits = -1.0: Introduction +1.0: What is XEmacs? * Q1.0.1:: What is XEmacs? * Q1.0.2:: What is the current version of XEmacs? -* Q1.0.3:: Where can I find it? -* Q1.0.4:: Are binaries available? -* Q1.0.5:: How does XEmacs differ from GNU Emacs? -* Q1.0.6:: How much does XEmacs differ? -* Q1.0.7:: Is XEmacs "GNU"? -* Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? -* Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? -* Q1.0.10:: Where can I get help? -* Q1.0.11:: Where are the mailing lists archived? -* Q1.0.12:: How do you pronounce XEmacs? -* Q1.0.13:: What does XEmacs look like? -* Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Man= ual? - -1.1: Versions for Different Operating Systems -* Q1.1.1:: Do I need X11 to run XEmacs? -* Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? -* Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I nee= d to? -* Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmac= s? -* Q1.1.5:: What are the differences between the various MS Windows em= acsen? -* Q1.1.6:: Is there a port of XEmacs to the Macintosh? -* Q1.1.7:: Is there a port of XEmacs to NextStep? -* Q1.1.8:: Is there a port of XEmacs to OS/2? -* Q1.1.9:: How does the port cope with differences in the Windows use= r interface? - -1.2: Policies -* Q1.2.1:: What is the FAQ editorial policy? -* Q1.2.2:: How do I become a beta tester? -* Q1.2.3:: How do I contribute to XEmacs itself? - -1.3: Credits -* Q1.3.1:: Who wrote XEmacs? -* Q1.3.2:: Who contributed to this version of the FAQ? -* Q1.3.3:: Who contributed to the FAQ in the past? - -1.4: Internationalization -* Q1.4.1:: What is the status of internationalization support aka MUL= E (including Asian language support? -* Q1.4.2:: How can I help with internationalization? -* Q1.4.3:: How do I type non-ASCII characters? -* Q1.4.4:: Can XEmacs messages come out in a different language? -* Q1.4.5:: Please explain the various input methods in MULE/XEmacs -* Q1.4.6:: How do I portably code for MULE/XEmacs? -* Q1.4.7:: How about Cyrillic modes? -* Q1.4.8:: Does XEmacs support Unicode? -* Q1.4.9:: How does XEmacs display Unicode? - -1.5: Getting Started -* Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a = sample one? -* Q1.5.2:: Where do I put my @file{init.el} file? -* Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? -* Q1.5.4:: Any good XEmacs tutorials around? -* Q1.5.5:: May I see an example of a useful XEmacs Lisp function? -* Q1.5.6:: And how do I bind it to a key? -* Q1.5.7:: What's the difference between a macro and a function? -* Q1.5.8:: What is @code{Custom}? +* Q1.0.3:: How do you pronounce XEmacs? +* Q1.0.4:: What does XEmacs look like? +* Q1.0.5:: Who wrote XEmacs? +* Q1.0.6:: Who wrote the FAQ? + +1.1: Getting XEmacs +* Q1.1.1:: Where can I find XEmacs? +* Q1.1.2:: Are binaries available? +* Q1.1.3:: How do I get the bleeding-edge sources? +* Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Man= ual? + +1.2: Versions for Different Operating Systems +* Q1.2.1:: Do I need X11 to run XEmacs? +* Q1.2.2:: What versions of Unix does XEmacs run on? +* Q1.2.3:: Is there a port of XEmacs to Microsoft Windows? +* Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I nee= d to? +* Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmac= s? +* Q1.2.6:: What are the differences between the various MS Windows em= acsen? +* Q1.2.7:: How does the port cope with differences in the Windows use= r interface? +* Q1.2.8:: Is there a port of XEmacs to the Macintosh? +* Q1.2.9:: Is there a port of XEmacs to MS-DOS? +* Q1.2.10:: Is there a port of XEmacs to OS/2? +* Q1.2.11:: Is there a port of XEmacs to NextStep? +* Q1.2.12:: Is there a port of XEmacs to VMS? + +1.3: Getting Started +* Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a = sample one? +* Q1.3.2:: Where do I put my @file{init.el} file? +* Q1.3.3:: Can I use the same @file{init.el} with the other Emacs? +* Q1.3.4:: Any good XEmacs tutorials around? +* Q1.3.5:: May I see an example of a useful XEmacs Lisp function? +* Q1.3.6:: And how do I bind it to a key? +* Q1.3.7:: What's the difference between a macro and a function? +* Q1.3.8:: What is @code{Custom}? + +1.4: Getting Help +* Q1.4.1:: Where can I get help? +* Q1.4.2:: Which mailing lists are there? +* Q1.4.3:: Where are the mailing lists archived? +* Q1.4.4:: How can I get two instances of info? +* Q1.4.5:: How do I add new Info directories? + +1.5: Contributing to XEmacs +* Q1.5.1:: How do I submit changes to the FAQ? +* Q1.5.2:: How do I become a beta tester? +* Q1.5.3:: How do I contribute to XEmacs itself? +* Q1.5.4:: How do I get started developing XEmacs? +* Q1.5.5:: What's the basic layout of the code? + +1.6: Politics (XEmacs vs. GNU Emacs) +* Q1.6.1:: What is GNU Emacs? +* Q1.6.2:: How does XEmacs differ from GNU Emacs? +* Q1.6.3:: How much does XEmacs differ? +* Q1.6.4:: Is XEmacs "GNU"? +* Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs? +* Q1.6.6:: Why haven't XEmacs and GNU Emacs merged? + +1.7: External Packages +* Q1.7.1:: What is the package system? +* Q1.7.2:: Which external packages are there? +* Q1.7.3:: Do I need to have the packages to run XEmacs? = +* Q1.7.4:: Is there a way to find which package has particular functi= onality? + +1.8: Internationalization +* Q1.8.1:: What is the status of internationalization support aka MUL= E (including Asian language support)? +* Q1.8.2:: How can I help with internationalization? +* Q1.8.3:: How do I type non-ASCII characters? +* Q1.8.4:: Can XEmacs messages come out in a different language? +* Q1.8.5:: Please explain the various input methods in MULE/XEmacs +* Q1.8.6:: How do I portably code for MULE/XEmacs? +* Q1.8.7:: How about Cyrillic modes? +* Q1.8.8:: Does XEmacs support Unicode? +* Q1.8.9:: How does XEmacs display Unicode? = 2 Installation and Troubleshooting = -2.0: Installation (General), Packages -* Q2.0.1:: How do I install the packages? -* Q2.0.2:: I don't need no steenkin' packages. Do I? -* Q2.0.3:: Where do I find external libraries? -* Q2.0.4:: How do I specify the paths that XEmacs uses for finding fi= les? -* Q2.0.5:: Running XEmacs without installing -* Q2.0.6:: XEmacs is too big -* Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW) - -2.1: Unix/Mac OS Installation (Also Relevant to Cygwin, MinGW) -* Q2.1.1:: Libraries in non-standard locations -* Q2.1.2:: Why can't I strip XEmacs? -* Q2.1.3:: Compiling XEmacs with Netaudio. -* Q2.1.4:: Problems with Linux and ncurses. - -2.2: Windows Installation (Windows, Cygwin, MinGW) -* Q2.2.1:: What exactly are all the different ways to build XEmacs un= der Windows? -* Q2.2.2:: What compiler/libraries do I need to compile XEmacs? -* Q2.2.3:: How do I compile the native port? -* Q2.2.4:: What do I need for Cygwin? -* Q2.2.5:: How do I compile under Cygwin? -* Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin fl= ag to gcc})? -* Q2.2.7:: How do I compile with X support? -* Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found= (NEW) - -2.3: General Troubleshooting -* Q2.3.1:: Help! XEmacs just crashed on me! -* Q2.3.2:: XEmacs crashes and I compiled it myself. -* Q2.3.3:: How to debug an XEmacs problem with a debugger -* Q2.3.4:: I get a cryptic error message when trying to do something. -* Q2.3.5:: XEmacs hangs when I try to do something. -* Q2.3.6:: I get an error message when XEmacs is running in batch mod= e. -* Q2.3.7:: The keyboard or mouse is not working properly, or I have s= ome other event-related problem. -* Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken? -* Q2.3.9:: How do I debug process-related problems? -* Q2.3.10:: XEmacs is outputting lots of X errors. -* Q2.3.11:: After upgrading, XEmacs won't do `foo' any more! - -2.4: Startup-Related Problems -* Q2.4.1:: XEmacs cannot connect to my X Terminal! -* Q2.4.2:: XEmacs won't start on Windows. -* Q2.4.3:: XEmacs won't start without network. -* Q2.4.4:: Startup warnings about deducing proper fonts? -* Q2.4.5:: Warnings from incorrect key modifiers. -* Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console windo= w on every startup. Has that been fixed? +2.0: Installation (General) +* Q2.0.1:: How do I build and install XEmacs? +* Q2.0.2:: Where do I find external libraries? +* Q2.0.3:: How do I specify the paths that XEmacs uses for finding fi= les? +* Q2.0.4:: Running XEmacs without installing +* Q2.0.5:: XEmacs is too big + +2.1: Package Installation +* Q2.1.1:: How do I install the packages? +* Q2.1.2:: Can I install the packages individually? +* Q2.1.3:: Can I install the packages automatically? +* Q2.1.4:: Can I upgrade or remove packages? +* Q2.1.5:: Which packages to install? +* Q2.1.6:: Can you describe the package location process in more deta= il? +* Q2.1.7:: EFS fails with "500 AUTH not understood" + +2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW) +* Q2.2.1:: Libraries in non-standard locations +* Q2.2.2:: Why can't I strip XEmacs? + +2.3: Windows Installation (Windows, Cygwin, MinGW) +* Q2.3.1:: What exactly are all the different ways to build XEmacs un= der Windows? +* Q2.3.2:: What compiler/libraries do I need to compile XEmacs? +* Q2.3.3:: How do I compile the native port? +* Q2.3.4:: What do I need for Cygwin? +* Q2.3.5:: How do I compile under Cygwin? +* Q2.3.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin fl= ag to gcc})? +* Q2.3.7:: How do I compile with X support? +* Q2.3.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found= (NEW) + +2.4: General Troubleshooting +* Q2.4.1:: How do I deal with bugs or with problems building, install= ing, or running? +* Q2.4.2:: Help! XEmacs just crashed on me! +* Q2.4.3:: XEmacs crashes and I compiled it myself. +* Q2.4.4:: How to debug an XEmacs problem with a debugger +* Q2.4.5:: I get a cryptic error message when trying to do something. +* Q2.4.6:: XEmacs hangs when I try to do something. +* Q2.4.7:: I get an error message when XEmacs is running in batch mod= e. +* Q2.4.8:: The keyboard or mouse is not working properly, or I have s= ome other event-related problem. +* Q2.4.9:: @kbd{C-g} doesn't work for me. Is it broken? +* Q2.4.10:: How do I debug process-related problems? +* Q2.4.11:: XEmacs is outputting lots of X errors. +* Q2.4.12:: After upgrading, XEmacs won't do `foo' any more! + +2.5: Startup-Related Problems +* Q2.5.1:: XEmacs cannot connect to my X Terminal! +* Q2.5.2:: Startup problems related to paths or package locations. +* Q2.5.3:: XEmacs won't start without network. +* Q2.5.4:: Startup warnings about deducing proper fonts? +* Q2.5.5:: Warnings from incorrect key modifiers. +* Q2.5.6:: XEmacs 21.1 on Windows used to spawn an ugly console windo= w on every startup. Has that been fixed? = -3 Basic Display-Related Subsystems +3 Editing Functions = 3.0: The Keyboard -* Q3.0.1:: How can I bind complex functions (or macros) to keys? -* Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down? -* Q3.0.3:: Globally binding @kbd{Delete}? -* Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard? -* Q3.0.5:: How can you type in special characters in XEmacs? -* Q3.0.6:: Can I turn on @dfn{sticky} modifier keys? -* Q3.0.7:: How do I map the arrow keys? -* Q3.0.8:: HP Alt key as Meta. -* Q3.0.9:: Why does edt emulation not work? -* Q3.0.10:: How can I emulate VI and use it as my default mode? +* Q3.0.1:: How can I customize the keyboard? +* Q3.0.2:: How can I bind complex functions (or macros) to keys? +* Q3.0.3:: How do I bind C-. and C-; to scroll one line up and down? +* Q3.0.4:: Globally binding @kbd{Delete}? +* Q3.0.5:: How to map @kbd{Help} key alone on Sun type4 keyboard? +* Q3.0.6:: How can you type in special characters in XEmacs? +* Q3.0.7:: Can I turn on @dfn{sticky} modifier keys? +* Q3.0.8:: How do I map the arrow keys? +* Q3.0.9:: HP Alt key as Meta. +* Q3.0.10:: Why does edt emulation not work? +* Q3.0.11:: How can I emulate VI and use it as my default mode? = 3.1: The Mouse * Q3.1.1:: How can I turn off Mouse pasting? * Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons? * Q3.1.3:: Clicking the left button does not do anything in buffer li= st. * Q3.1.4:: How can I get a list of buffers when I hit mouse button 3? -* Q3.1.5:: How I can set XEmacs up so that it pastes where the text c= ursor is? - -3.2: Textual Fonts and Colors -* Q3.2.1:: How do I specify a font? -* Q3.2.2:: How do I set the text, menu and modeline fonts? -* Q3.2.3:: How can I set color options from @file{init.el}? -* Q3.2.4:: How can I set the colors when highlighting a region? -* Q3.2.5:: How can I limit color map usage? -* Q3.2.6:: My tty supports color, but XEmacs doesn't use them. -* Q3.2.7:: Can I have pixmap backgrounds in XEmacs? -* Q3.2.8:: How do I display non-ASCII characters? -* Q3.2.9:: Font selections in don't get saved after @code{Save Option= s}. - -3.3: The Menubar and Toolbar -* Q3.3.1:: How do I get rid of the menu (or menubar)? -* Q3.3.2:: Can I customize the basic menubar? -* Q3.3.3:: How do I control how many buffers are listed in the menu @= code{Buffers List}? -* Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working? -* Q3.3.5:: How can I bind a key to a function to toggle the toolbar? -* Q3.3.6:: @samp{Can't instantiate image error...} in toolbar - -3.4: Scrollbars and Scrolling -* Q3.4.1:: How can I disable the scrollbar? -* Q3.4.2:: How can one use resources to change scrollbar colors? -* Q3.4.3:: Moving the scrollbar can move the point; can I disable thi= s? -* Q3.4.4:: Scrolling one line at a time. -* Q3.4.5:: How can I turn off automatic horizontal scrolling in speci= fic modes? -* Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off? - -3.5: The Modeline -* Q3.5.1:: How can I make the modeline go away? -* Q3.5.2:: How do you have XEmacs display the line number in the mode= line? -* Q3.5.3:: How do I get XEmacs to put the time of day on the modeline? -* Q3.5.4:: How can one change the modeline color based on the mode us= ed? - -3.6: The Cursor -* Q3.6.1:: Is there a way to make the bar cursor thicker? -* Q3.6.2:: Is there a way to get back the block cursor? -* Q3.6.3:: Can I make the cursor blink? - -3.7: Text Selections -* Q3.7.1:: How do I select a rectangular region? -* Q3.7.2:: How can I turn off or change highlighted selections? -* Q3.7.3:: How do I get that typing on an active region removes it? -* Q3.7.4:: Can I turn off the highlight during isearch? -* Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-p= age)? -* Q3.7.6:: The region disappears when I hit the end of buffer while s= crolling. -* Q3.7.7:: Why is killing so slow? -* Q3.7.8:: Why does @kbd{M-w} take so long? - -3.8: Buffers, Text Editing -* Q3.8.1:: Can I have the end of the buffer delimited in some way? -* Q3.8.2:: How do I insert today's date into a buffer? -* Q3.8.3:: How do I get a single minibuffer frame? -* Q3.8.4:: How can I enable auto-indent and/or Filladapt? -* Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by = default? - -3.9: Editing Source Code -* Q3.9.1:: How can I do source code highlighting using font-lock? -* Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default? -* Q3.9.3:: Where do I get the latest CC Mode? -* Q3.9.4:: I do not like cc-mode. How do I use the old c-mode? -* Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly? - -4 Interfacing with the Operating System and External Devices - -4.0: X Window System and Resources -* Q4.0.1:: Where is a list of X resources? -* Q4.0.2:: How can I detect a color display? -* Q4.0.3:: How can I get the icon to just say @samp{XEmacs}? -* Q4.0.4:: How can I have the window title area display the full path? -* Q4.0.5:: @samp{xemacs -name junk} doesn't work? -* Q4.0.6:: @samp{-iconic} doesn't work. - -4.1: Microsoft Windows -* Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp= {w32-*}? -* Q4.1.2:: How do I get Windows Explorer to associate a file type wit= h XEmacs? - -4.2: Printing -* Q4.2.1:: What do I need to change to make printing work? -* Q4.2.2:: How can I print WYSIWYG a font-locked buffer? -* Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. -* Q4.2.4:: Can you print under MS Windows? - -4.3: Sound -* Q4.3.1:: How do I turn off the sound? -* Q4.3.2:: How do I get funky sounds instead of a boring beep? -* Q4.3.3:: What's NAS, how do I get it? -* Q4.3.4:: Sunsite sounds don't play. - -4.4: Running an Interior Shell, Invoking Subprocesses -* Q4.4.1:: What is an interior shell? -* Q4.4.2:: How do I start up a second shell buffer? -* Q4.4.3:: Telnet from shell filters too much -* Q4.4.4:: Strange things are happening in Shell Mode. -* Q4.4.5:: XEmacs complains "No such file or directory, diff" - -4.5: Multiple Device Support -* Q4.5.1:: How do I open a frame on another screen of my multi-headed= display? -* Q4.5.2:: Can I really connect to a running XEmacs after calling up = over a modem? How? -* Q4.5.3:: How do I disable gnuserv from opening a new frame? -* Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a= client? -* Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv= running, and otherwise use gnuclient? - -4.6: TeX -* Q4.6.1:: Is there something better than LaTeX mode? -* Q4.6.2:: What is AUCTeX? Where do you get it? -* Q4.6.3:: Problems installing AUCTeX. -* Q4.6.4:: How do I turn off current chapter from AUCTeX modeline? - -4.7: Other Unbundled Packages -* Q4.7.1:: Is there a reason for an Emacs package not to be included = in XEmacs? -* Q4.7.2:: Are there any Emacs Lisp Spreadsheets? -* Q4.7.3:: Is there a MatLab mode? - -4.8: Environments Built Around XEmacs -* Q4.8.1:: What are SPARCworks, EOS, and WorkShop? -* Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21? -* Q4.8.3:: What is/was Energize? -* Q4.8.4:: What is Infodock? - -5 Connecting to the Internet - -5.0: General Mail and News -* Q5.0.1:: What are the various packages for reading mail? -* Q5.0.2:: How can I send mail? -* Q5.0.3:: How do I get my outgoing mail archived? -* Q5.0.4:: How can I read and/or compose MIME messages? -* Q5.0.5:: How do I customize the From line? -* Q5.0.6:: How do I get my MUA to filter mail for me? -* Q5.0.7:: Remote mail reading with an MUA. -* Q5.0.8:: An MUA gets an error incorporating new mail. -* Q5.0.9:: Why isn't @file{movemail} working? -* Q5.0.10:: How do I make my MUA display graphical smilies? -* Q5.0.11:: How can I get those oh-so-neat X-Face lines? - -5.1: Reading Mail with VM -* Q5.1.1:: How do I set up VM to retrieve mail from a remote site usi= ng POP? -* Q5.1.2:: How can I get VM to automatically check for new mail? -* Q5.1.3:: I have various addresses at which I receive mail. How can= I tell VM to ignore them when doing a "reply-all"? -* Q5.1.4:: Is there a mailing list or FAQ for VM? -* Q5.1.5:: How do I make VM stay in a single frame? -* Q5.1.6:: Customization of VM not covered in the manual, or here. - -5.2: Reading Netnews and Mail with Gnus -* Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quass= ia Gnus, argh! -* Q5.2.2:: How do I make Gnus stay within a single frame? - -5.3: FTP Access -* Q5.3.1:: Can I edit files on other hosts? -* Q5.3.2:: What is EFS? - -5.4: Web Browsing with W3 -* Q5.4.1:: What is W3? -* Q5.4.2:: How do I run W3 from behind a firewall? -* Q5.4.3:: Is it true that W3 supports style sheets and tables? - -6 Advanced Customization Using XEmacs Lisp - -6.0: Online Help -* Q6.0.1:: How can I get two instances of info? -* Q6.0.2:: How do I add new Info directories? - -6.1: Emacs Lisp and @file{init.el} -* Q6.1.1:: What version of Emacs am I running? -* Q6.1.2:: How can I evaluate Emacs-Lisp expressions? -* Q6.1.3:: @code{(setq tab-width 6)} behaves oddly. -* Q6.1.4:: How can I add directories to the @code{load-path}? -* Q6.1.5:: How to check if a lisp function is defined? -* Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer? - -6.2: Emacs Lisp Programming Techniques -* Q6.2.1:: What is the difference in key sequences between XEmacs and= GNU Emacs? -* Q6.2.2:: Can I generate "fake" keyboard events? -* Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail? -* Q6.2.4:: What is the performance hit of @code{let}? -* Q6.2.5:: What is the recommended use of @code{setq}? -* Q6.2.6:: What is the typical misuse of @code{setq}? -* Q6.2.7:: I like the @code{do} form of cl, does it slow things down? -* Q6.2.8:: I like recursion, does it slow things down? -* Q6.2.9:: How do I put a glyph as annotation in a buffer? -* Q6.2.10:: @code{map-extents} won't traverse all of my extents! -* Q6.2.11:: My elisp program is horribly slow. Is there - -6.3: Mathematics -* Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp? -* Q6.3.2:: XEmacs segfaults when I use very big numbers! -* Q6.3.3:: Bignums are really slow! -* Q6.3.4:: Equal bignums don't compare as equal! What gives? - -7 What the Future Holds - -7.0: Changes -* Q7.0.1:: What new features will be in XEmacs soon? -* Q7.0.2:: What's new in XEmacs 21.4? -* Q7.0.3:: What's new in XEmacs 21.1? -* Q7.0.4:: What's new in XEmacs 20.4? -* Q7.0.5:: What's new in XEmacs 20.3? -* Q7.0.6:: What's new in XEmacs 20.2? - -8 New information about old XEmacsen +* Q3.1.5:: How can I set XEmacs up so that it pastes where the text c= ursor is? = -8.0: XEmacs 21.1 -* Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. +3.2: Buffers, Text Editing +* Q3.2.1:: Can I have the end of the buffer delimited in some way? +* Q3.2.2:: How do I insert today's date into a buffer? +* Q3.2.3:: How do I get a single minibuffer frame? +* Q3.2.4:: How can I enable auto-indent and/or Filladapt? +* Q3.2.5:: How can I get XEmacs to come up in text/auto-fill mode by = default? + +3.3: Text Selections +* Q3.3.1:: How do I select a rectangular region? +* Q3.3.2:: How can I turn off or change highlighted selections? +* Q3.3.3:: How do I cause typing on an active region to remove it? +* Q3.3.4:: Can I turn off the highlight during isearch? +* Q3.3.5:: Why is killing so slow? +* Q3.3.6:: Why does @kbd{M-w} take so long? + +3.4: Editing Source Code +* Q3.4.1:: I do not like cc-mode. How do I use the old c-mode? +* Q3.4.2:: How do you make XEmacs indent CL if-clauses correctly? + +4 Display Functions + +4.0: Textual Fonts and Colors +* Q4.0.1:: How do I specify a font? +* Q4.0.2:: How do I set the text, menu and modeline fonts? +* Q4.0.3:: How can I set color options from @file{init.el}? +* Q4.0.4:: How can I set the colors when highlighting a region? +* Q4.0.5:: How can I limit color map usage? +* Q4.0.6:: My tty supports color, but XEmacs doesn't use them. +* Q4.0.7:: Can I have pixmap backgrounds in XEmacs? +* Q4.0.8:: How do I display non-ASCII characters? +* Q4.0.9:: Font selections in don't get saved after @code{Save Option= s}. + +4.1: Syntax Highlighting (Font Lock) +* Q4.1.1:: How can I do source code highlighting using font-lock? +* Q4.1.2:: How do I get @samp{More} Syntax Highlighting on by default? + +4.2: The Modeline +* Q4.2.1:: How can I make the modeline go away? +* Q4.2.2:: How do you have XEmacs display the line number in the mode= line? +* Q4.2.3:: How do I get XEmacs to put the time of day on the modeline? +* Q4.2.4:: How can I change the modeline color based on the mode used? + +4.3: The Cursor +* Q4.3.1:: Is there a way to make the bar cursor thicker? +* Q4.3.2:: Is there a way to get back the block cursor? +* Q4.3.3:: Can I make the cursor blink? + +4.4: The Menubar +* Q4.4.1:: How do I get rid of the menubar? +* Q4.4.2:: How can I customize the menubar? +* Q4.4.3:: How do I enable use of the keyboard (@kbd{Alt}) to access = menu items? +* Q4.4.4:: How do I control how many buffers are listed in the menu @= code{Buffers List}? +* Q4.4.5:: Resources like @code{Emacs*menubar*font} are not working? + +4.5: The Toolbar +* Q4.5.1:: How do I get rid of the toolbar? +* Q4.5.2:: How can I customize the toolbar? +* Q4.5.3:: How can I bind a key to a function to toggle the toolbar? +* Q4.5.4:: @samp{Can't instantiate image error...} in toolbar + +4.6: Scrollbars and Scrolling +* Q4.6.1:: How can I disable the scrollbar? +* Q4.6.2:: How can I change the scrollbar width? +* Q4.6.3:: How can I use resources to change scrollbar colors? +* Q4.6.4:: Moving the scrollbar can move the point; can I disable thi= s? +* Q4.6.5:: Scrolling one line at a time. +* Q4.6.6:: How can I turn off automatic horizontal scrolling in speci= fic modes? +* Q4.6.7:: I find auto-show-mode disconcerting. How do I turn it off? + +4.7: The Gutter Tabs, The Progress Bar, Widgets +* Q4.7.1:: How can I disable the gutter tabs? +* Q4.7.2:: How can I disable the progress bar? +* Q4.7.3:: There are bugs in the gutter or widgets. +* Q4.7.4:: How can I customize the gutter or gutter tabs? + +5 Interfacing with the Operating System and External Devices + +5.0: X Window System and Resources +* Q5.0.1:: Where is a list of X resources? +* Q5.0.2:: How can I detect a color display? +* Q5.0.3:: How can I get the icon to just say @samp{XEmacs}? +* Q5.0.4:: How can I have the window title area display the full path? +* Q5.0.5:: @samp{xemacs -name junk} doesn't work? +* Q5.0.6:: @samp{-iconic} doesn't work. + +5.1: Microsoft Windows +* Q5.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp= {w32-*}? +* Q5.1.2:: How do I get Windows Explorer to associate a file type wit= h XEmacs? + +5.2: Printing +* Q5.2.1:: What do I need to change to make printing work? +* Q5.2.2:: How can I print WYSIWYG a font-locked buffer? +* Q5.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. +* Q5.2.4:: Can you print under MS Windows? + +5.3: Sound +* Q5.3.1:: How do I turn off the sound? +* Q5.3.2:: How do I get funky sounds instead of a boring beep? +* Q5.3.3:: What are NAS and ESD (EsounD)? +* Q5.3.4:: Sunsite sounds don't play. + +5.4: Running an Interior Shell, Invoking Subprocesses +* Q5.4.1:: What is an interior shell? +* Q5.4.2:: How do I start up a second shell buffer? +* Q5.4.3:: Telnet from shell filters too much +* Q5.4.4:: Strange things are happening in Shell Mode. +* Q5.4.5:: XEmacs complains "No such file or directory, diff" +* Q5.4.6:: Cygwin error "fork_copy: linked dll/bss pass 0 failed" + +5.5: Multiple Device Support +* Q5.5.1:: How do I open a frame on another screen of my multi-headed= display? +* Q5.5.2:: Can I really connect to a running XEmacs after calling up = over a modem? How? +* Q5.5.3:: How do I disable gnuserv from opening a new frame? +* Q5.5.4:: How do I start gnuserv so that each subsequent XEmacs is a= client? +* Q5.5.5:: Is there a way to start a new XEmacs if there's no gnuserv= running, and otherwise use gnuclient? + +6 Connecting to the Internet + +6.0: General Mail and News +* Q6.0.1:: What are the various packages for reading mail? +* Q6.0.2:: How can I send mail? +* Q6.0.3:: How do I get my outgoing mail archived? +* Q6.0.4:: How can I read and/or compose MIME messages? +* Q6.0.5:: How do I customize the From line? +* Q6.0.6:: How do I get my MUA to filter mail for me? +* Q6.0.7:: Remote mail reading with an MUA. +* Q6.0.8:: An MUA gets an error incorporating new mail. +* Q6.0.9:: Why isn't @file{movemail} working? +* Q6.0.10:: How do I make my MUA display graphical smilies? +* Q6.0.11:: How can I get those oh-so-neat X-Face lines? + +6.1: Reading Mail with VM +* Q6.1.1:: How do I set up VM to retrieve mail from a remote site usi= ng POP? +* Q6.1.2:: How can I get VM to automatically check for new mail? +* Q6.1.3:: I have various addresses at which I receive mail. How can= I tell VM to ignore them when doing a "reply-all"? +* Q6.1.4:: Is there a mailing list or FAQ for VM? +* Q6.1.5:: How do I make VM stay in a single frame? +* Q6.1.6:: Customization of VM not covered in the manual, or here. + +6.2: Reading Netnews and Mail with Gnus +* Q6.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quass= ia Gnus, argh! +* Q6.2.2:: How do I make Gnus stay within a single frame? + +6.3: FTP Access +* Q6.3.1:: Can I edit files on other hosts? +* Q6.3.2:: What is EFS? + +6.4: Web Browsing with W3 +* Q6.4.1:: What is W3? +* Q6.4.2:: How do I run W3 from behind a firewall? +* Q6.4.3:: Is it true that W3 supports style sheets and tables? + +7 Advanced Customization Using XEmacs Lisp + +7.0: Emacs Lisp and @file{init.el} +* Q7.0.1:: What version of Emacs am I running? +* Q7.0.2:: How can I evaluate Emacs-Lisp expressions? +* Q7.0.3:: @code{(setq tab-width 6)} behaves oddly. +* Q7.0.4:: How can I add directories to the @code{load-path}? +* Q7.0.5:: How to check if a lisp function is defined? +* Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer? + +7.1: Emacs Lisp Programming Techniques +* Q7.1.1:: What is the difference in key sequences between XEmacs and= GNU Emacs? +* Q7.1.2:: Can I generate "fake" keyboard events? +* Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail? +* Q7.1.4:: What is the performance hit of @code{let}? +* Q7.1.5:: What is the recommended use of @code{setq}? +* Q7.1.6:: What is the typical misuse of @code{setq}? +* Q7.1.7:: I like the @code{do} form of cl, does it slow things down? +* Q7.1.8:: I like recursion, does it slow things down? +* Q7.1.9:: How do I put a glyph as annotation in a buffer? +* Q7.1.10:: @code{map-extents} won't traverse all of my extents! +* Q7.1.11:: My elisp program is horribly slow. Is there an easy way t= o find out where it spends time? + +7.2: Mathematics +* Q7.2.1:: What are bignums, ratios, and bigfloats in Lisp? +* Q7.2.2:: XEmacs segfaults when I use very big numbers! +* Q7.2.3:: Bignums are really slow! +* Q7.2.4:: Equal bignums don't compare as equal! What gives? + +8 Other External Packages + +8.0: TeX +* Q8.0.1:: Is there something better than LaTeX mode? +* Q8.0.2:: What is AUCTeX? Where do you get it? +* Q8.0.3:: Problems installing AUCTeX. +* Q8.0.4:: How do I turn off current chapter from AUCTeX modeline? + +8.1: Other Unbundled Packages +* Q8.1.1:: Is there a reason for an Emacs package not to be included = in XEmacs? +* Q8.1.2:: Are there any Emacs Lisp Spreadsheets? +* Q8.1.3:: Is there a MatLab mode? + +8.2: Environments Built Around XEmacs +* Q8.2.1:: What are SPARCworks, EOS, and WorkShop? +* Q8.2.2:: How do I start the Sun Workshop support in XEmacs 21? +* Q8.2.3:: What is/was Energize? +* Q8.2.4:: What is Infodock? + +9 What the Future Holds + +9.0: Changes +* Q9.0.1:: What new features will be in XEmacs soon? +* Q9.0.2:: What's new in XEmacs 21.4? +* Q9.0.3:: What's new in XEmacs 21.1? +* Q9.0.4:: What's new in XEmacs 20.4? +* Q9.0.5:: What's new in XEmacs 20.3? +* Q9.0.6:: What's new in XEmacs 20.2? + +10 New information about old XEmacsen + +10.0: XEmacs 21.1 +* Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. +* Q10.0.2:: XEmacs won't start on Windows in XEmacs 21.1. = @end detailmenu @end menu @@ -558,66 +600,85 @@ this FAQ please send email to @email{xem Include @samp{XEmacs FAQ} on the Subject: line. = @menu -1.0: Introduction +1.0: What is XEmacs? * Q1.0.1:: What is XEmacs? * Q1.0.2:: What is the current version of XEmacs? -* Q1.0.3:: Where can I find it? -* Q1.0.4:: Are binaries available? -* Q1.0.5:: How does XEmacs differ from GNU Emacs? -* Q1.0.6:: How much does XEmacs differ? -* Q1.0.7:: Is XEmacs "GNU"? -* Q1.0.8:: What is the correct way to refer to XEmacs and GNU Emacs? -* Q1.0.9:: Why haven't XEmacs and GNU Emacs merged? -* Q1.0.10:: Where can I get help? -* Q1.0.11:: Where are the mailing lists archived? -* Q1.0.12:: How do you pronounce XEmacs? -* Q1.0.13:: What does XEmacs look like? -* Q1.0.14:: Where can I obtain a printed copy of the XEmacs User's Man= ual? - -1.1: Versions for Different Operating Systems -* Q1.1.1:: Do I need X11 to run XEmacs? -* Q1.1.2:: Is there a port of XEmacs to Microsoft Windows? -* Q1.1.3:: Can I build XEmacs on MS Windows with X support? Do I nee= d to? -* Q1.1.4:: What are Cygwin and MinGW, and do I need them to run XEmac= s? -* Q1.1.5:: What are the differences between the various MS Windows em= acsen? -* Q1.1.6:: Is there a port of XEmacs to the Macintosh? -* Q1.1.7:: Is there a port of XEmacs to NextStep? -* Q1.1.8:: Is there a port of XEmacs to OS/2? -* Q1.1.9:: How does the port cope with differences in the Windows use= r interface? - -1.2: Policies -* Q1.2.1:: What is the FAQ editorial policy? -* Q1.2.2:: How do I become a beta tester? -* Q1.2.3:: How do I contribute to XEmacs itself? - -1.3: Credits -* Q1.3.1:: Who wrote XEmacs? -* Q1.3.2:: Who contributed to this version of the FAQ? -* Q1.3.3:: Who contributed to the FAQ in the past? - -1.4: Internationalization -* Q1.4.1:: What is the status of internationalization support aka MUL= E (including Asian language support? -* Q1.4.2:: How can I help with internationalization? -* Q1.4.3:: How do I type non-ASCII characters? -* Q1.4.4:: Can XEmacs messages come out in a different language? -* Q1.4.5:: Please explain the various input methods in MULE/XEmacs -* Q1.4.6:: How do I portably code for MULE/XEmacs? -* Q1.4.7:: How about Cyrillic modes? -* Q1.4.8:: Does XEmacs support Unicode? -* Q1.4.9:: How does XEmacs display Unicode? - -1.5: Getting Started -* Q1.5.1:: What is an @file{init.el} or @file{.emacs} and is there a = sample one? -* Q1.5.2:: Where do I put my @file{init.el} file? -* Q1.5.3:: Can I use the same @file{init.el} with the other Emacs? -* Q1.5.4:: Any good XEmacs tutorials around? -* Q1.5.5:: May I see an example of a useful XEmacs Lisp function? -* Q1.5.6:: And how do I bind it to a key? -* Q1.5.7:: What's the difference between a macro and a function? -* Q1.5.8:: What is @code{Custom}? +* Q1.0.3:: How do you pronounce XEmacs? +* Q1.0.4:: What does XEmacs look like? +* Q1.0.5:: Who wrote XEmacs? +* Q1.0.6:: Who wrote the FAQ? + +1.1: Getting XEmacs +* Q1.1.1:: Where can I find XEmacs? +* Q1.1.2:: Are binaries available? +* Q1.1.3:: How do I get the bleeding-edge sources? +* Q1.1.4:: Where can I obtain a printed copy of the XEmacs User's Man= ual? + +1.2: Versions for Different Operating Systems +* Q1.2.1:: Do I need X11 to run XEmacs? +* Q1.2.2:: What versions of Unix does XEmacs run on? +* Q1.2.3:: Is there a port of XEmacs to Microsoft Windows? +* Q1.2.4:: Can I build XEmacs on MS Windows with X support? Do I nee= d to? +* Q1.2.5:: What are Cygwin and MinGW, and do I need them to run XEmac= s? +* Q1.2.6:: What are the differences between the various MS Windows em= acsen? +* Q1.2.7:: How does the port cope with differences in the Windows use= r interface? +* Q1.2.8:: Is there a port of XEmacs to the Macintosh? +* Q1.2.9:: Is there a port of XEmacs to MS-DOS? +* Q1.2.10:: Is there a port of XEmacs to OS/2? +* Q1.2.11:: Is there a port of XEmacs to NextStep? +* Q1.2.12:: Is there a port of XEmacs to VMS? + +1.3: Getting Started +* Q1.3.1:: What is an @file{init.el} or @file{.emacs} and is there a = sample one? +* Q1.3.2:: Where do I put my @file{init.el} file? +* Q1.3.3:: Can I use the same @file{init.el} with the other Emacs? +* Q1.3.4:: Any good XEmacs tutorials around? +* Q1.3.5:: May I see an example of a useful XEmacs Lisp function? +* Q1.3.6:: And how do I bind it to a key? +* Q1.3.7:: What's the difference between a macro and a function? +* Q1.3.8:: What is @code{Custom}? + +1.4: Getting Help +* Q1.4.1:: Where can I get help? +* Q1.4.2:: Which mailing lists are there? +* Q1.4.3:: Where are the mailing lists archived? +* Q1.4.4:: How can I get two instances of info? +* Q1.4.5:: How do I add new Info directories? + +1.5: Contributing to XEmacs +* Q1.5.1:: How do I submit changes to the FAQ? +* Q1.5.2:: How do I become a beta tester? +* Q1.5.3:: How do I contribute to XEmacs itself? +* Q1.5.4:: How do I get started developing XEmacs? +* Q1.5.5:: What's the basic layout of the code? + +1.6: Politics (XEmacs vs. GNU Emacs) +* Q1.6.1:: What is GNU Emacs? +* Q1.6.2:: How does XEmacs differ from GNU Emacs? +* Q1.6.3:: How much does XEmacs differ? +* Q1.6.4:: Is XEmacs "GNU"? +* Q1.6.5:: What is the correct way to refer to XEmacs and GNU Emacs? +* Q1.6.6:: Why haven't XEmacs and GNU Emacs merged? + +1.7: External Packages +* Q1.7.1:: What is the package system? +* Q1.7.2:: Which external packages are there? +* Q1.7.3:: Do I need to have the packages to run XEmacs? = +* Q1.7.4:: Is there a way to find which package has particular functi= onality? + +1.8: Internationalization +* Q1.8.1:: What is the status of internationalization support aka MUL= E (including Asian language support)? +* Q1.8.2:: How can I help with internationalization? +* Q1.8.3:: How do I type non-ASCII characters? +* Q1.8.4:: Can XEmacs messages come out in a different language? +* Q1.8.5:: Please explain the various input methods in MULE/XEmacs +* Q1.8.6:: How do I portably code for MULE/XEmacs? +* Q1.8.7:: How about Cyrillic modes? +* Q1.8.8:: Does XEmacs support Unicode? +* Q1.8.9:: How does XEmacs display Unicode? @end menu = -(a)unnumberedsec 1.0: Introduction +(a)unnumberedsec 1.0: What is XEmacs? = @node Q1.0.1, Q1.0.2, Introduction, Introduction @unnumberedsubsec Q1.0.1: What is XEmacs? @@ -651,400 +712,338 @@ XEmacs 19.16, released in November, 1997 and was also the last version without international language support. = @node Q1.0.3, Q1.0.4, Q1.0.2, Introduction -(a)unnumberedsubsec Q1.0.3: Where can I find it? +(a)unnumberedsubsec Q1.0.3: How do you pronounce XEmacs? = -The canonical source and binaries can be found via anonymous FTP at: - -(a)example -(a)uref{ftp://ftp.xemacs.org/pub/xemacs/} -(a)end example +The most common pronounciation is @samp{Eks eemax}. = @node Q1.0.4, Q1.0.5, Q1.0.3, Introduction -(a)unnumberedsubsec Q1.0.4: Are binaries available? +(a)unnumberedsubsec Q1.0.4: What does XEmacs look like? = -MS Windows binaries are available at -(a)uref{http://www.xemacs.org/Download/win32/} for the native versions -of 21.4 and 21.1. Cygwin binaries are now available as part of the -standard Cygwin installation process. XEmacs also comes pre-built as -part of many Linux distributions, such as Red Hat and SuSE. - -Otherwise, you will need to build XEmacs yourself or get your system -administrator to do it. Generally, this is not a difficult process -under Unix and Mac OS X, as XEmacs has been tested under all of the -common Unix versions and under Mac OS X and comes with an extensive -configure script that is able to automatically detect most aspects of -the configuration of your particular system. +Screen snapshots are available at +(a)uref{http://www.xemacs.org/About/Screenshots/index.html} +as part of the XEmacs website. = @node Q1.0.5, Q1.0.6, Q1.0.4, Introduction -(a)unnumberedsubsec Q1.0.5: How does XEmacs differ from GNU Emacs? - -For a detailed description of the differences between GNU Emacs and -XEmacs and a detailed history of XEmacs, check out the -(a)example -(a)uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} -(a)end example +(a)unnumberedsubsec Q1.0.5: Who wrote XEmacs? = -(a)table @strong -(a)item User-Visible Editing Features -XEmacs in general tries hard to conform to exist user-interface -standards, and to work "out-of-the-box" without the need for obscure -customization changes. GNU Emacs, particularly version 21, has gotten -better about this (in many cases by copying the XEmacs behavior!), but -still has some weirdnesses. For example, the standard method of -selecting text using the Shift key works out-of-the-box in XEmacs. +XEmacs is the result of the time and effort of many people, and the +active developers have changed over time. There are two major +components of the XEmacs effort -- writing the code itself and providing +all the support work (testing the code, releasing beta and final +versions, handling patches, reading bug reports, maintaining the web +site, managing the mailing lists, etc. etc.). Neither component would +work without the other. = -XEmacs has a built-in toolbar. Four toolbars can actually be configured -simultaneously: top, bottom, left, and right toolbars. +(a)subheading CODING = -XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19 -(which provides a primitive form of vertical scrollbar), these are true -toolkit scrollbars. A look-alike Motif scrollbar is provided for those -who don't have Motif. (Even for those who do, the look-alike may be -preferable as it is faster.) +The primary code contributor over the years has been Ben Wing (active +since late 1992). Between 1991 and 1995, large amounts of coding was +contributed by Jamie Zawinski and Chuck Thompson. Many other people +have authored major subsystems or otherwise contributed large amounts of +code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris, +Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard +Mlynarik, Stig, William Perry and plenty of others. = -XEmacs has buffer tabs along the top of the frame (although the -position can be changed) that make it very easy to switch buffers. +Primary XEmacs-specific subsystems and their authors: = -The menubar under XEmacs is better-designed, with more thought put into -it. +(a)table @asis +(a)item Objects +(a)itemize @minus +(a)item +Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcreco= rds: Richard Mlynarik, 1994 +(a)item +Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Bu= chholz +(a)item +Portable dumper, object descriptions: Olivier Galibert +(a)item +KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber an= d students +(a)item +Random object work (object equal and hash methods, weak lists, lcrecord = lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing +(a)item +Profiling: Ben Wing +(a)item +Some byte-compilation and hash-table improvements: Martin Buchholz +(a)item +Bignum: Jerry James +(a)end itemize = -XEmacs can ask questions using popup dialog boxes. Any command executed -from a menu will ask yes/no questions with dialog boxes, while commands -executed via the keyboard will use the minibuffer. +(a)item Internationalization/Mule +(a)itemize @minus +(a)item +mostly Ben Wing; many ideas for future work, Stephen Turnbull +(a)end itemize = -XEmacs under MS Windows provides uses the standard file-dialog box for -opening and saving files. Standard menu-accelerator behavior can easily -be enabled using the Options menu, and integrates well into the existing -keymap. +(a)item I/O +(a)itemize @minus +(a)item +Basic event/event-stream implementation: Jamie Zawinski +(a)item +Most event work since 1994: Ben Wing +(a)item +Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing +(a)item +Process method abstraction, Windows process work: Kirill Katsnelson +(a)item +Misc-user events, async timeouts, most quit-checking and signal code, mo= st other work since 1994: Ben Wing +(a)item +Lstreams: Ben Wing +(a)end itemize = -XEmacs has (still experimental) support for widgets of various sorts -- -buttons, text boxes, sliders, progress bars, etc. A progress bar is -used in font lock to show the progress. +(a)item Display +(a)itemize @minus +(a)item +Redisplay mechanism: implementation, Chuck Thompson; additional work, lo= ts of people +(a)item +Glyphs: mostly Ben Wing +(a)item +Specifiers: Ben Wing +(a)item +Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wi= ng +(a)item +Widgets: Andy Piper +(a)item +JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, ot= hers (see comment in @file{glyphs-eimage.c}) +(a)item +Menus: Jamie Zawinski, someone at Lucid (Lucid menus) +(a)item +Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) +(a)item +Multi-device/device-independence work (console/device/etc methods): Ben = Wing, prototype by chuck thompson +(a)item +Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben W= ing +(a)item +Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wi= ng +(a)item +Toolbars: implementation, chuck, much interface work, Ben Wing +(a)item +Gutters, tabs: andy piper +(a)end itemize = -Experimental support for drag-and-drop protocols is provided from -XEmacs 21. +(a)item Device subsystems +(a)itemize @minus +(a)item +X Windows: Jamie Zawinksi, Ben Wing, others +(a)item +GTK: William Perry, Malcolm Purvis +(a)item +MS Windows: initial implementation, Jonathan Harris; some more work, And= y Piper, Ben Wing +(a)item +TTY: Chuck Thompson, Ben Wing +(a)item +Cygwin: Andy Piper +(a)end itemize = -(a)item General Platform Support -If you're running on a machine with audio hardware, you can specify -sound files for XEmacs to play instead of the default X beep. See the -documentation of the function load-sound-file and the variable -sound-alist. XEmacs also supports the network sound protocols NAS and -EsounD. +(a)item Misc +(a)itemize @minus +(a)item +Configure: initial porting from fsf, Chuck Thompson; conversion to autoc= onf 2, much rewriting, Martin Buchholz +(a)item +Most initialization-related code: Ben Wing +(a)item +Internals manual, much of Lisp manual: Ben Wing +(a)item +FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, = Ben Wing +(a)end itemize +(a)end table = -XEmacs 21 supports database protocols with LISP bindings, currently -including Berkeley DB, LDAP, and PostgreSQL (21.2 only). +(a)subheading SUPPORT = -XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method -servers directly, as well as through the X Input Method (XIM) -protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen -support the Quail family of input methods (implemented in LISP) for many -languages. +Currently, support duties are handled by many different people. = -XEmacs provides support for ToolTalk on systems that have -it. +Release managers have been = -(a)item Packaged LISP Libraries -Many more packages are provided standard with XEmacs than with GNU Emacs -19 or 20. +(a)itemize @minus +(a)item +Stephen Turnbull (April 2001 - January 2003, March 2004 - present, 21.2.= 47 - 21.4.12, 21.5.2 - 21.5.7, 21.5.17 - present) +(a)item +Vin Shelton (May 2003 - present, 21.4.13 - present) +(a)item +Steve Youngs (July 2002 - September 2003, 21.5.8 - 21.5.16) +(a)item +Martin Buchholz (December 1998, November 1999 - May 2001, 21.2.7 - 21.2.= 8, 21.2.21 - 21.2.46, 21.5.0 - 21.5.1) +(a)item +Steve Baur (early 1997 - December 1998, February 1999 - November 1999, 1= 9.15 - 21.2.5, 21.2.9 - 21.2.20) +(a)item +Andy Piper (December 1998, 21.2.6) +(a)item +Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) +(a)item +Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) +(a)end itemize = -XEmacs 21 supports an integrated package management system which uses -EFS to download, then automatically install prebuilt LISP -libraries. This allows XEmacs users much more straightforward access to -the "latest and greatest" version of any given library. +The recent overlapping dates are intentional, since two or three trees +are maintained simultaneously at any point. = -We are working on a standard method for enabling, disabling and -otherwise controlling packages, which should make them very easy to use. +Other major support work: = -(a)item LISP Programming -From XEmacs 20 on, characters are a separate type. Characters can be -converted to integers (and many integers can be converted to -characters), but characters are not integers. GNU Emacs 19, XEmacs 19, -Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs -20 (incorporating Mule 3 and later Mule 4) represent them as integers. +(a)itemize @minus +(a)item +Adrian Aichner wrote and maintains the web site. +(a)item +Stephen Turnbull has produced many of the beta and semi-stable releases +and has attempted to be the "face" of XEmacs on the newsgroups and +mailing lists. +(a)item +Steve Youngs currently produces the beta releases (???). +(a)item +Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns +maintaining the packages. +(a)item +Vin Shelton maintains the stable releases. +(a)item +Testing - #### Norbert, Adrian, ??? +(a)end itemize = -From XEmacs 20 on, the buffer is treated as an array of characters, and -the representation of buffer text is not exposed to LISP. The GNU Emacs -20 functions like buffer-as-multibyte are not supported. +Portraits and email of some of the major developers: = -In XEmacs, events are first-class objects. GNU Emacs 19 represents them -as integers, which obscures the differences between a key gesture and -the ancient ASCII code used to represent a particular overlapping subset -of them. +(a)itemize @bullet +(a)item @email{andy@@xemacs.org, Andy Piper} +(a)html +
    3D"Portrait
    +(a)end html = -In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19 -represents them as complicated combinations of association lists and -vectors. If you use the advertised functional interface to manipulation -of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU -Emacs 19; if your code depends on the underlying implementation of -keymaps, it will not. +(a)item @email{ben@@xemacs.org, Ben Wing} +(a)html +
    3D"Portrait
    +(a)end html = -XEmacs uses "extents" to represent all non-textual aspects of buffers; -GNU Emacs 19 uses two distinct objects, "text properties" and -"overlays", which divide up the functionality between them. Extents are -a superset of the union of the functionality of the two GNU Emacs data -types. The full GNU Emacs 19 interface to text properties and overlays -is supported in XEmacs (with extents being the underlying -representation). +(a)item @email{cthomp@@xemacs.org, Chuck Thompson} +(a)html +
    3D"Portrait
    +(a)end html = -Extents can be made to be copied into strings, and then restored, by -kill and yank. Thus, one can specify this behavior on either "extents" -or "text properties", whereas in GNU Emacs 19 text properties always -have this behavior and overlays never do. +(a)item @email{hniksic@@xemacs.org, Hrvoje Niksic} = -(a)item Window System Programming Interface -XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes -it be a more well-behaved X citizen (and also improves portability). A -result of this is that it is possible to include other Xt "Widgets" in -the XEmacs window. Also, XEmacs understands the standard Xt command-line -arguments. +(a)html +
    3D"Portrait
    +(a)end html = -XEmacs supports Motif applications, generic Xt (e.g. Athena) -applications, and raw Xlib applications. An XEmacs variant which -supports GTK+ is available (integration as an option in the XEmacs -mainline is planned for XEmacs 22), although code to take advantage of -the support is as yet scarce. +(a)item @email{jwz@@jwz.org, Jamie Zawinski} +(a)html +
    3D"Portrait
    +(a)end html = -An XEmacs frame can be placed within an "external client widget" managed -by another application. This allows an application to use an XEmacs -frame as its text pane rather than the standard Text widget that is -provided with Motif or Athena. +(a)item @email{martin@@xemacs.org, Martin Buchholz} +(a)html +
    3D"Portrait
    +(a)end html = -(a)item Community Participation -Starting with XEmacs 20, joining the XEmacs development team is -simple. Mail to @email{xemacs-beta@@xemacs.org, XEmacs Developers}, and -you're in! (If you want to be, of course. You're also welcome to just -post development-related questions and bug reports.) The GNU Emacs -development team and internal mailing lists are still by invitation -only. +(a)item @email{mly@@adoc.xerox.com, Richard Mlynarik} +(a)html +
    3D"Portrait
    +(a)end html = -The "bleeding edge" of mainline XEmacs development is available by -anonymous CVS as are some subsidiary branches (check out the xemacs-gtk -module for the latest in GUI features!) +(a)item @email{stephen@@xemacs.org, Stephen Turnbull} = -Development and maintenance of Lisp libraries is separated from the core -editor development at a fairly low level. This provides better -modularization and a better division of responsibility between external -library maintainers and the XEmacs core development team. Even for -packages the size of Gnus, XEmacs users normally have access to a -pre-built version within a few weeks of a major release, and minor -updates often within days. +(a)item @email{steve@@xemacs.org, Steve Baur} +(a)html +
    3D"Portrait
    +(a)end html +(a)end itemize = -CVS commit authority is broadly dispersed. Recognized maintainers of -LISP libraries who are willing to maintain XEmacs packaged versions -automatically qualify for CVS accounts for their packages. -(a)end table +Many other people have contributed to XEmacs; this is partially +enumerated in the @samp{About XEmacs} option in the Help menu. = -(a)node Q1.0.6, Q1.0.7, Q1.0.5, Introduction -(a)unnumberedsubsec Q1.0.6: How much does XEmacs differ? +(a)node Q1.0.6, Q1.1.1, Q1.0.5, Introduction +(a)unnumberedsubsec Q1.0.6: Who wrote the FAQ? = -RMS has asserted at times that XEmacs is merely a "patch" on top of -GNU Emacs (@pxref{Q1.0.7}). In fact, probably not more than 5% of the -code, if that, remains unchanged, and nearly 14 years of work has gone -into XEmacs at this point. (GNU Emacs itself is only than 20 years -old, and thus XEmacs has existed as a separate product for over 2/3 of -the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has -perhaps 65,000 more lines of C code than GNU Emacs 21.2. +The current version of this FAQ was created by @email{ben@@xemacs.org, +Ben Wing}. = -However, the XEmacs developers strive to keep their code compatible with -GNU Emacs, especially on the Lisp level. Much effort goes into -"synching" the XEmacs Elisp code with recent GNU Emacs releases so as to -benefit from GNU Emacs development work. (In contrast, almost no code -from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs -developers are instructed by RMS not to even look at XEmacs source code! -This stems from self-imposed licensing restrictions on the part of GNU -Emacs -- and almost certainly out of hostility, as well.) +Previous contributors to the FAQ include = -(a)node Q1.0.7, Q1.0.8, Q1.0.6, Introduction -(a)unnumberedsubsec Q1.0.7: Is XEmacs "GNU"? +(a)itemize @bullet +(a)item @email{steve@@xemacs.org, SL Baur} = -RMS insists on the term "GNU XEmacs" and maintains that +(a)item @email{hniksic@@xemacs.org, Hrvoje Niksic} = -(a)quotation -XEmacs is GNU software because it's a modified version of a -GNU program. And it is GNU software because the FSF is the copyright -holder for most of it, and therefore the legal responsibility for -protecting its free status falls on us whether we want it or not. This -is why the term "GNU XEmacs" is legitimate. -(a)end quotation +(a)item @email{binge@@aloft.att.com, Curtis.N.Bingham} = -In fact, FSF is @emph{not} the copyright holder for most of the code, -as very little unmodified FSF code remains (@pxref{Q1.0.6}). +(a)item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} = -Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre -to the XEmacs developers given RMS's hostility and general lack of -interest in cooperation. "GNU" software in general is part of the GNU -Project, is distributed by it on their FTP site, and receives support -(or at least cooperation), as well as implicit endorsement, from it. -The GNU Project, however, has never supported XEmacs and never -distributed XEmacs, and RMS's hostility is the farthest thing possible -from an endorsement. In fact, the GNU Project distributes a number of -non-GNU software projects on the FSF web site, but again XEmacs is not -one of them. +(a)item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} = -(a)node Q1.0.8, Q1.0.9, Q1.0.7, Introduction -(a)unnumberedsubsec Q1.0.8: What is the correct way to refer to XEmacs a= nd GNU Emacs? +(a)item @email{cognot@@ensg.u-nancy.fr, Richard Cognot} = -Unfortunately even the naming of these two applications has become -politicized. Much of this stems from RMS, who has a history of -politicizing similar issues. (Compare the controversy over "Lignux" -and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU -Emacs" be used, which are neutral and acceptable to most people. RMS, -however, is not willing to accept these terms. He insists that, if -his product is called "GNU Emacs", then ours must be called "GNU -XEmacs". (For our opinion of this term, @xref{Q1.0.7}.) On the other -hand, if our product is to be called "XEmacs", as we prefer, then his -product must simply be called "Emacs". The intent of this seems -clear: RMS wants to make sure the names reflect his view that his -version is the "real" Emacs and ours is merely a derivative, -second-class product (@pxref{Q1.0.6}). +(a)item @email{daku@@nortel.ca, Mark Daku} = -The XEmacs developers hope that you will use the neutral terms -"XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on -the other hand, is a generic term for a class of programmable text -editors with a similar look-and-feel, and usually a Lisp-based -extension language. These trace themselves back to early editors such -as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,, -internals, XEmacs Internals Manual}. +(a)item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque} = -We also call upon RMS, in the spirit of furthering cooperation, to -stop politicizing this issue and use the neutral terms "XEmacs" and -"GNU Emacs". We have already acceded to RMS' wishes in this respect, -and we expect him to do the same. (In the past, the XEmacs developers -often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in -reference to GNU Emacs; these terms were apparently modeled after RMS' -own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress -Emacs, produced by James Gosling. RMS, however, considers such terms -to be insulting, so we refrain from using them as much as possible in -preference to GNU Emacs.) +(a)item @email{eeide@@cs.utah.edu, Eric Eide} = -(a)node Q1.0.9, Q1.0.10, Q1.0.8, Introduction -(a)unnumberedsubsec Q1.0.9: Why haven't XEmacs and GNU Emacs merged? +(a)item @email{af@@biomath.jussieu.fr, Alain Fauconnet} = -There are currently irreconcilable differences in the views about -technical, programming, design, organizational and legal matters -between Richard Stallman (RMS), the author and leader of the GNU Emacs -project, and the XEmacs development team which provide little hope for -a merge to take place in the short-term future. There have been -repeated attempts at merging by all of the major XEmacs developers, -starting from the early days of Lucid Emacs (in 1991), but they have -all failed. RMS has very strong views about how GNU Emacs should be -structured and how his project should be run, and during the repeated -merge efforts has never demonstrated any realistic interest in -sufficiently compromising or ceding control to allow a middle ground -to be found. The basic problem seems to be the very different goals -of RMS and the XEmacs project. The primary goals of the XEmacs -project are technical and organizational -- we want to create the best -editor possible, and to make it as easy as possible for people around -the world to contribute. The primary goals of RMS, on the other hand, -are political, and GNU Emacs, and any potential merge efforts with -XEmacs, are strictly subservient to these goals. In fact, in many -ways RMS sees GNU Emacs as the "poster child" of his aims, the one -program in the GNU project that above all others must set an example -to the world. (This has to do with the fact that GNU Emacs was the -first program in the GNU project, and the only one that he is still -personally involved with on a day-to-day basis.) Given his goals, his -position is completely reasonable -- but unfortunately, makes any -merge impossible. +(a)item @email{cflatter@@nrao.edu, Chris Flatters} = -From the XEmacs perspective, the most intractable issues appear to be -legal and organizational, specifically: +(a)item @email{ginsparg@@adra.com, Evelyn Ginsparg} = -(a)itemize @bullet -(a)item -RMS requires "legal papers" to be signed for all contributions of code -to GNU Emacs over 10 lines or so, transferring the copyright and all -legal rights to the code to the Free Software Foundation. XEmacs does -not and has never required this, since it has the practical effect of -discouraging individual and in particular corporate contributions -- -corporations will almost never sign away their legal rights to code -since it makes it impossible to reuse the code in any product that -whose license is not compatible with the GNU General Public License. -Since RMS has shown no inclination to compromise on this issue, a -merge would require that most of the existing XEmacs code would need -to be thrown away and rewritten -- something the XEmacs developers are -understandably reluctant to do. +(a)item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall} = -(a)item = -A repeated stumbling block in the merge talks has been the issue of -organizational control over the resulting product. RMS has made it -clear that he intends to have final say over design issues in a merged -Emacs. Unfortunately, RMS and the XEmacs developers have repeatedly -clashed over design decisions, and RMS' insistence on getting his way -in such disagreements was the very reason for the split in the first -place. This same issue has come up again and again in merge talks and -we have never been able to come to a satisfactory resolution. To the -extent that RMS is willing to compromise at all, it appears to be of a -purely political rather than technical nature -- "If we support this -feature of yours, we also get to support this other feature of mine." -The XEmacs developers cannot see how such a process would lead to -anything but a mess of incompatible things hodgepodged together. +(a)item @email{dkindred@@cmu.edu, Darrell Kindred} = -(a)item -Because of the years of separate development, distinct and -incompatible interfaces have developed and merging would be extremely -difficult even with the above non-technical issues resolved. The -problem has been exacerbated by the issue of legal papers -- because -XEmacs code is not "kosher" from RMS' perspective, he discourages -developers from even looking at it out of legal concerns. Although it -is still possible to read the XEmacs documentation and run the -program, the practical effect of this prohibition has been to strongly -discourage code-sharing and cooperative development -- although a -great deal of GNU Emacs code has been incorporated into XEmacs, -practically none has gone the other direction. -(a)end itemize +(a)item @email{dmoore@@ucsd.edu, David Moore} = -If you have a comment to add regarding the merge, it is a good idea to -avoid posting to the newsgroups, because of the very heated flamewars -that often result. Mail your questions to -(a)email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}. +(a)item @email{arup+@@cmu.edu, Arup Mukherjee} = -(a)node Q1.0.10, Q1.0.11, Q1.0.9, Introduction -(a)unnumberedsubsec Q1.0.10: Where can I get help? +(a)item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen} = -Probably the easiest way, if everything is installed, is to use Info, by -pressing @kbd{C-h i}, or looking for an Info item on the -Help Menu. @kbd{M-x apropos} can be used to look for particular command= s. +(a)item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell} = -For items not found in the manual, try reading this FAQ -(a)comment , examining the regular GNU Emacs FAQ (which can be -(a)comment found with the Emacs 19 distribution) as well as at -(a)comment @uref{http://www.eecs.nwu.edu/emacs/faq/} -and reading the Usenet group comp.emacs.xemacs. +(a)item @email{dworkin@@ccs.neu.edu, Justin Sheehy} = -If you choose to post to a newsgroup, @strong{please use -comp.emacs.xemacs}. Please do not post XEmacs related questions to -gnu.emacs.help. +(a)item @email{stig@@hackvan.com, Stig} = -If you cannot post or read Usenet news, there is a corresponding mailing -list @email{xemacs-news@@xemacs.org} which is available. It can be -subscribed to via the Mailman Web interface or by sending mail to to -(a)email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the -body of the message. See also -(a)uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a -subscription, you may use the @email{xemacs-news-request@@xemacs.org} -address or the Web interface. Send a message with a subject of -(a)samp{unsubscribe} to be removed. +(a)item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} +(a)end itemize = -(a)node Q1.0.11, Q1.0.12, Q1.0.10, Introduction -(a)unnumberedsubsec Q1.0.11: Where are the mailing lists archived? +(a)unnumberedsec 1.1: Getting XEmacs = -The archives can be found at @uref{http://list-archive.xemacs.org} +(a)node Q1.1.1, Q1.1.2, Q1.0.6, Introduction +(a)unnumberedsubsec Q1.1.1: Where can I find XEmacs? = -(a)node Q1.0.12, Q1.0.13, Q1.0.11, Introduction -(a)unnumberedsubsec Q1.0.12: How do you pronounce XEmacs? +To download XEmacs, visit the XEmacs WWW page at +(a)uref{http://www.xemacs.org/Download/}. The most up-to-date list of +distribution sites can always be found there. Try to pick a site that +is networkologically close to you. If you know of other mirrors of +the XEmacs archives, please send e-mail to +(a)uref{mailto:webmaster@@xemacs.org} and we will list them here as well. + +The canonical distribution point is ftp.xemacs.org, available either +through HTTP (@uref{http://ftp.xemacs.org/}) or anonymous FTP +(@uref{ftp://ftp.xemacs.org/pub/xemacs/}). = -The most common pronounciation is @samp{Eks eemax}. +(a)node Q1.1.2, Q1.1.3, Q1.1.1, Introduction +(a)unnumberedsubsec Q1.1.2: Are binaries available? = -(a)node Q1.0.13, Q1.0.14, Q1.0.12, Introduction -(a)unnumberedsubsec Q1.0.13: What does XEmacs look like? +MS Windows binaries are available at +(a)uref{http://www.xemacs.org/Download/win32/} for the native versions +of 21.4 and 21.1. Cygwin binaries are now available as part of the +standard Cygwin installation process. XEmacs also comes pre-built as +part of many Linux distributions, such as Red Hat and SuSE. = -Screen snapshots are available at -(a)uref{http://www.xemacs.org/About/Screenshots/index.html} -as part of the XEmacs website. +Otherwise, you will need to build XEmacs yourself or get your system +administrator to do it. Generally, this is not a difficult process +under Unix and Mac OS X, as XEmacs has been tested under all of the +common Unix versions and under Mac OS X and comes with an extensive +configure script that is able to automatically detect most aspects of +the configuration of your particular system. + +(a)node Q1.1.3, Q1.1.4, Q1.1.2, Introduction +(a)unnumberedsubsec Q1.1.3: How do I get the bleeding-edge sources? + +If you are interested in developing XEmacs, or getting the absolutely mo= st +recent, up-to-the-moment, bleeding-edge source code, you can directly +access the master CVS source tree (read-only, of course, until you ask f= or +and are granted permission to directly modify portions of the source tre= e) +at cvs.xemacs.org. Directions on how to access the source tree are loca= ted +at @uref{http://www.xemacs.org/Develop/cvsaccess.html}. = -(a)node Q1.0.14, Q1.1.1, Q1.0.13, Introduction -(a)unnumberedsubsec Q1.0.14: Where can I obtain a printed copy of the XE= macs User's Manual? +Nightly CVS snapshots are available at +(a)uref{http://www.dk.xemacs.org/Download/CVS-snapshots/}. = +(a)node Q1.1.4, Q1.2.1, Q1.1.3, Introduction +(a)unnumberedsubsec Q1.1.4: Where can I obtain a printed copy of the XEm= acs User's Manual? + Pre-printed manuals are not available. If you are familiar with TeX, you can generate your own manual from the XEmacs sources. = @@ -1052,18 +1051,82 @@ HTML and Postscript versions of XEmacs m XEmacs web site at @uref{http://www.xemacs.org/Documentation/index.html}. = -(a)unnumberedsec 1.1: Versions for Different Operating Systems +(a)unnumberedsec 1.2: Versions for Different Operating Systems = -(a)node Q1.1.1, Q1.1.2, Q1.0.14, Introduction -(a)unnumberedsubsec Q1.1.1: Do I need X11 to run XEmacs? +(a)node Q1.2.1, Q1.2.2, Q1.1.4, Introduction +(a)unnumberedsubsec Q1.2.1: Do I need X11 to run XEmacs? = No. The name @dfn{XEmacs} is unfortunate in the sense that it is @strong{not} an X Window System-only version of Emacs. XEmacs has full color support on a color-capable character terminal. = -(a)node Q1.1.2, Q1.1.3, Q1.1.1, Introduction -(a)unnumberedsubsec Q1.1.2: Is there a port of XEmacs to Microsoft Windo= ws? +(a)node Q1.2.2, Q1.2.3, Q1.2.1, Introduction +(a)unnumberedsubsec Q1.2.2: What versions of Unix does XEmacs run on? + +XEmacs is regularly tested on Linux, Solaris, SunOS, HP/UX, FreeBSD, +OpenBSD, BSD/OS aka BSDI, Tru64 aka DEC/OSF, SCO5, and probably +others. It should work on all versions of Unix created in the last 10 +years or so, perhaps with a bit of work on more obscure platforms to +correct bit-rot. It uses a sophisticated configuration system to +auto-detect zillions of features that are implemented differently in +different versions of Unix, so it will probably work on your vendor's +version, possibly with a bit of tweaking, even if we've never heard of +it. + +For problems with particular machines and versions of Unix, see the +(a)file{PROBLEMS} file. + +Much effort has gone into making XEmacs work on as many different +machines, configurations, and compilers as possible. + +Much effort has gone into making XEmacs 64-bit clean. + +Much effort has gone into removing system-specific code, and replacing +such code with autodetection at configure time. + +The XEmacs core should build "out of the box" on most Unix-like systems. + +XEmacs 21.2 was tested and @samp{make check} succeeded on these Unix +configurations as of 2001-02-10: + +(a)example +alphaev56-dec-osf4.0e (both Compaq C and gcc) +i386-unknown-freebsd4.2 +i386-unknown-netbsdelf1.5 +i586-sco-sysv5uw7.0.1 (both SCO's cc and gcc) +i686-pc-linux-gnu +hppa2.0-hp-hpux10.20 (both HP's ANSI cc and gcc) +mips-sgi-irix6.5 (both MIPSpro cc and gcc) +rs6000-ibm-aix4.3.0.0 (both IBM's xlc and gcc) +sparc-sun-solaris2.6 (both Sun's Forte C and gcc) +sparc-sun-solaris2.7 (both Sun's Forte C and gcc) +sparc-sun-sunos4.1.4 (gcc) +(a)end example + +Some systems have a dual mode 32-bit/64-bit compiler. On most of these, +XEmacs requires the @samp{--pdump} (in XEmacs 21.5, +(a)samp{--enable-pdump}) configure option to build correctly with the +64-bit version of the compiler. + +(a)example +mips-sgi-irix6.5, CC=3D"gcc -mabi=3D64" +mips-sgi-irix6.5, CC=3D"cc -64" +rs6000-ibm-aix4.3.0.0, CC=3D"cc -q64" +(a)end example + +On most of these systems, XEmacs also builds with a C++ compiler, +but not "out of the box". This feature is only for use by the +maintainers. + +XEmacs 21.2 is known @emph{not} to work on any machines with m680x0 +processors. Sorry, all you sun3 and Unix PC nostalgia buffs out there. = +VMS has never been supported by XEmacs. In fact, all the old VMS code +inherited from Emacs has been removed. Sorry, all you VMS fans out ther= e. + +(a)node Q1.2.3, Q1.2.4, Q1.2.2, Introduction +(a)unnumberedsubsec Q1.2.3: Is there a port of XEmacs to Microsoft Windo= ws? + Yes. Beginning with release 21.0, XEmacs has worked under MS Windows and is fully-featured and actively developed. A group of dedicated developers actively maintains and improves the Windows-specific @@ -1087,15 +1150,15 @@ features. In addition, under Cygwin it = to use an X server (and XFree86 is available as part of the standard Cygwin installation). = -(a)node Q1.1.3, Q1.1.4, Q1.1.2, Introduction -(a)unnumberedsubsec Q1.1.3: Can I build XEmacs on MS Windows with X supp= ort? Do I need to? +(a)node Q1.2.4, Q1.2.5, Q1.2.3, Introduction +(a)unnumberedsubsec Q1.2.4: Can I build XEmacs on MS Windows with X supp= ort? Do I need to? = Yes, you can, but no you do not need to. In fact, we recommend that you use a native-GUI version unless you have a specific need for an X version. = -(a)node Q1.1.4, Q1.1.5, Q1.1.3, Introduction -(a)unnumberedsubsec Q1.1.4: What are Cygwin and MinGW, and do I need the= m to run XEmacs? +(a)node Q1.2.5, Q1.2.6, Q1.2.4, Introduction +(a)unnumberedsubsec Q1.2.5: What are Cygwin and MinGW, and do I need the= m to run XEmacs? = To answer the second part of the question: No, you, you don't need Cygwin or MinGW to build or to run XEmacs. But if you have them and @@ -1119,7 +1182,7 @@ Win32 GUI, and can be built with support If you build with Win32 GUI support then the Cygwin version uses the majority of the Windows-specific code, which is mostly related to display. If you want to build with X support you need X libraries (and -an X server to display XEmacs on); see @ref{Q2.2.7}. TTY and Win32 GUI +an X server to display XEmacs on); see @ref{Q2.3.7}. TTY and Win32 GUI require no additional libraries beyond what comes standard with Cygwin. = The advantages of the Cygwin version are that it integrates well with @@ -1133,7 +1196,7 @@ whereas the native port requires only a = Also, it follows the Unix filesystem and process model very closely (some will undoubtedly view this as an advantage). = -See @uref{http://sources.redhat.com/cygwin/} for more information on +See @uref{http://www.cygwin.com/} for more information on Cygwin. = MinGW is a collection of header files and import libraries that allow @@ -1154,8 +1217,8 @@ irrelevant for XEmacs since it's already = See @uref{http://www.mingw.org/} for more information on MinGW. = -(a)node Q1.1.5, Q1.1.6, Q1.1.4, Introduction -(a)unnumberedsubsec Q1.1.5: What are the differences between the various= MS Windows emacsen? +(a)node Q1.2.6, Q1.2.7, Q1.2.5, Introduction +(a)unnumberedsubsec Q1.2.6: What are the differences between the various= MS Windows emacsen? = XEmacs, Win-Emacs, DOS Emacs, NT Emacs, this is all very confusing. Could you briefly explain the differences between them? @@ -1235,7 +1298,7 @@ GNU Emacs compiled with Win32 @itemize @minus = @item -Starting with version 19.30, it has been possible to compile GNU Emacs +Starting with GNU Emacs 19.30, it has been possible to compile GNU Emacs under MS Windows using the DJGPP compiler and X libraries. The result is very similar to GNU Emacs compiled under MS DOS, only it works somewhat better because it runs in 32-bit mode, makes use of all the @@ -1243,37 +1306,9 @@ system memory, supports long file names, @end itemize = @end itemize - -(a)node Q1.1.6, Q1.1.7, Q1.1.5, Introduction -(a)unnumberedsubsec Q1.1.6: Is there a port of XEmacs to the Macintosh? - -Yes. - -XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly -will not feel very much like a Mac application as it has no Mac-specific -code in it. - -There is also a port of XEmacs 19.14 that works on all recent versions -of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com, -Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY -mode only (one single Macintosh window, 25 colors), but has a large -number of Mac-specific additions. It's available at -(a)uref{http://homepage.mac.com/pjarvis/xemacs.html}. - -(a)node Q1.1.7, Q1.1.8, Q1.1.6, Introduction -(a)unnumberedsubsec Q1.1.7: Is there a port of XEmacs to NextStep? - -Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did -the port of GNU Emacs to NeXTstep and expressed interest in doing the -XEmacs port, but never went any farther. - -(a)node Q1.1.8, Q1.1.9, Q1.1.7, Introduction -(a)unnumberedsubsec Q1.1.8: Is there a port of XEmacs to OS/2? - -No, but Alexander Nikolaev is working on it. = -(a)node Q1.1.9, Q1.2.1, Q1.1.8, Introduction -(a)unnumberedsubsec Q1.1.9: How does the port cope with differences in t= he Windows user interface? +(a)node Q1.2.7, Q1.2.8, Q1.2.6, Introduction +(a)unnumberedsubsec Q1.2.7: How does the port cope with differences in t= he Windows user interface? = The XEmacs (and Emacs in general) user interface is pretty different from what is expected of a typical MS Windows program. How does the MS @@ -1296,2663 +1331,4093 @@ you will get all these behaviors automat In future versions, some of these features might be turned on by default in the MS Windows environment. = -(a)unnumberedsec 1.2: Policies +(a)node Q1.2.8, Q1.2.9, Q1.2.7, Introduction +(a)unnumberedsubsec Q1.2.8: Is there a port of XEmacs to the Macintosh? = -(a)node Q1.2.1, Q1.2.2, Q1.1.9, Introduction -(a)unnumberedsubsec Q1.2.1: What is the FAQ editorial policy? +Yes. = -The FAQ is actively maintained and modified regularly. All links should -be up to date. Unfortunately, some of the information is out of date -- -a situation which the FAQ maintainer is working on. All submissions are -welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ -maintainers}. +XEmacs 21.5 (perhaps 21.4 also?) works on MacOS X, although it certainly +will not feel very much like a Mac application as it has no Mac-specific +code in it. = -Please make sure that @samp{XEmacs FAQ} appears on the Subject: line. -If you think you have a better way of answering a question, or think a -question should be included, we'd like to hear about it. Questions and -answers included into the FAQ will be edited for spelling and grammar -and will be attributed. Answers appearing without attribution are -either from versions of the FAQ dated before May 1996 or are from -previous FAQ maintainers. Answers quoted from Usenet news articles will -always be attributed, regardless of the author. +There is also a port of XEmacs 19.14 that works on all recent versions +of MacOS, from 8.1 through MacOS X, by @email{pjarvis@@ispchannel.com, +Pitts Jarvis} (recently deceased). It runs in an equivalent of TTY +mode only (one single Macintosh window, 25 colors), but has a large +number of Mac-specific additions. It's available at +(a)uref{http://homepage.mac.com/pjarvis/xemacs.html}. = -(a)node Q1.2.2, Q1.2.3, Q1.2.1, Introduction -(a)unnumberedsubsec Q1.2.2: How do I become a beta tester? +(a)node Q1.2.9, Q1.2.10, Q1.2.8, Introduction +(a)unnumberedsubsec Q1.2.9: Is there a port of XEmacs to MS-DOS? = -Send an email message to @email{xemacs-beta-request@@xemacs.org} with -the line @samp{subscribe} in the body of the message. +No. We have never supported running on MS-DOS or Windows 3.1, and in +fact have long since deleted all MS-DOS-related code. We're not +particularly interested in patches for these platforms, as they would +introduce huge amounts of code clutter due to the woefully +underfeatured nature of these systems. (See GNU Emacs for a port to +MS-DOS.) = -Be prepared to get your hands dirty, as beta testers are expected to -identify problems as best they can. +(a)node Q1.2.10, Q1.2.11, Q1.2.9, Introduction +(a)unnumberedsubsec Q1.2.10: Is there a port of XEmacs to OS/2? = -(a)node Q1.2.3, Q1.3.1, Q1.2.2, Introduction -(a)unnumberedsubsec Q1.2.3: How do I contribute to XEmacs itself? +No, but Alexander Nikolaev was at one point +working on it. = -It depends on the knowledge and time you possess. If you are able, by -all means become a beta tester (@pxref{Q1.2.2}). If you are a -programmer, try to build XEmacs and see if you can improve it. +(a)node Q1.2.11, Q1.2.12, Q1.2.10, Introduction +(a)unnumberedsubsec Q1.2.11: Is there a port of XEmacs to NextStep? = -Otherwise, you can still help by using XEmacs as your everyday editor -(for pre-built binary versions, @pxref{Q1.0.4}) and reporting bugs you -find to the mailing list. +Carl Edman, apparently no longer at @email{cedman@@princeton.edu}, did +the port of GNU Emacs to NeXTstep and expressed interest in doing the +XEmacs port, but never went any farther. = -Another area where we need help is the documentation: We need good -documentation for building XEmacs and for using it. This FAQ is a -small step in that direction. +(a)node Q1.2.12, Q1.3.1, Q1.2.11, Introduction +(a)unnumberedsubsec Q1.2.12: Is there a port of XEmacs to VMS? = -Ben Wing @email{ben@@xemacs.org} writes: +VMS has never been supported by XEmacs. In fact, all the old VMS code +inherited from GNU Emacs has been removed. Sorry, all you VMS fans +out there. = -(a)quotation -BTW if you have a wish list of things that you want added, you have to -speak up about it! More specifically, you can do the following if you -want a feature added (in increasing order of usefulness): +(a)unnumberedsec 1.3: Getting Started = -(a)itemize @bullet -(a)item -Make a posting about a feature you want added. +(a)node Q1.3.1, Q1.3.2, Q1.2.12, Introduction +(a)unnumberedsubsec Q1.3.1: What is an @file{init.el} or @file{.emacs} a= nd is there a sample one? = -(a)item -Become a beta tester and make more postings about those same features. +The @file{init.el} or @file{.emacs} file is used to customize XEmacs to +your tastes. Starting in 21.4, the preferred location for the init file +is @file{~/.xemacs/init.el}; in previous versions, it was +(a)file{~/.emacs}. 21.4 still accepts the old location, but the first +time you run it, it will ask to migrate your file to the new location. +If you answer yes, the file will be moved, and a "compatibility" +(a)file{.emacs} file will be placed in the old location so that you can +still run older versions of XEmacs, and versions of GNU Emacs, which +expect the old location. The @file{.emacs} file present is just a stub +that loads the real file in @file{~/.xemacs/init.el}. = -(a)item -Convince us that you're going to use the features in some cool and -useful way. +No two init files are alike, nor are they expected to be alike, but +that's the point. The XEmacs distribution contains an excellent starter +example in the @file{etc/} directory called @file{sample.init.el} +(starting in 21.4) or @file{sample.emacs} in older versions. Copy this +file from there to @file{~/.xemacs/init.el} (starting in 21.4) or +(a)file{~/.emacs} in older versions, where @samp{~} means your home +directory, of course. Then edit it to suit. = -(a)item -Come up with a clear and well-thought-out API concerning the features. +You may bring the @file{sample.init.el} or @file{sample.emacs} file into +an XEmacs buffer from the menubar. (The menu entry for it is always +under the @samp{Help} menu, but its location under that has changed in +various versions. Recently, look under the @samp{Samples} submenu.) To +determine the location of the @file{etc/} directory type the command +(a)kbd{C-h v data-directory @key{RET}}. = -(a)item -Write the code to implement a feature and send us a patch. -(a)end itemize +(a)node Q1.3.2, Q1.3.3, Q1.3.1, Introduction +(a)unnumberedsubsec Q1.3.2: Where do I put my @file{init.el} file? = -(not that we're necessarily requiring you to write the code, but we can -always hope :) -(a)end quotation +(a)file{init.el} is the name of the init file starting with 21.4, and is +located in the subdirectory @file{.xemacs/} of your home directory. In +prior versions, the init file is called @file{.emacs} and is located in +your home directory. = -(a)unnumberedsec 1.3: Credits +Your home directory under Windows is determined by the @samp{HOME} +environment variable. If this is not set, it defaults to @samp{C:\}. +To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or +select @samp{Control Panel->System->Advanced->Environment Variables...} +under Windows NT/2000. = -(a)node Q1.3.1, Q1.3.2, Q1.2.3, Introduction -(a)unnumberedsubsec Q1.3.1: Who wrote XEmacs? +(a)node Q1.3.3, Q1.3.4, Q1.3.2, Introduction +(a)unnumberedsubsec Q1.3.3: Can I use the same @file{init.el} with the o= ther Emacs? = -XEmacs is the result of the time and effort of many people, and the -active developers have changed over time. There are two major -components of the XEmacs effort -- writing the code itself and providing -all the support work (testing the code, releasing beta and final -versions, handling patches, reading bug reports, maintaining the web -site, managing the mailing lists, etc. etc.). Neither component would -work without the other. +Yes. The sample @file{init.el} included in the XEmacs +distribution will show you how to handle different versions and flavors +of Emacs. = -(a)subheading CODING +(a)node Q1.3.4, Q1.3.5, Q1.3.3, Introduction +(a)unnumberedsubsec Q1.3.4: Any good XEmacs tutorials around? = -The primary code contributor over the years has been Ben Wing (active -since late 1992). Between 1991 and 1995, large amounts of coding was -contributed by Jamie Zawinski and Chuck Thompson. Many other people -have authored major subsystems or otherwise contributed large amounts of -code, including Andy Piper, Hrvoje Niksic, Jerry James, Jonathan Harris, -Kyle Jones, Martin Buchholz, Michael Sperber, Olivier Galibert, Richard -Mlynarik, Stig, William Perry and plenty of others. +There's the XEmacs tutorial available from the Help Menu under +(a)samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether +it's available in a non-english language, type @kbd{C-u C-h t TAB}, type +the first letters of your preferred language, then type @key{RET}. = -Primary XEmacs-specific subsystems and their authors: +(a)comment There's an Emacs Lisp tutorial at +(a)comment +(a)comment @example +(a)comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar= .gz}. +(a)comment @end example +(a)comment +(a)comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tu= torial web +(a)comment page at +(a)comment @iftex +(a)comment @* +(a)comment @end iftex +(a)comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}. = -(a)table @asis -(a)item Objects -(a)itemize @minus -(a)item -Conversion from 26-bit to 28-bit pointers and integers, lrecords, lcreco= rds: Richard Mlynarik, 1994 -(a)item -Conversion to 32-bit pointers and 31-bit integers: Kyle Jones, Martin Bu= chholz -(a)item -Portable dumper, object descriptions: Olivier Galibert -(a)item -KKCC (new garbage collector), ephemerons, weak boxes: Michael Sperber an= d students -(a)item -Random object work (object equal and hash methods, weak lists, lcrecord = lists, bit vectors, dynarr, blocktype, opaque, string resizing): Ben Wing -(a)item -Profiling: Ben Wing -(a)item -Some byte-compilation and hash-table improvements: Martin Buchholz -(a)item -Bignum: Jerry James -(a)end itemize +(a)node Q1.3.5, Q1.3.6, Q1.3.4, Introduction +(a)unnumberedsubsec Q1.3.5: May I see an example of a useful XEmacs Lisp= function? = -(a)item Internationalization/Mule -(a)itemize @minus -(a)item -mostly Ben Wing; many ideas for future work, Stephen Turnbull -(a)end itemize +The following function does a little bit of everything useful. It does +something with the prefix argument, it examines the text around the +cursor, and it's interactive so it may be bound to a key. It inserts +copies of the current word the cursor is sitting on at the cursor. If +you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will +insert 3 copies. = -(a)item I/O -(a)itemize @minus -(a)item -Basic event/event-stream implementation: Jamie Zawinski -(a)item -Most event work since 1994: Ben Wing -(a)item -Asynchronous stuff (async timeouts, signals, quit-checking): Ben Wing -(a)item -Process method abstraction, Windows process work: Kirill Katsnelson -(a)item -Misc-user events, async timeouts, most quit-checking and signal code, mo= st other work since 1994: Ben Wing -(a)item -Lstreams: Ben Wing -(a)end itemize +(a)lisp +(defun double-word (count) + "Insert a copy of the current word underneath the cursor" + (interactive "*p") + (let (here there string) + (save-excursion + (forward-word -1) + (setq here (point)) + (forward-word 1) + (setq there (point)) + (setq string (buffer-substring here there))) + (while (>=3D count 1) + (insert string) + (decf count)))) +(a)end lisp = -(a)item Display -(a)itemize @minus -(a)item -Redisplay mechanism: implementation, Chuck Thompson; additional work, lo= ts of people +The best way to see what is going on here is to let XEmacs tell you. +Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor +sitting just to the right of the function you want explained. Eg. move +the cursor to the SPACE between @code{interactive} and @samp{"*p"} and +hit @kbd{C-h f} to see what the function @code{interactive} does. Doing +this will tell you that the @code{*} requires a writable buffer, and +(a)code{p} converts the prefix argument to a number, and +(a)code{interactive} allows you to execute the command with @kbd{M-x}. + +(a)node Q1.3.6, Q1.3.7, Q1.3.5, Introduction +(a)unnumberedsubsec Q1.3.6: And how do I bind it to a key? + +To bind to a key do: + +(a)lisp +(global-set-key "\C-cd" 'double-word) +(a)end lisp + +Or interactively, @kbd{M-x global-set-key} and follow the prompts. + +(a)node Q1.3.7, Q1.3.8, Q1.3.6, Introduction +(a)unnumberedsubsec Q1.3.7: What's the difference between a macro and a = function? + +Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: + +(a)dfn{Macros} enable you to define new control constructs and other +language features. A macro is defined much like a function, but instead +of telling how to compute a value, it tells how to compute another Lisp +expression which will in turn compute the value. We call this +expression the @dfn{expansion} of the macro. + +Macros can do this because they operate on the unevaluated expressions +for the arguments, not on the argument values as functions do. They can +therefore construct an expansion containing these argument expressions +or parts of them. + +Do not confuse the two terms with @dfn{keyboard macros}, which are +another matter, entirely. A keyboard macro is a key bound to several +other keys. Refer to manual for details. + +(a)node Q1.3.8, Q1.4.1, Q1.3.7, Introduction +(a)unnumberedsubsec Q1.3.8: What is @code{Custom}? + +(a)code{Custom} is a system for customizing XEmacs options. + +You can access @code{Advanced (Customize)} from the @code{Options} menu +or invoking one of customize commands by typing eg. +(a)kbd{M-x customize}, @kbd{M-x customize-face}, +(a)kbd{M-x customize-variable} or @kbd{M-x customize-apropos}. + +There is also new @samp{browser} mode for Customize. +Try it out with @kbd{M-x customize-browse} + +(a)unnumberedsec 1.4: Getting Help + +(a)node Q1.4.1, Q1.4.2, Q1.3.8, Introduction +(a)unnumberedsubsec Q1.4.1: Where can I get help? + +Probably the easiest way, if everything is installed, is to use Info, by +pressing @kbd{C-h i}, or looking for an Info item on the +Help Menu. @kbd{M-x apropos} can be used to look for particular command= s. + +For items not found in the manual, try reading this FAQ +and reading the Usenet group comp.emacs.xemacs. + +If you choose to post to a newsgroup, @strong{please use +comp.emacs.xemacs}. Please do not post XEmacs related questions to +gnu.emacs.help. + +If you cannot post or read Usenet news, there is a corresponding mailing +list @email{xemacs-news@@xemacs.org} which is available. It can be +subscribed to via the Mailman Web interface or by sending mail to to +(a)email{xemacs-news-request@@xemacs.org} with @samp{subscribe} in the +body of the message. See also +(a)uref{http://www.xemacs.org/Lists/#xemacs-news}. To cancel a +subscription, you may use the @email{xemacs-news-request@@xemacs.org} +address or the Web interface. Send a message with a subject of +(a)samp{unsubscribe} to be removed. + +(a)node Q1.4.2, Q1.4.3, Q1.4.1, Introduction +(a)unnumberedsubsec Q1.4.2: Which mailing lists are there? + +For complete, up-to-date info on the lists and how to subscribe, see +(a)uref{http://www.xemacs.org/Lists/}. + +(a)table @samp + +(a)item comp.emacs.xemacs +is a Usenet newsgroup +for XEmacs users to discuss problems and issues that arise +for them. It's not generally an appropriate place to ask +about apparent bugs (use @samp{xemacs-beta}), or future plans +(use @samp{xemacs-design}). + +(a)item xemacs-announce +is a read-only, low +volume list for announcements concerning the XEmacs project +and new releases of the XEmacs software. + +(a)item xemacs-beta +is an open list for bug reports about beta versions of XEmacs. This +includes the bug reports themselves, by both users and developers, as +well as queries, follow-ups, and discussions further determining their +nature and status. This is the primary channel for this kind of +discussion; related code changes will usually not be applied until +they have been discussed here. When such discussions touch on +significant changes to the code (in particular, structural changes), +or on changes to API's or external functionality, they should be moved +to @samp{xemacs-design}. Requests and proposals for non-bug-related +changes do not belong on @samp{xemacs-beta}, and should be sent to +(a)samp{xemacs-design} instead. + +(a)item xemacs-beta-ja +is an open list for bug +reports and design discussion related to Mule features, +including Japanese handling, in beta versions of XEmacs. +Japanese is the preferred language of discussion. For most +timely presentation to reviewers, please consider sending +appropriate discussion to @samp{xemacs-mule} or +(a)samp{xemacs-design} in English when convenient for +the participants in discussion. When possible, bug reports +not related to Mule (including Japanese) should be reported on +(a)samp{xemacs-beta} in English. + +(a)item xemacs-buildreports +is an open list for +submission of build-reports on beta versions of XEmacs. For +information on what the build-reports should contain, please +see the `etc/BETA' file which is included in each beta +distribution. + +(a)item xemacs-cvs +is a read-only list for notices +and information on what has been committed to the XEmacs CVS +trees, by whom, and for what. + +(a)item xemacs-design +is an open list for +discussing the design of XEmacs. This includes discussion +about planned and ongoing changes to functionality and API +changes and additions as well as requests for them. This is +the primary channel for this kind of discussion; related code +changes will usually not be applied until they have been +discussed here. This does not include bug reports, which go +to @samp{xemacs-beta}. + +(a)item xemacs-mule +is an open mailing list for +discussion of International extensions to XEmacs including +Mule, XIM, I18n issues, etc, and is not confined to +developmental issues. This list is not restricted to +English, postings in all languages are welcome. + +(a)item xemacs-news +is an open list for discussion +and bug reporting for XEmacs. This mailing list is +bi-directionally gatewayed with the USENET newsgroup +comp.emacs.xemacs. + +(a)item xemacs-nt +is a developers-only mailing +list and is intended for people who wish to work actively on +the porting of XEmacs to Microsoft Windows NT and Microsoft +Windows '95. + +(a)item xemacs-patches +is an open, moderated +list for submission of patches to the XEmacs distribution +and its packages. Anyone may subscribe or submit to +xemacs-patches, but all submissions are reviewed by the list +moderator before they are distributed to the +list. Discussion is not appropriate on xemacs-patches. + +(a)item xemacs-users-ja +is an open list for +discussion and bug reporting for XEmacs. Japanese is the +preferred language of discussion. It is not gated to +comp.emacs.xemacs or the @samp{xemacs} list. For +fastest response, bugs not specifically related to Japanese +or Mule features should be reported on +(a)samp{xemacs-beta} (in English). + +(a)item xemacs-users-ru +is an open list for +discussion and bug reporting for XEmacs. Russian is the +preferred language of discussion. It is not gated to +comp.emacs.xemacs or the @samp{xemacs} list. For +fastest response, bugs not specifically related to Russian +or Mule features should be reported on +(a)samp{xemacs-beta} (in English). +(a)end table + +(a)node Q1.4.3, Q1.4.4, Q1.4.2, Introduction +(a)unnumberedsubsec Q1.4.3: Where are the mailing lists archived? + +The archives can be found at @uref{http://list-archive.xemacs.org} + +(a)node Q1.4.4, Q1.4.5, Q1.4.3, Introduction +(a)unnumberedsubsec Q1.4.4: How can I get two instances of info? + +Before 21.4, you can't. The @code{info} package does not provide for +multiple info buffers. In 21.4, this should be fixed. #### how? + +(a)node Q1.4.5, Q1.5.1, Q1.4.4, Introduction +(a)unnumberedsubsec Q1.4.5: How do I add new Info directories? + +You use something like: + +(a)lisp +(setq Info-directory-list (cons + (expand-file-name "~/info") + Info-default-directory-list)) +(a)end lisp + +(a)email{davidm@@prism.kla.com, David Masterson} writes: + +(a)quotation +Emacs Info and XEmacs Info do many things differently. If you're trying= to +support a number of versions of Emacs, here are some notes to remember: + +(a)enumerate @item -Glyphs: mostly Ben Wing +Emacs Info scans @code{Info-directory-list} from right-to-left while +XEmacs Info reads it from left-to-right, so append to the @emph{correct} +end of the list. + @item -Specifiers: Ben Wing +Use @code{Info-default-directory-list} to initialize +(a)code{Info-directory-list} @emph{if} it is available at startup, but n= ot +all Emacsen define it. + @item -Extents: initial implementation, someone at Lucid; rewrite, 1994, Ben Wi= ng +Emacs Info looks for a standard @file{dir} file in each of the +directories scanned from #1 and magically concatenates them together. + @item -Widgets: Andy Piper +XEmacs Info looks for a @file{localdir} file (which consists of just the +menu entries from a @file{dir} file) in each of the directories scanned +from #1 (except the first), does a simple concatenation of them, and +magically attaches the resulting list to the end of the menu in the +(a)file{dir} file in the first directory. +(a)end enumerate + +Another alternative is to convert the documentation to HTML with +texi2html and read it from a web browser like Lynx or W3. +(a)end quotation + +(a)unnumberedsec 1.5: Contributing to XEmacs + +(a)node Q1.5.1, Q1.5.2, Q1.4.5, Introduction +(a)unnumberedsubsec Q1.5.1: How do I submit changes to the FAQ? + +The FAQ is actively maintained and modified regularly. All links should +be up to date. Unfortunately, some of the information is out of date -- +a situation which the FAQ maintainer is working on. All submissions are +welcome, please e-mail submissions to @email{faq@@xemacs.org, XEmacs FAQ +maintainers}. + +Please make sure that @samp{XEmacs FAQ} appears on the Subject: line. +If you think you have a better way of answering a question, or think a +question should be included, we'd like to hear about it. Questions and +answers included into the FAQ will be edited for spelling and grammar +and will be attributed. Answers appearing without attribution are +either from versions of the FAQ dated before May 1996 or are from +previous FAQ maintainers. Answers quoted from Usenet news articles will +always be attributed, regardless of the author. + +(a)node Q1.5.2, Q1.5.3, Q1.5.1, Introduction +(a)unnumberedsubsec Q1.5.2: How do I become a beta tester? + +Send an email message to @email{xemacs-beta-request@@xemacs.org} with +the line @samp{subscribe} in the body of the message. + +Be prepared to get your hands dirty, as beta testers are expected to +identify problems as best they can. + +(a)node Q1.5.3, Q1.5.4, Q1.5.2, Introduction +(a)unnumberedsubsec Q1.5.3: How do I contribute to XEmacs itself? + +It depends on the knowledge and time you possess. If you are able, by +all means become a beta tester (@pxref{Q1.5.2}). If you are a +programmer, try to build XEmacs and see if you can improve it. + +Otherwise, you can still help by using XEmacs as your everyday editor +(for pre-built binary versions, @pxref{Q1.1.2}) and reporting bugs you +find to the mailing list. + +Another area where we need help is the documentation: We need good +documentation for building XEmacs and for using it. This FAQ is a +small step in that direction. + +Ben Wing @email{ben@@xemacs.org} writes: + +(a)quotation +BTW if you have a wish list of things that you want added, you have to +speak up about it! More specifically, you can do the following if you +want a feature added (in increasing order of usefulness): + +(a)itemize @bullet @item -JPEG/PNG/TIFF image converters: Ben Wing, William Perry, Jareth Hein, ot= hers (see comment in @file{glyphs-eimage.c}) +Make a posting about a feature you want added. + @item -Menus: Jamie Zawinski, someone at Lucid (Lucid menus) +Become a beta tester and make more postings about those same features. + @item -Scrollbars: Chuck Thompson, ??? (Lucid scrollbar) +Convince us that you're going to use the features in some cool and +useful way. + @item -Multi-device/device-independence work (console/device/etc methods): Ben = Wing, prototype by chuck thompson +Come up with a clear and well-thought-out API concerning the features. + @item -Faces: first implementation, Jamie Zawinski; second, chuck; third, Ben W= ing +Write the code to implement a feature and send us a patch. +(a)end itemize + +(not that we're necessarily requiring you to write the code, but we can +always hope :) +(a)end quotation + +(a)node Q1.5.4, Q1.5.5, Q1.5.3, Introduction +(a)unnumberedsubsec Q1.5.4: How do I get started developing XEmacs? + +First, get yourself set up under CVS so that you can access the CVS +repositories containing the XEmacs sources and the XEmacs packages. + +Next, set up your layout. This is important, as a good layout will +facilitate getting things done efficiently, while a bad layout will could +lead to disaster, as you can't figure out which code is the most recent, +which can be thrown away, etc. We suggest the following layout: (feel f= ree +to make changes) + +(a)itemize @bullet @item -Fonts/colors: first implementation, Jamie Zawinski; further work, Ben Wi= ng +Everything goes under @file{/src/xemacs} (use a different directory if +you want). From now, instead of saying @file{/src/xemacs}, we use +(a)file{}, to make it easier in case someone picked a +different directory. + @item -Toolbars: implementation, chuck, much interface work, Ben Wing +Package source is in @file{/package-src}. + @item -Gutters, tabs: andy piper -(a)end itemize +Installed packages go under @file{/xemacs-packages}, and +(a)file{/mule-packages}. = -(a)item Device subsystems -(a)itemize @minus @item -X Windows: Jamie Zawinksi, Ben Wing, others +A "workspace" is a complete copy of the sources, in which you do work of +a particular kind. Workspaces can be differentiated by which branch of +the source tree they extend off of -- usually either the stable or +experimental, unless other branches have been created (for example, Ben +created a branch for his Mule work because (1) the project was long-term +and involved an enormous number of changes, (2) people wanted to be able +to look at what his work in progress, and (3) he wanted to be able to +check things in and in general use source-code control, since it was a +long-term project). Workspaces are also differentiated in what their +purpose is -- general working workspace, workspace for particular +projects, workspace keeping the latest copy of the code in one of the +branches without mods, etc. + @item -GTK: William Perry, Malcolm Purvis +Various workspaces are subdirectories under @file{}, e.g.: + +(a)itemize @bullet @item -MS Windows: initial implementation, Jonathan Harris; some more work, And= y Piper, Ben Wing +(a)file{/working} (the workspace you're actively working on, +periodically synched up with the latest trunk) + @item -TTY: Chuck Thompson, Ben Wing +(a)file{/stable} (for making changes to the stable version of +XEmacs, which sits on a branch) + @item -Cygwin: Andy Piper -(a)end itemize +(a)file{/unsigned-removal} (a workspace for a specific, diffic= ult +task that's going to affect lots of source and take a long time, and +so best done in its own workspace without the interference of other +work you're doing. Also, you can commit just this one large change, +separate from all the other changes). = -(a)item Misc -(a)itemize @minus @item -Configure: initial porting from fsf, Chuck Thompson; conversion to autoc= onf 2, much rewriting, Martin Buchholz +(a)file{/latest} (a copy of the latest sources on the trunk, +i.e. the experimental version of XEmacs, with no patches in it; +either update it periodically, by hand, or set up a cron job to do it +automatically). Set it up so it can be built, and build it so you +have a working XEmacs. (Building it might also go into the cron job.) + +This workspace serves a number of purposes: +(a)enumerate @item -Most initialization-related code: Ben Wing +You always have a recent version of XEmacs you can compare +against when something you're working on breaks. It's true +that you can do this with cvs diff, but when you need to do +some serious investigation, this method just fails. +(a)item +You (almost) always have a working, up-to-date executable that +can be used when your executable is crashing and you need to +keep developing it, or when you need an `xemacs' to build +packages, etc. +(a)item +When creating new workspaces, you can just copy the `latest' +workspace using GNU @code{cp -a}. You have all the .elc's built, +everything else probably configured, any spare files in place +(e.g. some annoying xpm.dll under Windows, etc.). +(a)end enumerate + @item -Internals manual, much of Lisp manual: Ben Wing +(a)file{/latest-stable/} (equivalent to @file{/lates= t/}, but +for the Stable branch of XEmacs, rather than the Experimental branch +of XEmacs). This may or may not be necessary depending on how much +development you do of the stable branch. +(a)end itemize + @item -FSF synching: initial sync with FSF 19, Richard Mlynarik, further work, = Ben Wing +(a)file{/xemacsweb} is a workspace for working on the XEmacs +web site. + +(a)item +(a)file{/in-patches} for patches received from email and saved +to files. + +(a)item +(a)file{/out-patches} for locally-generated patches to be sent +to @email{xemacs-patches@@xemacs.org}. Less useful now that the +patcher util has been developed. + +(a)item +(a)file{/build}, for build trees when compiling and testing XE= macs with +various configuration options turned off and on. The scripts in +xemacs-builds/ben (see below) can be used to automate building XEmacs +workspaces with many different configuration options and automatically +filtering out the normal output so that you see only the abnormal +output. + +(a)item +(a)file{/xemacs-builds}, for the xemacs-builds module, which y= ou need +to check out separately in CVS. This contains scripts used for building +XEmacs, automating and simplifying using CVS, etc. Under various +people's directories are their own build and other scripts. The +currently most-maintained scripts are under ben/, where there are easily +configurable scripts that can be used to easily build any workspace +(esp. if you've more or less followed the layout presented above) +unattended, with one or more configuration states (there's a +pre-determined list of the most useful, but it's easy to change). The +output is filtered and split up in various ways so that you can identify +which output came from where, and you can see the output either full or +with all "normal" output except occasional status messages filtered so +that you only see the abnormal ones. @end itemize -(a)end table = -(a)subheading SUPPORT +(a)node Q1.5.5, Q1.6.1, Q1.5.4, Introduction +(a)unnumberedsubsec Q1.5.5: What's the basic layout of the code? = -Currently, support duties are handled by many different people. +The file @file{configure} is a shell script to acclimate XEmacs to the +oddities of your processor and operating system. It will create a +file named @file{Makefile} (a script for the @file{make} program), which= helps +automate the process of building and installing emacs. See INSTALL +for more detailed information. + +The file @file{configure.in} is the input used by the autoconf program to +construct the @file{configure} script. Since XEmacs has configuration +requirements that autoconf can't meet, @file{configure.in} uses an unholy +marriage of custom-baked configuration code and autoconf macros; it +may be wise to avoid rebuilding @file{configure} from @file{configure.in= } when +possible. = -Release managers have been +The file @file{Makefile.in} is a template used by @file{configure} to cr= eate +(a)file{Makefile}. = -(a)itemize @minus +There are several subdirectories: + +(a)enumerate @item -Stephen Turnbull (April 2001 - present, 21.x - 21.x?) +(a)file{src} holds the C code for XEmacs (the XEmacs Lisp interpreter an= d its +primitives, the redisplay code, and some basic editing functions). @item -Vin Shelton? +(a)file{lisp} holds the XEmacs Lisp code for XEmacs (most everything els= e). @item -Steve Youngs (July 2002 - present??, 21.x - 21.x?) +(a)file{lib-src} holds the source code for some utility programs for use= by +or with XEmacs, like movemail and etags. @item -Martin Buchholz (December 1998 - May 2001, 21.x - 21.x?) +(a)file{etc} holds miscellaneous architecture-independent data files +XEmacs uses, like the tutorial text. The contents of the @file{lisp}, +(a)file{info} and @file{man} subdirectories are architecture-independent= too. @item -Steve Baur (early 1997 - November 1998, 19.15 - 21.0) +(a)file{lwlib} holds the C code for the X toolkit objects used by XEmacs. @item -Chuck Thompson (June 1994 - September 1996, 19.11 - 19.14) +(a)file{info} holds the Info documentation tree for XEmacs. @item -Jamie Zawinski (April 1991 - June 1994, 19.0 - 19.10) -(a)end itemize +(a)file{man} holds the source code for the XEmacs online documentation. +(a)item +(a)file{nt} holds files used compiling XEmacs under Microsoft Windows. +(a)end enumerate = -The recent overlapping dates are intentional, since two or three trees -are maintained simultaneously at any point. +(a)unnumberedsec 1.6: Politics (XEmacs vs. GNU Emacs) = -Other major support work: +(a)node Q1.6.1, Q1.6.2, Q1.5.5, Introduction +(a)unnumberedsubsec Q1.6.1: What is GNU Emacs? = -(a)itemize @minus -(a)item -Adrian Aichner wrote and maintains the web site. -(a)item -Stephen Turnbull has produced many of the beta and semi-stable releases -and has attempted to be the "face" of XEmacs on the newsgroups and -mailing lists. +GNU Emacs and XEmacs are related open-source text editors. Both +derive from GNU Emacs version 18; the split between the two happened +in 1991 (for comparison, the oldest versions of GNU Emacs date from +1984). For information on GNU Emacs, see +(a)uref{http://www.gnu.org/software/emacs/emacs.html}. + +(a)node Q1.6.2, Q1.6.3, Q1.6.1, Introduction +(a)unnumberedsubsec Q1.6.2: How does XEmacs differ from GNU Emacs? + +For a detailed description of the differences between GNU Emacs and +XEmacs and a detailed history of XEmacs, check out the +(a)example +(a)uref{http://www.xemacs.org/About/XEmacsVsGNUemacs.html, NEWS file} +(a)end example + +(a)table @strong +(a)item User-Visible Editing Features +XEmacs in general tries hard to conform to exist user-interface +standards, and to work "out-of-the-box" without the need for obscure +customization changes. GNU Emacs, particularly version 21, has gotten +better about this (in many cases by copying the XEmacs behavior!), but +still has some weirdnesses. For example, the standard method of +selecting text using the Shift key works out-of-the-box in XEmacs. + +XEmacs has a built-in toolbar. Four toolbars can actually be configured +simultaneously: top, bottom, left, and right toolbars. + +XEmacs has vertical and horizontal scrollbars. Unlike in GNU Emacs 19 +(which provides a primitive form of vertical scrollbar), these are true +toolkit scrollbars. A look-alike Motif scrollbar is provided for those +who don't have Motif. (Even for those who do, the look-alike may be +preferable as it is faster.) + +XEmacs has buffer tabs along the top of the frame (although the +position can be changed) that make it very easy to switch buffers. + +The menubar under XEmacs is better-designed, with more thought put into +it. + +XEmacs can ask questions using popup dialog boxes. Any command executed +from a menu will ask yes/no questions with dialog boxes, while commands +executed via the keyboard will use the minibuffer. + +XEmacs under MS Windows provides uses the standard file-dialog box for +opening and saving files. Standard menu-accelerator behavior can easily +be enabled using the Options menu, and integrates well into the existing +keymap. + +XEmacs has (still experimental) support for widgets of various sorts -- +buttons, text boxes, sliders, progress bars, etc. A progress bar is +used in font lock to show the progress. + +Experimental support for drag-and-drop protocols is provided from +XEmacs 21. + +(a)item General Platform Support +If you're running on a machine with audio hardware, you can specify +sound files for XEmacs to play instead of the default X beep. See the +documentation of the function load-sound-file and the variable +sound-alist. XEmacs also supports the network sound protocols NAS and +EsounD. + +XEmacs 21 supports database protocols with LISP bindings, currently +including Berkeley DB, LDAP, and PostgreSQL (21.2 only). + +XEmacs 20 and 21 support the Canna, Wnn, and SJ3 Japanese input method +servers directly, as well as through the X Input Method (XIM) +protocol. GNU Emacs 20 supports only the XIM protocol. Both Emacsen +support the Quail family of input methods (implemented in LISP) for many +languages. + +XEmacs provides support for ToolTalk on systems that have +it. + +(a)item Packaged LISP Libraries +Many more packages are provided standard with XEmacs than with GNU Emacs +19 or 20. + +XEmacs 21 supports an integrated package management system which uses +EFS to download, then automatically install prebuilt LISP +libraries. This allows XEmacs users much more straightforward access to +the "latest and greatest" version of any given library. + +We are working on a standard method for enabling, disabling and +otherwise controlling packages, which should make them very easy to use. + +(a)item LISP Programming +From XEmacs 20 on, characters are a separate type. Characters can be +converted to integers (and many integers can be converted to +characters), but characters are not integers. GNU Emacs 19, XEmacs 19, +Mule 2.3 (an extensive patch to GNU Emacs 18.55 and 19.x), and GNU Emacs +20 (incorporating Mule 3 and later Mule 4) represent them as integers. + +From XEmacs 20 on, the buffer is treated as an array of characters, and +the representation of buffer text is not exposed to LISP. The GNU Emacs +20 functions like buffer-as-multibyte are not supported. + +In XEmacs, events are first-class objects. GNU Emacs 19 represents them +as integers, which obscures the differences between a key gesture and +the ancient ASCII code used to represent a particular overlapping subset +of them. + +In XEmacs, keymaps are first-class opaque objects. GNU Emacs 19 +represents them as complicated combinations of association lists and +vectors. If you use the advertised functional interface to manipulation +of keymaps, the same code will work in XEmacs, GNU Emacs 18, and GNU +Emacs 19; if your code depends on the underlying implementation of +keymaps, it will not. + +XEmacs uses "extents" to represent all non-textual aspects of buffers; +GNU Emacs 19 uses two distinct objects, "text properties" and +"overlays", which divide up the functionality between them. Extents are +a superset of the union of the functionality of the two GNU Emacs data +types. The full GNU Emacs 19 interface to text properties and overlays +is supported in XEmacs (with extents being the underlying +representation). + +Extents can be made to be copied into strings, and then restored, by +kill and yank. Thus, one can specify this behavior on either "extents" +or "text properties", whereas in GNU Emacs 19 text properties always +have this behavior and overlays never do. + +(a)item Window System Programming Interface +XEmacs uses the MIT "Xt" toolkit instead of raw Xlib calls, which makes +it be a more well-behaved X citizen (and also improves portability). A +result of this is that it is possible to include other Xt "Widgets" in +the XEmacs window. Also, XEmacs understands the standard Xt command-line +arguments. + +XEmacs supports Motif applications, generic Xt (e.g. Athena) +applications, and raw Xlib applications. An XEmacs variant which +supports GTK+ is available (integration as an option in the XEmacs +mainline is planned for XEmacs 22), although code to take advantage of +the support is as yet scarce. + +An XEmacs frame can be placed within an "external client widget" managed +by another application. This allows an application to use an XEmacs +frame as its text pane rather than the standard Text widget that is +provided with Motif or Athena. + +(a)item Community Participation +Joining the XEmacs development team is simple. Mail to +(a)email{xemacs-beta@@xemacs.org, XEmacs Developers}, and you're in! (If +you want to be, of course. You're also welcome to just post +development-related questions and bug reports.) The GNU Emacs +development team and internal mailing lists are still by invitation +only. + +The "bleeding edge" of mainline XEmacs development is available by +anonymous CVS as are some subsidiary branches (check out the xemacs-gtk +module for the latest in GUI features!) + +Development and maintenance of Lisp libraries is separated from the core +editor development at a fairly low level. This provides better +modularization and a better division of responsibility between external +library maintainers and the XEmacs core development team. Even for +packages the size of Gnus, XEmacs users normally have access to a +pre-built version within a few weeks of a major release, and minor +updates often within days. + +CVS commit authority is broadly dispersed. Recognized maintainers of +LISP libraries who are willing to maintain XEmacs packaged versions +automatically qualify for CVS accounts for their packages. +(a)end table + +(a)node Q1.6.3, Q1.6.4, Q1.6.2, Introduction +(a)unnumberedsubsec Q1.6.3: How much does XEmacs differ? + +RMS has asserted at times that XEmacs is merely a "patch" on top of +GNU Emacs (@pxref{Q1.6.4}). In fact, probably not more than 5% of the +code, if that, remains unchanged, and nearly 14 years of work has gone +into XEmacs at this point. (GNU Emacs itself is only than 20 years +old, and thus XEmacs has existed as a separate product for over 2/3 of +the lifespan of GNU Emacs.) As a point of comparison, XEmacs 21.5 has +perhaps 65,000 more lines of C code than GNU Emacs 21.2. + +However, the XEmacs developers strive to keep their code compatible with +GNU Emacs, especially on the Lisp level. Much effort goes into +"synching" the XEmacs Elisp code with recent GNU Emacs releases so as to +benefit from GNU Emacs development work. (In contrast, almost no code +from XEmacs has made it into GNU Emacs, and in fact the GNU Emacs +developers are instructed by RMS not to even look at XEmacs source code! +This stems from self-imposed licensing restrictions on the part of GNU +Emacs -- and almost certainly out of hostility, as well.) + +(a)node Q1.6.4, Q1.6.5, Q1.6.3, Introduction +(a)unnumberedsubsec Q1.6.4: Is XEmacs "GNU"? + +RMS insists on the term "GNU XEmacs" and maintains that + +(a)quotation +XEmacs is GNU software because it's a modified version of a +GNU program. And it is GNU software because the FSF is the copyright +holder for most of it, and therefore the legal responsibility for +protecting its free status falls on us whether we want it or not. This +is why the term "GNU XEmacs" is legitimate. +(a)end quotation + +In fact, FSF is @emph{not} the copyright holder for most of the code, +as very little unmodified FSF code remains (@pxref{Q1.6.3}). + +Furthermore, RMS's assertion that XEmacs is "GNU" seems rather bizarre +to the XEmacs developers given RMS's hostility and general lack of +interest in cooperation. "GNU" software in general is part of the GNU +Project, is distributed by it on their FTP site, and receives support +(or at least cooperation), as well as implicit endorsement, from it. +The GNU Project, however, has never supported XEmacs and never +distributed XEmacs, and RMS's hostility is the farthest thing possible +from an endorsement. In fact, the GNU Project distributes a number of +non-GNU software projects on the FSF web site, but again XEmacs is not +one of them. + +(a)node Q1.6.5, Q1.6.6, Q1.6.4, Introduction +(a)unnumberedsubsec Q1.6.5: What is the correct way to refer to XEmacs a= nd GNU Emacs? + +Unfortunately even the naming of these two applications has become +politicized. Much of this stems from RMS, who has a history of +politicizing similar issues. (Compare the controversy over "Lignux" +and "GNU/Linux".) We would prefer that the terms "XEmacs" and "GNU +Emacs" be used, which are neutral and acceptable to most people. RMS, +however, is not willing to accept these terms. He insists that, if +his product is called "GNU Emacs", then ours must be called "GNU +XEmacs". (For our opinion of this term, @xref{Q1.6.4}.) On the other +hand, if our product is to be called "XEmacs", as we prefer, then his +product must simply be called "Emacs". The intent of this seems +clear: RMS wants to make sure the names reflect his view that his +version is the "real" Emacs and ours is merely a derivative, +second-class product (@pxref{Q1.6.3}). + +The XEmacs developers hope that you will use the neutral terms +"XEmacs" and "GNU Emacs" for these two specific products. "Emacs", on +the other hand, is a generic term for a class of programmable text +editors with a similar look-and-feel, and usually a Lisp-based +extension language. These trace themselves back to early editors such +as EINE, ZWEI, ZMACS and Multics Emacs. @xref{A History of Emacs,,, +internals, XEmacs Internals Manual}. + +We also call upon RMS, in the spirit of furthering cooperation, to +stop politicizing this issue and use the neutral terms "XEmacs" and +"GNU Emacs". We have already acceded to RMS' wishes in this respect, +and we expect him to do the same. (In the past, the XEmacs developers +often used the terms "FSF Emacs" or "FSFmacs" or "RMSmacs" in +reference to GNU Emacs; these terms were apparently modeled after RMS' +own usage of "Gosmacs" and "Gosling Emacs" in reference to Unipress +Emacs, produced by James Gosling. RMS, however, considers such terms +to be insulting, so we refrain from using them as much as possible in +preference to GNU Emacs.) + +(a)node Q1.6.6, Q1.7.1, Q1.6.5, Introduction +(a)unnumberedsubsec Q1.6.6: Why haven't XEmacs and GNU Emacs merged? + +There are currently irreconcilable differences in the views about +technical, programming, design, organizational and legal matters +between Richard Stallman (RMS), the author and leader of the GNU Emacs +project, and the XEmacs development team which provide little hope for +a merge to take place in the short-term future. There have been +repeated attempts at merging by all of the major XEmacs developers, +starting from the early days of Lucid Emacs (in 1991), but they have +all failed. RMS has very strong views about how GNU Emacs should be +structured and how his project should be run, and during the repeated +merge efforts has never demonstrated any realistic interest in +sufficiently compromising or ceding control to allow a middle ground +to be found. The basic problem seems to be the very different goals +of RMS and the XEmacs project. The primary goals of the XEmacs +project are technical and organizational -- we want to create the best +editor possible, and to make it as easy as possible for people around +the world to contribute. The primary goals of RMS, on the other hand, +are political, and GNU Emacs, and any potential merge efforts with +XEmacs, are strictly subservient to these goals. In fact, in many +ways RMS sees GNU Emacs as the "poster child" of his aims, the one +program in the GNU project that above all others must set an example +to the world. (This has to do with the fact that GNU Emacs was the +first program in the GNU project, and the only one that he is still +personally involved with on a day-to-day basis.) Given his goals, his +position is completely reasonable -- but unfortunately, makes any +merge impossible. + +From the XEmacs perspective, the most intractable issues appear to be +legal and organizational, specifically: + +(a)itemize @bullet +(a)item +RMS requires "legal papers" to be signed for all contributions of code +to GNU Emacs over 10 lines or so, transferring the copyright and all +legal rights to the code to the Free Software Foundation. XEmacs does +not and has never required this, since it has the practical effect of +discouraging individual and in particular corporate contributions -- +corporations will almost never sign away their legal rights to code +since it makes it impossible to reuse the code in any product that +whose license is not compatible with the GNU General Public License. +Since RMS has shown no inclination to compromise on this issue, a +merge would require that most of the existing XEmacs code would need +to be thrown away and rewritten -- something the XEmacs developers are +understandably reluctant to do. + +(a)item = +A repeated stumbling block in the merge talks has been the issue of +organizational control over the resulting product. RMS has made it +clear that he intends to have final say over design issues in a merged +Emacs. Unfortunately, RMS and the XEmacs developers have repeatedly +clashed over design decisions, and RMS' insistence on getting his way +in such disagreements was the very reason for the split in the first +place. This same issue has come up again and again in merge talks and +we have never been able to come to a satisfactory resolution. To the +extent that RMS is willing to compromise at all, it appears to be of a +purely political rather than technical nature -- "If we support this +feature of yours, we also get to support this other feature of mine." +The XEmacs developers cannot see how such a process would lead to +anything but a mess of incompatible things hodgepodged together. + +(a)item +Because of the years of separate development, distinct and +incompatible interfaces have developed and merging would be extremely +difficult even with the above non-technical issues resolved. The +problem has been exacerbated by the issue of legal papers -- because +XEmacs code is not "kosher" from RMS' perspective, he discourages +developers from even looking at it out of legal concerns. Although it +is still possible to read the XEmacs documentation and run the +program, the practical effect of this prohibition has been to strongly +discourage code-sharing and cooperative development -- although a +great deal of GNU Emacs code has been incorporated into XEmacs, +practically none has gone the other direction. +(a)end itemize + +If you have a comment to add regarding the merge, it is a good idea to +avoid posting to the newsgroups, because of the very heated flamewars +that often result. Mail your questions to +(a)email{xemacs-beta@@xemacs.org} and @email{emacs-devel@@gnu.org}. + +(a)unnumberedsec 1.7: External Packages + +(a)node Q1.7.1, Q1.7.2, Q1.6.6, Introduction +(a)unnumberedsubsec Q1.7.1: What is the package system? + +In order to reduce the size and increase the maintainability of +XEmacs, the majority of the Elisp packages that came with previous +releases have been unbundled. They have been replaced by the package +system. Each elisp add-on (or groups of them when they are small) now +comes in its own tarball that contains a small search hierarchy. + +You select just the ones you need. Install them by untarring them into +the right place. On startup XEmacs will find them, set up the load +path correctly, install autoloads, etc, etc. + +(a)xref{Q2.1.1}, for more info on how to download and install the packag= es. + +(a)node Q1.7.2, Q1.7.3, Q1.7.1, Introduction +(a)unnumberedsubsec Q1.7.2: Which external packages are there? + +(a)subheading Normal Packages + +A very broad collection of elisp packages. + +(a)table @asis +(a)item Sun +Support for Sparcworks. + +(a)item ada +Ada language support. + +(a)item apel +A Portable Emacs Library. Used by XEmacs MIME support. + +(a)item auctex +Basic TeX/LaTeX support. + +(a)item bbdb +The Big Brother Data Base: a rolodex-like database program. + +(a)item build +Build XEmacs from within (UNIX, Windows). + +(a)item c-support +Basic single-file add-ons for editing C code. + +(a)item calc +Emacs calculator. + +(a)item calendar +Calendar and diary support. + +(a)item cc-mode +C, C++, Objective-C, Java, CORBA IDL, Pike and AWK language support. + +(a)item clearcase +New Clearcase Version Control for XEmacs (UNIX, Windows). + +(a)item clearcase +Support for the Clearcase version control system. + +(a)item cookie +"Fortune cookie"-style messages. Includes Spook (suspicious phrases) = +and Yow (Zippy quotes). + +(a)item crisp +Crisp/Brief emulation. + +(a)item debug +GUD, gdb, dbx debugging support. + +(a)item dictionary +Interface to RFC2229 dictionary servers. + +(a)item dired +The DIRectory EDitor is for manipulating, and running commands on +files in a directory. + +(a)item docbookide +DocBook editing support. + +(a)item ecb +Emacs source code browser. + +(a)item ecrypto +Crypto functionality in Emacs Lisp. + +(a)item edebug +An Emacs Lisp debugger. + +(a)item ediff +Interface over GNU patch. + +(a)item edit-utils +Miscellaneous editor extensions, you probably need this. + +(a)item edt +DEC EDIT/EDT emulation. + +(a)item efs +Treat files on remote systems the same as local files. + +(a)item eieio +Enhanced Implementation of Emacs Interpreted Objects. + +(a)item elib +Portable Emacs Lisp utilities library. + +(a)item emerge +Another interface over GNU patch. + +(a)item erc +ERC is an Emacs InternetRelayChat client. + +(a)item escreen +Multiple editing sessions withing a single frame (like screen). + +(a)item eshell +Command shell implemented entirely in Emacs Lisp. + +(a)item ess +ESS: Emacs Speaks Statistics. + +(a)item eterm +Terminal emulation. + +(a)item eudc +Emacs Unified Directory Client (LDAP, PH). + +(a)item footnote +Footnoting in mail message editing modes. + +(a)item forms +Forms editing support (obsolete, use Widget instead). + +(a)item fortran-modes +Fortran support. + +(a)item fortran-modes +Fortran language support. + +(a)item frame-icon +Set up mode-specific icons for each frame under XEmacs. + +(a)item fsf-compat +GNU Emacs compatibility files. + +(a)item games +Tetris, Sokoban, and Snake. + +(a)item general-docs +General documentation. Presently, empty. + +(a)item gnats +XEmacs bug reports. + +(a)item gnus +The Gnus Newsreader and Mailreader. + +(a)item haskell-mode +Haskell editing support. + +(a)item hm--html-menus +HTML editing. + +(a)item hyperbole +Hyperbole: The Everyday Info Manager. + +(a)item ibuffer +Advanced replacement for buffer-menu. + +(a)item idlwave +Editing and Shell mode for the Interactive Data Language. + +(a)item igrep +Enhanced front-end for Grep. + +(a)item ilisp +Front-end for interacting with Inferior Lisp (external lisps). + +(a)item ispell +Spell-checking with GNU ispell. + +(a)item jde +Integrated Development Environment for Java. + +(a)item liece +IRC (Internet Relay Chat) client for Emacs. Note, this package is +deprecated and will be removed, use riece instead. + +(a)item mail-lib +Fundamental lisp files for providing email support. + +(a)item mailcrypt +Support for messaging encryption with PGP. + +(a)item mew +Messaging in an Emacs World; a MIME-based email program. + +(a)item mh-e +The XEmacs Interface to the MH Mail System. + +(a)item mine +Elisp implementation of the game 'Minehunt'. + +(a)item misc-games +Other amusements and diversions. + +(a)item mmm-mode +Support for Multiple Major Modes within a single buffer. + +(a)item net-utils +Miscellaneous Networking Utilities. + +(a)item ocaml +Objective Caml editing support. + +(a)item oo-browser +OO-Browser: The Multi-Language Object-Oriented Code Browser. + +(a)item ocaml +Objective Caml editing support. + +(a)item os-utils +Miscellaneous single-file O/S utilities, for printing, archiving, +compression, remote shells, etc. + +(a)item pc +PC style interface emulation. + +(a)item pcl-cvs +CVS frontend. + +(a)item pcomplete +Provides programmatic completion. + +(a)item perl-modes +Perl support. + +(a)item pgg +Emacs interface to various PGP implementations. + +(a)item prog-modes +Support for various programming languages. + +(a)item ps-print +Printing functions and utilities. + +(a)item psgml +Validated HTML/SGML editing. + +(a)item psgml-dtds +A collection of DTDs for psgml. Note that this package is deprecated +and will be removed in the future, most likely Q2/2003. Instead of using +this, you should install needed DTDs yourself. + +(a)item python-modes +Python language support. + +(a)item reftex +Emacs support for LaTeX cross-references, citations. + +(a)item riece +IRC (Internet Relay Chat) client for Emacs. + +(a)item rmail +An obsolete Emacs mailer. If you do not already use it don't start. + +(a)item ruby-modes +Ruby support. + +(a)item sasl +Simple Authentication and Security Layer (SASL) library. + +(a)item scheme +Front-end support for Inferior Scheme. + +(a)item semantic +Semantic bovinator (Yacc/Lex for XEmacs). Includes Senator. + +(a)item sgml +SGML/Linuxdoc-SGML editing. + +(a)item sh-script +Support for editing shell scripts. + +(a)item sieve +Manage Sieve email filtering scripts. + +(a)item slider +User interface tool. + +(a)item sml-mode +SML editing support. + +(a)item sounds-au +XEmacs Sun sound files. + +(a)item sounds-wav +XEmacs Microsoft sound files. + +(a)item speedbar +Provides a separate frame with convenient references. + +(a)item strokes +Mouse enhancement utility. + +(a)item supercite +An Emacs citation tool for News & Mail messages. + +(a)item texinfo +XEmacs TeXinfo support. + +(a)item text-modes +Miscellaneous support for editing text files. + +(a)item textools +Miscellaneous TeX support. + +(a)item time +Display time & date on the modeline. + +(a)item tm +Emacs MIME support. Not needed for gnus >=3D 5.8.0. + +(a)item tooltalk +Support for building with Tooltalk. + +(a)item tpu +DEC EDIT/TPU support. + +(a)item tramp +Remote shell-based file editing. This is similar to EFS or Ange-FTP, +but works with rsh/ssh and rcp/scp. + +(a)item vc +Version Control for Free systems. + +(a)item vc-cc +Version Control for ClearCase (UnFree) systems. + +(a)item vhdl +Support for VHDL. + +(a)item view-process +A Unix process browsing tool. + +(a)item viper +VI emulation support. + +(a)item vm +An Emacs mailer. + +(a)item w3 +A Web browser. + +(a)item x-symbol +Semi WYSIWYG for LaTeX, HTML, etc, using additional fonts. + +(a)item xemacs-base +Fundamental XEmacs support, you almost certainly need this. + +(a)item xemacs-devel +XEmacs Lisp developer support. This package contains utilities for +supporting Lisp development. It is a single-file package so it may be = +tailored. + +(a)item xlib +Emacs interface to X server. + +(a)item xslide +XSL editing support. + +(a)item xslt-process +A minor mode for (X)Emacs which allows running an XSLT processor on a +buffer. + +(a)item xwem +X Emacs Window Manager. + +(a)item zenirc +ZENIRC IRC Client. +(a)end table + +(a)subheading Mule Support (mule) + +MULti-lingual Enhancement. Support for world scripts such as +Latin, Arabic, Cyrillic, Chinese, Japanese, Greek, Hebrew etc. +To use these packages your XEmacs must be compiled with Mule +support. + +(a)table @asis +(a)item edict +MULE: Lisp Interface to EDICT, Kanji Dictionary. + +(a)item egg-its +MULE: Wnn (4.2 and 6) support. SJ3 support. + +(a)item latin-unity +MULE: find single ISO 8859 character set to encode a buffer. + +(a)item latin-unity +Unify character sets in a buffer. When characters belong to disjoint +character sets, this attempts to translate the characters so +that they belong to one character set. If the buffer coding system is +not sufficient, this suggests different coding systems. + +(a)item leim +MULE: Quail. All non-English and non-Japanese language support. + +(a)item locale +MULE: Localized menubars and localized splash screens. + +(a)item lookup +Dictionary support. (This isn't an English dictionary program) + +(a)item mule-base +MULE: Basic Mule support, required for building with Mule. + +(a)item mule-ucs +MULE: Extended coding systems (including Unicode) for XEmacs. + +(a)item mule-ucs +Extended coding systems (including Unicode) for XEmacs. + +(a)item skk +Another Japanese Language Input Method. Can be used without a +separate process running as a dictionary server. +(a)end table + +(a)node Q1.7.3, Q1.7.4, Q1.7.2, Introduction +(a)unnumberedsubsec Q1.7.3: Do I need to have the packages to run XEmacs? + +Strictly speaking, no. XEmacs will build and install just fine without +any packages installed. However, only the most basic editing functions +will be available with no packages installed, so installing packages is +an essential part of making your installed XEmacs _useful_. + +(a)node Q1.7.4, Q1.8.1, Q1.7.3, Introduction +(a)unnumberedsubsec Q1.7.4: Is there a way to find which package has par= ticular functionality? + +If you want to find out which package contains the functionality you +are looking for, use @kbd{M-x package-get-package-provider}, and give it= a +symbol that is likely to be in that package. = + +For example, if some code you want to use has a @code{(require 'thingatp= t)} +in it: + +(a)example + M-x package-get-package-provider RET thingatpt RET +(a)end example + +which will return something like: @samp{(fsf-compat "1.08").} + +(a)unnumberedsec 1.8: Internationalization + +(a)node Q1.8.1, Q1.8.2, Q1.7.4, Introduction +(a)unnumberedsubsec Q1.8.1: What is the status of internationalization s= upport aka MULE (including Asian language support)? + +Both the stable and development versions of XEmacs include +internationalization support (aka MULE). MULE currently (21.4) works on +UNIX and Linux systems. It is possible to build with MULE on Windows +systems, but if you really need MULE on Windows, it is recommended that +you build and use the development (21.5) version, and deal with the +instability of the development tree. Binaries compiled without MULE +support run faster than MULE capable XEmacsen. + +(a)node Q1.8.2, Q1.8.3, Q1.8.1, Introduction +(a)unnumberedsubsec Q1.8.2: How can I help with internationalization? + +If you would like to help, you may want to join the +(a)email{xemacs-mule@@xemacs.org} mailing list. Especially needed are +people who speak/write languages other than English, who are willing to +use XEmacs/MULE regularly, and have some experience with Elisp. + +Translations of the TUTORIAL and man page are welcome, and XEmacs does +support multilingual menus, but we have few current translations. + +(a)xref{Q1.5.2, How do I become a Beta Tester?}. + +(a)node Q1.8.3, Q1.8.4, Q1.8.2, Introduction +(a)unnumberedsubsec Q1.8.3: How do I type non-ASCII characters? + +(a)xref{Q3.0.6, How can you type in special characters in XEmacs?}, in +part 3 of this FAQ, for some simple methods that also work in non-MULE +builds of XEmacs (but only for one-octet coded character sets, and +mostly for ISO 8859/1). Many of the methods available for Cyrillic +(@pxref{Q1.8.7, How about Cyrillic modes?}) work without MULE. MULE +has more general capabilities. @xref{Q1.8.5, Please explain the +various input methods in MULE/XEmacs}. + +(a)xref{Q4.0.8, How do I display non-ASCII characters?}, which covers +display of non-ASCII characters. + +(a)node Q1.8.4, Q1.8.5, Q1.8.3, Introduction +(a)unnumberedsubsec Q1.8.4: Can XEmacs messages come out in a different = language? + +The message-catalog support was written but is badly bit-rotted. XEmacs +20 and 21 did @emph{not} support it, and early releases of XEmacs 22 +will not either. + +However, menubar localization @emph{does} work. To enable it, add to +your @file{Emacs} file entries like this: + +(a)example +Emacs*XlwMenu.resourceLabels: True +Emacs*XlwMenu.file.labelString: Fichier +Emacs*XlwMenu.openInOtherWindow.labelString: In anderem Fenster oeffnen +(a)end example + +The name of the resource is derived from the non-localized entry by +removing punctuation and capitalizing as above. + +(a)node Q1.8.5, Q1.8.6, Q1.8.4, Introduction +(a)unnumberedsubsec Q1.8.5: Please explain the various input methods in = MULE/XEmacs + +Mule supports a wide variety of input methods. There are three basic +classes: Lisp implementations, generic platform support, and library +interfaces. + +(a)emph{Lisp implementations} include Quail, which provides table-driven= input +methods for almost all the character sets that Mule supports (including +all of the ISO 8859 family, the Indic languages, Thai, and so on), and +SKK, for Japanese. (SKK also supports an interface to an external +"dictionary server" process.) Quail supports both typical "dead-key" +methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces =C3=A4, = LATIN +SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic +methods used for Asian ideographic languages like Chinese. + +Lisp implementations can be less powerful (but they are not perceptibly +inefficient), and of course are not portable to non-Emacs applications. +The incompatibility can be very annoying. On the other hand, they +require no special platform support or external libraries, so if you can +display the characters, Mule can input them for you and you can edit, +anywhere. + +(a)emph{Generic platform support} is currently limited to the X Input +Method (XIM) framework, although support for MSIME (for MS Windows) is +planned, and IIIMF (Sun's Internet-Intranet Input Method Framework) +support is extremely desirable. XIM is enabled at build time by use of +the @samp{--with-xim} flag to @code{configure}. For use of XIM, see +your platform documentation. However, normally the input method you use +is specified via the @samp{LANG} and @samp{XMODIFIERS} environment +variables. + +Of course, input skills are portable across most applications. However, +especially in modern GUI systems the habit of using bucky bits has +fallen into sad disuse, and many XIM systems are poorly configured for +use with Emacs. For example, the kinput2 input manager (a separate +process providing an interface between Japanese dictionary servers such +as Canna and Wnn, and the application) tends to gobble up keystrokes +generating Meta characters. This means that to edit while using an XIM +input method, you must toggle the input method off every time you want +to use @kbd{M-f}. Your mileage may vary. + +(a)emph{Library interfaces} are most common for Japanese, although Wnn +supports Chinese (traditional and simplified) and Korean. There are +Chinese and Korean input servers available, but we do not know of any +patches for XEmacs to use them directly. You can use them via +IM-enabled terminals, by manipulating the terminal coding systems. We +describe only the Japanese-oriented systems here. The advantage of +these systems is that they are very powerful, and on platforms where +they are available there is typically a wide range of applications that +support them. Thus your input skills are portable across applications. + +Mule provides built-in interfaces to the following input methods: Wnn4, +Wnn6, Canna, and SJ3. These can be configured at build time. There are +patches available (no URL, sorry) to support the SKK server, as well. +Wnn and SJ3 use the @code{egg} user interface. The interface for Canna +is specialized to Canna. + +Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Ky=C3= =B4to +University. It is a powerful and complex system. Wnn4 is free and Wnn6 +is not. Wnn uses grammatical hints and probability of word association, +so in principle Wnn can be cleverer than other methods. + +Canna, made by NEC, supports only Japanese. It is a simple and powerful +system. Canna uses only grammar, but its grammar and dictionary are +quite sophisticated. So for standard modern Japanese, Canna seems +cleverer than Wnn4. In addition, the UNIX version of Canna is free (now +there is a Microsoft Windows version). + +SJ3, by Sony, supports only Japanese. + +Egg consists of following parts: + +(a)enumerate @item -Steve Youngs currently produces the beta releases (???). +Input character Translation System (ITS) layer. +It translates ASCII inputs to Kana/PinYin/Hangul characters. + @item -Steve Youngs, Ville Skytta, and now Norbert Koch have taken turns -maintaining the packages. +Kana/PinYin/Hangul to Kanji transfer layer. +The interface layer to network Kana-Kanji server (Wnn and Sj3). +(a)end enumerate + +These input methods are modal. They have a raw (alphabet) mode, a +phonetic input mode, and Kana-Kanji transfer mode. However there are +mode-less input methods for Egg and Canna. @samp{boiled-egg} is a +mode-less input method running on Egg. For Canna, @samp{canna.el} has a +tiny boiled-egg-like command, @code{(canna-boil)}, and there are some +boiled-egg-like utilities. + +Much of this information was provided by @email{morioka@@jaist.ac.jp, +MORIOKA Tomohiko}. + +(a)node Q1.8.6, Q1.8.7, Q1.8.5, Introduction +(a)unnumberedsubsec Q1.8.6: How do I portably code for MULE/XEmacs? + +MULE has evolved rapidly over the last few years, and the original third +party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite +different implementations. The APIs also vary although recent versions +of XEmacs have tended to converge to the GNU Emacs standard. + +MULE implementations are going to continue to evolve. Both GNU Emacs +and XEmacs are working hard on Unicode support, which will involve new +APIs and probably variations on old ones. For XEmacs 22, the old ISO +2022-based system for recognizing encodings will be replaced by a much +more flexible system, which should improve accuracy of automatic coding +detections, but will also involve new APIs. + +(a)email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: + +(a)quotation +The application implementor must write separate code for these mule +variants. [Please don't hesitate to report these variants to us; they +are not, strictly speaking, bugs, but they give third-party developers +the same kind of creepy-crawly feeling. We'll do what we can. -- Ed.] + +MULE and the next version of Emacs are similar but the symbols are very +different---requiring separate code as well. + +Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of +emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called +(a)code{emu} to provide a common interface. [There is an XEmacs package +of APEL which provides much more comprehensive coverage. Be careful, +however; APEL has problems of its own. -- Ed.] + +I have the following suggestions about dealing with mule variants: + +(a)itemize @bullet @item -Vin Shelton maintains the stable releases. +(a)code{(featurep 'mule)} @code{t} on all mule variants + @item -Testing - #### Norbert, Adrian, ??? +(a)code{(boundp 'MULE)} is @code{t} on only MULE. Maybe the next version +of Emacs will not have this symbol. + +(a)item +MULE has a variable @code{mule-version}. Perhaps the next version of +Emacs will have this variable as well. @end itemize = -Portraits and email of some of the major developers: +Following is a sample to distinguish mule variants: = -(a)itemize @bullet -(a)item @email{andy@@xemacs.org, Andy Piper} -(a)html -
    3D"Portrait
    -(a)end html +(a)lisp +(if (featurep 'mule) + (cond ((boundp 'MULE) + ;; for original Mule + ) + ((string-match "XEmacs" emacs-version) + ;; for XEmacs with Mule + ) + (t + ;; for next version of Emacs + )) + ;; for old emacs variants + ) +(a)end lisp +(a)end quotation = -(a)item @email{ben@@xemacs.org, Ben Wing} -(a)html -
    3D"Portrait
    -(a)end html +(a)node Q1.8.7, Q1.8.8, Q1.8.6, Introduction +(a)unnumberedsubsec Q1.8.7: How about Cyrillic modes? = -(a)item @email{cthomp@@xemacs.org, Chuck Thompson} -(a)html -
    3D"Portrait
    -(a)end html +(a)email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: = -(a)item @email{hniksic@@xemacs.org, Hrvoje Niksic} +(a)quotation +There is a cyrillic mode in the file @file{mysetup.zip} in +(a)iftex +@* +(a)end iftex +(a)uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}. This is a +modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian= .el} +which can be obtained from +(a)end quotation = -(a)html -
    3D"Portrait
    -(a)end html +(a)uref{http://www.math.uga.edu/~valery/russian.el}. = -(a)item @email{jwz@@jwz.org, Jamie Zawinski} -(a)html -
    3D"Portrait
    -(a)end html +(a)email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes: = -(a)item @email{martin@@xemacs.org, Martin Buchholz} -(a)html -
    3D"Portrait
    -(a)end html +(a)quotation +There is another cyrillic mode for both GNU Emacs and XEmacs by +(a)email{manin@@camelot.mssm.edu, Dmitrii +(Mitya) Manin} at +(a)iftex = -(a)item @email{mly@@adoc.xerox.com, Richard Mlynarik} -(a)html -
    3D"Portrait
    -(a)end html +(a)end iftex +(a)uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}. +(a)c Link above, was dead. +(a)c Changed to russian host instead +(a)end quotation = -(a)item @email{stephen@@xemacs.org, Stephen Turnbull} +(a)email{rebecca.ore@@op.net, Rebecca Ore} writes: = -(a)item @email{steve@@xemacs.org, Steve Baur} -(a)html -
    3D"Portrait
    -(a)end html -(a)end itemize +(a)quotation +The fullest resource I found on Russian language use (in and out of +XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} +(a)end quotation = -Many other people have contributed to XEmacs; this is partially -enumerated in the @samp{About XEmacs} option in the Help menu. +(a)node Q1.8.8, Q1.8.9, Q1.8.7, Introduction +(a)unnumberedsubsec Q1.8.8: Does XEmacs support Unicode? = -(a)node Q1.3.2, Q1.3.3, Q1.3.1, Introduction -(a)unnumberedsubsec Q1.3.2: Who contributed to this version of the FAQ? +To get Unicode support, you need a Mule-enabled XEmacs. = -The current version of this FAQ was created by @email{ben@@xemacs.org, -Ben Wing}. +21.5 has internal support for Unicode and supports it fully, although we +don't yet use it as the internal encoding. + +21.4 supports Unicode partially -- as an external encoding for files, +processes, and terminals, but without font support. @xref{Q1.8.9, How +does XEmacs display Unicode?}. To get Unicode support in 21.4, +install Mule-UCS from packages in the usual way, and put + +(a)example +(require 'un-define) +(set-coding-priority-list '(utf-8)) +(set-coding-category-system 'utf-8 'utf-8) +(a)end example + +in your init file to enable the UTF-8 coding system. You may wish to +view the documentation of @code{set-coding-priority-list} if you find +that files that are not UTF-8 are being mis-recognized as UTF-8. = -(a)node Q1.3.3, Q1.4.1, Q1.3.2, Introduction -(a)unnumberedsubsec Q1.3.3: Who contributed to the FAQ in the past? +Install standard national fonts (not Unicode fonts) for all character +sets you use. @xref{Q1.8.9, How does XEmacs display Unicode??}. = -This is only a partial list, as many names were lost in a hard disk -crash some time ago. +Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not +support 31-bit forms of Unicode (UTF-32 or UCS-4). = -(a)itemize @bullet -(a)item @email{steve@@xemacs.org, SL Baur} +(a)node Q1.8.9, , Q1.8.8, Introduction +(a)unnumberedsubsec Q1.8.9: How does XEmacs display Unicode? + +Mule doesn't have a Unicode charset internally, so there's nothing to +bind a Unicode registry to. It would not be straightforward to create, +either, because Unicode is not ISO 2022-compatible. You'd have to +translate it to multiple 96x96 pages. + +This means that Mule-UCS uses ordinary national fonts for display. This +is not really a problem, except for those languages that use the Unified +Han characters. The problem here is that Mule-UCS maps from Unicode +code points to national character sets in a deterministic way. By +default, this means that Japanese fonts are tried first, then Chinese, +then Korean. To change the priority ordering, use the command +`un-define-change-charset-order'. + +It also means you can't use Unicode fonts directly, at least not without +extreme hackery. You can run -nw with (set-terminal-coding-system +'utf-8) if you really want a Unicode font for some reason. = -(a)item @email{hniksic@@xemacs.org, Hrvoje Niksic} +Real Unicode support will be introduced in XEmacs 22.0. = -(a)item @email{binge@@aloft.att.com, Curtis.N.Bingham} +(a)node Installation, Editing, Introduction, Top +(a)unnumbered 2 Installation and Troubleshooting = -(a)item @email{bruncott@@dormeur.inria.fr, Georges Brun-Cottan} +This is part 2 of the XEmacs Frequently Asked Questions list. This +section is devoted to Installation, Maintenance and Troubleshooting. = -(a)item @email{rjc@@cogsci.ed.ac.uk, Richard Caley} +(a)menu +2.0: Installation (General) +* Q2.0.1:: How do I build and install XEmacs? +* Q2.0.2:: Where do I find external libraries? +* Q2.0.3:: How do I specify the paths that XEmacs uses for finding fi= les? +* Q2.0.4:: Running XEmacs without installing +* Q2.0.5:: XEmacs is too big + +2.1: Package Installation +* Q2.1.1:: How do I install the packages? +* Q2.1.2:: Can I install the packages individually? +* Q2.1.3:: Can I install the packages automatically? +* Q2.1.4:: Can I upgrade or remove packages? +* Q2.1.5:: Which packages to install? +* Q2.1.6:: Can you describe the package location process in more deta= il? +* Q2.1.7:: EFS fails with "500 AUTH not understood" + +2.2: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW) +* Q2.2.1:: Libraries in non-standard locations +* Q2.2.2:: Why can't I strip XEmacs? + +2.3: Windows Installation (Windows, Cygwin, MinGW) +* Q2.3.1:: What exactly are all the different ways to build XEmacs un= der Windows? +* Q2.3.2:: What compiler/libraries do I need to compile XEmacs? +* Q2.3.3:: How do I compile the native port? +* Q2.3.4:: What do I need for Cygwin? +* Q2.3.5:: How do I compile under Cygwin? +* Q2.3.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin fl= ag to gcc})? +* Q2.3.7:: How do I compile with X support? +* Q2.3.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found= (NEW) + +2.4: General Troubleshooting +* Q2.4.1:: How do I deal with bugs or with problems building, install= ing, or running? +* Q2.4.2:: Help! XEmacs just crashed on me! +* Q2.4.3:: XEmacs crashes and I compiled it myself. +* Q2.4.4:: How to debug an XEmacs problem with a debugger +* Q2.4.5:: I get a cryptic error message when trying to do something. +* Q2.4.6:: XEmacs hangs when I try to do something. +* Q2.4.7:: I get an error message when XEmacs is running in batch mod= e. +* Q2.4.8:: The keyboard or mouse is not working properly, or I have s= ome other event-related problem. +* Q2.4.9:: @kbd{C-g} doesn't work for me. Is it broken? +* Q2.4.10:: How do I debug process-related problems? +* Q2.4.11:: XEmacs is outputting lots of X errors. +* Q2.4.12:: After upgrading, XEmacs won't do `foo' any more! + +2.5: Startup-Related Problems +* Q2.5.1:: XEmacs cannot connect to my X Terminal! +* Q2.5.2:: Startup problems related to paths or package locations. +* Q2.5.3:: XEmacs won't start without network. +* Q2.5.4:: Startup warnings about deducing proper fonts? +* Q2.5.5:: Warnings from incorrect key modifiers. +* Q2.5.6:: XEmacs 21.1 on Windows used to spawn an ugly console windo= w on every startup. Has that been fixed? +(a)end menu = -(a)item @email{cognot@@ensg.u-nancy.fr, Richard Cognot} +(a)unnumberedsec 2.0: Installation (General) = -(a)item @email{daku@@nortel.ca, Mark Daku} +(a)node Q2.0.1, Q2.0.2, Installation, Installation +(a)unnumberedsubsec Q2.0.1: How do I build and install XEmacs? = -(a)item @email{wgd@@martigny.ai.mit.edu, William G. Dubuque} +See the file @file{etc/NEWS} for information on new features and other +user-visible changes since the last version of XEmacs. = -(a)item @email{eeide@@cs.utah.edu, Eric Eide} +The file @file{INSTALL} in the top-level directory says how to bring +up XEmacs on Unix and Cygwin, once you have loaded the entire subtree +of this directory. = -(a)item @email{af@@biomath.jussieu.fr, Alain Fauconnet} +See the file @file{nt/README} for instructions on building XEmacs for +Microsoft Windows. = -(a)item @email{cflatter@@nrao.edu, Chris Flatters} +(a)xref{Q2.1.1}, for the installation of (essential) add on packages. = -(a)item @email{ginsparg@@adra.com, Evelyn Ginsparg} +(a)node Q2.0.2, Q2.0.3, Q2.0.1, Installation +(a)unnumberedsubsec Q2.0.2: Where do I find external libraries? = -(a)item @email{hall@@aplcenmp.apl.jhu.edu, Marty Hall} +All external libraries used by XEmacs can be found on the XEmacs web +site +(a)iftex +@* +(a)end iftex +(a)uref{http://www.xemacs.org/Download/optLibs.html}. = -(a)item @email{dkindred@@cmu.edu, Darrell Kindred} +The library versions available here are known to work with XEmacs. +(Newer versions will probably work as well but we can't guarantee it.) +We try to keep the libraries up-to-date but may not always succeed. +Check the above page for the canonical locations of the external librari= es, +allowing you to download the latest, bleeding-edge versions. = -(a)item @email{dmoore@@ucsd.edu, David Moore} +(a)node Q2.0.3, Q2.0.4, Q2.0.2, Installation +(a)unnumberedsubsec Q2.0.3: How do I specify the paths that XEmacs uses = for finding files? = -(a)item @email{arup+@@cmu.edu, Arup Mukherjee} +You can specify what paths to use by using a number of different flags +when running configure. See the section MAKE VARIABLES in the top-level +file INSTALL in the XEmacs distribution for a listing of those flags. = -(a)item @email{nickel@@prz.tu-berlin.de, Juergen Nickelsen} +Most of the time, however, the simplest fix is: @strong{do not} specify +paths as you might for GNU Emacs. XEmacs can generally determine the +necessary paths dynamically at run time. The only path that generally +needs to be specified is the root directory to install into. That can +be specified by passing the @code{--prefix} flag to configure. For a +description of the XEmacs install tree, please consult the @file{NEWS} +file. = -(a)item @email{powell@@csl.ncsa.uiuc.edu, Kevin R. Powell} +(a)node Q2.0.4, Q2.0.5, Q2.0.3, Installation +(a)unnumberedsubsec Q2.0.4: Running XEmacs without installing = -(a)item @email{dworkin@@ccs.neu.edu, Justin Sheehy} +How can I just try XEmacs without installing it? = -(a)item @email{stig@@hackvan.com, Stig} +XEmacs will run in place without requiring installation and copying of +the Lisp directories, and without having to specify a special build-time +flag. It's the copying of the Lisp directories that requires so much +space. XEmacs is largely written in Lisp. = -(a)item @email{Aki.Vehtari@@hut.fi, Aki Vehtari} -(a)end itemize +A good method is to make a shell alias for xemacs: = -(a)unnumberedsec 1.4: Internationalization +(a)example +alias xemacs=3D/src/xemacs-21.5/src/xemacs +(a)end example = -(a)node Q1.4.1, Q1.4.2, Q1.3.3, Introduction -(a)unnumberedsubsec Q1.4.1: What is the status of internationalization s= upport aka MULE (including Asian language support? +(You will obviously use whatever directory you downloaded the source +tree to instead of @file{/src/xemacs-21.5}). = -Both the stable and development versions of XEmacs include -internationalization support (aka MULE). MULE currently (21.4) works on -UNIX and Linux systems. It is possible to build with MULE on Windows -systems, but if you really need MULE on Windows, it is recommended that -you build and use the development (21.5) version, and deal with the -instability of the development tree. Binaries compiled without MULE -support run faster than MULE capable XEmacsen. +This will let you run XEmacs without massive copying. = -(a)node Q1.4.2, Q1.4.3, Q1.4.1, Introduction -(a)unnumberedsubsec Q1.4.2: How can I help with internationalization? +(a)node Q2.0.5, Q2.1.1, Q2.0.4, Installation +(a)unnumberedsubsec Q2.0.5: XEmacs is too big = -If you would like to help, you may want to join the -(a)email{xemacs-mule@@xemacs.org} mailing list. Especially needed are -people who speak/write languages other than English, who are willing to -use XEmacs/MULE regularly, and have some experience with Elisp. +The space required by the installation directories can be +reduced dramatically if desired. Gzip all the .el files. Remove all +the packages you'll never want to use. Remove the TexInfo manuals. +Remove the Info (and use just hardcopy versions of the manual). Remove +most of the stuff in etc. Remove or gzip all the source code. Gzip or +remove the C source code. Configure it so that copies are not made of +the support lisp. = -Translations of the TUTORIAL and man page are welcome, and XEmacs does -support multilingual menus, but we have few current translations. +These are all Emacs Lisp source code and bytecompiled object code. You +may safely gzip everything named *.el here. You may remove any package +you don't use. @emph{Nothing bad will happen if you delete a package +that you do not use}. You must be sure you do not use it though, so be +conservative at first. = -(a)xref{Q1.2.2, How do I become a Beta Tester?}. +Any package with the possible exceptions of xemacs-base, and EFS are +candidates for removal. Ask yourself, @emph{Do I ever want to use this +package?} If the answer is no, then it is a candidate for removal. = -(a)node Q1.4.3, Q1.4.4, Q1.4.2, Introduction -(a)unnumberedsubsec Q1.4.3: How do I type non-ASCII characters? +First, gzip all the .el files. Then go about package by package and +start gzipping the .elc files. Then run XEmacs and do whatever it is +you normally do. If nothing bad happens, then remove the package. You +can remove a package via the PUI interface = +(@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages +you wish to delete, and then @kbd{x} to delete them. = -(a)xref{Q3.0.5, How can you type in special characters in XEmacs?}, in -part 3 of this FAQ, for some simple methods that also work in non-MULE -builds of XEmacs (but only for one-octet coded character sets, and -mostly for ISO 8859/1). Many of the methods available for Cyrillic -(@pxref{Q1.4.7, How about Cyrillic modes?}) work without MULE. MULE -has more general capabilities. @xref{Q1.4.5, Please explain the -various input methods in MULE/XEmacs}. +Another method is to do @code{M-x package-get-delete-package}. = -(a)xref{Q3.2.8, How do I display non-ASCII characters?}, which covers -display of non-ASCII characters. +(a)unnumberedsec 2.1: Package Installation = -(a)node Q1.4.4, Q1.4.5, Q1.4.3, Introduction -(a)unnumberedsubsec Q1.4.4: Can XEmacs messages come out in a different = language? +(a)node Q2.1.1, Q2.1.2, Q2.0.5, Installation +(a)unnumberedsubsec Q2.1.1: How do I install the packages? = -The message-catalog support was written but is badly bit-rotted. XEmacs -20 and 21 did @emph{not} support it, and early releases of XEmacs 22 -will not either. +There are three ways to install the packages. = -However, menubar localization @emph{does} work. To enable it, add to -your @file{Emacs} file entries like this: +(a)enumerate +(a)item +Manually, all at once, using the 'Sumo Tarball'. +(a)item +Manually, using individual package tarballs. +(a)item +Automatically, using the package tools from XEmacs. +(a)end enumerate = -(a)example -Emacs*XlwMenu.resourceLabels: True -Emacs*XlwMenu.file.labelString: Fichier -Emacs*XlwMenu.openInOtherWindow.labelString: In anderem Fenster oeffnen -(a)end example +If you don't want to mess with the packages, it is easiest to just +grab them manually, all at once. (For the other two ways, +(a)xref{Q2.1.2}, and @xref{Q2.1.3}.) Download the file = -The name of the resource is derived from the non-localized entry by -removing punctuation and capitalizing as above. +(a)file{xemacs-sumo.tar.gz} = -(a)node Q1.4.5, Q1.4.6, Q1.4.4, Introduction -(a)unnumberedsubsec Q1.4.5: Please explain the various input methods in = MULE/XEmacs +For an XEmacs compiled with Mule you also need = -Mule supports a wide variety of input methods. There are three basic -classes: Lisp implementations, generic platform support, and library -interfaces. +(a)file{xemacs-mule-sumo.tar.gz} = -(a)emph{Lisp implementations} include Quail, which provides table-driven= input -methods for almost all the character sets that Mule supports (including -all of the ISO 8859 family, the Indic languages, Thai, and so on), and -SKK, for Japanese. (SKK also supports an interface to an external -"dictionary server" process.) Quail supports both typical "dead-key" -methods (eg, in the "latin-1-prefix" method, @kbd{" a} produces =C3=A4, = LATIN -SMALL LETTER A WITH DIAERESIS), and the complex dictionary-based phonetic -methods used for Asian ideographic languages like Chinese. +These are in the @file{packages} directory on your XEmacs mirror +archive: @uref{ftp://ftp.xemacs.org/pub/xemacs/packages} or its +mirrors. N.B. They are called 'Sumo Tarballs' for good reason. They +are currently about 19MB and 4.5MB (gzipped) respectively. = -Lisp implementations can be less powerful (but they are not perceptibly -inefficient), and of course are not portable to non-Emacs applications. -The incompatibility can be very annoying. On the other hand, they -require no special platform support or external libraries, so if you can -display the characters, Mule can input them for you and you can edit, -anywhere. +Install them on Unix and Mac OS X using the shell/Terminal command = -(a)emph{Generic platform support} is currently limited to the X Input -Method (XIM) framework, although support for MSIME (for MS Windows) is -planned, and IIIMF (Sun's Internet-Intranet Input Method Framework) -support is extremely desirable. XIM is enabled at build time by use of -the @samp{--with-xim} flag to @code{configure}. For use of XIM, see -your platform documentation. However, normally the input method you use -is specified via the @samp{LANG} and @samp{XMODIFIERS} environment -variables. +(a)code{cd $prefix/lib/xemacs ; gunzip -c | tar xf -} = -Of course, input skills are portable across most applications. However, -especially in modern GUI systems the habit of using bucky bits has -fallen into sad disuse, and many XIM systems are poorly configured for -use with Emacs. For example, the kinput2 input manager (a separate -process providing an interface between Japanese dictionary servers such -as Canna and Wnn, and the application) tends to gobble up keystrokes -generating Meta characters. This means that to edit while using an XIM -input method, you must toggle the input method off every time you want -to use @kbd{M-f}. Your mileage may vary. +Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to +(a)file{configure}, and defaults to @file{/usr/local}. = -(a)emph{Library interfaces} are most common for Japanese, although Wnn -supports Chinese (traditional and simplified) and Korean. There are -Chinese and Korean input servers available, but we do not know of any -patches for XEmacs to use them directly. You can use them via -IM-enabled terminals, by manipulating the terminal coding systems. We -describe only the Japanese-oriented systems here. The advantage of -these systems is that they are very powerful, and on platforms where -they are available there is typically a wide range of applications that -support them. Thus your input skills are portable across applications. +If you have GNU tar you can use: = -Mule provides built-in interfaces to the following input methods: Wnn4, -Wnn6, Canna, and SJ3. These can be configured at build time. There are -patches available (no URL, sorry) to support the SKK server, as well. -Wnn and SJ3 use the @code{egg} user interface. The interface for Canna -is specialized to Canna. +(a)code{cd $prefix/lib/xemacs ; tar zxvf } = -Wnn supports Japanese, Chinese and Korean. It is made by OMRON and Ky=C3= =B4to -University. It is a powerful and complex system. Wnn4 is free and Wnn6 -is not. Wnn uses grammatical hints and probability of word association, -so in principle Wnn can be cleverer than other methods. +If you have the packages somewhere nonstandard and don't want to bother +with @samp{$prefix} (for example, you're a developer and are compiling +the packages yourself, and want your own private copy of everything), +you can also directly specify this using @file{configure}. To do this +with 21.5 and above use the @samp{--with-package-prefix} parameter to +specify the directory under which you untarred the above tarballs. +Under 21.4 and previous you need to use @samp{--package-path}. Using +these options looks something like this: = -Canna, made by NEC, supports only Japanese. It is a simple and powerful -system. Canna uses only grammar, but its grammar and dictionary are -quite sophisticated. So for standard modern Japanese, Canna seems -cleverer than Wnn4. In addition, the UNIX version of Canna is free (now -there is a Microsoft Windows version). +(a)example + configure --package-path=3D"~/.xemacs::/src/xemacs/site-packages:/src= /xemacs/xemacs-packages:/src/xemacs/mule-packages" ... +(a)end example = -SJ3, by Sony, supports only Japanese. +Under Windows, you need to place the above @samp{tar.gz} files in the +directory specified using the @samp{PACKAGE_PREFIX} value in +(a)file{nt/config.inc} and by default is @file{\Program Files\XEmacs}. +(To untar a @samp{tar.gz} file you will need to use a utility such as +WinZip, unless you have Cygwin or a similar environment installed, in +which case the above Unix shell command should work fine.) If you want +the packages somewhere else, just change @samp{PACKAGE_PREFIX}. = -Egg consists of following parts: +Note that XEmacs finds the packages automatically anywhere underneath +the directory tree where it expects to find the packages. All you +need to do is put stuff there; you don't need to run any program to +tell XEmacs to find the packges, or do anything of that sort. = -(a)enumerate -(a)item -Input character Translation System (ITS) layer. -It translates ASCII inputs to Kana/PinYin/Hangul characters. +However, XEmacs will only notice newly installed packages when it +starts up, so you will have to restart if you are already running +XEmacs. = -(a)item -Kana/PinYin/Hangul to Kanji transfer layer. -The interface layer to network Kana-Kanji server (Wnn and Sj3). -(a)end enumerate +For more details, @xref{Startup Paths,,,xemacs, the XEmacs User's +Manual}, and @xref{Packages,,,xemacs, the XEmacs User's Manual}. = -These input methods are modal. They have a raw (alphabet) mode, a -phonetic input mode, and Kana-Kanji transfer mode. However there are -mode-less input methods for Egg and Canna. @samp{boiled-egg} is a -mode-less input method running on Egg. For Canna, @samp{canna.el} has a -tiny boiled-egg-like command, @code{(canna-boil)}, and there are some -boiled-egg-like utilities. +As the Sumo tarballs are not regenerated as often as the individual +packages, it is recommended that you use the automatic package tools +afterwards to pick up any recent updates. = -Much of this information was provided by @email{morioka@@jaist.ac.jp, -MORIOKA Tomohiko}. +(a)emph{NOTE}: For detailed information about how the package +hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp +Reference Manual}. = -(a)node Q1.4.6, Q1.4.7, Q1.4.5, Introduction -(a)unnumberedsubsec Q1.4.6: How do I portably code for MULE/XEmacs? +(a)node Q2.1.2, Q2.1.3, Q2.1.1, Installation +(a)unnumberedsubsec Q2.1.2: Can I install the packages individually? = -MULE has evolved rapidly over the last few years, and the original third -party patch (for GNU Emacs 19), GNU Emacs 20+, and XEmacs 20+ have quite -different implementations. The APIs also vary although recent versions -of XEmacs have tended to converge to the GNU Emacs standard. +Yes, you can download individual packages from the FTP site (@pxref{Q2.1= .1}). Since packages are automatically noticed at startup, you just have t= o put them in the right place. = -MULE implementations are going to continue to evolve. Both GNU Emacs -and XEmacs are working hard on Unicode support, which will involve new -APIs and probably variations on old ones. For XEmacs 22, the old ISO -2022-based system for recognizing encodings will be replaced by a much -more flexible system, which should improve accuracy of automatic coding -detections, but will also involve new APIs. +Note: If you are upgrading packages already installed, it's best to +remove the old package first (@pxref{Q2.1.4}). = -(a)email{morioka@@jaist.ac.jp, MORIOKA Tomohiko} writes: +For example if we are installing the @samp{xemacs-base} +package (version 1.48): = -(a)quotation -The application implementor must write separate code for these mule -variants. [Please don't hesitate to report these variants to us; they -are not, strictly speaking, bugs, but they give third-party developers -the same kind of creepy-crawly feeling. We'll do what we can. -- Ed.] +(a)example + mkdir $prefix/lib/xemacs/xemacs-packages RET # if it does not exist y= et + cd $prefix/lib/xemacs/xemacs-packages RET + gunzip -c /path/to/xemacs-base-1.48-pkg.tar.gz | tar xvf - RET +(a)end example = -MULE and the next version of Emacs are similar but the symbols are very -different---requiring separate code as well. +Or if you have GNU tar, the last step can be: = -Namely we must support 3 kinds of mule variants and 4 or 5 or 6 kinds of -emacs variants... (;_;) I'm shocked, so I wrote a wrapper package called -(a)code{emu} to provide a common interface. [There is an XEmacs package -of APEL which provides much more comprehensive coverage. Be careful, -however; APEL has problems of its own. -- Ed.] +(a)example + tar zxvf /path/to/xemacs-base-1.48-pkg.tar.gz RET +(a)end example = -I have the following suggestions about dealing with mule variants: +For MULE related packages, it is best to untar into the @samp{mule-packa= ges} +hierarchy, i.e. for the @samp{mule-base} package, version 1.37: = -(a)itemize @bullet -(a)item -(a)code{(featurep 'mule)} @code{t} on all mule variants +(a)example + mkdir $prefix/lib/xemacs/mule-packages RET # if it does not exist yet + cd $prefix/lib/xemacs/mule-packages RET + gunzip -c /path/to/mule-base-1.37-pkg.tar.gz | tar xvf - RET +(a)end example = -(a)item -(a)code{(boundp 'MULE)} is @code{t} on only MULE. Maybe the next version -of Emacs will not have this symbol. +Or if you have GNU tar, the last step can be: = -(a)item -MULE has a variable @code{mule-version}. Perhaps the next version of -Emacs will have this variable as well. -(a)end itemize +(a)example + tar zxvf /path/to/mule-base-1.37-pkg.tar.gz RET +(a)end example = -Following is a sample to distinguish mule variants: +(a)node Q2.1.3, Q2.1.4, Q2.1.2, Installation +(a)unnumberedsubsec Q2.1.3: Can I install the packages automatically? = -(a)lisp -(if (featurep 'mule) - (cond ((boundp 'MULE) - ;; for original Mule - ) - ((string-match "XEmacs" emacs-version) - ;; for XEmacs with Mule - ) - (t - ;; for next version of Emacs - )) - ;; for old emacs variants - ) -(a)end lisp -(a)end quotation +XEmacs comes with some tools to make the periodic updating and +installing easier. It will notice if new packages or versions are +available and will fetch them from the FTP site. = -(a)node Q1.4.7, Q1.4.8, Q1.4.6, Introduction -(a)unnumberedsubsec Q1.4.7: How about Cyrillic modes? +Unfortunately this requires that a few packages are already in place. +You will have to install them by hand as above or use a SUMO tarball. +This requirement will hopefully go away in the future. The packages +you need are: = -(a)email{ilya@@math.ohio-state.edu, Ilya Zakharevich} writes: +(a)example + efs - To fetch the files from the FTP site or mirrors. + xemacs-base - Needed by efs. +(a)end example = -(a)quotation -There is a cyrillic mode in the file @file{mysetup.zip} in -(a)iftex -@* -(a)end iftex -(a)uref{ftp://ftp.math.ohio-state.edu/pub/users/ilya/emacs/}. This is a -modification to @email{ava@@math.jhu.ed, Valery Alexeev's} @file{russian= .el} -which can be obtained from -(a)end quotation +and optionally: = -(a)uref{http://www.math.uga.edu/~valery/russian.el}. +(a)example + mailcrypt - For PGP verification of the package-index file. +(a)end example = -(a)email{d.barsky@@ee.surrey.ac.uk, Dima Barsky} writes: +After installing these by hand, fire up XEmacs and follow these +steps. = -(a)quotation -There is another cyrillic mode for both GNU Emacs and XEmacs by -(a)email{manin@@camelot.mssm.edu, Dmitrii -(Mitya) Manin} at -(a)iftex +(a)enumerate +(a)item +Choose a download site. +(a)itemize @bullet +(a)item +via menu: Tools -> Packages -> Set Download Site = +(a)item +via keyb: M-x customize-variable RET package-get-remote RET +(put in the details of remote host and directory) +(a)end itemize = -(a)end iftex -(a)uref{http://kulichki-lat.rambler.ru/centrolit/manin/cyr.el}. -(a)c Link above, was dead. -(a)c Changed to russian host instead -(a)end quotation +If the package tarballs _AND_ the package-index file are in a +local directory, you can: M-x pui-set-local-package-get-directory RET = -(a)email{rebecca.ore@@op.net, Rebecca Ore} writes: +(a)item +Obtain a list of packages and display the list in a buffer named +"*Packages*". +(a)itemize @bullet +(a)item +menu: Tools -> Packages -> List & Install +(a)item +keyb: M-x pui-list-packages RET +(a)end itemize = -(a)quotation -The fullest resource I found on Russian language use (in and out of -XEmacs) is @uref{http://www.ibiblio.org/sergei/Software/Software.html} -(a)end quotation +XEmacs will now connect to the remote site and download the +latest package-index file. = -(a)node Q1.4.8, Q1.4.9, Q1.4.7, Introduction -(a)unnumberedsubsec Q1.4.8: Does XEmacs support Unicode? +The resulting buffer, "*Packages*" has brief instructions at the +end of the buffer. = -To get Unicode support, you need a Mule-enabled XEmacs. +(a)item +Choose the packages you wish to install. +(a)itemize @bullet +(a)item +mouse: Click button 2 on the package name. +(a)item +keyb: RET on the package name +(a)end itemize = -21.5 has internal support for Unicode and supports it fully, although we -don't yet use it as the internal encoding. +(a)item +Make sure you have everything you need. +(a)itemize @bullet +(a)item +menu: Packages -> Add Required +(a)item +keyb: r +(a)end itemize = -21.4 supports Unicode partially -- as an external encoding for files, -processes, and terminals, but without font support. @xref{Q1.4.9, How -does XEmacs display Unicode?}. To get Unicode support in 21.4, -install Mule-UCS from packages in the usual way, and put +XEmacs will now search for packages that are required by the +ones that you have chosen to install and offer to select +those packages also. = -(a)example -(require 'un-define) -(set-coding-priority-list '(utf-8)) -(set-coding-category-system 'utf-8 'utf-8) -(a)end example +For novices and gurus alike, this step can save your bacon. +It's easy to forget to install a critical package. = -in your init file to enable the UTF-8 coding system. You may wish to -view the documentation of @code{set-coding-priority-list} if you find -that files that are not UTF-8 are being mis-recognized as UTF-8. +(a)item +Download and install the packages. +(a)itemize @bullet +(a)item +menu: Packages -> Install/Remove Selected +(a)item +keyb: x +(a)end itemize +(a)end enumerate = -Install standard national fonts (not Unicode fonts) for all character -sets you use. @xref{Q1.4.9, How does XEmacs display Unicode??}. +(a)node Q2.1.4, Q2.1.5, Q2.1.3, Installation +(a)unnumberedsubsec Q2.1.4: Can I upgrade or remove packages? = -Mule-UCS also supports 16-bit forms of Unicode (UTF-16). It does not -support 31-bit forms of Unicode (UTF-32 or UCS-4). +As the exact files and their locations contained in a package may +change it is recommended to remove a package first before installing a +new version. In order to facilitate removal each package contains an +pgkinfo/MANIFEST.pkgname file which list all the files belong to the +package. M-x package-admin-delete-binary-package RET can be used to +remove a package using this file. = -(a)node Q1.4.9, Q1.5.1, Q1.4.8, Introduction -(a)unnumberedsubsec Q1.4.9: How does XEmacs display Unicode? +Note that the interactive package tools included with XEmacs already do +this for you. = -Mule doesn't have a Unicode charset internally, so there's nothing to -bind a Unicode registry to. It would not be straightforward to create, -either, because Unicode is not ISO 2022-compatible. You'd have to -translate it to multiple 96x96 pages. +(a)node Q2.1.5, Q2.1.6, Q2.1.4, Installation +(a)unnumberedsubsec Q2.1.5: Which packages to install? = -This means that Mule-UCS uses ordinary national fonts for display. This -is not really a problem, except for those languages that use the Unified -Han characters. The problem here is that Mule-UCS maps from Unicode -code points to national character sets in a deterministic way. By -default, this means that Japanese fonts are tried first, then Chinese, -then Korean. To change the priority ordering, use the command -`un-define-change-charset-order'. +Unless you are an advanced user, just install everything. = -It also means you can't use Unicode fonts directly, at least not without -extreme hackery. You can run -nw with (set-terminal-coding-system -'utf-8) if you really want a Unicode font for some reason. +If you really want to install only what's absolutely needed, a good +minimal set of packages for XEmacs-latin1 would be = -Real Unicode support will be introduced in XEmacs 22.0. +(a)example +xemacs-base, xemacs-devel, c-support, cc-mode, debug, dired, efs, +edit-utils, fsf-compat, mail-lib, net-utils, os-utils, prog-modes, +text-modes, time, mailcrypt +(a)end example = -(a)unnumberedsec 1.5: Getting Started +If you are using the XEmacs package tools, don't forget to do: = -(a)node Q1.5.1, Q1.5.2, Q1.4.9, Introduction -(a)unnumberedsubsec Q1.5.1: What is an @file{init.el} or @file{.emacs} a= nd is there a sample one? +(a)example + Packages -> Add Required +(a)end example = -The @file{init.el} or @file{.emacs} file is used to customize XEmacs to -your tastes. Starting in 21.4, the preferred location for the init file -is @file{~/.xemacs/init.el}; in previous versions, it was -(a)file{~/.emacs}. 21.4 still accepts the old location, but the first -time you run it, it will ask to migrate your file to the new location. -If you answer yes, the file will be moved, and a "compatibility" -(a)file{.emacs} file will be placed in the old location so that you can -still run older versions of XEmacs, and versions of GNU Emacs, which -expect the old location. The @file{.emacs} file present is just a stub -that loads the real file in @file{~/.xemacs/init.el}. +To make sure you have everything that the packages you have chosen to +install need. = -No two init files are alike, nor are they expected to be alike, but -that's the point. The XEmacs distribution contains an excellent starter -example in the @file{etc/} directory called @file{sample.init.el} -(starting in 21.4) or @file{sample.emacs} in older versions. Copy this -file from there to @file{~/.xemacs/init.el} (starting in 21.4) or -(a)file{~/.emacs} in older versions, where @samp{~} means your home -directory, of course. Then edit it to suit. +(a)xref{Q1.7.2}, for a description of the various packages. = -You may bring the @file{sample.init.el} or @file{sample.emacs} file into -an XEmacs buffer from the menubar. (The menu entry for it is always -under the @samp{Help} menu, but its location under that has changed in -various versions. Recently, look under the @samp{Samples} submenu.) To -determine the location of the @file{etc/} directory type the command -(a)kbd{C-h v data-directory @key{RET}}. +(a)node Q2.1.6, Q2.1.7, Q2.1.5, Installation +(a)unnumberedsubsec Q2.1.6: Can you describe the package location proces= s in more detail? = -(a)node Q1.5.2, Q1.5.3, Q1.5.1, Introduction -(a)unnumberedsubsec Q1.5.2: Where do I put my @file{init.el} file? +On startup XEmacs looks for packages in so-called package hierarchies. +Normally, there are three system wide hierarchies, like this: = -(a)file{init.el} is the name of the init file starting with 21.4, and is -located in the subdirectory @file{.xemacs/} of your home directory. In -prior versions, the init file is called @file{.emacs} and is located in -your home directory. +(a)example +$prefix/lib/xemacs/xemacs-packages/ + Normal packages go here. = -Your home directory under Windows is determined by the @samp{HOME} -environment variable. If this is not set, it defaults to @samp{C:\}. -To set this variable, modify @file{AUTOEXEC.BAT} under Windows 95/98, or -select @samp{Control Panel->System->Advanced->Environment Variables...} -under Windows NT/2000. +$prefix/lib/xemacs/mule-packages/ + Mule packages go here and are only searched by MULE-enabled XEmacse= n. = -(a)node Q1.5.3, Q1.5.4, Q1.5.2, Introduction -(a)unnumberedsubsec Q1.5.3: Can I use the same @file{init.el} with the o= ther Emacs? +$prefix/lib/xemacs/site-packages/ + Local and 3rd party packages go here. +(a)end example = -Yes. The sample @file{init.el} included in the XEmacs -distribution will show you how to handle different versions and flavors -of Emacs. +This is what you get when you untar the SUMO tarballs under +(a)file{$prefix/lib/xemacs}. = -(a)node Q1.5.4, Q1.5.5, Q1.5.3, Introduction -(a)unnumberedsubsec Q1.5.4: Any good XEmacs tutorials around? +(a)file{$prefix} is specified using the @samp{--prefix} parameter to +(a)file{configure}, and defaults to @file{usr/local}. = -There's the XEmacs tutorial available from the Help Menu under -(a)samp{Help->Tutorials}, or by typing @kbd{C-h t}. To check whether -it's available in a non-english language, type @kbd{C-u C-h t TAB}, type -the first letters of your preferred language, then type @key{RET}. +If the package path is not explicitly specified, XEmacs looks for the +package directory @file{xemacs-packages} (and @file{mule-packages} and +(a)file{site-packages}) first under @samp{~/.xemacs}, then for a sister +directory @file{lib/xemacs-VERSION} of the directory in which the +XEmacs executable is located, then for a sister directory +(a)file{lib/xemacs}. The XEmacs executable (under Unix at least) is +installed by default in @file{/usr/local/bin}; this explains why +XEmacs in its default installation will find packages that you put +under @file{/usr/local/lib/xemacs}. = -(a)comment There's an Emacs Lisp tutorial at -(a)comment -(a)comment @example -(a)comment @uref{ftp://prep.ai.mit.edu/pub/gnu/emacs-lisp-intro-1.04.tar= .gz}. -(a)comment @end example -(a)comment -(a)comment @email{erik@@petaxp.rug.ac.be, Erik Sundermann} has made a tu= torial web -(a)comment page at -(a)comment @iftex -(a)comment @* -(a)comment @end iftex -(a)comment @uref{http://petaxp.rug.ac.be/~erik/xemacs/}. +You can specify where exactly XEmacs looks for packages by using the +(a)samp{--with-package-prefix} or @samp{--with-package-path} parameters = to +(a)file{configure} (or the equivalent settings in @file{config.inc}, und= er +Windows), or setting the @samp{EMACSPACKAGEPATH} environment variable +(which has the same format as @samp{--with-package-path}). @xref{Q2.1.1= }. = -(a)node Q1.5.5, Q1.5.6, Q1.5.4, Introduction -(a)unnumberedsubsec Q1.5.5: May I see an example of a useful XEmacs Lisp= function? +See @file{configure.usage} for more info about the format of these +(a)file{configure} parameters. = -The following function does a little bit of everything useful. It does -something with the prefix argument, it examines the text around the -cursor, and it's interactive so it may be bound to a key. It inserts -copies of the current word the cursor is sitting on at the cursor. If -you give it a prefix argument: @kbd{C-u 3 M-x double-word} then it will -insert 3 copies. +In addition to the system wide packages, each user can have his own +packages installed under @file{~/.xemacs/}. If you want to install +packages there using the interactive tools, you need to set +(a)code{package-get-install-to-user-init-directory} to @code{t}. = -(a)lisp -(defun double-word (count) - "Insert a copy of the current word underneath the cursor" - (interactive "*p") - (let (here there string) - (save-excursion - (forward-word -1) - (setq here (point)) - (forward-word 1) - (setq there (point)) - (setq string (buffer-substring here there))) - (while (>=3D count 1) - (insert string) - (decf count)))) -(a)end lisp +The site-packages hierarchy replaces the old @file{site-lisp} +directory. XEmacs no longer looks into a @file{site-lisp} directly by +default. A good place to put @file{site-start.el} would be in +(a)file{$prefix/lib/xemacs/site-packages/lisp/}. = -The best way to see what is going on here is to let XEmacs tell you. -Put the code into an XEmacs buffer, and do a @kbd{C-h f} with the cursor -sitting just to the right of the function you want explained. Eg. move -the cursor to the SPACE between @code{interactive} and @samp{"*p"} and -hit @kbd{C-h f} to see what the function @code{interactive} does. Doing -this will tell you that the @code{*} requires a writable buffer, and -(a)code{p} converts the prefix argument to a number, and -(a)code{interactive} allows you to execute the command with @kbd{M-x}. +(a)node Q2.1.7, Q2.2.1, Q2.1.6, Installation +(a)unnumberedsubsec Q2.1.7: EFS fails with "500 AUTH not understood" (NE= W) = -(a)node Q1.5.6, Q1.5.7, Q1.5.5, Introduction -(a)unnumberedsubsec Q1.5.6: And how do I bind it to a key? +A typical error: FTP Error: USER request failed; 500 AUTH not understood. = -To bind to a key do: +Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends +on comp.emacs.xemacs: = -(a)lisp -(global-set-key "\C-cd" 'double-word) -(a)end lisp + tell your ftp client to not attempt AUTH authentication (or do not + use FTP servers that don't understand AUTH) = -Or interactively, @kbd{M-x global-set-key} and follow the prompts. +and notes that you need to add an element (often "-u") to +`efs-ftp-program-args'. Use M-x customize-variable, and verify the +needed flag with `man ftp' or other local documentation. = -(a)node Q1.5.7, Q1.5.8, Q1.5.6, Introduction -(a)unnumberedsubsec Q1.5.7: What's the difference between a macro and a = function? +(a)unnumberedsec 2.2: Unix/Mac OS X Installation (Also Relevant to Cygwi= n, MinGW) = -Quoting from the Lisp Reference (a.k.a @dfn{Lispref}) Manual: +(a)node Q2.2.1, Q2.2.2, Q2.1.7, Installation +(a)unnumberedsubsec Q2.2.1: Libraries in non-standard locations = -(a)dfn{Macros} enable you to define new control constructs and other -language features. A macro is defined much like a function, but instead -of telling how to compute a value, it tells how to compute another Lisp -expression which will in turn compute the value. We call this -expression the @dfn{expansion} of the macro. +If your libraries are in a non-standard location, you can specify the lo= cation +using the following flags to @file{configure}. Under 21.4 or earlier: = -Macros can do this because they operate on the unevaluated expressions -for the arguments, not on the argument values as functions do. They can -therefore construct an expansion containing these argument expressions -or parts of them. +(a)example +--site-libraries=3DWHATEVER +--site-includes=3DWHATEVER +(a)end example = -Do not confuse the two terms with @dfn{keyboard macros}, which are -another matter, entirely. A keyboard macro is a key bound to several -other keys. Refer to manual for details. +Under 21.5 or later: = -(a)node Q1.5.8, , Q1.5.7, Introduction -(a)unnumberedsubsec Q1.5.8: What is @code{Custom}? +(a)example +--with-site-libraries=3DWHATEVER +--with-site-includes=3DWHATEVER +(a)end example = -(a)code{Custom} is a system for customizing XEmacs options. +If you have multiple paths to specify, use the following syntax: = -You can access @code{Advanced (Customize)} from the @code{Options} menu -or invoking one of customize commands by typing eg. -(a)kbd{M-x customize}, @kbd{M-x customize-face}, -(a)kbd{M-x customize-variable} or @kbd{M-x customize-apropos}. +(a)example +--site-libraries=3D'/path/one /path/two /path/etc' +(a)end example = -There is also new @samp{browser} mode for Customize. -Try it out with @kbd{M-x customize-browse} +If the libraries and headers reside in the directories @samp{lib} and +(a)samp{include} of a common root (say @samp{/sw}) then both can be +specified with a single option: = -(a)node Installation, Display Subsystems, Introduction, Top -(a)unnumbered 2 Installation and Troubleshooting +(a)example +--site-prefixes=3DWHATEVER +(a)end example = -This is part 2 of the XEmacs Frequently Asked Questions list. This -section is devoted to Installation, Maintenance and Troubleshooting. +or for 21.5: + +(a)example +--with-site-prefixes=3DWHATEVER +(a)end example = -(a)menu -2.0: Installation (General), Packages -* Q2.0.1:: How do I install the packages? -* Q2.0.2:: I don't need no steenkin' packages. Do I? -* Q2.0.3:: Where do I find external libraries? -* Q2.0.4:: How do I specify the paths that XEmacs uses for finding fi= les? -* Q2.0.5:: Running XEmacs without installing -* Q2.0.6:: XEmacs is too big -* Q2.0.7:: EFS fails with "500 AUTH not understood" (NEW) - -2.1: Unix/Mac OS X Installation (Also Relevant to Cygwin, MinGW) -* Q2.1.1:: Libraries in non-standard locations -* Q2.1.2:: Why can't I strip XEmacs? -* Q2.1.3:: Compiling XEmacs with Netaudio. -* Q2.1.4:: Problems with Linux and ncurses. - -2.2: Windows Installation (Windows, Cygwin, MinGW) -* Q2.2.1:: What exactly are all the different ways to build XEmacs un= der Windows? -* Q2.2.2:: What compiler/libraries do I need to compile XEmacs? -* Q2.2.3:: How do I compile the native port? -* Q2.2.4:: What do I need for Cygwin? -* Q2.2.5:: How do I compile under Cygwin? -* Q2.2.6:: How do I compile using MinGW (aka @samp{the -mno-cygwin fl= ag to gcc})? -* Q2.2.7:: How do I compile with X support? -* Q2.2.8:: Cygwin XEmacs won't start -- cygXpm-noX4.dll was not found= (NEW) - -2.3: General Troubleshooting -* Q2.3.1:: Help! XEmacs just crashed on me! -* Q2.3.2:: XEmacs crashes and I compiled it myself. -* Q2.3.3:: How to debug an XEmacs problem with a debugger -* Q2.3.4:: I get a cryptic error message when trying to do something. -* Q2.3.5:: XEmacs hangs when I try to do something. -* Q2.3.6:: I get an error message when XEmacs is running in batch mod= e. -* Q2.3.7:: The keyboard or mouse is not working properly, or I have s= ome other event-related problem. -* Q2.3.8:: @kbd{C-g} doesn't work for me. Is it broken? -* Q2.3.9:: How do I debug process-related problems? -* Q2.3.10:: XEmacs is outputting lots of X errors. -* Q2.3.11:: After upgrading, XEmacs won't do `foo' any more! - -2.4: Startup-Related Problems -* Q2.4.1:: XEmacs cannot connect to my X Terminal! -* Q2.4.2:: XEmacs won't start on Windows. -* Q2.4.3:: XEmacs won't start without network. -* Q2.4.4:: Startup warnings about deducing proper fonts? -* Q2.4.5:: Warnings from incorrect key modifiers. -* Q2.4.6:: XEmacs 21.1 on Windows used to spawn an ugly console windo= w on every startup. Has that been fixed? -(a)end menu +(a)node Q2.2.2, Q2.3.1, Q2.2.1, Installation +(a)unnumberedsubsec Q2.2.2: Why can't I strip XEmacs? = -(a)unnumberedsec 2.0: Installation (General), Packages +(a)email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: = -(a)node Q2.0.1, Q2.0.2, Installation, Installation -(a)unnumberedsubsec Q2.0.1: How do I install the packages? +(a)quotation +Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The +link gives you a bare-boned emacs (called temacs). temacs is then run, +preloading some of the lisp files. The result is then dumped into a new +executable, named xemacs, which will contain all of the preloaded lisp +functions and data. = -Many people really liked the old way that packages were bundled and do -not want to mess with packages at all. You can grab all the packages at -once like you used to with old XEmacs versions. Download the file +Now, during the dump itself, the executable (code+data+symbols) is +written on disk using a special unexec() function. This function is +obviously heavily system dependent. And on some systems, it leads to an +executable which, although valid, cannot be stripped without damage. If +memory serves, this is especially the case for AIX binaries. On other +architectures it might work OK. = -(a)file{xemacs-sumo.tar.gz} +The Right Way to strip the emacs binary is to strip temacs prior to +dumping xemacs. This will always work, although you can do that only if +you install from sources (as temacs is @file{not} part of the binary +kits). +(a)end quotation = -For an XEmacs compiled with Mule you also need +(a)email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes: = -(a)file{xemacs-mule-sumo.tar.gz} +(a)quotation +Here is the trick: = -These are in the @file{packages} directory on your XEmacs mirror -archive. N.B. They are called 'Sumo Tarballs' for good reason. They -are currently about 15MB and 2.3MB (gzipped) respectively. +(a)enumerate +(a)item +[ ./configure; make ] = -Install them on Unix and Mac OS X using the shell/Terminal command +(a)item +rm src/xemacs = -(a)code{cd $prefix/lib/xemacs ; gunzip -c | tar xf -} +(a)item +strip src/temacs = -Where @samp{$prefix} is what you gave to the @samp{--prefix} flag to -(a)file{configure}, and defaults to @file{/usr/local}. +(a)item +make = -If you have the packages somewhere nonstandard and don't want to -bother with @samp{$prefix} (for example, you're a developer and are -compiling the packages yourself, and want your own private copy of -everything), you can also directly specify this using @file{configure}. -To do this under 21.5 and above use the @samp{--package-prefix} parameter -to specify the directory under which you untarred the above tarballs. -Under 21.4 and previous you need to use @samp{--package-path}, -something like this: +(a)item +cp src/xemacs /usr/local/bin/xemacs = -(a)example - configure --package-path=3D"~/.xemacs::/src/xemacs/site-packages:/src= /xemacs/xemacs-packages:/src/xemacs/mule-packages" ... -(a)end example +(a)item +cp lib-src/DOC-19.16-XEmacs +(a)iftex +\ @* +(a)end iftex +/usr/local/lib/xemacs-19.16/i586-unknown-linuxaout +(a)end enumerate +(a)end quotation = -Under Windows, you need to place the above @samp{tar.gz} files in the -directory specified using the @samp{PACKAGE_PREFIX} value in -(a)file{nt/config.inc} and by default is @file{\Program Files\XEmacs}. -(To untar a @samp{tar.gz} file you will need to use a utility such as -WinZip, unless you have Cygwin or a similar environment installed, in -which case the above Unix shell command should work fine.) If you want -the packages somewhere else, just change @samp{PACKAGE_PREFIX}. +(a)unnumberedsec 2.3: Windows Installation (Windows, Cygwin, MinGW) = -Note that XEmacs finds the packages automatically anywhere underneath -the directory tree where it expects to find the packages. All you -need to do is put stuff there; you don't need to run any program to -tell XEmacs to find the packges, or do anything of that sort. +(a)node Q2.3.1, Q2.3.2, Q2.2.2, Installation +(a)unnumberedsubsec Q2.3.1: What exactly are all the different ways to b= uild XEmacs under Windows? = -See @file{README.packages} in the top-level source directory for more -detailed installation instructions. +XEmacs can be built in several ways in the MS Windows environment. = -As the Sumo tarballs are not regenerated as often as the individual -packages, it is recommended that you use the automatic package tools -afterwards to pick up any recent updates. +The standard way is what we call the "native" port. It uses the Win32 +API and has no connection with X whatsoever -- it does not require X +libraries to build, nor does it require an X server to run. The native +port is the most reliable version and provides the best graphical +support. Almost all development is geared towards this version, and +there is little reason not to use it. = -(a)emph{More detailed info}: If the package path is not explicitly -specified, XEmacs looks for the package directory -(a)file{xemacs-packages} (and @file{mule-packages}, etc.) first under -(a)samp{~/.xemacs}, then for a sister directory -(a)file{lib/xemacs-VERSION} of the directory in which the XEmacs -executable is located, then for a sister directory @file{lib/xemacs}. -The XEmacs executable (under Unix at least) is installed by default in -(a)file{/usr/local/bin}; this explains why XEmacs in its default -installation will find packages that you put under -(a)file{/usr/local/lib/xemacs}. - -#### I'm not sure what exactly happens when the package path is -specifically given, as is the case when the @samp{--package-prefix} or -(a)samp{--package-path} options are given to @file{configure}, and -always under Microsoft Windows. +The second way to build is the Cygwin port. It takes advantage of +Cygnus emulation library under Win32. @xref{Q1.2.5, What are Cygwin +and MinGW, and do I need them to run XEmacs?}, for more information. = -(a)emph{NOTE}: For detailed information about how the package -hierarchies work, @xref{Package Overview,,,lispref, the XEmacs Lisp -Reference Manual}. +A third way is the MinGW port. It uses the Cygwin environment to +build but does not require it at runtime. @xref{Q1.2.5, What are +Cygwin and MinGW, and do I need them to run XEmacs?}, for more +information. = -(a)node Q2.0.2, Q2.0.3, Q2.0.1, Installation -(a)unnumberedsubsec Q2.0.2: I don't need no steenkin' packages. Do I? +Finally, you might also be able to build the non-Cygwin, non-MinGW "X" +port. This was actually the first version of XEmacs that ran under MS +Windows, and although the code is still in XEmacs, it's essentially +orphaned and it's unlikely it will compile without a lot of work. If +you want an MS Windows versin of XEmacs that supports X, use the Cygwin +version. (The X support there is actively maintained, so that Windows +developers can test the X support in XEmacs.) = -Strictly speaking, no. XEmacs will build and install just fine without -any packages installed. However, only the most basic editing functions -will be available with no packages installed, so installing packages is -an essential part of making your installed XEmacs _useful_. +(a)node Q2.3.2, Q2.3.3, Q2.3.1, Installation +(a)unnumberedsubsec Q2.3.2: What compiler/libraries do I need to compile= XEmacs? = -(a)node Q2.0.3, Q2.0.4, Q2.0.2, Installation -(a)unnumberedsubsec Q2.0.3: Where do I find external libraries? +You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have +some beta testers currently trying to compile with VC.NET, aka version +7.0, but we can't yet report complete success.) For the Cygwin and +MinGW versions, you need the Cygwin environment, which comes with GCC, +the compiler used for those versions. @xref{Q1.2.5, What are Cygwin +and MinGW, and do I need them to run XEmacs?}, for more information on +Cygwin and MinGW. = -All external libraries used by XEmacs can be found at the XEmacs FTP -site -(a)iftex -@* -(a)end iftex -(a)uref{http://ftp.xemacs.org/pub/aux/}. +(a)node Q2.3.3, Q2.3.4, Q2.3.2, Installation +(a)unnumberedsubsec Q2.3.3: How do I compile the native port? = -The library versions available here are known to work with XEmacs. -(Newer versions will probably work as well but we can't guarantee it.) -We try to keep the libraries up-to-date but may not always succeed. -If you want to make sure of getting the latest version, check the -canonical locations below. +Please read the file @file{nt/README} in the XEmacs distribution, which +contains the full description. = -The canonical locations (at the time of this writing) are as follows: +(a)node Q2.3.4, Q2.3.5, Q2.3.3, Installation +(a)unnumberedsubsec Q2.3.4: What do I need for Cygwin? = -(a)subheading Databases: +You can find the Cygwin tools and compiler at: = -These DBM implementations are supported by XEmacs: -native dbm (provided by OS), GDBM, and Berkeley DB version 1, 2 and 3. +(a)uref{http://www.cygwin.com/} = -(a)example -GDBM is the GNU DBM library, compatible with the Unix dbm library. -gdbm-1.8.3.tar.gz -ftp://ftp.gnu.org/pub/gnu/gdbm/ -http://www.gnu.org/software/gdbm/gdbm.html -configure flag: --with-database=3Dgnudbm +Click on the @samp{Install or update now!} link, which will download a +file @file{setup.exe}, which you can use to download everything +else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is +probably the best.) You should go ahead and install everything -- +you'll get various ancillary libraries that XEmacs needs or likes, +e.g. XPM, PNG, JPEG, TIFF, etc. You can also get X Windows here, if you +want to compile under X. + +If you want to compile without X, you will need the @file{xpm-nox} +library, which must be specifically selected in the Cygwin netinstaller; +it is not selected by default. The package has had various names. +Currently it is called @file{cygXpm-noX4.dll}. = -Berkeley DB is provided by Sleepycat Software. -db-4.1.25.tar.gz -http://www.sleepycat.com/ -configure flag: --with-database=3Dberkdb +(a)node Q2.3.5, Q2.3.6, Q2.3.4, Installation +(a)unnumberedsubsec Q2.3.5: How do I compile under Cygwin? = -OpenLDAP is an implementation of the LDAP X.500 Directory protocol. -openldap-2.1.12.tgz -http://www.openldap.org/ -configure flag: --with-ldap -(a)end example +Similar as on Unix; use the usual `configure' and `make' process. +Some problems to watch out for: = -(a)subheading Image Format Libraries: +(a)itemize @bullet +(a)item +make sure HOME is set. This controls where you +(a)file{init.el} file comes from; = -(a)example -`compface' is an old library for viewing X-Faces in messages. -It is no longer being maintained and has been frozen for 10 years or -so, but still works. It should be compiled with the same options that -X11 was compiled with on your system. The version of this library at -xemacs.org includes the `xbm2xface.pl' script, written by -(a)email{stig@@hackvan.com, Stig}, which may be useful when generating -your own xface. -compface.tar.gz -ftp://ftp.cs.indiana.edu/pub/faces/compface/ -configure flag: --with-xface +(a)item +(a)samp{CYGWIN} needs to be set to @samp{tty} for process support to wor= k; = -The JPEG image format library -jpegsrc.v6b.tar.gz -ftp://ftp.uu.net/graphics/jpeg/ -http://www.ijg.org/ -configure flag: --with-jpeg +(a)item +picking up some other grep or other UNIX-like tools can kill configure; = -The TIFF image format library -tiff-v3.4-tar.gz -ftp://ftp.sgi.com/graphics/tiff/ -configure flag: --with-tiff +(a)item +static heap too small, adjust @file{src/sheap-adjust.h} to a more positi= ve +number; = -The XPM image format library -xpm-3.4k.tar.gz -ftp://koala.inria.fr/pub/xpm/ -http://www.inria.fr/koala/lehors/xpm.html -configure flag: --with-xpm +(a)item +(Unconfirmed) The Cygwin version doesn't understand +(a)file{//machine/path} type paths so you will need to manually mount a +directory of this form under a unix style directory for a build to work +on the directory; = -The PNG image format library -libpng-1.2.15.tar.gz -http://www.libpng.org/pub/png/ -configure flag: --with-png +(a)item +If you're building @strong{WITHOUT} X11, don't forget to change symlinks +(a)file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to +the non-X versions of these libraries. By default they point to the X +versions. So: = -The ZLIB compression library is used by the PNG library. -A GZIP coding system is also available, in XEmacs 21.5 and onward. -zlib-1.1.4.tar.gz -http://www.gzip.org/zlib/ +(a)example +/usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a +/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a @end example + +(This advice may now be obsolete because of the availability of the +cygXpm-noX4.dll package from Cygwin. Send confirmation to +(a)email{faq@@xemacs.org}.) = -(a)subheading Other Multimedia: +(a)item +Other problems are listed in the @file{PROBLEMS} file, in the top-level +directory of the XEmacs sources. = -(a)example -Network Audio System (NAS) is a client-server sound library for X. -nas-1.6.src.tar.gz -ftp://ftp.x.org/contrib/audio/nas/ -http://radscan.com/nas.html -configure flag: --with-nas +(a)end itemize = -Enlightened Sound Daemon (ESD) is yet another sound system. -esound-0.2.8.tar.gz -http://www.tux.org/~ricdude/EsounD.html = -Netpbm is a collection of programs that XEmacs might use at runtime. -netpbm-1mar1994.tar.gz -netpbm-9.2.tar.gz -ftp://metalab.unc.edu/pub/Linux/apps/graphics/convert/ +(a)node Q2.3.6, Q2.3.7, Q2.3.5, Installation +(a)unnumberedsubsec Q2.3.6: How do I compile using MinGW (aka @samp{the = -mno-cygwin flag to gcc})? = -Xaw3d is designed to be a drop-in replacement for the Athena widget -library that `looks cooler'. -Xaw3d-1.5.tar.gz -ftp://ftp.x.org/contrib/widgets/Xaw3d/ -(a)end example +Similar to the method for Unix. Things to remember: = -(a)subheading Internationalization: +(a)itemize @bullet +(a)item +Specify the target host on the command line for @file{./configure}, e.g. +(a)samp{./configure i586-pc-mingw32}. = -(a)example -Canna is a Japanese language input method. -Canna has not been updated since 1996. -Canna35b2.tar.gz -cfw35f1p.exe (Canna on W95) -http://www.nec.co.jp/canna/ (in Japanese) -http://www.nec.co.jp/canna/c-down.html (download site, for those not able - to read Japanese) -configure flag: --with-canna +(a)item +Be sure that your build directory is mounted such that it has the +same path either as a cygwin path (@file{/build/xemacs}) or as a Windows +path (@file{c:\build\xemacs}). = -Wnn is a multi-language mule input method. -Wnn4 is the free version, while Wnn6 is the commercial version. -Wnn4.2.tar.gz -ftp://ftp.omronsoft.co.jp/pub/Wnn6/ (commercial version) +(a)item +Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libp= ng}, +(a)file{compface}, etc. = -Wnn4 appears completely orphaned; searches on google turn up XEmacs' own -site first. However, here is a (very old) site with some info on WNN: -http://web.kyoto-inet.or.jp/people/tomoko-y/biwa/root/wnn_e.html +(a)item +Specify the target location of the extra libs on the command line +to @file{configure}, e.g.for 21.4 or earlier +(a)samp{./configure --site-prefixes=3D/build/libs i586-pc-mingw32} and f= or +21.5 or later = +(a)samp{./configure --with-site-prefixes=3D/build/libs i586-pc-mingw32}. +(a)end itemize = -configure flag: --with-wnn +(a)node Q2.3.7, Q2.3.8, Q2.3.6, Installation +(a)unnumberedsubsec Q2.3.7: How do I compile with X support? = -Mew is a multi-lingual mailreader. -mew-1.94.2.tar.gz -http://www.mew.org/ +To compile under Cygwin, all you need to do is install XFree86, which +is available as part of the standard Cygwin installation. +(a)uref{http://www.cygwin.com/}. Once installed, @file{configure} +should automatically find the X libraries and compile with X support. = -kterm is a multi-lingual terminal emulator with special support for -Asian languages with large character sets. -kterm-6.2.0.tar.gz -ftp://ftp.x.org/contrib/applications/ +As noted above, the non-Cygwin X support is basically orphaned, and +probably won't work. But if it want to try, it's described in +(a)file{nt/README} in some detail. Basically, you need to get X11 +libraries from @uref{http://ftp.x.org}, and compile them. If the +precompiled versions are available somewhere, we don't know of it. = -ispell is a spelling checker with support for multiple languages. -ispell-3.2.06.tar.gz -http://ficus-www.cs.ucla.edu/ficus-members/geoff/ispell.html -http://www.kdstevens.com/~stevens/ispell-page.html +(a)node Q2.3.8, Q2.4.1, Q2.3.7, Installation +(a)unnumberedsubsec Q2.3.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll= was not found (NEW) = -SKK (Simple Kana-to-Kanji) is a simple input method for Japanese. -It has been modified to work with XEmacs. -skk-8.6x.tar.gz +The Cygwin binary distributed with the netinstaller uses an external DLL +to handle XPM images (such as toolbar buttons). You may get an error li= ke = -X11 fonts for numerous languages. -intlfonts-1.2.tar.gz -http://www.gnu.org/directory/localization/intlfonts.html +(a)example +This application has failed to start because cygXpm-noX4.dll was not fou= nd. +Re-installing the application may fix this problem. @end example = -(a)subheading Miscellaneous: +Andy Piper sez: = @example -ncurses is the standard free software curses library. -ncurses-5.3.tar.gz -http://dickey.his.com/ncurses/ncurses.html -ftp://dickey.his.com/ncurses/ +cygXpm-noX4 is part of the cygwin distribution under libraries or +graphics, but is not installed by default. You need to run the +cygwin setup again and select this package. @end example = -(a)subheading Developer Tools: +Ie, reinstalling XEmacs won't help because it is not part of the XEmacs +distribution. = -(a)example -CVS is the version control system used by XEmacs to manage the sources. -cvs-1.11.5.tar.gz -http:/www.cvshome.org/ +(a)unnumberedsec 2.4: General Troubleshooting = -bzip2 is a compressor that compresses much better than gzip. -bzip2-1.0.2.tar.gz -http://sources.redhat.com/bzip2/ +(a)node Q2.4.1, Q2.4.2, Q2.3.8, Installation +(a)unnumberedsubsec Q2.4.1: How do I deal with bugs or with problems bui= lding, installing, or running? = -texi2html is a script that converts Texinfo pages to HTML. -texi2html-1.64.tar.gz -http://www.mathematik.uni-kl.de/~obachman/Texi2html/ +The file @file{PROBLEMS} contains information on many common problems th= at +occur in building, installing and running XEmacs. = -Gnats is a bug tracking system. Red Hat recommends using GNATS 4.0 for = any -new installations (see the beta below). -gnats-3.113.tar.gz -gnats-3.999.2.tar.gz -cern_wwwgnats_v2.0-beta.tar.gz (WWW front end to Gnats) -http://sources.redhat.com/gnats/ +Reports of bugs in XEmacs should be sent to +(a)email{xemacs-beta@@xemacs.org}. You can also post to the newsgroup +comp.emacs.xemacs (or equivalentlt, send to the mailing list +(a)email{xemacs@@xemacs.org}), but it is less likely that the developers +will see it in a timely fashion. @xref{Bugs,,, xemacs, the XEmacs +User's Manual}, for more information on how to report bugs. +(a)xref{Q1.4.2}, for more information on mailing lists relating to +XEmacs. = -Use autoconf to generate `configure' from `configure.in'. -NOTE: There is a more recent series, 2.5x, that XEmacs doesn't currently -work with. -autoconf-2.13.tar.gz -http://www.gnu.org/software/autoconf/ +There are three ways to read the Bugs section. = -Use the `applypatch' program from the makepatch package -to apply patches to upgrade from one beta release to another. -Use this if you have a slow or expensive connection to the Net. -makepatch-2.00_09.tar.gz -http://www.squirrel.nl/people/jvromans/ -(a)end example +(a)enumerate +(a)item +In a printed copy of the XEmacs manual. = -(a)node Q2.0.4, Q2.0.5, Q2.0.3, Installation -(a)unnumberedsubsec Q2.0.4: How do I specify the paths that XEmacs uses = for finding files? +(a)item +With Info. First, start XEmacs. From the menu, select +(a)samp{Help->Info (Online Docs)->Info Contents} to enter Info, then +click on @samp{XEmacs}, then on @samp{Bugs}. Or, use the keyboard: do +(a)kbd{C-h i} to enter Info, then @kbd{m XEmacs RET} to get to the Emacs +manual, then @kbd{m Bugs RET} to get to the section on bugs. Or use +standalone Info in a like manner. (Standalone Info is part of the +Texinfo distribution, not part of the XEmacs distribution.) = -You can specify what paths to use by using a number of different flags -when running configure. See the section MAKE VARIABLES in the top-level -file INSTALL in the XEmacs distribution for a listing of those flags. +(a)item +By hand. Do +(a)example +cat info/xemacs* | more "+/^File: xemacs.info, Node: Bugs," +(a)end example +(a)end enumerate = -Most of the time, however, the simplest fix is: @strong{do not} specify -paths as you might for GNU Emacs. XEmacs can generally determine the -necessary paths dynamically at run time. The only path that generally -needs to be specified is the root directory to install into. That can -be specified by passing the @code{--prefix} flag to configure. For a -description of the XEmacs install tree, please consult the @file{NEWS} -file. +(a)node Q2.4.2, Q2.4.3, Q2.4.1, Installation +(a)unnumberedsubsec Q2.4.2: Help! XEmacs just crashed on me! = -(a)node Q2.0.5, Q2.0.6, Q2.0.4, Installation -(a)unnumberedsubsec Q2.0.5: Running XEmacs without installing +First of all, don't panic. Whenever XEmacs crashes, it tries extremely +hard to auto-save all of your files before dying. (The main time that +this will not happen is if the machine physically lost power or if you +killed the XEmacs process using @code{kill -9}). The next time you try +to edit those files, you will be informed that a more recent auto-save +file exists. You can use @kbd{M-x recover-file} to retrieve the +auto-saved version of the file. = -How can I just try XEmacs without installing it? +You can use the command @kbd{M-x recover-session} after a crash to pick +up where you left off. = -XEmacs will run in place without requiring installation and copying of -the Lisp directories, and without having to specify a special build-time -flag. It's the copying of the Lisp directories that requires so much -space. XEmacs is largely written in Lisp. +Now, XEmacs is not perfect, and there may occasionally be times, or +particular sequences of actions, that cause it to crash. If you can +come up with a reproducible way of doing this (or even if you have a +pretty good memory of exactly what you were doing at the time), the +maintainers would be very interested in knowing about it. The best +way to report a bug is using @kbd{M-x report-emacs-bug} (or by +selecting @samp{Send Bug Report...} from the Help menu). If that +won't work (e.g. you can't get XEmacs working at all), send ordinary +mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include +the output from the crash, especially including the Lisp backtrace, as +well as the XEmacs configuration from @kbd{M-x describe-installation} +(or equivalently, the file @file{Installation} in the top of the build +tree). Note that the developers do @emph{not} usually follow +(a)samp{comp.emacs.xemacs} on a regular basis; thus, this is better for +general questions about XEmacs than bug reports. = -A good method is to make a shell alias for xemacs: +If at all possible, include a C stack backtrace of the core dump that +was produced. This shows where exactly things went wrong, and makes +it much easier to diagnose problems. To do this under Unix and Mac OS +X, you need to locate the core file (it's called @file{core}, and is +usually sitting in the directory that you started XEmacs from, or your +home directory if that other directory was not writable). Then, go to +that directory and execute a command like: = @example -alias xemacs=3D/i/xemacs-20.2/src/xemacs +gdb `which xemacs` core @end example = -(You will obviously use whatever directory you downloaded the source -tree to instead of @file{/i/xemacs-20.2}). +and then issue the command @samp{where} to get the stack backtrace. You +might have to use @code{dbx} or some similar debugger in place of +(a)code{gdb}. If you don't have any such debugger available, complain to +your system administrator. = -This will let you run XEmacs without massive copying. +It's possible that a core file didn't get produced or the stack trace +from gdb is garbage, in which case you're out of luck unless you can +reproduce the bug. A nonexistent core file can happen in some +circumstances on some operating systems, depending on what exactly +triggered the crash. It's also possible, however, that your limits +are set to turn them off. You may be able to reenable them using a +command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find +out how your limits are set, use the command @samp{limit}.) However, if +you didn't explicitly set your limits this way, go complain to your +system administrator and tell him not to disable core files by +default. = -(a)node Q2.0.6, Q2.0.7, Q2.0.5, Installation -(a)unnumberedsubsec Q2.0.6: XEmacs is too big +A garbaged stack trace can happen for various reasons. Some versions +of gdb are broken on certain operating systems and aren't able to read +the core file. It's also possible that the stack got overwritten +during the crash. A very simple reason, however, is that your version +of XEmacs was compiled without debugging information or had the +debugging information stripped. A compilation with optimization can +also result in partly or completely garbaged stack trace. In such +cases, you will need to recompile XEmacs with debugging information +and without optimization; @xref{Q2.4.4, How to debug an XEmacs problem +with a debugger}. Note also that core files currently don't work at +all under Cygwin, and the only way to get a backtrace is to run XEmacs +from gdb. = -The space required by the installation directories can be -reduced dramatically if desired. Gzip all the .el files. Remove all -the packages you'll never want to use. Remove the TexInfo manuals. -Remove the Info (and use just hardcopy versions of the manual). Remove -most of the stuff in etc. Remove or gzip all the source code. Gzip or -remove the C source code. Configure it so that copies are not made of -the support lisp. +If you cannot get a backtrace from the core dump, but can reproduce +the problem, try running XEmacs under gdb. The goal is to get clean C +and Lisp backtraces and submit a bug report including full +configuration information as described above, as this will greatly +assist in the process of tracking down the bug. However, even partial +information is better than none. The process of getting backtraces +from gdb is described in detail in @ref{Q2.4.4, How to debug an XEmacs +problem with a debugger}. = -These are all Emacs Lisp source code and bytecompiled object code. You -may safely gzip everything named *.el here. You may remove any package -you don't use. @emph{Nothing bad will happen if you delete a package -that you do not use}. You must be sure you do not use it though, so be -conservative at first. +If you're under Microsoft Windows, you're out of luck unless you happen +to have a debugging aid installed on your system, for example Visual +C++. In this case, the crash will result in a message giving you the +option to enter a debugger (for example, by pressing @samp{Cancel}). Do +this and locate the stack-trace window. (If your XEmacs was built +without debugging information, the stack trace may not be very useful.) = -Any package with the possible exceptions of xemacs-base, and EFS are -candidates for removal. Ask yourself, @emph{Do I ever want to use this -package?} If the answer is no, then it is a candidate for removal. +When making a problem report make sure that: = -First, gzip all the .el files. Then go about package by package and -start gzipping the .elc files. Then run XEmacs and do whatever it is -you normally do. If nothing bad happens, then remove the package. You -can remove a package via the PUI interface = -(@code{M-x pui-list-packages}, then press @kbd{d} to mark the packages -you wish to delete, and then @kbd{x} to delete them. +(a)enumerate +(a)item +Report @strong{all} of the information output by XEmacs during the +crash. = -Another method is to do @code{M-x package-get-delete-package}. +(a)item +You mention what O/S and Hardware you are running XEmacs on. = -(a)node Q2.0.7, Q2.1.1, Q2.0.6, Installation -(a)unnumberedsubsec Q2.0.7: EFS fails with "500 AUTH not understood" (NE= W) +(a)item +What version of XEmacs you are running. = -A typical error: FTP Error: USER request failed; 500 AUTH not understood. +(a)item +What build options you are using. = -Thanks to giacomo boffi @email{giacomo.boffi@@polimi.it} who recommends -on comp.emacs.xemacs: +(a)item +If the problem is related to graphics and you are running Unix or Mac +OS X, we will also need to know what version of the X Window System +you are running, and what window manager you are using. = - tell your ftp client to not attempt AUTH authentication (or do not - use FTP servers that don't understand AUTH) +(a)item +If the problem happened on a TTY, please include the terminal type. = -and notes that you need to add an element (often "-u") to -`efs-ftp-program-args'. Use M-x customize-variable, and verify the -needed flag with `man ftp' or other local documentation. +(a)item +Try very hard to get both C and Lisp backtraces, as described above. +(a)end enumerate = -(a)unnumberedsec 2.1: Unix/Mac OS X Installation (Also Relevant to Cygwi= n, MinGW) +Much of the information above is automatically generated by @kbd{M-x +report-emacs-bug}. Even more, and often useful, information can be +generated by redirecting the output of @code{make} and @code{make check} +to a file (@file{beta.err} is the default used by @code{build-report}), +and executing @kbd{M-x build-report}. = -(a)node Q2.1.1, Q2.1.2, Q2.0.7, Installation -(a)unnumberedsubsec Q2.1.1: Libraries in non-standard locations = -I have x-faces, jpeg, xpm etc. all in different places. I've tried -space-separated, comma-separated, several --site-libraries, all to no -avail. +(a)node Q2.4.3, Q2.4.4, Q2.4.2, Installation +(a)unnumberedsubsec Q2.4.3: XEmacs crashes and I compiled it myself. = -(a)example ---site-libraries=3D'/path/one /path/two /path/etc' -(a)end example +There have been a variety of reports of crashes due to compilers with +buggy optimizers. If you are compiling with optimization, consider +turning it off (@pxref{Q2.4.4, How to debug an XEmacs problem with a +debugger}) and recompiling. = -(a)node Q2.1.2, Q2.1.3, Q2.1.1, Installation -(a)unnumberedsubsec Q2.1.2: Why can't I strip XEmacs? +Please see the @file{PROBLEMS} file that comes with XEmacs (it's in +the top-level source directory) to read what it says about your +platform. = -(a)email{cognot@@fronsac.ensg.u-nancy.fr, Richard Cognot} writes: +If you compiled XEmacs 21.4 or ealier using @samp{--use-union-type}, or +21.5 or later using @samp{--enable-union-type} (or in either case used +the option @samp{USE_UNION_TYPE} in @file{config.inc} under Windows), +try recompiling again without it. The union type has been known to +trigger compiler errors in a number of cases. = -(a)quotation -Because of the way XEmacs (and every other Emacsen, AFAIK) is built. The -link gives you a bare-boned emacs (called temacs). temacs is then run, -preloading some of the lisp files. The result is then dumped into a new -executable, named xemacs, which will contain all of the preloaded lisp -functions and data. +(a)node Q2.4.4, Q2.4.5, Q2.4.3, Installation +(a)unnumberedsubsec Q2.4.4: How to debug an XEmacs problem with a debugg= er = -Now, during the dump itself, the executable (code+data+symbols) is -written on disk using a special unexec() function. This function is -obviously heavily system dependent. And on some systems, it leads to an -executable which, although valid, cannot be stripped without damage. If -memory serves, this is especially the case for AIX binaries. On other -architectures it might work OK. +If XEmacs does crash on you, one of the most productive things you can +do to help get the bug fixed is to poke around a bit with the debugger. +Here are some hints: = -The Right Way to strip the emacs binary is to strip temacs prior to -dumping xemacs. This will always work, although you can do that only if -you install from sources (as temacs is @file{not} part of the binary -kits). -(a)end quotation +(a)itemize @bullet +(a)item +First of all, if the crash is at all reproducible, consider very +strongly recompiling your XEmacs with debugging symbols and with no +optimization (e.g. with GCC use the compiler flags @samp{-g -O0} -- +that's an "oh" followed by a zero), and with the configure options +(a)samp{--debug=3Dyes} and @samp{--error-checking=3Dall} +(@samp{--enable-debug=3Dyes} and @samp{--enable-error-checking=3Dall} on +XEmacs 21.5 or later). This will make your XEmacs run somewhat slower, +but you are a lot more likely to catch the problem earlier (closer to +its source). It makes it a lot easier to determine what's going on with +a debugger. The way to control the compiler flags is with the +configuration option @samp{--cflags} (@samp{--with-cflags} in 21.5). If +you have a recent version of 21.5, you should use +(a)samp{--without-optimization} in preference to directly setting +(a)samp{--cflags}. = -(a)email{nat@@nataa.fr.eu.org, Nat Makarevitch} writes: +(a)item +If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie +process), or it's inconvenient to run XEmacs again because XEmacs is +already running or is running in batch mode as part of a bunch of +scripts, you may be able to attach to the existing process with your +debugger. Under Unix and Mac OS X, the typical way to do this is to +first use some variant of the @samp{ps} command to figure out the +process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under +a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V, +or @samp{ps -aW | grep xemacs} under Cygwin. Then run = -(a)quotation -Here is the trick: +(a)example +gdb /path/to/xemacs/xemacs #### +(a)end example = -(a)enumerate -(a)item -[ ./configure; make ] +Where @code{####} is the process id of your XEmacs. (If you're not +sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs +will stop and you can type @samp{where} in gdb to get a stack trace as +usual. To get things moving again, you can just type @samp{quit} in +gdb. It'll tell you the program is running and ask if you want to +quit anyways. Say @samp{y} and it'll quit and have your emacs +continue from where it was at. = -(a)item -rm src/xemacs +If you're running another debugger, a similar method may work, or you +may have to run the debugger first and then use the @code{attach} +command or something similar. = -(a)item -strip src/temacs +Under Microsoft Windows, use the menu item @samp{Build->Start +Debug->Attach to Process...} and select the XEmacs process from the list +given. = @item -make +If you're able to run XEmacs under a debugger and reproduce the crash, +here are some things you can do: = @item -cp src/xemacs /usr/local/bin/xemacs +If XEmacs is hitting an assertion failure, put a breakpoint on +(a)code{assert_failed()}. = @item -cp lib-src/DOC-19.16-XEmacs -(a)iftex -\ @* -(a)end iftex -/usr/local/lib/xemacs-19.16/i586-unknown-linuxaout -(a)end enumerate -(a)end quotation +If XEmacs is hitting some weird Lisp error that's causing it to crash +(e.g. during startup), put a breakpoint on @code{signal_1()}---this is +declared static in @file{eval.c}. = -(a)node Q2.1.3, Q2.1.4, Q2.1.2, Installation -(a)unnumberedsubsec Q2.1.3: Compiling XEmacs with Netaudio. +(a)item +If XEmacs is outputting lots of X errors, put a breakpoint on +(a)code{x_error_handler()}; that will tell you which call is causing +them. Note that the result may not be very useful by default because +X Windows normally operates asynchronously: A bunch of commands are +buffered up and then sent to the server all at once. This greatly +improves performance over a network but means that an error may not be +reported until the server receives the commands, which can be long +after XEmacs made the erroneous calls. For best results, you need to +make the X server synchronous before getting the backtrace. This can +be done by starting XEmacs with the @samp{-sync} option or executing +the Lisp code @code{(x-debug-mode t)}. = -What is the best way to compile XEmacs with the netaudio system, since I -have got the netaudio system compiled but installed at a weird place, I -am not root. Also in the READMEs it does not say anything about -compiling with the audioserver? - -You should only need to add some stuff to the configure command line. -To tell it to compile in netaudio support: @samp{--with-sound=3Dboth}, or -(a)samp{--with-sound=3Dnas} if you don't want native sound support for s= ome -reason.) To tell it where to find the netaudio includes and libraries: +(a)item +Internally, you will probably see lots of variables that hold objects of +type @code{Lisp_Object}. These are references to Lisp objects. +Printing them out with the debugger probably won't be too +useful---you'll likely just see a number. To decode them, do this: = @example ---site-libraries=3DWHATEVER ---site-includes=3DWHATEVER +call debug_print (OBJECT) @end example + +where @var{OBJECT} is whatever you want to decode (it can be a variable, +a function call, etc.). This uses the Lisp printing routines to out a +readable representation on the TTY from which the xemacs process was +invoked. = -Then (fingers crossed) it should compile and it will use netaudio if you -have a server running corresponding to the X server. The netaudio server -has to be there when XEmacs starts. If the netaudio server goes away and -another is run, XEmacs should cope (fingers crossed, error handling in -netaudio isn't perfect). - -BTW, netaudio has been renamed as it has a name clash with something -else, so if you see references to NAS or Network Audio System, it's the -same thing. It also might be found at -(a)uref{ftp://ftp.x.org/contrib/audio/nas/}. - -(a)node Q2.1.4, Q2.2.1, Q2.1.3, Installation -(a)unnumberedsubsec Q2.1.4: Problems with Linux and ncurses. +Under 21.5 and later, @code{dp} is defined as an easier-to-type equivale= nt +of @code{debug_print}. You can also try @code{dpa} if you can't see +the output from @code{debug_print} (this will return a string containing +the output), or use @code{debug_p3} if @code{debug_print} itself triggers +a crash (this is a less comprehensive but super-safe way to print out +a Lisp object). = -On Linux 1.3.98 with termcap 2.0.8 and the ncurses that came with libc -5.2.18, XEmacs 20.0b20 is unable to open a tty device: +(a)item +If you want to get a Lisp backtrace showing the Lisp call +stack, do this: = @example -src/xemacs -nw -q -Initialization error: -(a)iftex -@* -(a)end iftex -Terminal type `xterm' undefined (or can't access database?) +call debug_backtrace () @end example - -(a)email{ben@@xemacs.org, Ben Wing} writes: - -(a)quotation -Your ncurses configuration is messed up. Your /usr/lib/terminfo is a -bad pointer, perhaps to a CD-ROM that is not inserted. -(a)end quotation - -(a)unnumberedsec 2.2: Windows Installation (Windows, Cygwin, MinGW) - -(a)node Q2.2.1, Q2.2.2, Q2.1.4, Installation -(a)unnumberedsubsec Q2.2.1: What exactly are all the different ways to b= uild XEmacs under Windows? - -XEmacs can be built in several ways in the MS Windows environment. - -The standard way is what we call the "native" port. It uses the Win32 -API and has no connection with X whatsoever -- it does not require X -libraries to build, nor does it require an X server to run. The native -port is the most reliable version and provides the best graphical -support. Almost all development is geared towards this version, and -there is little reason not to use it. - -The second way to build is the Cygwin port. It takes advantage of -Cygnus emulation library under Win32. @xref{Q1.1.4, What are Cygwin -and MinGW, and do I need them to run XEmacs?}, for more information. - -A third way is the MinGW port. It uses the Cygwin environment to -build but does not require it at runtime. @xref{Q1.1.4, What are -Cygwin and MinGW, and do I need them to run XEmacs?}, for more -information. = -Finally, you might also be able to build the non-Cygwin, non-MinGW "X" -port. This was actually the first version of XEmacs that ran under MS -Windows, and although the code is still in XEmacs, it's essentially -orphaned and it's unlikely it will compile without a lot of work. If -you want an MS Windows versin of XEmacs that supports X, use the Cygwin -version. (The X support there is actively maintained, so that Windows -developers can test the X support in XEmacs.) +Under 21.5 and later, @code{db} is defined as an easier-to-type equivale= nt +of @code{debug_backtrace}. = -(a)node Q2.2.2, Q2.2.3, Q2.2.1, Installation -(a)unnumberedsubsec Q2.2.2: What compiler/libraries do I need to compile= XEmacs? +(a)item +Using @code{debug_print} and @code{debug_backtrace} has two +disadvantages - they can only be used with a running (including hung +or zombie) xemacs process, and they do not display the internal C +structure of a Lisp Object. Even if all you've got is a core dump, +all is not lost. = -You need Visual C++ 4.2, 5.0, or 6.0 for the native version. (We have -some beta testers currently trying to compile with VC.NET, aka version -7.0, but we can't yet report complete success.) For the Cygwin and -MinGW versions, you need the Cygwin environment, which comes with GCC, -the compiler used for those versions. @xref{Q1.1.4, What are Cygwin -and MinGW, and do I need them to run XEmacs?}, for more information on -Cygwin and MinGW. +If you're using GDB, there are some macros in the file +(a)file{src/.gdbinit} in the XEmacs source distribution that should make +it easier for you to decode Lisp objects. This file is automatically +read by gdb if gdb is run in the directory where xemacs was built, and +contains these useful macros to inspect the state of xemacs: = -(a)node Q2.2.3, Q2.2.4, Q2.2.2, Installation -(a)unnumberedsubsec Q2.2.3: How do I compile the native port? +(a)table @code +(a)item pobj +Usage: pobj lisp_object @* +Print the internal C representation of a lisp object. = -Please read the file @file{nt/README} in the XEmacs distribution, which -contains the full description. +(a)item xtype +Usage: xtype lisp_object @* +Print the Lisp type of a lisp object. = -(a)node Q2.2.4, Q2.2.5, Q2.2.3, Installation -(a)unnumberedsubsec Q2.2.4: What do I need for Cygwin? +(a)item lbt +Usage: lbt @* +Print the current Lisp stack trace. +Requires a running xemacs process. (It works by calling the db +routine described above.) = -You can find the Cygwin tools and compiler at: +(a)item ldp +Usage: ldp lisp_object @* +Print a Lisp Object value using the Lisp printer. +Requires a running xemacs process. (It works by calling the dp +routine described above.) = -(a)uref{http://www.cygwin.com/} +(a)item run-temacs +Usage: run-temacs @* +Run temacs interactively, like xemacs. +Use this with debugging tools (like purify) that cannot deal with dumpin= g, +or when temacs builds successfully, but xemacs does not. = -Click on the @samp{Install or update now!} link, which will download a -file @file{setup.exe}, which you can use to download everything -else. (You will need to pick a mirror site; @samp{mirrors.rcn.net} is -probably the best.) You should go ahead and install everything -- -you'll get various ancillary libraries that XEmacs needs or likes, -e.g. XPM, PNG, JPEG, TIFF, etc. You can also get X Windows here, if you -want to compile under X. +(a)item dump-temacs +Usage: dump-temacs @* +Run the dumping part of the build procedure. +Use when debugging temacs, not xemacs! +Use this when temacs builds successfully, but xemacs does not. = -If you want to compile without X, you will need the @file{xpm-nox} -library, which must be specifically selected in the Cygwin netinstaller; -it is not selected by default. The package has had various names. -Currently it is called @file{cygXpm-noX4.dll}. +(a)item check-xemacs +Usage: check-xemacs @* +Run the test suite. Equivalent to 'make check'. = -(a)node Q2.2.5, Q2.2.6, Q2.2.4, Installation -(a)unnumberedsubsec Q2.2.5: How do I compile under Cygwin? +(a)item check-temacs +Usage: check-temacs @* +Run the test suite on temacs. Equivalent to 'make check-temacs'. +Use this with debugging tools (like purify) that cannot deal with dumpin= g, +or when temacs builds successfully, but xemacs does not. +(a)end table = -Similar as on Unix; use the usual `configure' and `make' process. -Some problems to watch out for: +If you are using Sun's @file{dbx} debugger, there is an equivalent file +(a)file{src/.dbxrc}, which defines the same commands for dbx. = -(a)itemize @bullet @item -make sure HOME is set. This controls where you -(a)file{init.el} file comes from; +If you're using a debugger to get a C stack backtrace and you're seeing +stack traces with some of the innermost frames mangled, it may be due to +dynamic linking. (This happens especially under Linux.) Consider +reconfiguring with @samp{--dynamic=3Dno} (@samp{--with-dynamic=3Dno} in = 21.5 +or later). Also, sometimes (again under Linux), stack backtraces of +core dumps will have the frame where the fatal signal occurred mangled; +if you can obtain a stack trace while running the XEmacs process under a +debugger, the stack trace should be clean. + +(a)email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so +version 1.8 if dynamic linking and debugging is a problem on Linux. = @item -(a)samp{CYGWIN} needs to be set to @samp{tty} for process support to wor= k; +If you're using a debugger to get a C stack backtrace and you're +getting a completely mangled and bogus stack trace, it's probably due to +one of the following: = +(a)enumerate a @item -picking up some other grep or other UNIX-like tools can kill configure; +Your executable has been stripped. Bad news. Tell your sysadmin not to +do this---it doesn't accomplish anything except to save a bit of disk +space, and makes debugging much much harder. = @item -static heap too small, adjust @file{src/sheap-adjust.h} to a more positi= ve -number; +Your stack is getting trashed. Debugging this is hard; you have to do a +binary-search type of narrowing down where the crash occurs, until you +figure out exactly which line is causing the problem. Of course, this +only works if the bug is highly reproducible. Also, in many cases if +you run XEmacs from the debugger, the debugger can protect the stack +somewhat. However, if the stack is being smashed, it is typically the +case that there is a wild pointer somewhere in the program, often quite +far from where the crash occurs. = @item -(Unconfirmed) The Cygwin version doesn't understand -(a)file{//machine/path} type paths so you will need to manually mount a -directory of this form under a unix style directory for a build to work -on the directory; +If your stack trace has exactly one frame in it, with address 0x0, this +could simply mean that XEmacs attempted to execute code at that address, +e.g. through jumping to a null function pointer. Unfortunately, under +those circumstances, GDB under Linux doesn't know how to get a stack +trace. (Yes, this is the fourth Linux-related problem I've mentioned. I +have no idea why GDB under Linux is so bogus. Complain to the GDB +authors, or to comp.os.linux.development.system.) Again, you'll have to +use the narrowing-down process described above. = @item -If you're building @strong{WITHOUT} X11, don't forget to change symlinks -(a)file{/usr/lib/libXpm.a} and @file{/usr/lib/libXpm.dll.a} to point to -the non-X versions of these libraries. By default they point to the X -versions. So: +You will get a Lisp backtrace output when XEmacs crashes, so you'll have +something useful. = -(a)example -/usr/lib/libXpm.a -> /usr/lib/libXpm-noX.a -/usr/lib/libXpm.dll.a -> /usr/lib/libXpm-noX.dll.a -(a)end example +(a)end enumerate = -(This advice may now be obsolete because of the availability of the -cygXpm-noX4.dll package from Cygwin. Send confirmation to -(a)email{faq@@xemacs.org}.) +(a)item +If you compile with the newer gcc variants gcc-2.8 or egcs, you will +also need gdb 4.17 or above. Earlier releases of gdb can't handle the +debug information generated by the newer compilers. = @item -Other problems are listed in the @file{PROBLEMS} file, in the top-level -directory of the XEmacs sources. +In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named +(a)file{src/gdbinit}. This had the disadvantage of not being sourced +automatically by gdb, so you had to set that up yourself. = +(a)item +If you are running Microsoft Windows, the the file @file{nt/README} for +further information about debugging XEmacs. + @end itemize = +(a)node Q2.4.5, Q2.4.6, Q2.4.4, Installation +(a)unnumberedsubsec Q2.4.5: I get a cryptic error message when trying to= do something. = -(a)node Q2.2.6, Q2.2.7, Q2.2.5, Installation -(a)unnumberedsubsec Q2.2.6: How do I compile using MinGW (aka @samp{the = -mno-cygwin flag to gcc})? +When I try to use some particular option of some particular package, I +get a cryptic error message in the minibuffer. = -Similar to the method for Unix. Things to remember: +If the message went by too quickly, use @samp{Help->Recent Messages} +from the menubar (or type @kbd{C-h l}) to see recent messages. = -(a)itemize @bullet -(a)item -Specify the target host on the command line for @file{./configure}, e.g. -(a)samp{./configure i586-pc-mingw32}. +If you can't figure out what's going on, select +(a)samp{Options->Troubleshooting->Debug on Error} from the menubar (or +type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make +the error happen again. This will put in the debugger (you can get +out of this and continue what you were doing before by typing @kbd{c}) +and give you a backtrace that may be enlightening. If not, try +reading through this FAQ; if that fails, you could try posting to +(a)samp{comp.emacs.xemacs} (making sure to include the backtrace) and +someone may be able to help. If you can identify which XEmacs Lisp +source file the error is coming from you can get a more detailed stack +backtrace by doing the following: = +(a)enumerate @item -Be sure that your build directory is mounted such that it has the -same path either as a cygwin path (@file{/build/xemacs}) or as a Windows -path (@file{c:\build\xemacs}). +Visit the .el file in an XEmacs buffer. = @item -Build @samp{gcc -mno-cygwin} versions of the extra libs, i.e. @file{libp= ng}, -(a)file{compface}, etc. +Issue the command @kbd{M-x eval-current-buffer}. = @item -Specify the target location of the extra libs on the command line -to @file{configure}, e.g. -(a)samp{./configure --site-prefixes=3D/build/libs i586-pc-mingw32}. -(a)end itemize - -(a)node Q2.2.7, Q2.2.8, Q2.2.6, Installation -(a)unnumberedsubsec Q2.2.7: How do I compile with X support? - -To compile under Cygwin, all you need to do is install XFree86, which -is available as part of the standard Cygwin installation. -(a)uref{http://www.cygwin.com/}. Once installed, @file{configure} -should automatically find the X libraries and compile with X support. - -As noted above, the non-Cygwin X support is basically orphaned, and -probably won't work. But if it want to try, it's described in -(a)file{nt/README} in some detail. Basically, you need to get X11 -libraries from @uref{ftp://ftp.x.org}, and compile them. If the -precompiled versions are available somewhere, we don't know of it. - -(a)node Q2.2.8, Q2.3.1, Q2.2.7, Installation -(a)unnumberedsubsec Q2.2.8: Cygwin XEmacs won't start -- cygXpm-noX4.dll= was not found (NEW) - -The Cygwin binary distributed with the netinstaller uses an external DLL -to handle XPM images (such as toolbar buttons). You may get an error li= ke +Reproduce the error. +(a)end enumerate = - This application has failed to start because cygXpm-noX4.dll was not= found. - Re-installing the application may fix this problem. +For more information on debugging Lisp code, @xref{Debugging,,, +lispref, XEmacs Lisp Reference Manual}. = -Andy Piper sez: +(a)node Q2.4.6, Q2.4.7, Q2.4.5, Installation +(a)unnumberedsubsec Q2.4.6: XEmacs hangs when I try to do something. = - cygXpm-noX4 is part of the cygwin distribution under libraries or - graphics, but is not installed by default. You need to run the - cygwin setup again and select this package. +XEmacs might just be slow; some operations take a long time. XEmacs +may also be waiting on a response from the network, for example when +you are trying to send mail. = -Ie, reinstalling XEmacs won't help because it is not part of the XEmacs -distribution. +You can usually interrupt XEmacs by typing @kbd{C-g}. If not (for +example, Lisp code explicitly disabled this by setting +(a)code{inhibit-quit}), you can use the "critical quit" mechanism by +typing @kbd{Control-Shift-G}. This should also pop you into the +debugger and give you a backtrace, which can tell you where the +problem is (@pxref{Q2.4.4, How to debug an XEmacs problem with a +debugger}). (Note that setting @code{debug-on-quit} or selecting +(a)samp{Options->Troubleshooting->Debug on Quit} will also cause regular +(a)kbd{C-g} to enter the debugger and give you a backtrace.) = -(a)unnumberedsec 2.3: General Troubleshooting +If you can't interrupt XEmacs this way, or for some reason XEmacs is +not talking to the keyboard, you can try sending the @samp{SIGINT} +signal using the @samp{kill} command. = -(a)node Q2.3.1, Q2.3.2, Q2.2.8, Installation -(a)unnumberedsubsec Q2.3.1: Help! XEmacs just crashed on me! +If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that +you can't interrupt it at all, you could try attaching to the process +and getting a C stack backtrace. @xref{Q2.4.4, How to debug an XEmacs +problem with a debugger}. = -First of all, don't panic. Whenever XEmacs crashes, it tries extremely -hard to auto-save all of your files before dying. (The main time that -this will not happen is if the machine physically lost power or if you -killed the XEmacs process using @code{kill -9}). The next time you try -to edit those files, you will be informed that a more recent auto-save -file exists. You can use @kbd{M-x recover-file} to retrieve the -auto-saved version of the file. +(a)node Q2.4.7, Q2.4.8, Q2.4.6, Installation +(a)unnumberedsubsec Q2.4.7: I get an error message when XEmacs is runnin= g in batch mode. = -You can use the command @kbd{M-x recover-session} after a crash to pick -up where you left off. +Typically this happens when you are trying to compile some Elisp code. +If you are doing this as part of XEmacs or the XEmacs packages, you +should automatically get a backtrace, which can help you determine the +source of the problem. In other cases, you can get equivalent results +by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq +stack-trace-on-error t load-always-display-messages t +load-ignore-out-of-date-elc-files t load-show-full-path-in-messages +t)} (this needs to be all on one line; to set an environment variable, +use @samp{export XEMACSDEBUG=3D'FOO'} under @samp{bash}, @samp{zsh}, +etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and +(a)samp{tcsh}). @samp{XEMACSDEBUG} specifies Lisp code that will be +executed at startup time. = -Now, XEmacs is not perfect, and there may occasionally be times, or -particular sequences of actions, that cause it to crash. If you can -come up with a reproducible way of doing this (or even if you have a -pretty good memory of exactly what you were doing at the time), the -maintainers would be very interested in knowing about it. The best -way to report a bug is using @kbd{M-x report-emacs-bug} (or by -selecting @samp{Send Bug Report...} from the Help menu). If that -won't work (e.g. you can't get XEmacs working at all), send ordinary -mail to @email{xemacs-beta@@xemacs.org}. @emph{MAKE SURE} to include -the output from the crash, especially including the Lisp backtrace, as -well as the XEmacs configuration from @kbd{M-x describe-installation} -(or equivalently, the file @file{Installation} in the top of the build -tree). Note that the developers do @emph{not} usually follow -(a)samp{comp.emacs.xemacs} on a regular basis; thus, this is better for -general questions about XEmacs than bug reports. +If the backtrace is not sufficiently useful in helping you diagnose +the problem, you should consider using a debugger such as GDB. +(a)xref{Q2.4.4, How to debug an XEmacs problem with a debugger}. You +probably want to set a breakpoint on @code{signal_1}. Since such +errors often occur during compiling, which is often triggered by a +complex command run from a make suite, it may be easier to attach to +the process once it's running. = -If at all possible, include a C stack backtrace of the core dump that -was produced. This shows where exactly things went wrong, and makes -it much easier to diagnose problems. To do this under Unix and Mac OS -X, you need to locate the core file (it's called @file{core}, and is -usually sitting in the directory that you started XEmacs from, or your -home directory if that other directory was not writable). Then, go to -that directory and execute a command like: +Under Microsoft Windows (and perhaps other operating systems), there is +another useful trick you can do if you have configured with debugging +support (configure option @samp{--debug} (@samp{--with-debug} in 21.5) +or setting @samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the +environment variable @samp{XEMACSDEBUG} (as described above) to +(a)samp{(setq debug-on-error t)}. Then, when an error occurs +noninteractively, instead of trying to invoke the Lisp debugger (which +obviously won't work), XEmacs will break out to a C debugger using +(a)code{(force-debugging-signal t)}. @emph{NOTE}: This runs +(a)code{abort()}!!! (As well as and after executing INT 3 under MS +Windows, which should invoke a debugger if it's active.) This is +guaranteed to kill XEmacs! (But in this situation, XEmacs is about to +die anyway, and if no debugger is present, this will usefully dump +core.) = -(a)example -gdb `which xemacs` core -(a)end example +(a)node Q2.4.8, Q2.4.9, Q2.4.7, Installation +(a)unnumberedsubsec Q2.4.8: The keyboard or mouse is not working properl= y, or I have some other event-related problem. = -and then issue the command @samp{where} to get the stack backtrace. You -might have to use @code{dbx} or some similar debugger in place of -(a)code{gdb}. If you don't have any such debugger available, complain to -your system administrator. +XEmacs has various facilities for debugging event handling. = -It's possible that a core file didn't get produced or the stack trace -from gdb is garbage, in which case you're out of luck unless you can -reproduce the bug. A nonexistent core file can happen in some -circumstances on some operating systems, depending on what exactly -triggered the crash. It's also possible, however, that your limits -are set to turn them off. You may be able to reenable them using a -command like @samp{unlimit coredumpsize} or @samp{ulimit -c}. (To find -out how your limits are set, use the command @samp{limit}.) However, if -you didn't explicitly set your limits this way, go complain to your -system administrator and tell him not to disable core files by -default. +First, try setting the variable @code{debug-emacs-events} to non-zero. +This will output various information showing which events are being +received and how they are being translated. This may show you, for +example, that a key command is getting intercepted using +(a)code{key-translation-map}; this problem can otherwise be very tricky +to debug. = -A garbaged stack trace can happen for various reasons. Some versions -of gdb are broken on certain operating systems and aren't able to read -the core file. It's also possible that the stack got overwritten -during the crash. A very simple reason, however, is that your version -of XEmacs was compiled without debugging information or had the -debugging information stripped. A compilation with optimization can -also result in partly or completely garbaged stack trace. In such -cases, you will need to recompile XEmacs with debugging information -and without optimization; @xref{Q2.3.3, How to debug an XEmacs problem -with a debugger}. Note also that core files currently don't work at -all under Cygwin, and the only way to get a backtrace is to run XEmacs -from gdb. +Under X, you can see exactly which events are being received from the +window system by setting @code{x-debug-events} to non-zero. (The value +(a)samp{1} gives you regular output, and @samp{2} gives you verbose +output, including all parameters.) = -If you cannot get a backtrace from the core dump, but can reproduce -the problem, try running XEmacs under gdb. The goal is to get clean C -and Lisp backtraces and submit a bug report including full -configuration information as described above, as this will greatly -assist in the process of tracking down the bug. However, even partial -information is better than none. The process of getting backtraces -from gdb is described in detail in @ref{Q2.3.3, How to debug an XEmacs -problem with a debugger}. +A similar facility exists under MS Windows: Set +(a)code{debug-mswindows-events} to non-zero. (The value @samp{1} gives +you regular output. The value @samp{2} gives you verbose output, +including all parameters. The value @samp{3} gives you +super-gorily-detailed output.) = -If you're under Microsoft Windows, you're out of luck unless you happen -to have a debugging aid installed on your system, for example Visual -C++. In this case, the crash will result in a message giving you the -option to enter a debugger (for example, by pressing @samp{Cancel}). Do -this and locate the stack-trace window. (If your XEmacs was built -without debugging information, the stack trace may not be very useful.) +(a)node Q2.4.9, Q2.4.10, Q2.4.8, Installation +(a)unnumberedsubsec Q2.4.9: @kbd{C-g} doesn't work for me. Is it broken? = -When making a problem report make sure that: +(a)kbd{C-g} does work for most people in most circumstances. If it +doesn't, there are two possible explanations: = @enumerate @item -Report @strong{all} of the information output by XEmacs during the -crash. +XEmacs is hung in a way that prevents @kbd{C-g} from working. This +can happen when code is wrapped with a binding of @code{inhibit-quit} +to @code{t}; you should still be able interrupt XEmacs using "critical +quit". On the other hand, XEmacs may be seriously wedged. (If you're +lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.) = +(a)xref{Q2.4.6, XEmacs hangs when I try to do something.}. = @item -You mention what O/S and Hardware you are running XEmacs on. +(a)kbd{C-g} is indeed broken on your system. To test, try executing +(a)code{(while t)} from the @samp{*scratch*} buffer. If @kbd{C-g} +doesn't interrupt, then it's broken. This used to happen with systems +where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined. +However, there may not be very many such systems nowadays. +(a)end enumerate = -(a)item -What version of XEmacs you are running. +(a)node Q2.4.10, Q2.4.11, Q2.4.9, Installation +(a)unnumberedsubsec Q2.4.10: How do I debug process-related problems? = -(a)item -What build options you are using. +Under MS Windows, you can set the variable +(a)code{debug-mswindows-process-command-lines} to non-(a)samp{nil} to get +information on exactly what is getting passed to a process. This can +be useful in determining problems with quoting. (Under Unix, a process +receives each argument separately, but under MS Windows a single +command line is received, and arguments with spaces or other special +characters in them must be quoted. Unfortunately this means that each +process, potentially at least, has its own quoting conventions, and +the code to process quoting conventions in @file{cmd.exe}, the Visual +C++ startup code and the like is baroque and poorly documented. +XEmacs uses the variable +(a)code{mswindows-construct-process-command-line-alist} to construct a +command line from a list of arguments based on the command to be run, +but it is (and cannot be) a perfect solution.) = -(a)item -If the problem is related to graphics and you are running Unix or Mac -OS X, we will also need to know what version of the X Window System -you are running, and what window manager you are using. +(a)node Q2.4.11, Q2.4.12, Q2.4.10, Installation +(a)unnumberedsubsec Q2.4.11: XEmacs is outputting lots of X errors. = -(a)item -If the problem happened on a TTY, please include the terminal type. +If this is happening, we would very much like to know what's causing +them. To find this out, see @ref{Q2.4.4, How to debug an XEmacs +problem with a debugger}. Try to get both a C and Lisp backtrace, and +send them along with the full error output to +(a)email{xemacs-beta@@xemacs.org}. = -(a)item -Try very hard to get both C and Lisp backtraces, as described above. -(a)end enumerate +(a)node Q2.4.12, Q2.5.1, Q2.4.11, Installation +(a)unnumberedsubsec Q2.4.12: After upgrading, XEmacs won't do `foo' any = more! = -Much of the information above is automatically generated by @kbd{M-x -report-emacs-bug}. Even more, and often useful, information can be -generated by redirecting the output of @code{make} and @code{make check} -to a file (@file{beta.err} is the default used by @code{build-report}), -and executing @kbd{M-x build-report}. +You have been used to doing `foo', but now when you invoke it (or +click the toolbar button or select the menu item), nothing (or an +error) happens. The simplest explanation is that you are missing a +package that is essential to you. You can either track it down and +install it (there is a list of packages and brief descriptions of +their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball' +(@pxref{Q2.1.2, How do I figure out which packages to install?}). = +(a)c #### should xref to XEmacs manual here = -(a)node Q2.3.2, Q2.3.3, Q2.3.1, Installation -(a)unnumberedsubsec Q2.3.2: XEmacs crashes and I compiled it myself. +(a)unnumberedsec 2.5: Startup-Related Problems = -There have been a variety of reports of crashes due to compilers with -buggy optimizers. If you are compiling with optimization, consider -turning it off (@pxref{Q2.3.3, How to debug an XEmacs problem with a -debugger}) and recompiling. +(a)node Q2.5.1, Q2.5.2, Q2.4.12, Installation +(a)unnumberedsubsec Q2.5.1: XEmacs cannot connect to my X Terminal! = -Please see the @file{PROBLEMS} file that comes with XEmacs (it's in -the top-level source directory) to read what it says about your -platform. +Help! I can not get XEmacs to display on my Envizex X-terminal! = -If you compiled XEmacs using @samp{--use-union-type} (or the option -(a)samp{USE_UNION_TYPE} in @file{config.inc} under Windows), try -recompiling again without it. The union type has been known to trigger -compiler errors in a number of cases. +Try setting the @code{DISPLAY} variable using the numeric IP address of +the host you are running XEmacs from. = -(a)node Q2.3.3, Q2.3.4, Q2.3.2, Installation -(a)unnumberedsubsec Q2.3.3: How to debug an XEmacs problem with a debugg= er +(a)node Q2.5.2, Q2.5.3, Q2.5.1, Installation +(a)unnumberedsubsec Q2.5.2 Startup problems related to paths or package = locations. = -If XEmacs does crash on you, one of the most productive things you can -do to help get the bug fixed is to poke around a bit with the debugger. -Here are some hints: +First of all, if XEmacs can't find the packages, check to make sure +that you put the packages in the right place, or that you told XEmacs +where to look for the packages when you compiled it. @xref{Q2.1.1}. + +If something is still going wrong, or you get a startup warning about +not being able to deduce some paths, you can get detailed information +on the path-searching process at startup by setting the environment +variable @samp{EMACSDEBUGPATHS} to a non-null value. One thing to +look for if you're having package problems is the value of +(a)samp{configure-package-path}. This corresponds to what was compiled +into XEmacs using the @samp{--package-prefix} or @samp{--package-path} +parameter (@pxref{Q2.1.1}). If this has the value of @samp{nil}, +this means that no value was compiled into XEmacs using these parameters. = -(a)itemize @bullet -(a)item -First of all, if the crash is at all reproducible, consider very -strongly recompiling your XEmacs with debugging symbols and with no -optimization (e.g. with GCC use the compiler flags @samp{-g -O0} -- -that's an "oh" followed by a zero), and with the configure options -(a)samp{--debug=3Dyes} and @samp{--error-checking=3Dall}. This will make -your XEmacs run somewhat slower, but you are a lot more likely to -catch the problem earlier (closer to its source). It makes it a lot -easier to determine what's going on with a debugger. The way to -control the compiler flags is with the configuration option -(a)samp{--cflags}. If you have a recent version of 21.5, you should use -(a)samp{--without-optimization} in preference to directly setting -(a)samp{--cflags}. +(a)node Q2.5.3, Q2.5.4, Q2.5.2, Installation +(a)unnumberedsubsec Q2.5.3: XEmacs won't start without network. = -(a)item -If it's not a true crash (@emph{i.e.}, XEmacs is hung, or a zombie -process), or it's inconvenient to run XEmacs again because XEmacs is -already running or is running in batch mode as part of a bunch of -scripts, you may be able to attach to the existing process with your -debugger. Under Unix and Mac OS X, the typical way to do this is to -first use some variant of the @samp{ps} command to figure out the -process ID of XEmacs, for example @samp{ps -auxww | grep xemacs} under -a BSD variant, @samp{ps -elf | grep xemacs} under Linux or System V, -or @samp{ps -aW | grep xemacs} under Cygwin. Then run +If XEmacs starts when you're on the network, but fails when you're not +on the network, you may be missing a "localhost" entry in your +(a)file{/etc/hosts} file. The file should contain an entry like: = @example -gdb /path/to/xemacs/xemacs #### +127.0.0.1 localhost @end example = -Where @code{####} is the process id of your XEmacs. (If you're not -sure, try using @samp{which xemacs}.) When gdb attaches, the xemacs -will stop and you can type @samp{where} in gdb to get a stack trace as -usual. To get things moving again, you can just type @samp{quit} in -gdb. It'll tell you the program is running and ask if you want to -quit anyways. Say @samp{y} and it'll quit and have your emacs -continue from where it was at. +Add that line, and XEmacs will be happy. = -If you're running another debugger, a similar method may work, or you -may have to run the debugger first and then use the @code{attach} -command or something similar. +(a)node Q2.5.4, Q2.5.5, Q2.5.3, Installation +(a)unnumberedsubsec Q2.5.4: Startup warnings about deducing proper fonts? = -Under Microsoft Windows, use the menu item @samp{Build->Start -Debug->Attach to Process...} and select the XEmacs process from the list -given. +How can I avoid the startup warnings about deducing proper fonts? = -(a)item -If you're able to run XEmacs under a debugger and reproduce the crash, -here are some things you can do: +This is highly dependent on your installation, but try with the +following font as your base font for XEmacs and see what it does: = -(a)item -If XEmacs is hitting an assertion failure, put a breakpoint on -(a)code{assert_failed()}. +(a)format +-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 +(a)end format = -(a)item -If XEmacs is hitting some weird Lisp error that's causing it to crash -(e.g. during startup), put a breakpoint on @code{signal_1()}---this is -declared static in @file{eval.c}. +More precisely, do the following in your resource file: = -(a)item -If XEmacs is outputting lots of X errors, put a breakpoint on -(a)code{x_error_handler()}; that will tell you which call is causing -them. Note that the result may not be very useful by default because -X Windows normally operates asynchronously: A bunch of commands are -buffered up and then sent to the server all at once. This greatly -improves performance over a network but means that an error may not be -reported until the server receives the commands, which can be long -after XEmacs made the erroneous calls. For best results, you need to -make the X server synchronous before getting the backtrace. This can -be done by starting XEmacs with the @samp{-sync} option or executing -the Lisp code @code{(x-debug-mode t)}. +(a)format +Emacs.default.attributeFont: \ +-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 +(a)end format = -(a)item -Internally, you will probably see lots of variables that hold objects of -type @code{Lisp_Object}. These are references to Lisp objects. -Printing them out with the debugger probably won't be too -useful---you'll likely just see a number. To decode them, do this: +If you just don't want to see the @samp{*Warnings*} buffer at startup +time, you can set this: + +(a)lisp +(setq display-warning-minimum-level 'error) +(a)end lisp + +The buffer still exists; it just isn't in your face. + +(a)node Q2.5.5, Q2.5.6, Q2.5.4, Installation +(a)unnumberedsubsec Q2.5.5: Warnings from incorrect key modifiers. + +The following information comes from the @file{PROBLEMS} file that comes +with XEmacs. + +If you're having troubles with HP/UX it is because HP/UX defines the +modifiers wrong in X. Here is a shell script to fix the problem; be +sure that it is run after VUE configures the X server. = @example -call debug_print (OBJECT) +#! /bin/sh +xmodmap 2> /dev/null - << EOF +keysym Alt_L =3D Meta_L +keysym Alt_R =3D Meta_R +EOF + +xmodmap - << EOF +clear mod1 +keysym Mode_switch =3D NoSymbol +add mod1 =3D Meta_L +keysym Meta_R =3D Mode_switch +add mod2 =3D Mode_switch +EOF @end example + +(a)node Q2.5.6, , Q2.5.5, Installation +(a)unnumberedsubsec Q2.5.6: XEmacs 21.1 on Windows used to spawn an ugly= console window on every startup. Has that been fixed? + +Yes. = -where @var{OBJECT} is whatever you want to decode (it can be a variable, -a function call, etc.). This uses the Lisp printing routines to out a -readable representation on the TTY from which the xemacs process was -invoked. +The console was there because @file{temacs} (and in turn, @file{xemacs}) +was a console application, and Windows typically creates a new +console for a console process unless the creating process requests that +one isn't created. This used to be fixed with @file{runemacs}, a small +Windows application that existed merely to start @file{xemacs}, stating +that it didn't want a console. = -Under 21.5 and later, @code{dp} is defined as an easier-to-type equivale= nt -of @code{debug_print}. You can also try @code{dpa} if you can't see -the output from @code{debug_print} (this will return a string containing -the output), or use @code{debug_p3} if @code{debug_print} itself triggers -a crash (this is a less comprehensive but super-safe way to print out -a Lisp object). +XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI" +application. The explanation of what that means is included for +educational value. = -(a)item -If you want to get a Lisp backtrace showing the Lisp call -stack, do this: +When building an application to be run in a Win32 environment, you must +state which sub-system it is to run in. Valid subsystems include +"console" and "gui". The subsystem you use affects the run time +libraries linked into your application, the start up function that is +run before control is handed over to your application, the entry point +to your program, and how Windows normally invokes your program. (Console +programs automatically get a console created for them at startup if +their stdin/stdout don't point anywhere useful, which is the case when +run from the GUI. This is a stupid design, of course -- instead, the +console should get created only when the first I/O actually occurs! +GUI programs have an equally stupid design: When called from +(a)file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to +point nowhere useful, even though the command shell has its own +stdin/stdout. It's as if someone who had learned a bit about stdio but +had no actual knowledge of interprocess communication designed the +scheme; unfortunately, the whole process-communication aspect of the +Win32 API is equally badly designed.) For example, the entry point for a +console app is "main" (which is what you'd expect for a C/C++ program), +but the entry point for a "gui" app is "WinMain". This confuses and +annoys a lot of programmers who've grown up on Unix systems, where the +kernel doesn't really care whether your application is a gui program or +not. = -(a)example -call debug_backtrace () -(a)end example +For reasons not altogether clear, and are lost in the mists of time and +tradition, XEmacs on Win32 started out as a console application, and +therefore a console was automatically created for it. (It may have been +made a console application partly because a console is needed in some +circumstances, especially under Win95, to interrupt, terminate, or send +signals to a child process, and because of the bogosity mentioned above +with GUI programs and the standard command shell. Currently, XEmacs +just creates and immediately hides a console when necessary, and +works around the "no useful stdio" problem by creating its own console +window as necessary to display messages in.) = -Under 21.5 and later, @code{db} is defined as an easier-to-type equivale= nt -of @code{debug_backtrace}. +(a)node Editing, Display, Installation, Top +(a)unnumbered 3 Editing Functions = -(a)item -Using @code{debug_print} and @code{debug_backtrace} has two -disadvantages - they can only be used with a running (including hung -or zombie) xemacs process, and they do not display the internal C -structure of a Lisp Object. Even if all you've got is a core dump, -all is not lost. +This is part 3 of the XEmacs Frequently Asked Questions list. This +section is devoted to the editing-related capabilities of XEmacs (the +keyboard, mouse, buffers, text selections, etc.) and how to customize +them. = -If you're using GDB, there are some macros in the file -(a)file{src/.gdbinit} in the XEmacs source distribution that should make -it easier for you to decode Lisp objects. This file is automatically -read by gdb if gdb is run in the directory where xemacs was built, and -contains these useful macros to inspect the state of xemacs: +(a)menu +3.0: The Keyboard +* Q3.0.1:: How can I customize the keyboard? +* Q3.0.2:: How can I bind complex functions (or macros) to keys? +* Q3.0.3:: How do I bind C-. and C-; to scroll one line up and down? +* Q3.0.4:: Globally binding @kbd{Delete}? +* Q3.0.5:: How to map @kbd{Help} key alone on Sun type4 keyboard? +* Q3.0.6:: How can you type in special characters in XEmacs? +* Q3.0.7:: Can I turn on @dfn{sticky} modifier keys? +* Q3.0.8:: How do I map the arrow keys? +* Q3.0.9:: HP Alt key as Meta. +* Q3.0.10:: Why does edt emulation not work? +* Q3.0.11:: How can I emulate VI and use it as my default mode? = -(a)table @code -(a)item pobj -Usage: pobj lisp_object @* -Print the internal C representation of a lisp object. +3.1: The Mouse +* Q3.1.1:: How can I turn off Mouse pasting? +* Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons? +* Q3.1.3:: Clicking the left button does not do anything in buffer li= st. +* Q3.1.4:: How can I get a list of buffers when I hit mouse button 3? +* Q3.1.5:: How can I set XEmacs up so that it pastes where the text c= ursor is? = -(a)item xtype -Usage: xtype lisp_object @* -Print the Lisp type of a lisp object. +3.2: Buffers, Text Editing +* Q3.2.1:: Can I have the end of the buffer delimited in some way? +* Q3.2.2:: How do I insert today's date into a buffer? +* Q3.2.3:: How do I get a single minibuffer frame? +* Q3.2.4:: How can I enable auto-indent and/or Filladapt? +* Q3.2.5:: How can I get XEmacs to come up in text/auto-fill mode by = default? + +3.3: Text Selections +* Q3.3.1:: How do I select a rectangular region? +* Q3.3.2:: How can I turn off or change highlighted selections? +* Q3.3.3:: How do I cause typing on an active region to remove it? +* Q3.3.4:: Can I turn off the highlight during isearch? +* Q3.3.5:: Why is killing so slow? +* Q3.3.6:: Why does @kbd{M-w} take so long? + +3.4: Editing Source Code +* Q3.4.1:: I do not like cc-mode. How do I use the old c-mode? +* Q3.4.2:: How do you make XEmacs indent CL if-clauses correctly? +(a)end menu = -(a)item lbt -Usage: lbt @* -Print the current Lisp stack trace. -Requires a running xemacs process. (It works by calling the db -routine described above.) +(a)unnumberedsec 3.0: The Keyboard = -(a)item ldp -Usage: ldp lisp_object @* -Print a Lisp Object value using the Lisp printer. -Requires a running xemacs process. (It works by calling the dp -routine described above.) +(a)node Q3.0.1, Q3.0.2, Editing, Editing +(a)unnumberedsubsec Q3.0.1: How can I customize the keyboard? = -(a)item run-temacs -Usage: run-temacs @* -Run temacs interactively, like xemacs. -Use this with debugging tools (like purify) that cannot deal with dumpin= g, -or when temacs builds successfully, but xemacs does not. +#### Write me. = -(a)item dump-temacs -Usage: dump-temacs @* -Run the dumping part of the build procedure. -Use when debugging temacs, not xemacs! -Use this when temacs builds successfully, but xemacs does not. +(a)node Q3.0.2, Q3.0.3, Q3.0.1, Editing +(a)unnumberedsubsec Q3.0.2: How can I bind complex functions (or macros)= to keys? = -(a)item check-xemacs -Usage: check-xemacs @* -Run the test suite. Equivalent to 'make check'. +As an example, say you want the @kbd{paste} key on a Sun keyboard to +insert the current Primary X selection at point. You can accomplish this +with: = -(a)item check-temacs -Usage: check-temacs @* -Run the test suite on temacs. Equivalent to 'make check-temacs'. -Use this with debugging tools (like purify) that cannot deal with dumpin= g, -or when temacs builds successfully, but xemacs does not. -(a)end table +(a)lisp +(define-key global-map [f18] 'x-insert-selection) +(a)end lisp = -If you are using Sun's @file{dbx} debugger, there is an equivalent file -(a)file{src/.dbxrc}, which defines the same commands for dbx. +However, this only works if there is a current X selection (the +selection will be highlighted). The functionality I like is for the +(a)kbd{paste} key to insert the current X selection if there is one, +otherwise insert the contents of the clipboard. To do this you need to +pass arguments to @code{x-insert-selection}. This is done by wrapping +the call in a 'lambda form: = -(a)item -If you're using a debugger to get a C stack backtrace and you're seeing -stack traces with some of the innermost frames mangled, it may be due to -dynamic linking. (This happens especially under Linux.) Consider -reconfiguring with @samp{--dynamic=3Dno}. Also, sometimes (again under -Linux), stack backtraces of core dumps will have the frame where the -fatal signal occurred mangled; if you can obtain a stack trace while -running the XEmacs process under a debugger, the stack trace should be -clean. +(a)lisp +(global-set-key [f18] + (lambda () (interactive) (x-insert-selection t nil))) +(a)end lisp = -(a)email{1CMC3466@@ibm.mtsac.edu, Curtiss} suggests upgrading to ld.so -version 1.8 if dynamic linking and debugging is a problem on Linux. +This binds the f18 key to a @dfn{generic} functional object. The +interactive spec is required because only interactive functions can be +bound to keys. = -(a)item -If you're using a debugger to get a C stack backtrace and you're -getting a completely mangled and bogus stack trace, it's probably due to -one of the following: +For the FAQ example you could use: = -(a)enumerate a -(a)item -Your executable has been stripped. Bad news. Tell your sysadmin not to -do this---it doesn't accomplish anything except to save a bit of disk -space, and makes debugging much much harder. +(a)lisp +(global-set-key [(control ?.)] + (lambda () (interactive) (scroll-up 1))) +(global-set-key [(control ?;)] + (lambda () (interactive) (scroll-up -1))) +(a)end lisp = -(a)item -Your stack is getting trashed. Debugging this is hard; you have to do a -binary-search type of narrowing down where the crash occurs, until you -figure out exactly which line is causing the problem. Of course, this -only works if the bug is highly reproducible. Also, in many cases if -you run XEmacs from the debugger, the debugger can protect the stack -somewhat. However, if the stack is being smashed, it is typically the -case that there is a wild pointer somewhere in the program, often quite -far from where the crash occurs. +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. +(a)xref{Q3.0.3, How do I bind C-. and C-; to scroll one line up and +down?}. = -(a)item -If your stack trace has exactly one frame in it, with address 0x0, this -could simply mean that XEmacs attempted to execute code at that address, -e.g. through jumping to a null function pointer. Unfortunately, under -those circumstances, GDB under Linux doesn't know how to get a stack -trace. (Yes, this is the fourth Linux-related problem I've mentioned. I -have no idea why GDB under Linux is so bogus. Complain to the GDB -authors, or to comp.os.linux.development.system.) Again, you'll have to -use the narrowing-down process described above. +(a)node Q3.0.3, Q3.0.4, Q3.0.2, Editing +(a)unnumberedsubsec Q3.0.3: How do I bind C-. and C-; to scroll one line= up and down? = -(a)item -You will get a Lisp backtrace output when XEmacs crashes, so you'll have -something useful. +Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynari= k} and +(a)email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}: = -(a)end enumerate +(a)lisp +(defun scroll-up-one-line () + (interactive) + (scroll-up 1)) = -(a)item -If you compile with the newer gcc variants gcc-2.8 or egcs, you will -also need gdb 4.17 or above. Earlier releases of gdb can't handle the -debug information generated by the newer compilers. +(defun scroll-down-one-line () + (interactive) + (scroll-down 1)) = -(a)item -In versions of XEmacs before 21.2.27, @file{src/.gdbinit} was named -(a)file{src/gdbinit}. This had the disadvantage of not being sourced -automatically by gdb, so you had to set that up yourself. +(global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. +(global-set-key [(control ?;)] 'scroll-down-one-line) ; C-; +(a)end lisp = -(a)item -If you are running Microsoft Windows, the the file @file{nt/README} for -further information about debugging XEmacs. +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. (@pxref{Q3.0.2, How can I bind complex functions (or macros) to +keys?} for a better answer). = -(a)end itemize +(a)node Q3.0.4, Q3.0.5, Q3.0.3, Editing +(a)unnumberedsubsec Q3.0.4: Globally binding @kbd{Delete}? = -(a)node Q2.3.4, Q2.3.5, Q2.3.3, Installation -(a)unnumberedsubsec Q2.3.4: I get a cryptic error message when trying to= do something. +I cannot manage to globally bind my @kbd{Delete} key to something other +than the default. How does one do this? = -When I try to use some particular option of some particular package, I -get a cryptic error message in the minibuffer. +Answer: The problem is that many modes explicitly bind @kbd{Delete}. To +get around this, try the following: = -If the message went by too quickly, use @samp{Help->Recent Messages} -from the menubar (or type @kbd{C-h l}) to see recent messages. +(a)lisp +(defun foo () + (interactive) + (message "You hit DELETE")) = -If you can't figure out what's going on, select -(a)samp{Options->Troubleshooting->Debug on Error} from the menubar (or -type @kbd{M-:} then @kbd{(setq debug-on-error t)}) then try and make -the error happen again. This will put in the debugger (you can get -out of this and continue what you were doing before by typing @kbd{c}) -and give you a backtrace that may be enlightening. If not, try -reading through this FAQ; if that fails, you could try posting to -(a)samp{comp.emacs.xemacs} (making sure to include the backtrace) and -someone may be able to help. If you can identify which XEmacs Lisp -source file the error is coming from you can get a more detailed stack -backtrace by doing the following: +(define-key key-translation-map 'delete 'redirected-delete) +(global-set-key 'redirected-delete 'foo) +(a)end lisp = -(a)enumerate -(a)item -Visit the .el file in an XEmacs buffer. +(a)node Q3.0.5, Q3.0.6, Q3.0.4, Editing +(a)unnumberedsubsec Q3.0.5: How to map @kbd{Help} key alone on Sun type4= keyboard? = -(a)item -Issue the command @kbd{M-x eval-current-buffer}. +The following works in GNU Emacs 19: = -(a)item -Reproduce the error. -(a)end enumerate +(a)lisp +(global-set-key [help] 'help-command);; Help +(a)end lisp = -For more information on debugging Lisp code, @xref{Debugging,,, -lispref, XEmacs Lisp Reference Manual}. +The following works in XEmacs with the addition of shift: + +(a)lisp +(global-set-key [(shift help)] 'help-command);; Help +(a)end lisp = -(a)node Q2.3.5, Q2.3.6, Q2.3.4, Installation -(a)unnumberedsubsec Q2.3.5: XEmacs hangs when I try to do something. +But it doesn't work alone. This is in the file @file{PROBLEMS} which +should have come with your XEmacs installation: @emph{Emacs ignores the +(a)kbd{help} key when running OLWM}. = -XEmacs might just be slow; some operations take a long time. XEmacs -may also be waiting on a response from the network, for example when -you are trying to send mail. +OLWM grabs the @kbd{help} key, and retransmits it to the appropriate +client using +(a)iftex +@* +(a)end iftex +(a)code{XSendEvent}. Allowing Emacs to react to synthetic +events is a security hole, so this is turned off by default. You can +enable it by setting the variable @code{x-allow-sendevents} to t. You +can also cause fix this by telling OLWM to not grab the help key, with +the null binding @code{OpenWindows.KeyboardCommand.Help:}. = -You can usually interrupt XEmacs by typing @kbd{C-g}. If not (for -example, Lisp code explicitly disabled this by setting -(a)code{inhibit-quit}), you can use the "critical quit" mechanism by -typing @kbd{Control-Shift-G}. This should also pop you into the -debugger and give you a backtrace, which can tell you where the -problem is (@pxref{Q2.3.3, How to debug an XEmacs problem with a -debugger}). (Note that setting @code{debug-on-quit} or selecting -(a)samp{Options->Troubleshooting->Debug on Quit} will also cause regular -(a)kbd{C-g} to enter the debugger and give you a backtrace.) +(a)node Q3.0.6, Q3.0.7, Q3.0.5, Editing +(a)unnumberedsubsec Q3.0.6: How can you type in special characters in XE= macs? +One way is to use the package @code{x-compose}. Then you can use +sequences like @kbd{Compose " a} to get =C3=A4, etc. = -If you can't interrupt XEmacs this way, or for some reason XEmacs is -not talking to the keyboard, you can try sending the @samp{SIGINT} -signal using the @samp{kill} command. +Another way is to use the @code{iso-insert} package. Then you can use +sequences like @kbd{C-x 8 " a} to get =C3=A4, etc. = -If the Lisp backtrace isn't enlightening, or if XEmacs is so hung that -you can't interrupt it at all, you could try attaching to the process -and getting a C stack backtrace. @xref{Q2.3.3, How to debug an XEmacs -problem with a debugger}. +(a)email{glynn@@sensei.co.uk, Glynn Clements} writes: = -(a)node Q2.3.6, Q2.3.7, Q2.3.5, Installation -(a)unnumberedsubsec Q2.3.6: I get an error message when XEmacs is runnin= g in batch mode. +(a)quotation +It depends upon your X server. = -Typically this happens when you are trying to compile some Elisp code. -If you are doing this as part of XEmacs or the XEmacs packages, you -should automatically get a backtrace, which can help you determine the -source of the problem. In other cases, you can get equivalent results -by setting the environment variable @samp{XEMACSDEBUG} to @samp{(setq -stack-trace-on-error t load-always-display-messages t -load-ignore-out-of-date-elc-files t load-show-full-path-in-messages -t)} (this needs to be all on one line; to set an environment variable, -use @samp{export XEMACSDEBUG=3D'FOO'} under @samp{bash}, @samp{zsh}, -etc. or @samp{setenv XEMACSDEBUG 'FOO'} under @samp{csh} and -(a)samp{tcsh}). @samp{XEMACSDEBUG} specifies Lisp code that will be -executed at startup time. +Generally, the simplest way is to define a key as Multi_key with +xmodmap, e.g. +(a)c hey, show some respect, willya -- there's xkeycaps, isn't there? -- +(a)c chr ;) +(a)example + xmodmap -e 'keycode 0xff20 =3D Multi_key' +(a)end example = -If the backtrace is not sufficiently useful in helping you diagnose -the problem, you should consider using a debugger such as GDB. -(a)xref{Q2.3.3, How to debug an XEmacs problem with a debugger}. You -probably want to set a breakpoint on @code{signal_1}. Since such -errors often occur during compiling, which is often triggered by a -complex command run from a make suite, it may be easier to attach to -the process once it's running. +You will need to pick an appropriate keycode. Use xev to find out the +keycodes for each key. = -Under Microsoft Windows (and perhaps other operating systems), there -is another useful trick you can do if you have configured with -debugging support (configure option @samp{--debug} or setting -(a)samp{DEBUG_XEMACS} in @file{nt/config.inc}). Set the environment -variable @samp{XEMACSDEBUG} (as described above) to @samp{(setq -debug-on-error t)}. Then, when an error occurs noninteractively, -instead of trying to invoke the Lisp debugger (which obviously won't -work), XEmacs will break out to a C debugger using -(a)code{(force-debugging-signal t)}. @emph{NOTE}: This runs -(a)code{abort()}!!! (As well as and after executing INT 3 under MS -Windows, which should invoke a debugger if it's active.) This is -guaranteed to kill XEmacs! (But in this situation, XEmacs is about to -die anyway, and if no debugger is present, this will usefully dump -core.) +[NB: On a `Windows' keyboard, recent versions of XFree86 automatically +define the right `Windows' key as Multi_key'.] = -(a)node Q2.3.7, Q2.3.8, Q2.3.6, Installation -(a)unnumberedsubsec Q2.3.7: The keyboard or mouse is not working properl= y, or I have some other event-related problem. +Once you have Multi_key defined, you can use e.g. +(a)example + Multi a ' =3D> =C3=A1 + Multi e " =3D> =C3=AB + Multi c , =3D> =C3=A7 +(a)end example = -XEmacs has various facilities for debugging event handling. +etc. = -First, try setting the variable @code{debug-emacs-events} to non-zero. -This will output various information showing which events are being -received and how they are being translated. This may show you, for -example, that a key command is getting intercepted using -(a)code{key-translation-map}; this problem can otherwise be very tricky -to debug. +Also, recent versions of XFree86 define various AltGr- +combinations as dead keys, i.e. +(a)example + AltGr [ =3D> dead_diaeresis + AltGr ] =3D> dead_tilde + AltGr ; =3D> dead_acute +(a)end example +etc. = -Under X, you can see exactly which events are being received from the -window system by setting @code{x-debug-events} to non-zero. (The value -(a)samp{1} gives you regular output, and @samp{2} gives you verbose -output, including all parameters.) +Running @samp{xmodmap -pk} will list all of the defined keysyms. +(a)end quotation = -A similar facility exists under MS Windows: Set -(a)code{debug-mswindows-events} to non-zero. (The value @samp{1} gives -you regular output. The value @samp{2} gives you verbose output, -including all parameters. The value @samp{3} gives you -super-gorily-detailed output.) +For the related problem of @emph{displaying} non-ASCII characters in a +non-Mule XEmacs, @xref{Q4.0.8, How do I display non-ASCII characters?}. = -(a)node Q2.3.8, Q2.3.9, Q2.3.7, Installation -(a)unnumberedsubsec Q2.3.8: @kbd{C-g} doesn't work for me. Is it broken? +(a)node Q3.0.7, Q3.0.8, Q3.0.6, Editing +(a)unnumberedsubsec Q3.0.7: Can I turn on @dfn{sticky} modifier keys? = -(a)kbd{C-g} does work for most people in most circumstances. If it -doesn't, there are two possible explanations: +Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the +effect of being able to press and release Shift and have the next +character typed come out in upper case. This will affect all the other +modifier keys like Control and Meta as well. = -(a)enumerate -(a)item -XEmacs is hung in a way that prevents @kbd{C-g} from working. This -can happen when code is wrapped with a binding of @code{inhibit-quit} -to @code{t}; you should still be able interrupt XEmacs using "critical -quit". On the other hand, XEmacs may be seriously wedged. (If you're -lucky, sending @samp{SIGINT} to the XEmacs process will interrupt it.) = -(a)xref{Q2.3.5, XEmacs hangs when I try to do something.}. +(a)email{ben@@xemacs.org, Ben Wing} writes: = -(a)item -(a)kbd{C-g} is indeed broken on your system. To test, try executing -(a)code{(while t)} from the @samp{*scratch*} buffer. If @kbd{C-g} -doesn't interrupt, then it's broken. This used to happen with systems -where @samp{SIGIO} was broken, but @samp{BROKEN_SIGIO} wasn't defined. -However, there may not be very many such systems nowadays. -(a)end enumerate +(a)quotation +One thing about the sticky modifiers is that if you move the mouse out +of the frame and back in, it cancels all currently ``stuck'' modifiers. +(a)end quotation = -(a)node Q2.3.9, Q2.3.10, Q2.3.8, Installation -(a)unnumberedsubsec Q2.3.9: How do I debug process-related problems? +(a)node Q3.0.8, Q3.0.9, Q3.0.7, Editing +(a)unnumberedsubsec Q3.0.8: How do I map the arrow keys? +(a)c New +Say you want to map @kbd{C-(a)key{right}} to forward-word: = -Under MS Windows, you can set the variable -(a)code{debug-mswindows-process-command-lines} to non-(a)samp{nil} to get -information on exactly what is getting passed to a process. This can -be useful in determining problems with quoting. (Under Unix, a process -receives each argument separately, but under MS Windows a single -command line is received, and arguments with spaces or other special -characters in them must be quoted. Unfortunately this means that each -process, potentially at least, has its own quoting conventions, and -the code to process quoting conventions in @file{cmd.exe}, the Visual -C++ startup code and the like is baroque and poorly documented. -XEmacs uses the variable -(a)code{mswindows-construct-process-command-line-alist} to construct a -command line from a list of arguments based on the command to be run, -but it is (and cannot be) a perfect solution.) +(a)email{sds@@usa.net, Sam Steingold} writes: = -(a)node Q2.3.10, Q2.3.11, Q2.3.9, Installation -(a)unnumberedsubsec Q2.3.10: XEmacs is outputting lots of X errors. +(a)quotation +(a)lisp +; both XEmacs and Emacs +(define-key global-map [(control right)] 'forward-word) +(a)end lisp +or +(a)lisp +; Emacs only +(define-key global-map [C-right] 'forward-word) +(a)end lisp +or +(a)lisp +; ver > 20, both +(define-key global-map (kbd "C-") 'forward-word) +(a)end lisp +(a)end quotation = -If this is happening, we would very much like to know what's causing -them. To find this out, see @ref{Q2.3.3, How to debug an XEmacs -problem with a debugger}. Try to get both a C and Lisp backtrace, and -send them along with the full error output to -(a)email{xemacs-beta@@xemacs.org}. +(a)node Q3.0.9, Q3.0.10, Q3.0.8, Editing +(a)unnumberedsubsec Q3.0.9: HP Alt key as Meta. = -(a)node Q2.3.11, Q2.4.1, Q2.3.10, Installation -(a)unnumberedsubsec Q2.3.11: After upgrading, XEmacs won't do `foo' any = more! +How can I make XEmacs recognize the Alt key of my HP workstation as a +Meta key? = -You have been used to doing `foo', but now when you invoke it (or -click the toolbar button or select the menu item), nothing (or an -error) happens. The simplest explanation is that you are missing a -package that is essential to you. You can either track it down and -install it (there is a list of packages and brief descriptions of -their contents in @file{etc/PACKAGES}), or install the `Sumo Tarball' -(@pxref{Q2.0.2, How do I figure out which packages to install?}). +Put the following line into a file and load it with xmodmap(1) before +starting XEmacs: = -(a)c #### should xref to XEmacs manual here +(a)example +remove Mod1 =3D Mode_switch +(a)end example = -(a)unnumberedsec 2.4: Startup-Related Problems +(a)node Q3.0.10, Q3.0.11, Q3.0.9, Editing +(a)unnumberedsubsec Q3.0.10: Why does edt emulation not work? = -(a)node Q2.4.1, Q2.4.2, Q2.3.11, Installation -(a)unnumberedsubsec Q2.4.1: XEmacs cannot connect to my X Terminal! +We don't know, but you can use tpu-edt emulation instead, which works +fine and is a little fancier than the standard edt emulation. To do +this, add the following line to your @file{init.el}: = -Help! I can not get XEmacs to display on my Envizex X-terminal! +(a)lisp +(tpu-edt) +(a)end lisp = -Try setting the @code{DISPLAY} variable using the numeric IP address of -the host you are running XEmacs from. +If you don't want it to replace @kbd{C-h} with an edt-style help menu +add this as well: = -(a)node Q2.4.2, Q2.4.3, Q2.4.1, Installation -(a)unnumberedsubsec Q2.4.2: XEmacs won't start on Windows. +(a)lisp +(global-set-key [(control h)] 'help-for-help) +(a)end lisp = -XEmacs relies on a process called "dumping" to generate a working -executable. Under MS-Windows this process effectively fixes the memory -addresses of information in the executable. When XEmacs starts up it tri= es -to reserve these memory addresses so that the dumping process can be -reversed -- putting the information back at the correct addresses. -Unfortunately some .DLLs (for instance the soundblaster driver) occupy -memory addresses that can conflict with those needed by the dumped XEmacs -executable. In this instance XEmacs will fail to start without any -explanation. Note that this is extremely machine specific. +(a)node Q3.0.11, Q3.1.1, Q3.0.10, Editing +(a)unnumberedsubsec Q3.0.11: How can I emulate VI and use it as my defau= lt mode? = -21.1.10 includes a fix for this that makes more intelligent guesses -about which memory addresses will be free, and this should cure the -problem for most people. 21.4 implements "portable dumping", which -eliminates the problem altogether. We recommend you use the 21.4 -binaries, but you can use the 21.1 binaries if you are very paranoid -about stability. @xref{Q1.0.4, Are binaries available?}. +Our recommended VI emulator is viper. To make viper-mode the default, +add this to your @file{init.el}: = -(a)node Q2.4.3, Q2.4.4, Q2.4.2, Installation -(a)unnumberedsubsec Q2.4.3: XEmacs won't start without network. +(a)lisp +(viper-mode) +(a)end lisp = -If XEmacs starts when you're on the network, but fails when you're not -on the network, you may be missing a "localhost" entry in your -(a)file{/etc/hosts} file. The file should contain an entry like: +(a)email{kifer@@CS.SunySB.EDU, Michael Kifer} writes: = -(a)example -127.0.0.1 localhost -(a)end example +(a)quotation +This should be added as close to the top of @file{init.el} as you can get +it, otherwise some minor modes may not get viper-ized. +(a)end quotation = -Add that line, and XEmacs will be happy. +(a)unnumberedsec 3.1: The Mouse = -(a)node Q2.4.4, Q2.4.5, Q2.4.3, Installation -(a)unnumberedsubsec Q2.4.4: Startup warnings about deducing proper fonts? +(a)node Q3.1.1, Q3.1.2, Q3.0.11, Editing +(a)unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting? = -How can I avoid the startup warnings about deducing proper fonts? +I keep hitting the middle mouse button by accident and getting stuff +pasted into my buffer so how can I turn this off? = -This is highly dependent on your installation, but try with the -following font as your base font for XEmacs and see what it does: +Here is an alternative binding, whereby the middle mouse button selects +(but does not cut) the expression under the mouse. Clicking middle on a +left or right paren will select to the matching one. Note that you can +use @code{define-key} or @code{global-set-key}. = -(a)format --adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 -(a)end format +(a)lisp +(defun mouse-set-point-and-select (event) + "Sets the point at the mouse location, then marks following form" + (interactive "@@e") + (mouse-set-point event) + (mark-sexp 1)) +(define-key global-map [button2] 'mouse-set-point-and-select) +(a)end lisp = -More precisely, do the following in your resource file: +(a)node Q3.1.2, Q3.1.3, Q3.1.1, Editing +(a)unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on m= ouse buttons? = -(a)format -Emacs.default.attributeFont: \ --adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1 -(a)end format +Use, for instance, @code{[(meta button1)]}. For example, here is a common +setting for Common Lisp programmers who use the bundled @code{ilisp} +package, whereby meta-button1 on a function name will find the file where +the function name was defined, and put you at that location in the source +file. = -If you just don't want to see the @samp{*Warnings*} buffer at startup -time, you can set this: +[Inside a function that gets called by the lisp-mode-hook and +ilisp-mode-hook] = @lisp -(setq display-warning-minimum-level 'error) +(local-set-key [(meta button1)] 'edit-definitions-lisp) @end lisp = -The buffer still exists; it just isn't in your face. +(a)node Q3.1.3, Q3.1.4, Q3.1.2, Editing +(a)unnumberedsubsec Q3.1.3: Clicking the left button does not do anythin= g in buffer list. = -(a)node Q2.4.5, Q2.4.6, Q2.4.4, Installation -(a)unnumberedsubsec Q2.4.5: Warnings from incorrect key modifiers. +I do @kbd{C-x C-b} to get a list of buffers and the entries get +highlighted when I move the mouse over them but clicking the left mouse +does not do anything. = -The following information comes from the @file{PROBLEMS} file that comes -with XEmacs. +Use the middle mouse button. = -If you're having troubles with HP/UX it is because HP/UX defines the -modifiers wrong in X. Here is a shell script to fix the problem; be -sure that it is run after VUE configures the X server. +(a)node Q3.1.4, Q3.1.5, Q3.1.3, Editing +(a)unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit m= ouse button 3? = -(a)example -#! /bin/sh -xmodmap 2> /dev/null - << EOF -keysym Alt_L =3D Meta_L -keysym Alt_R =3D Meta_R -EOF +The following code will replace the default popup on button3: = -xmodmap - << EOF -clear mod1 -keysym Mode_switch =3D NoSymbol -add mod1 =3D Meta_L -keysym Meta_R =3D Mode_switch -add mod2 =3D Mode_switch -EOF -(a)end example +(a)lisp +(global-set-key [button3] 'popup-buffer-menu) +(a)end lisp = -(a)node Q2.4.6, , Q2.4.5, Installation -(a)unnumberedsubsec Q2.4.6: XEmacs 21.1 on Windows used to spawn an ugly= console window on every startup. Has that been fixed? +(a)node Q3.1.5, Q3.2.1, Q3.1.4, Editing +(a)unnumberedsubsec Q3.1.5: How can I set XEmacs up so that it pastes wh= ere the text cursor is? = -Yes. +By default XEmacs pastes X selections where the mouse pointer is. How +do I disable this? = -The console was there because @file{temacs} (and in turn, @file{xemacs}) -was a console application, and Windows typically creates a new -console for a console process unless the creating process requests that -one isn't created. This used to be fixed with @file{runemacs}, a small -Windows application that existed merely to start @file{xemacs}, stating -that it didn't want a console. +Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank +(a)key{RET}}. = -XEmacs 21.4 fixes this cleanly by the virtue of being a true "GUI" -application. The explanation of what that means is included for -educational value. +To get XEmacs to paste at the text cursor, add this your @file{init.el}: = -When building an application to be run in a Win32 environment, you must -state which sub-system it is to run in. Valid subsystems include -"console" and "gui". The subsystem you use affects the run time -libraries linked into your application, the start up function that is -run before control is handed over to your application, the entry point -to your program, and how Windows normally invokes your program. (Console -programs automatically get a console created for them at startup if -their stdin/stdout don't point anywhere useful, which is the case when -run from the GUI. This is a stupid design, of course -- instead, the -console should get created only when the first I/O actually occurs! -GUI programs have an equally stupid design: When called from -(a)file{CMD.EXE}/@file{COMMAND.COM}, their stdin/stdout will be set to -point nowhere useful, even though the command shell has its own -stdin/stdout. It's as if someone who had learned a bit about stdio but -had no actual knowledge of interprocess communication designed the -scheme; unfortunately, the whole process-communication aspect of the -Win32 API is equally badly designed.) For example, the entry point for a -console app is "main" (which is what you'd expect for a C/C++ program), -but the entry point for a "gui" app is "WinMain". This confuses and -annoys a lot of programmers who've grown up on Unix systems, where the -kernel doesn't really care whether your application is a gui program or -not. +(a)lisp +(setq mouse-yank-at-point t) +(a)end lisp = -For reasons not altogether clear, and are lost in the mists of time and -tradition, XEmacs on Win32 started out as a console application, and -therefore a console was automatically created for it. (It may have been -made a console application partly because a console is needed in some -circumstances, especially under Win95, to interrupt, terminate, or send -signals to a child process, and because of the bogosity mentioned above -with GUI programs and the standard command shell. Currently, XEmacs -just creates and immediately hides a console when necessary, and -works around the "no useful stdio" problem by creating its own console -window as necessary to display messages in.) +You can also change this with Customize. Select from the +(a)code{Options} menu @code{Advanced +(Customize)->Emacs->Editing->Mouse->Yank At Point...} or type @kbd{M-x +customize @key{RET} mouse @key{RET}}. = -(a)node Display Subsystems, External Subsystems, Installation, Top -(a)unnumbered 3 Basic Display-Related Subsystems +(a)unnumberedsec 3.2: Buffers, Text Editing = -This is part 3 of the XEmacs Frequently Asked Questions list. This -section is devoted to the basic display-related capabilities of -XEmacs, such as the keyboard, the mouse, fonts, colors, the modeline, -etc. +(a)node Q3.2.1, Q3.2.2, Q3.1.5, Editing +(a)unnumberedsubsec Q3.2.1: Can I have the end of the buffer delimited i= n some way? = -(a)menu -3.0: The Keyboard -* Q3.0.1:: How can I bind complex functions (or macros) to keys? -* Q3.0.2:: How do I bind C-. and C-; to scroll one line up and down? -* Q3.0.3:: Globally binding @kbd{Delete}? -* Q3.0.4:: How to map @kbd{Help} key alone on Sun type4 keyboard? -* Q3.0.5:: How can you type in special characters in XEmacs? -* Q3.0.6:: Can I turn on @dfn{sticky} modifier keys? -* Q3.0.7:: How do I map the arrow keys? -* Q3.0.8:: HP Alt key as Meta. -* Q3.0.9:: Why does edt emulation not work? -* Q3.0.10:: How can I emulate VI and use it as my default mode? +Say, with: @samp{[END]}? = -3.1: The Mouse -* Q3.1.1:: How can I turn off Mouse pasting? -* Q3.1.2:: How do I set control/meta/etc modifiers on mouse buttons? -* Q3.1.3:: Clicking the left button does not do anything in buffer li= st. -* Q3.1.4:: How can I get a list of buffers when I hit mouse button 3? -* Q3.1.5:: How I can set XEmacs up so that it pastes where the text c= ursor is? +Try this: = -3.2: Textual Fonts and Colors -* Q3.2.1:: How do I specify a font? -* Q3.2.2:: How do I set the text, menu and modeline fonts? -* Q3.2.3:: How can I set color options from @file{init.el}? -* Q3.2.4:: How can I set the colors when highlighting a region? -* Q3.2.5:: How can I limit color map usage? -* Q3.2.6:: My tty supports color, but XEmacs doesn't use them. -* Q3.2.7:: Can I have pixmap backgrounds in XEmacs? -* Q3.2.8:: How do I display non-ASCII characters? -* Q3.2.9:: Font selections in don't get saved after @code{Save Option= s}. - -3.3: The Menubar and Toolbar -* Q3.3.1:: How do I get rid of the menu (or menubar)? -* Q3.3.2:: Can I customize the basic menubar? -* Q3.3.3:: How do I control how many buffers are listed in the menu @= code{Buffers List}? -* Q3.3.4:: Resources like @code{Emacs*menubar*font} are not working? -* Q3.3.5:: How can I bind a key to a function to toggle the toolbar? -* Q3.3.6:: @samp{Can't instantiate image error...} in toolbar - -3.4: Scrollbars and Scrolling -* Q3.4.1:: How can I disable the scrollbar? -* Q3.4.2:: How can one use resources to change scrollbar colors? -* Q3.4.3:: Moving the scrollbar can move the point; can I disable thi= s? -* Q3.4.4:: Scrolling one line at a time. -* Q3.4.5:: How can I turn off automatic horizontal scrolling in speci= fic modes? -* Q3.4.6:: I find auto-show-mode disconcerting. How do I turn it off? - -3.5: The Modeline -* Q3.5.1:: How can I make the modeline go away? -* Q3.5.2:: How do you have XEmacs display the line number in the mode= line? -* Q3.5.3:: How do I get XEmacs to put the time of day on the modeline? -* Q3.5.4:: How can one change the modeline color based on the mode us= ed? - -3.6: The Cursor -* Q3.6.1:: Is there a way to make the bar cursor thicker? -* Q3.6.2:: Is there a way to get back the block cursor? -* Q3.6.3:: Can I make the cursor blink? - -3.7: Text Selections -* Q3.7.1:: How do I select a rectangular region? -* Q3.7.2:: How can I turn off or change highlighted selections? -* Q3.7.3:: How do I get that typing on an active region removes it? -* Q3.7.4:: Can I turn off the highlight during isearch? -* Q3.7.5:: How do I turn off highlighting after @kbd{C-x C-p} (mark-p= age)? -* Q3.7.6:: The region disappears when I hit the end of buffer while s= crolling. -* Q3.7.7:: Why is killing so slow? -* Q3.7.8:: Why does @kbd{M-w} take so long? - -3.8: Buffers, Text Editing -* Q3.8.1:: Can I have the end of the buffer delimited in some way? -* Q3.8.2:: How do I insert today's date into a buffer? -* Q3.8.3:: How do I get a single minibuffer frame? -* Q3.8.4:: How can I enable auto-indent and/or Filladapt? -* Q3.8.5:: How can I get XEmacs to come up in text/auto-fill mode by = default? - -3.9: Editing Source Code -* Q3.9.1:: How can I do source code highlighting using font-lock? -* Q3.9.2:: How do I get @samp{More} Syntax Highlighting on by default? -* Q3.9.3:: Where do I get the latest CC Mode? -* Q3.9.4:: I do not like cc-mode. How do I use the old c-mode? -* Q3.9.5:: How do you make XEmacs indent CL if-clauses correctly? -(a)end menu +(a)lisp +(let ((ext (make-extent (point-min) (point-max)))) + (set-extent-property ext 'start-closed t) + (set-extent-property ext 'end-closed t) + (set-extent-property ext 'detachable nil) + (set-extent-end-glyph ext (make-glyph [string :data "[END]"]))) +(a)end lisp = -(a)unnumberedsec 3.0: The Keyboard +Since this is XEmacs, you can specify an icon to be shown on +window-system devices. To do so, change the @code{make-glyph} call to +something like this: = -(a)node Q3.0.1, Q3.0.2, Display Subsystems, Display Subsystems -(a)unnumberedsubsec Q3.0.1: How can I bind complex functions (or macros)= to keys? +(a)lisp +(make-glyph '([xpm :file "~/something.xpm"] + [string :data "[END]"])) +(a)end lisp = -As an example, say you want the @kbd{paste} key on a Sun keyboard to -insert the current Primary X selection at point. You can accomplish this -with: +You can inline the @sc{xpm} definition yourself by specifying +(a)code{:data} instead of @code{:file}. Here is such a full-featured +version that works on both X and TTY devices: = @lisp -(define-key global-map [f18] 'x-insert-selection) +(let ((ext (make-extent (point-min) (point-max)))) + (set-extent-property ext 'start-closed t) + (set-extent-property ext 'end-closed t) + (set-extent-property ext 'detachable nil) + (set-extent-end-glyph ext (make-glyph '([xpm :data "\ +/* XPM */ +static char* eye =3D @{ +\"20 11 7 2\", +\"__ c None\" +\"_` c #7f7f7f\", +\"_a c #fefefe\", +\"_b c #7f0000\", +\"_c c #fefe00\", +\"_d c #fe0000\", +\"_e c #bfbfbf\", +\"___________`_`_`___b_b_b_b_________`____\", +\"_________`_`_`___b_c_c_c_b_b____________\", +\"_____`_`_`_e___b_b_c_c_c___b___b_______`\", +\"___`_`_e_a___b_b_d___b___b___b___b______\", +\"_`_`_e_a_e___b_b_d_b___b___b___b___b____\", +\"_`_`_a_e_a___b_b_d___b___b___b___b___b__\", +\"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\", +\"___`_`_e_a___b_b_b_d_c___b___b___d_b____\", +\"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\", +\"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\", +\"___`_____`_`_`_`___b_b_b_b_b_b__________\", +@} ;"] + [string :data "[END]"])))) @end lisp = -However, this only works if there is a current X selection (the -selection will be highlighted). The functionality I like is for the -(a)kbd{paste} key to insert the current X selection if there is one, -otherwise insert the contents of the clipboard. To do this you need to -pass arguments to @code{x-insert-selection}. This is done by wrapping -the call in a 'lambda form: +Note that you might want to make this a function, and put it to a hook. +We leave that as an exercise for the reader. = +(a)node Q3.2.2, Q3.2.3, Q3.2.1, Editing +(a)unnumberedsubsec Q3.2.2: How do I insert today's date into a buffer? + +Like this: + @lisp -(global-set-key [f18] - (lambda () (interactive) (x-insert-selection t nil))) +(insert (current-time-string)) @end lisp = -This binds the f18 key to a @dfn{generic} functional object. The -interactive spec is required because only interactive functions can be -bound to keys. +(a)node Q3.2.3, Q3.2.4, Q3.2.2, Editing +(a)unnumberedsubsec Q3.2.3: How do I get a single minibuffer frame? = -For the FAQ example you could use: +(a)email{acs@@acm.org, Vin Shelton} writes: = @lisp -(global-set-key [(control ?.)] - (lambda () (interactive) (scroll-up 1))) -(global-set-key [(control ?;)] - (lambda () (interactive) (scroll-up -1))) +(setq initial-frame-plist '(minibuffer nil)) +(setq default-frame-plist '(minibuffer nil)) +(setq default-minibuffer-frame + (make-frame + '(minibuffer only + width 86 + height 1 + menubar-visible-p nil + default-toolbar-visible-p nil + name "minibuffer" + top -2 + left -2 + has-modeline-p nil))) +(frame-notice-user-settings) @end lisp = -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. -(a)xref{Q3.0.2, How do I bind C-. and C-; to scroll one line up and -down?}. +(a)strong{Please note:} The single minibuffer frame may not be to everyo= ne's +taste, and there any number of other XEmacs options settings that may +make it difficult or inconvenient to use. = -(a)node Q3.0.2, Q3.0.3, Q3.0.1, Display Subsystems -(a)unnumberedsubsec Q3.0.2: How do I bind C-. and C-; to scroll one line= up and down? +(a)node Q3.2.4, Q3.2.5, Q3.2.3, Editing +(a)unnumberedsubsec Q3.2.4: How can I enable auto-indent and/or Filladap= t? = -Add the following (Thanks to @email{mly@@adoc.xerox.com, Richard Mlynari= k} and -(a)email{wayne@@zen.cac.stratus.com, Wayne Newberry}) to @file{.emacs}: +Put the following line in your @file{init.el}: = @lisp -(defun scroll-up-one-line () - (interactive) - (scroll-up 1)) +(setq indent-line-function 'indent-relative-maybe) +(a)end lisp = -(defun scroll-down-one-line () - (interactive) - (scroll-down 1)) +If you want to get fancy, try the @code{filladapt} package available +standard with XEmacs. Put this into your @file{init.el}: = -(global-set-key [(control ?.)] 'scroll-up-one-line) ; C-. -(global-set-key [(control ?;)] 'scroll-down-one-line) ; C-; +(a)lisp +(require 'filladapt) +(setq-default filladapt-mode t) +(add-hook 'c-mode-hook 'turn-off-filladapt-mode) @end lisp - -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. (@pxref{Q3.0.1, How can I bind complex functions (or macros) to -keys?} for a better answer). = -(a)node Q3.0.3, Q3.0.4, Q3.0.2, Display Subsystems -(a)unnumberedsubsec Q3.0.3: Globally binding @kbd{Delete}? +This will enable Filladapt for all modes except C mode, where it doesn't +work well. To turn Filladapt on only in particular major modes, remove +the @code{(setq-default ...)} line and use +(a)code{turn-on-filladapt-mode}, like this: = -I cannot manage to globally bind my @kbd{Delete} key to something other -than the default. How does one do this? +(a)lisp +(add-hook 'text-mode-hook 'turn-on-filladapt-mode) +(a)end lisp = -Answer: The problem is that many modes explicitly bind @kbd{Delete}. To -get around this, try the following: +You can customize filling and adaptive filling with Customize. +Select from the @code{Options} menu +(a)code{Advanced (Customize)->Emacs->Editing->Fill->Fill...} +or type @kbd{M-x customize @key{RET} fill @key{RET}}. = -(a)lisp -(defun foo () - (interactive) - (message "You hit DELETE")) +Note that well-behaving text-lookalike modes will run +(a)code{text-mode-hook} by default (e.g. that's what Message does). For +the nasty ones, you'll have to provide the @code{add-hook}s yourself. = -(define-key key-translation-map 'delete 'redirected-delete) -(global-set-key 'redirected-delete 'foo) -(a)end lisp +Please note that the @code{fa-extras} package is no longer useful. = -(a)node Q3.0.4, Q3.0.5, Q3.0.3, Display Subsystems -(a)unnumberedsubsec Q3.0.4: How to map @kbd{Help} key alone on Sun type4= keyboard? +(a)node Q3.2.5, Q3.3.1, Q3.2.4, Editing +(a)unnumberedsubsec Q3.2.5: How can I get XEmacs to come up in text/auto= -fill mode by default? = -The following works in GNU Emacs 19: +Try the following lisp in your @file{init.el}: = @lisp -(global-set-key [help] 'help-command);; Help +(setq default-major-mode 'text-mode) +(add-hook 'text-mode-hook 'turn-on-auto-fill) @end lisp = -The following works in XEmacs with the addition of shift: +(a)strong{WARNING}: note that changing the value of +(a)code{default-major-mode} from @code{fundamental-mode} can break a lar= ge +amount of built-in code that expects newly created buffers to be in +(a)code{fundamental-mode}. (Changing from @code{fundamental-mode} to +(a)code{text-mode} might not wreak too much havoc, but changing to +something more exotic like a lisp-mode would break many Emacs packages). + +Note that Emacs by default starts up in buffer @code{*scratch*} in +(a)code{initial-major-mode}, which defaults to +(a)code{lisp-interaction-mode}. Thus adding the following form to your +Emacs init file will cause the initial @code{*scratch*} buffer to be put +into auto-fill'ed @code{text-mode}: = @lisp -(global-set-key [(shift help)] 'help-command);; Help +(setq initial-major-mode + (lambda () + (text-mode) + (turn-on-auto-fill))) @end lisp = -But it doesn't work alone. This is in the file @file{PROBLEMS} which -should have come with your XEmacs installation: @emph{Emacs ignores the -(a)kbd{help} key when running OLWM}. +Note that after your init file is loaded, if +(a)code{inhibit-startup-message} is @code{nil} (the default) and the +startup buffer is @code{*scratch*} then the startup message will be +inserted into @code{*scratch*}; it will be removed after a timeout by +erasing the entire @code{*scratch*} buffer. Keep in mind this default +usage of @code{*scratch*} if you desire any prior manipulation of +(a)code{*scratch*} from within your Emacs init file. In particular, +anything you insert into @code{*scratch*} from your init file will be +later erased. Also, if you change the mode of the @code{*scratch*} +buffer, be sure that this will not interfere with possible later +insertion of the startup message (e.g. if you put @code{*scratch*} into +a nonstandard mode that has automatic font lock rules, then the startup +message might get fontified in a strange foreign manner, e.g. as code in +some programming language). = -OLWM grabs the @kbd{help} key, and retransmits it to the appropriate -client using -(a)iftex -@* -(a)end iftex -(a)code{XSendEvent}. Allowing Emacs to react to synthetic -events is a security hole, so this is turned off by default. You can -enable it by setting the variable @code{x-allow-sendevents} to t. You -can also cause fix this by telling OLWM to not grab the help key, with -the null binding @code{OpenWindows.KeyboardCommand.Help:}. +(a)unnumberedsec 3.3: Text Selections = -(a)node Q3.0.5, Q3.0.6, Q3.0.4, Display Subsystems -(a)unnumberedsubsec Q3.0.5: How can you type in special characters in XE= macs? -One way is to use the package @code{x-compose}. Then you can use -sequences like @kbd{Compose " a} to get =C3=A4, etc. +(a)node Q3.3.1, Q3.3.2, Q3.2.5, Editing +(a)unnumberedsubsec Q3.3.1: How do I select a rectangular region? = -Another way is to use the @code{iso-insert} package. Then you can use -sequences like @kbd{C-x 8 " a} to get =C3=A4, etc. +Just select the region normally, then use the rectangle commands (e.g. +(a)code{kill-rectangle} on it. The region does not highlight as a +rectangle, but the commands work just fine. = -(a)email{glynn@@sensei.co.uk, Glynn Clements} writes: +To actually sweep out rectangular regions with the mouse you can use +(a)code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}. +Then use rectangle commands. = -(a)quotation -It depends upon your X server. +You can also do the following to change default behavior to sweep out +rectangular regions: = -Generally, the simplest way is to define a key as Multi_key with -xmodmap, e.g. -(a)c hey, show some respect, willya -- there's xkeycaps, isn't there? -- -(a)c chr ;) -(a)example - xmodmap -e 'keycode 0xff20 =3D Multi_key' -(a)end example +(a)lisp +(setq mouse-track-rectangle-p t) +(a)end lisp = -You will need to pick an appropriate keycode. Use xev to find out the -keycodes for each key. +You can also change this with Customize. +Select from the @code{Options} menu +(a)code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...}= or type +(a)kbd{M-x customize @key{RET} mouse @key{RET}}. = -[NB: On a `Windows' keyboard, recent versions of XFree86 automatically -define the right `Windows' key as Multi_key'.] = -Once you have Multi_key defined, you can use e.g. @example - Multi a ' =3D> =C3=A1 - Multi e " =3D> =C3=AB - Multi c , =3D> =C3=A7 + mouse-track-do-rectangle: (event) + -- an interactive compiled Lisp function. + Like `mouse-track' but selects rectangles instead of regions. @end example = -etc. - -Also, recent versions of XFree86 define various AltGr- -combinations as dead keys, i.e. -(a)example - AltGr [ =3D> dead_diaeresis - AltGr ] =3D> dead_tilde - AltGr ; =3D> dead_acute -(a)end example -etc. +(a)node Q3.3.2, Q3.3.3, Q3.3.1, Editing +(a)unnumberedsubsec Q3.3.2: How can I turn off or change highlighted sel= ections? = -Running @samp{xmodmap -pk} will list all of the defined keysyms. -(a)end quotation +The @code{zmacs} mode allows for what some might call gratuitous +highlighting for selected regions (either by setting mark or by using +the mouse). This is the default behavior. To turn off, add the +following line to your @file{init.el} file: = -For the related problem of @emph{displaying} non-ASCII characters in a -non-Mule XEmacs, @xref{Q3.2.8, How do I display non-ASCII characters?}. +(a)lisp +(setq zmacs-regions nil) +(a)end lisp = -(a)node Q3.0.6, Q3.0.7, Q3.0.5, Display Subsystems -(a)unnumberedsubsec Q3.0.6: Can I turn on @dfn{sticky} modifier keys? +You can also change this with Customize. Select from the +(a)code{Options} menu +(a)code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions} +or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. = -Yes, with @code{(setq modifier-keys-are-sticky t)}. This will give the -effect of being able to press and release Shift and have the next -character typed come out in upper case. This will affect all the other -modifier keys like Control and Meta as well. +To change the face for selection, look at @code{Options->Advanced (Custo= mize)} +on the menubar. = -(a)email{ben@@xemacs.org, Ben Wing} writes: +(a)node Q3.3.3, Q3.3.4, Q3.3.2, Editing +(a)unnumberedsubsec Q3.3.3: How do I cause typing on an active region to= remove it? = -(a)quotation -One thing about the sticky modifiers is that if you move the mouse out -of the frame and back in, it cancels all currently ``stuck'' modifiers. -(a)end quotation +I want to change things so that if I select some text and start typing, +the typed text replaces the selected text, similar to Motif. = -(a)node Q3.0.7, Q3.0.8, Q3.0.6, Display Subsystems -(a)unnumberedsubsec Q3.0.7: How do I map the arrow keys? -(a)c New -Say you want to map @kbd{C-(a)key{right}} to forward-word: +You want to use something called @dfn{pending delete}. Pending delete +is what happens when you select a region (with the mouse or keyboard) +and you press a key to replace the selected region by the key you typed. +Usually backspace kills the selected region. = -(a)email{sds@@usa.net, Sam Steingold} writes: +To get this behavior, ensure that you have the @file{pc} package +installed, and add the following lines to your +(a)file{init.el}: = -(a)quotation -(a)lisp -; both XEmacs and Emacs -(define-key global-map [(control right)] 'forward-word) -(a)end lisp -or -(a)lisp -; Emacs only -(define-key global-map [C-right] 'forward-word) -(a)end lisp -or @lisp -; ver > 20, both -(define-key global-map (kbd "C-") 'forward-word) +(cond + ((fboundp 'turn-on-pending-delete) + (turn-on-pending-delete)) + ((fboundp 'pending-delete-on) + (pending-delete-on t))) @end lisp -(a)end quotation - -(a)node Q3.0.8, Q3.0.9, Q3.0.7, Display Subsystems -(a)unnumberedsubsec Q3.0.8: HP Alt key as Meta. - -How can I make XEmacs recognize the Alt key of my HP workstation as a -Meta key? = -Put the following line into a file and load it with xmodmap(1) before -starting XEmacs: +Note that this will work with both Backspace and Delete. This code is a +tad more complicated than it has to be for XEmacs in order to make it +more portable. = -(a)example -remove Mod1 =3D Mode_switch -(a)end example +(a)node Q3.3.4, Q3.3.5, Q3.3.3, Editing +(a)unnumberedsubsec Q3.3.4: Can I turn off the highlight during isearch? = -(a)node Q3.0.9, Q3.0.10, Q3.0.8, Display Subsystems -(a)unnumberedsubsec Q3.0.9: Why does edt emulation not work? +I do not like my text highlighted while I am doing isearch as I am not +able to see what's underneath. How do I turn it off? = -We don't know, but you can use tpu-edt emulation instead, which works -fine and is a little fancier than the standard edt emulation. To do -this, add the following line to your @file{init.el}: +Put the following in your @file{init.el}: = @lisp -(tpu-edt) +(setq isearch-highlight nil) @end lisp = -If you don't want it to replace @kbd{C-h} with an edt-style help menu -add this as well: +You can also change this with Customize. Type +(a)kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}. = -(a)lisp -(global-set-key [(control h)] 'help-for-help) -(a)end lisp +Note also that isearch-highlight affects query-replace and ispell. +Instead of disabling isearch-highlight you may find that a better +solution consists of customizing the @code{isearch} face. = -(a)node Q3.0.10, Q3.1.1, Q3.0.9, Display Subsystems -(a)unnumberedsubsec Q3.0.10: How can I emulate VI and use it as my defau= lt mode? +(a)node Q3.3.5, Q3.3.6, Q3.3.4, Editing +(a)unnumberedsubsec Q3.3.5: Why is killing so slow? = -Our recommended VI emulator is viper. To make viper-mode the default, -add this to your @file{init.el}: +This actually is an X Windows question, although you'll notice it with +keyboard operations as well as while using the GUI. Basically, there +are four ways to communicate interprogram via the X server: = -(a)lisp -(viper-mode) -(a)end lisp +(a)table @strong +(a)item Primary selection +a transient selection that gets replaced every time a new selection is m= ade = -(a)email{kifer@@CS.SunySB.EDU, Michael Kifer} writes: +(a)item Secondary selection +for "exchanging" with the primary selection = -(a)quotation -This should be added as close to the top of @file{init.el} as you can get -it, otherwise some minor modes may not get viper-ized. -(a)end quotation +(a)item Cut buffers +a clipboard internal to the X server (deprecated) = -(a)unnumberedsec 3.1: The Mouse +(a)item Clipboard selection +a selection with a notification protocol that allows a separate app to +manage the clipboard +(a)end table = -(a)node Q3.1.1, Q3.1.2, Q3.0.10, Display Subsystems -(a)unnumberedsubsec Q3.1.1: How can I turn off Mouse pasting? +The cut buffers are deprecated because managing them is even more +inefficient than the clipboard notification protocol. The primary +selection works fine for many users and applications, but is not very +robust under intensive or sophisticated use. = -I keep hitting the middle mouse button by accident and getting stuff -pasted into my buffer so how can I turn this off? +In Motif and MS Windows, a clipboard has become the primary means for +managing cut and paste. These means that "modern" applications tend to +be oriented toward a true clipboard, rather than the primary selection. +(On Windows, there is nothing equivalent to the primary selection.) +It's not that XEmacs doesn't support the simple primary selection +method, it's that more and more other applications don't. = -Here is an alternative binding, whereby the middle mouse button selects -(but does not cut) the expression under the mouse. Clicking middle on a -left or right paren will select to the matching one. Note that you can -use @code{define-key} or @code{global-set-key}. +So the slowdown occurs because XEmacs now engages in the clipboard +notification protocol on @emph{every} kill. This is especially slow on +Motif. = -(a)lisp -(defun mouse-set-point-and-select (event) - "Sets the point at the mouse location, then marks following form" - (interactive "@@e") - (mouse-set-point event) - (mark-sexp 1)) -(define-key global-map [button2] 'mouse-set-point-and-select) -(a)end lisp +With most people running most clients and server on the same host, and +many of the rest working over very fast communication, you may expect +that the situation is not going to improve. = -(a)node Q3.1.2, Q3.1.3, Q3.1.1, Display Subsystems -(a)unnumberedsubsec Q3.1.2: How do I set control/meta/etc modifiers on m= ouse buttons? +There are a number of workarounds. The most effective is to use a +special command to do selection ownership only when you intend to paste +to another application. Useful commands are @code{kill-primary-selectio= n} +and @code{copy-primary-selection}. These work only on text selected +with the mouse (probably; experiment), and are bound by default to the +(a)kbd{Cut} and @kbd{Copy}, respectively, buttons on the toolbar. +(a)code{copy-primary-selection} is also bound to @kbd{C-Insert}. You can +yank the clipboard contents with @code{yank-primary-selection}, bound to +the @kbd{Paste} toolbar button and @kbd{Sh-Insert}. + +If you are communicating by cut and paste with applications that use the +primary selection, then you can customize +(a)code{interprogram-cut-function} to @code{nil}, restoring the XEmacs +version 20 behavior. How can you tell if a program will support this? +Motifly-correct programs require the clipboard; you lose. For others, +only by trying it. You also need to customize the complementary +(a)code{interprogram-paste-function} to @code{nil}. (Otherwise +XEmacs-to-XEmacs pastes will not work correctly.) = -Use, for instance, @code{[(meta button1)]}. For example, here is a common -setting for Common Lisp programmers who use the bundled @code{ilisp} -package, whereby meta-button1 on a function name will find the file where -the function name was defined, and put you at that location in the source -file. +You may get some relief on Motif by setting +(a)code{x-selection-strict-motif-ownership} to nil, but this means you w= ill +only intermittently be able to paste XEmacs kills to Motif applications. = -[Inside a function that gets called by the lisp-mode-hook and -ilisp-mode-hook] +Thanks to Jeff Mincy and Glynn Clements for corrections. = -(a)lisp -(local-set-key [(meta button1)] 'edit-definitions-lisp) -(a)end lisp +(a)node Q3.3.6, Q3.4.1, Q3.3.5, Editing +(a)unnumberedsubsec Q3.3.6: Why does @kbd{M-w} take so long? = -(a)node Q3.1.3, Q3.1.4, Q3.1.2, Display Subsystems -(a)unnumberedsubsec Q3.1.3: Clicking the left button does not do anythin= g in buffer list. +It actually doesn't. It leaves the region visible for a second so that +you can see what area is being yanked. If you start working, though, it +will immediately complete its operation. In other words, it will only +delay for a second if you let it. = -I do @kbd{C-x C-b} to get a list of buffers and the entries get -highlighted when I move the mouse over them but clicking the left mouse -does not do anything. +(a)unnumberedsec 3.4: Editing Source Code = -Use the middle mouse button. +(a)node Q3.4.1, Q3.4.2, Q3.3.6, Editing +(a)unnumberedsubsec Q3.4.1: I do not like cc-mode. How do I use the old= c-mode? = -(a)node Q3.1.4, Q3.1.5, Q3.1.3, Display Subsystems -(a)unnumberedsubsec Q3.1.4: How can I get a list of buffers when I hit m= ouse button 3? +Well, first off, consider if you really want to do this. cc-mode is +much more powerful than the old c-mode. If you're having trouble +getting your old offsets to work, try using @code{c-set-offset} instead. +You might also consider using the package @code{cc-compat}. = -The following code will replace the default popup on button3: +But, if you still insist, add the following lines to your @file{init.el}: = @lisp -(global-set-key [button3] 'popup-buffer-menu) +(fmakunbound 'c-mode) +(makunbound 'c-mode-map) +(fmakunbound 'c++-mode) +(makunbound 'c++-mode-map) +(makunbound 'c-style-alist) +(load-library "old-c-mode") +(load-library "old-c++-mode") @end lisp = -(a)node Q3.1.5, Q3.2.1, Q3.1.4, Display Subsystems -(a)unnumberedsubsec Q3.1.5: How I can set XEmacs up so that it pastes wh= ere the text cursor is? +This must be done before any other reference is made to either c-mode or +c++-mode. = -By default XEmacs pastes X selections where the mouse pointer is. How -do I disable this? +(a)node Q3.4.2, , Q3.4.1, Editing +(a)unnumberedsubsec Q3.4.2: How do you make XEmacs indent CL if-clauses = correctly? = -Examine the function @code{mouse-yank}, by typing @kbd{C-h f mouse-yank -(a)key{RET}}. +I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the +same amount instead of indenting the 3rd clause differently from the +first two. = -To get XEmacs to paste at the text cursor, add this your @file{init.el}: +The package @code{cl-indent} that comes with XEmacs sets up this kind +of indentation by default. @code{cl-indent} also knows about many +other CL-specific forms. To use @code{cl-indent}, one can do this: = @lisp -(setq mouse-yank-at-point t) +(setq lisp-indent-function 'common-lisp-indent-function) @end lisp = -Starting with XEmacs-20.2 you can also change this with Customize. -Select from the @code{Options} menu -(a)code{Advanced (Customize)->Emacs->Editing->Mouse->Yank At Point...} o= r type -(a)kbd{M-x customize @key{RET} mouse @key{RET}}. +One can also customize @file{cl-indent.el} so it mimics the default +(a)code{if} indentation @code{then} indented more than the @code{else}. +Here's how: + +(a)lisp +(put 'if 'common-lisp-indent-function '(nil nil &body)) +(a)end lisp + +(a)node Display, External Subsystems, Editing, Top +(a)unnumbered 4 Display Functions + +This is part 4 of the XEmacs Frequently Asked Questions list. This +section is devoted to the display-related capabilities of XEmacs +(fonts, colors, modeline, menubar, toolbar, scrollbar, etc.) and how +to customize them. + +(a)menu +4.0: Textual Fonts and Colors +* Q4.0.1:: How do I specify a font? +* Q4.0.2:: How do I set the text, menu and modeline fonts? +* Q4.0.3:: How can I set color options from @file{init.el}? +* Q4.0.4:: How can I set the colors when highlighting a region? +* Q4.0.5:: How can I limit color map usage? +* Q4.0.6:: My tty supports color, but XEmacs doesn't use them. +* Q4.0.7:: Can I have pixmap backgrounds in XEmacs? +* Q4.0.8:: How do I display non-ASCII characters? +* Q4.0.9:: Font selections in don't get saved after @code{Save Option= s}. + +4.1: Syntax Highlighting (Font Lock) +* Q4.1.1:: How can I do source code highlighting using font-lock? +* Q4.1.2:: How do I get @samp{More} Syntax Highlighting on by default? + +4.2: The Modeline +* Q4.2.1:: How can I make the modeline go away? +* Q4.2.2:: How do you have XEmacs display the line number in the mode= line? +* Q4.2.3:: How do I get XEmacs to put the time of day on the modeline? +* Q4.2.4:: How can I change the modeline color based on the mode used? + +4.3: The Cursor +* Q4.3.1:: Is there a way to make the bar cursor thicker? +* Q4.3.2:: Is there a way to get back the block cursor? +* Q4.3.3:: Can I make the cursor blink? + +4.4: The Menubar +* Q4.4.1:: How do I get rid of the menubar? +* Q4.4.2:: How can I customize the menubar? +* Q4.4.3:: How do I enable use of the keyboard (@kbd{Alt}) to access = menu items? +* Q4.4.4:: How do I control how many buffers are listed in the menu @= code{Buffers List}? +* Q4.4.5:: Resources like @code{Emacs*menubar*font} are not working? + +4.5: The Toolbar +* Q4.5.1:: How do I get rid of the toolbar? +* Q4.5.2:: How can I customize the toolbar? +* Q4.5.3:: How can I bind a key to a function to toggle the toolbar? +* Q4.5.4:: @samp{Can't instantiate image error...} in toolbar + +4.6: Scrollbars and Scrolling +* Q4.6.1:: How can I disable the scrollbar? +* Q4.6.2:: How can I change the scrollbar width? +* Q4.6.3:: How can I use resources to change scrollbar colors? +* Q4.6.4:: Moving the scrollbar can move the point; can I disable thi= s? +* Q4.6.5:: Scrolling one line at a time. +* Q4.6.6:: How can I turn off automatic horizontal scrolling in speci= fic modes? +* Q4.6.7:: I find auto-show-mode disconcerting. How do I turn it off? + +4.7: The Gutter Tabs, The Progress Bar, Widgets +* Q4.7.1:: How can I disable the gutter tabs? +* Q4.7.2:: How can I disable the progress bar? +* Q4.7.3:: There are bugs in the gutter or widgets. +* Q4.7.4:: How can I customize the gutter or gutter tabs? +(a)end menu = -(a)unnumberedsec 3.2: Textual Fonts and Colors +(a)unnumberedsec 4.0: Textual Fonts and Colors = -(a)node Q3.2.1, Q3.2.2, Q3.1.5, Display Subsystems -(a)unnumberedsubsec Q3.2.1: How do I specify a font? +(a)node Q4.0.1, Q4.0.2, Display, Display +(a)unnumberedsubsec Q4.0.1: How do I specify a font? = #### Update me. = @@ -3964,8 +5429,8 @@ You can also do it in your init file, e. (set-face-font 'modeline "MS Sans Serif:Regular:10") @end display = -(a)node Q3.2.2, Q3.2.3, Q3.2.1, Display Subsystems -(a)unnumberedsubsec Q3.2.2: How do I set the text, menu and modeline fon= ts? +(a)node Q4.0.2, Q4.0.3, Q4.0.1, Display +(a)unnumberedsubsec Q4.0.2: How do I set the text, menu and modeline fon= ts? = #### Update me. = @@ -3991,8 +5456,8 @@ resource @samp{font}. With Motif it @em configurations with Mule it @emph{is} necessary to use @samp{fontSet} instead of @samp{font}. (Sorry, there just is no simple recipe here.) = -(a)node Q3.2.3, Q3.2.4, Q3.2.2, Display Subsystems -(a)unnumberedsubsec Q3.2.3: How can I set color options from @file{init.= el}? +(a)node Q4.0.3, Q4.0.4, Q4.0.2, Display +(a)unnumberedsubsec Q4.0.3: How can I set color options from @file{init.= el}? = How can I set the most commonly used color options from my @file{init.el} instead of from my @file{.Xresources}? @@ -4023,8 +5488,8 @@ Like this: ; want ptr/crsr @end lisp = -(a)node Q3.2.4, Q3.2.5, Q3.2.3, Display Subsystems -(a)unnumberedsubsec Q3.2.4: How can I set the colors when highlighting a= region? +(a)node Q4.0.4, Q4.0.5, Q4.0.3, Display +(a)unnumberedsubsec Q4.0.4: How can I set the colors when highlighting a= region? = How can I set the background/foreground colors when highlighting a region? @@ -4044,8 +5509,8 @@ or in your @file{init.el}: (set-face-foreground 'zmacs-region "yellow") @end lisp = -(a)node Q3.2.5, Q3.2.6, Q3.2.4, Display Subsystems -(a)unnumberedsubsec Q3.2.5: How can I limit color map usage? +(a)node Q4.0.5, Q4.0.6, Q4.0.4, Display +(a)unnumberedsubsec Q4.0.5: How can I limit color map usage? = I'm using Netscape (or another color grabber like XEmacs); is there any way to limit the number of available colors in the color ma= p? @@ -4059,8 +5524,8 @@ map). If you have the money, another solution would be to use a truecolor or direct color video. = -(a)node Q3.2.6, Q3.2.7, Q3.2.5, Display Subsystems -(a)unnumberedsubsec Q3.2.6: My tty supports color, but XEmacs doesn't us= e them. +(a)node Q4.0.6, Q4.0.7, Q4.0.5, Display +(a)unnumberedsubsec Q4.0.6: My tty supports color, but XEmacs doesn't us= e them. = XEmacs tries to automatically determine whether your tty supports color, but sometimes guesses wrong. In that case, you can make XEmacs Do The @@ -4071,8 +5536,8 @@ Right Thing using this Lisp code: (set-device-class nil 'color)) @end lisp = -(a)node Q3.2.7, Q3.2.8, Q3.2.6, Display Subsystems -(a)unnumberedsubsec Q3.2.7: Can I have pixmap backgrounds in XEmacs? +(a)node Q4.0.7, Q4.0.8, Q4.0.6, Display +(a)unnumberedsubsec Q4.0.7: Can I have pixmap backgrounds in XEmacs? @c New @email{jvillaci@@wahnsinnig.extreme.indiana.edu, Juan Villacis} writes: = @@ -4099,301 +5564,99 @@ and so on. You can also do this interac = @end quotation = -(a)node Q3.2.8, Q3.2.9, Q3.2.7, Display Subsystems -(a)unnumberedsubsec Q3.2.8: How do I display non-ASCII characters? +(a)node Q4.0.8, Q4.0.9, Q4.0.7, Display +(a)unnumberedsubsec Q4.0.8: How do I display non-ASCII characters? @c New = If you're using a Mule-enabled XEmacs, then display is automatic. If you're not seeing the characters you expect, either (1) you don't have appropriate fonts available or (2) XEmacs did not correctly detect the -coding system (@pxref{Recognize Coding, , , xemacs}). In case (1), -install fonts as is customary for your platform. In case (2), you -need to tell XEmacs explicitly what coding systems you're using. -(a)ref{Specify Coding, , , xemacs}. - -If your XEmacs is not Mule-enabled, and for some reason getting a -Mule-enabled XEmacs seems like the wrong thing to do, all is not lost. -You can arrange it by brute force. In @file{event-Xt.c} (suppress the -urge to look in this file---play Doom instead, because you'll survive -longer), it is written: - -(a)quotation -In a non-Mule world, a user can still have a multi-lingual editor, by -doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all -their Latin-2 buffers, etc. -(a)end quotation - -For the related problem of @emph{inputting} non-ASCII characters in a -non-Mule XEmacs, @xref{Q3.0.5, How can you type in special characters -in XEmacs?}. - -(a)node Q3.2.9, Q3.3.1, Q3.2.8, Display Subsystems -(a)unnumberedsubsec Q3.2.9: Font selections in don't get saved after @co= de{Save Options}. - -(a)email{mannj@@ll.mit.edu, John Mann} writes: - -(a)quotation -You have to go to @samp{Options->Menubars} and unselect -(a)samp{Frame-Local Font Menu}. If this option is selected, font changes -are only applied to the @emph{current} frame and do @emph{not} get saved -when you save options. -(a)end quotation - -Also, set the following in your @file{init.el}: - -(a)lisp -(setq options-save-faces t) -(a)end lisp - -(a)unnumberedsec 3.3: The Menubar and Toolbar - -(a)node Q3.3.1, Q3.3.2, Q3.2.9, Display Subsystems -(a)unnumberedsubsec Q3.3.1: How do I get rid of the menu (or menubar)? - -(a)lisp -(set-specifier menubar-visible-p nil) -(a)end lisp - -(a)node Q3.3.2, Q3.3.3, Q3.3.1, Display Subsystems -(a)unnumberedsubsec Q3.3.2: Can I customize the basic menubar? - -For an extensive menubar, add this line to your @file{init.el}: - -(a)lisp -(load "big-menubar") -(a)end lisp - -If you'd like to write your own, this file provides as good a set of -examples as any to start from. The file is located in edit-utils -package. = - -(a)node Q3.3.3, Q3.3.4, Q3.3.2, Display Subsystems -(a)unnumberedsubsec Q3.3.3: How do I control how many buffers are listed= in the menu @code{Buffers List}? - -Add the following to your @file{init.el} (suit to fit): - -(a)lisp -(setq buffers-menu-max-size 20) -(a)end lisp - -For no limit, use an argument of @samp{nil}. - -Starting with XEmacs-20.3 you can also change this with Customize. -Select from the @code{Options} menu -(a)code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Ma= x Size...} or -type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}. - -(a)node Q3.3.4, Q3.3.5, Q3.3.3, Display Subsystems -(a)unnumberedsubsec Q3.3.4: Resources like @code{Emacs*menubar*font} are= not working? - -I am trying to use a resource like @code{Emacs*menubar*font} to set the -font of the menubar but it's not working. - -In Motif, the use of @samp{font} resources is obsoleted in order to -support internationalization. If you are using the real Motif menubar, -this resource is not recognized at all; you have to say: - -(a)example -Emacs*menubar*fontList: FONT -(a)end example - -If you are using the Lucid menubar, for backward compatibility with -existing user configurations, the @samp{font} resource is recognized. -Since this is not supported by Motif itself, the code is a kludge and -the @samp{font} resource will be recognized only if the @samp{fontList} -resource resource is unset. This means that the resource - -(a)example -*fontList: FONT -(a)end example - -will override - -(a)example -Emacs*menubar*font: FONT -(a)end example - -even though the latter is more specific. - -In non-Motif configurations using @samp{--with-mule} and -(a)samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet} -resource @emph{instead of} the @code{font} resource. The backward -compatibility kludge was never implemented for non-Motif builds. -Example: - -(a)example -*fontSet: FONT -(a)end example - -(a)node Q3.3.5, Q3.3.6, Q3.3.4, Display Subsystems -(a)unnumberedsubsec Q3.3.5: How can I bind a key to a function to toggle= the toolbar? - -Try something like: - -(a)lisp -(defun my-toggle-toolbar () - (interactive) - (set-specifier default-toolbar-visible-p - (not (specifier-instance default-toolbar-visible-p)))) -(global-set-key "\C-xT" 'my-toggle-toolbar) -(a)end lisp - -There are redisplay bugs in 19.14 that may make the preceding result in -a messed-up display, especially for frames with multiple windows. You -may need to resize the frame before XEmacs completely realizes the -toolbar is really gone. - -Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct -code. - -(a)node Q3.3.6, Q3.4.1, Q3.3.5, Display Subsystems -(a)unnumberedsubsec Q3.3.6: @samp{Can't instantiate image error...} in t= oolbar -(a)c New - -(a)email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: - -I just installed the XEmacs (20.4-2) RPMS that I downloaded from -(a)uref{http://www.xemacs.org/}. Everything works fine, except that when -I place my mouse over the toolbar, it beeps and gives me this message: - -(a)example - Can't instantiate image (probably cached): - [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data - (16 16 ... -(a)end example - -(a)email{kyle_jones@@wonderworks.com, Kyle Jones} writes: -(a)quotation -This is problem specific to some Chips and Technologies video -chips, when running XFree86. Putting - -(a)code{Option "sw_cursor"} - -in @file{XF86Config} gets rid of the problem. -(a)end quotation - -(a)unnumberedsec 3.4: Scrollbars - -(a)node Q3.4.1, Q3.4.2, Q3.3.6, Display Subsystems -(a)unnumberedsubsec Q3.4.1: How can I disable the scrollbar? - -To disable them for all frames, add the following line to -your @file{.Xresources}: - -(a)example -Emacs.scrollBarWidth: 0 -(a)end example - -Or select @samp{Options->Display->Scrollbars}. -Remember to save options. - -To turn the scrollbar off on a per-frame basis, use the following -function: - -(a)lisp -(set-specifier scrollbar-width 0 (selected-frame)) -(a)end lisp - -You can actually turn the scrollbars on at any level you want by -substituting for (selected-frame) in the above command. For example, to -turn the scrollbars off only in a single buffer: - -(a)lisp -(set-specifier scrollbar-width 0 (current-buffer)) -(a)end lisp - -(a)node Q3.4.2, Q3.4.3, Q3.4.1, Display Subsystems -(a)unnumberedsubsec Q3.4.2: How can one use resources to change scrollba= r colors? - -Here's a recap of how to use resources to change your scrollbar colors: - -(a)example -! Motif scrollbars - -Emacs*XmScrollBar.Background: skyblue -Emacs*XmScrollBar.troughColor: lightgray - -! Athena scrollbars - -Emacs*Scrollbar.Foreground: skyblue -Emacs*Scrollbar.Background: lightgray -(a)end example - -Note the capitalization of @code{Scrollbar} for the Athena widget. +coding system (@pxref{Recognize Coding, , , xemacs}). In case (1), +install fonts as is customary for your platform. In case (2), you +need to tell XEmacs explicitly what coding systems you're using. +(a)ref{Specify Coding, , , xemacs}. = -(a)node Q3.4.3, Q3.4.4, Q3.4.2, Display Subsystems -(a)unnumberedsubsec Q3.4.3: Moving the scrollbar can move the point; can= I disable this? +If your XEmacs is not Mule-enabled, and for some reason getting a +Mule-enabled XEmacs seems like the wrong thing to do, all is not lost. +You can arrange it by brute force. In @file{event-Xt.c} (suppress the +urge to look in this file---play Doom instead, because you'll survive +longer), it is written: = -When I move the scrollbar in an XEmacs window, it moves the point as -well, which should not be the default behavior. Is this a bug or a -feature? Can I disable it? +(a)quotation +In a non-Mule world, a user can still have a multi-lingual editor, by +doing @code{(set-face-font "-*-iso8859-2" (current-buffer))} for all +their Latin-2 buffers, etc. +(a)end quotation = -The current behavior is a feature, not a bug. Point remains at the same -buffer position as long as that position does not scroll off the screen. -In that event, point will end up in either the upper-left or lower-left -hand corner. +For the related problem of @emph{inputting} non-ASCII characters in a +non-Mule XEmacs, @xref{Q3.0.6, How can you type in special characters +in XEmacs?}. = -This cannot be changed. +(a)node Q4.0.9, Q4.1.1, Q4.0.8, Display +(a)unnumberedsubsec Q4.0.9: Font selections in don't get saved after @co= de{Save Options}. = -(a)node Q3.4.4, Q3.4.5, Q3.4.3, Display Subsystems -(a)unnumberedsubsec Q3.4.4: Scrolling one line at a time. +(a)email{mannj@@ll.mit.edu, John Mann} writes: = -Can the cursor keys scroll the screen a line at a time, rather than the -default half page jump? I tend it to find it disorienting. +(a)quotation +You have to go to @samp{Options->Menubars} and unselect +(a)samp{Frame-Local Font Menu}. If this option is selected, font changes +are only applied to the @emph{current} frame and do @emph{not} get saved +when you save options. +(a)end quotation = -Use the following: +Also, set the following in your @file{init.el}: = @lisp -(setq scroll-step 1) +(setq options-save-faces t) @end lisp - -You can also change this with Customize. Select from the -(a)code{Options} menu @code{Advanced -(Customize)->Emacs->Environment->Windows->Scroll Step...} or type -(a)kbd{M-x customize @key{RET} windows @key{RET}}. = -(a)node Q3.4.5, Q3.4.6, Q3.4.4, Display Subsystems -(a)unnumberedsubsec Q3.4.5: How can I turn off automatic horizontal scro= lling in specific modes? +(a)unnumberedsec 4.1: Syntax Highlighting (Font Lock) = -Do @code{(setq truncate-lines t)} in the mode-hooks for any modes -in which you want lines truncated. +(a)node Q4.1.1, Q4.1.2, Q4.0.9, Display +(a)unnumberedsubsec Q4.1.1: How can I do source code highlighting using = font-lock? = -More precisely: If @code{truncate-lines} is nil, horizontal scrollbars -will never appear. Otherwise, they will appear only if the value of -(a)code{scrollbar-height} for that buffer/window/etc. is non-zero. If y= ou -do +For most modes, font-lock is already set up and just needs to be turned +on. This can be done by adding the line: = @lisp -(set-specifier scrollbar-height 0) +(require 'font-lock) @end lisp = -then horizontal scrollbars will not appear in truncated buffers unless -the package specifically asked for them. +to your @file{init.el}. (You can turn it on for the +current buffer and session only by @kbd{M-x font-lock-mode}.) See the +file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs +versions prior to 21.4) for more information. = -(a)node Q3.4.6, Q3.5.1, Q3.4.5, Display Subsystems -(a)unnumberedsubsec Q3.4.6: I find auto-show-mode disconcerting. How do= I turn it off? +(a)c the old way: +(a)c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) +(a)c (add-hook 'dired-mode-hook 'turn-on-font-lock) = -(a)code{auto-show-mode} controls whether or not a horizontal scrollbar -magically appears when a line is too long to be displayed. This is -enabled by default. To turn it off, put the following in your -(a)file{init.el}: +See also @code{Syntax Highlighting} from the @code{Options} menu. +Remember to save options. + +(a)node Q4.1.2, Q4.2.1, Q4.1.1, Display +(a)unnumberedsubsec Q4.1.2: How do I get @samp{More} Syntax Highlighting= on by default? + +Use the following code in your @file{init.el}: = @lisp -(setq auto-show-mode nil) -(setq-default auto-show-mode nil) +(setq-default font-lock-maximum-decoration t) @end lisp + +See also @code{Syntax Highlighting} from the @code{Options} menu. +Remember to save options. = -(a)unnumberedsec 3.5: The Modeline +(a)unnumberedsec 4.2: The Modeline = -(a)node Q3.5.1, Q3.5.2, Q3.4.6, Display Subsystems -(a)unnumberedsubsec Q3.5.1: How can I make the modeline go away? +(a)node Q4.2.1, Q4.2.2, Q4.1.2, Display +(a)unnumberedsubsec Q4.2.1: How can I make the modeline go away? = @lisp (set-specifier has-modeline-p nil) @end lisp = -(a)node Q3.5.2, Q3.5.3, Q3.5.1, Display Subsystems -(a)unnumberedsubsec Q3.5.2: How do you have XEmacs display the line numb= er in the modeline? +(a)node Q4.2.2, Q4.2.3, Q4.2.1, Display +(a)unnumberedsubsec Q4.2.2: How do you have XEmacs display the line numb= er in the modeline? = Add the following line to your @file{init.el} file to display the line number: @@ -4421,8 +5684,8 @@ and/or = Or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. = -(a)node Q3.5.3, Q3.5.4, Q3.5.2, Display Subsystems -(a)unnumberedsubsec Q3.5.3: How do I get XEmacs to put the time of day o= n the modeline? +(a)node Q4.2.3, Q4.2.4, Q4.2.2, Display +(a)unnumberedsubsec Q4.2.3: How do I get XEmacs to put the time of day o= n the modeline? = Add the following line to your @file{init.el} file to display the time: @@ -4433,8 +5696,8 @@ display the time: = See @code{Customize} from the @code{Options} menu for customization. = -(a)node Q3.5.4, Q3.6.1, Q3.5.3, Display Subsystems -(a)unnumberedsubsec Q3.5.4: How can one change the modeline color based = on the mode used? +(a)node Q4.2.4, Q4.3.1, Q4.2.3, Display +(a)unnumberedsubsec Q4.2.4: How can I change the modeline color based on= the mode used? = You can use something like the following: = @@ -4476,10 +5739,10 @@ There are additional modeline faces, @co @code{modeline-mousable}, and @code{modeline-mousable-minor-mode}, which you may want to customize. = -(a)unnumberedsec 3.6: The Cursor +(a)unnumberedsec 4.3: The Cursor = -(a)node Q3.6.1, Q3.6.2, Q3.5.4, Display Subsystems -(a)unnumberedsubsec Q3.6.1: Is there a way to make the bar cursor thicke= r? +(a)node Q4.3.1, Q4.3.2, Q4.2.4, Display +(a)unnumberedsubsec Q4.3.1: Is there a way to make the bar cursor thicke= r? = I'd like to have the bar cursor a little thicker, as I tend to "lose" it often. @@ -4496,7 +5759,7 @@ For a 2 pixel bar cursor, use: (setq bar-cursor 'anything-else) @end lisp = -Starting with XEmacs-20.3 you can also change these with Customize. +You can also change these with Customize. Select from the @code{Options} menu @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} = or type @kbd{M-x customize @key{RET} display @key{RET}}. @@ -4507,20 +5770,20 @@ You can use a color to make it stand out Emacs*cursorColor: Red @end example = -(a)node Q3.6.2, Q3.6.3, Q3.6.1, Display Subsystems -(a)unnumberedsubsec Q3.6.2: Is there a way to get back the block cursor? +(a)node Q4.3.2, Q4.3.3, Q4.3.1, Display +(a)unnumberedsubsec Q4.3.2: Is there a way to get back the block cursor? = @lisp (setq bar-cursor nil) @end lisp = -Starting with XEmacs 20.3 you can also change this with Customize. +You can also change this with Customize. Select from the @code{Options} menu @code{Advanced (Customize)->Emacs->Environment->Display->Bar Cursor...} = or type @kbd{M-x customize @key{RET} display @key{RET}}. = -(a)node Q3.6.3, Q3.7.1, Q3.6.2, Display Subsystems -(a)unnumberedsubsec Q3.6.3: Can I make the cursor blink? +(a)node Q4.3.3, Q4.4.1, Q4.3.2, Display +(a)unnumberedsubsec Q4.3.3: Can I make the cursor blink? = Yes, like this: = @@ -4531,579 +5794,344 @@ Yes, like this: This function toggles between a steady cursor and a blinking cursor. You may also set this mode from the menu bar by selecting @samp{Options->Display->Blinking Cursor}. Remember to save options. - -(a)unnumberedsec 3.7: Text Selections - -(a)node Q3.7.1, Q3.7.2, Q3.6.3, Display Subsystems -(a)unnumberedsubsec Q3.7.1: How do I select a rectangular region? - -Just select the region normally, then use the rectangle commands (e.g. -(a)code{kill-rectangle} on it. The region does not highlight as a -rectangle, but the commands work just fine. - -To actually sweep out rectangular regions with the mouse you can use -(a)code{mouse-track-do-rectangle} which is assigned to @kbd{M-button1}. -Then use rectangle commands. - -You can also do the following to change default behavior to sweep out -rectangular regions: - -(a)lisp -(setq mouse-track-rectangle-p t) -(a)end lisp - -Starting with XEmacs-20.2 you can also change this with Customize. -Select from the @code{Options} menu -(a)code{Advanced (Customize)->Emacs->Editing->Mouse->Track Rectangle...}= or type -(a)kbd{M-x customize @key{RET} mouse @key{RET}}. - - -(a)example - mouse-track-do-rectangle: (event) - -- an interactive compiled Lisp function. - Like `mouse-track' but selects rectangles instead of regions. -(a)end example - -(a)node Q3.7.2, Q3.7.3, Q3.7.1, Display Subsystems -(a)unnumberedsubsec Q3.7.2: How can I turn off or change highlighted sel= ections? - -The @code{zmacs} mode allows for what some might call gratuitous -highlighting for selected regions (either by setting mark or by using -the mouse). This is the default behavior. To turn off, add the -following line to your @file{init.el} file: - -(a)lisp -(setq zmacs-regions nil) -(a)end lisp - -You can also change this with Customize. Select from the -(a)code{Options} menu -(a)code{Advanced (Customize)->Emacs->Editing->Basics->Zmacs Regions} -or type @kbd{M-x customize @key{RET} editing-basics @key{RET}}. - -To change the face for selection, look at @code{Options->Advanced (Custo= mize)} -on the menubar. - -(a)node Q3.7.3, Q3.7.4, Q3.7.2, Display Subsystems -(a)unnumberedsubsec Q3.7.3: How do I get that typing on an active region= removes it? - -I want to change things so that if I select some text and start typing, -the typed text replaces the selected text, similar to Motif. - -You want to use something called @dfn{pending delete}. Pending delete -is what happens when you select a region (with the mouse or keyboard) -and you press a key to replace the selected region by the key you typed. -Usually backspace kills the selected region. - -To get this behavior, ensure that you have the @file{pc} package -installed, and add the following lines to your -(a)file{init.el}: - -(a)lisp -(cond - ((fboundp 'turn-on-pending-delete) - (turn-on-pending-delete)) - ((fboundp 'pending-delete-on) - (pending-delete-on t))) -(a)end lisp - -Note that this will work with both Backspace and Delete. This code is a -tad more complicated than it has to be for XEmacs in order to make it -more portable. - -(a)node Q3.7.4, Q3.7.5, Q3.7.3, Display Subsystems -(a)unnumberedsubsec Q3.7.4: Can I turn off the highlight during isearch? = -I do not like my text highlighted while I am doing isearch as I am not -able to see what's underneath. How do I turn it off? +(a)unnumberedsec 4.4: The Menubar = -Put the following in your @file{init.el}: +(a)node Q4.4.1, Q4.4.2, Q4.3.3, Display +(a)unnumberedsubsec Q4.4.1: How do I get rid of the menubar? = @lisp -(setq isearch-highlight nil) +(set-specifier menubar-visible-p nil) @end lisp - -Starting with XEmacs-20.2 you can also change this with Customize. Type -(a)kbd{M-x customize-variable @key{RET} isearch-highlight @key{RET}}. - -Note also that isearch-highlight affects query-replace and ispell. -Instead of disabling isearch-highlight you may find that a better -solution consists of customizing the @code{isearch} face. = -(a)node Q3.7.5, Q3.7.6, Q3.7.4, Display Subsystems -(a)unnumberedsubsec Q3.7.5: How do I turn off highlighting after @kbd{C-= x C-p} (mark-page)? +(a)node Q4.4.2, Q4.4.3, Q4.4.1, Display +(a)unnumberedsubsec Q4.4.2: How can I customize the menubar? = -Put this in your @code{.emacs}: +For an extensive menubar, add this line to your @file{init.el}: = @lisp -(setq zmacs-regions nil) +(load "big-menubar") @end lisp = -(a)strong{Warning: This command turns off all region highlighting.} +If you'd like to write your own, this file provides as good a set of +examples as any to start from. The file is located in edit-utils +package. = = -(a)xref{Q3.7.2, How can I turn off or change highlighted selections?}. +(a)node Q4.4.3, Q4.4.4, Q4.4.2, Display +(a)unnumberedsubsec Q4.4.3: How do I enable use of the keyboard (@kbd{Al= t}) to access menu items? = -(a)node Q3.7.6, Q3.7.7, Q3.7.5, Display Subsystems -(a)unnumberedsubsec Q3.7.6: The region disappears when I hit the end of = buffer while scrolling. +#### Write me. = -This has been fixed by default starting with XEmacs-20.3. +(a)node Q4.4.4, Q4.4.5, Q4.4.3, Display +(a)unnumberedsubsec Q4.4.4: How do I control how many buffers are listed= in the menu @code{Buffers List}? = -With older versions you can turn this feature (if it indeed is a feature) -off like this: +Add the following to your @file{init.el} (suit to fit): = @lisp -(defadvice scroll-up (around scroll-up freeze) - (interactive "_P") - (let ((zmacs-region-stays t)) - (if (interactive-p) - (condition-case nil - ad-do-it - (end-of-buffer (goto-char (point-max)))) - ad-do-it))) - -(defadvice scroll-down (around scroll-down freeze) - (interactive "_P") - (let ((zmacs-region-stays t)) - (if (interactive-p) - (condition-case nil - ad-do-it - (beginning-of-buffer (goto-char (point-min)))) - ad-do-it))) +(setq buffers-menu-max-size 20) @end lisp - -Thanks to @email{raman@@adobe.com, T. V. Raman} for assistance in derivi= ng this -answer. - -(a)node Q3.7.7, Q3.7.8, Q3.7.6, Display Subsystems -(a)unnumberedsubsec Q3.7.7: Why is killing so slow? - -This actually is an X Windows question, although you'll notice it with -keyboard operations as well as while using the GUI. Basically, there -are four ways to communicate interprogram via the X server: - -(a)table @strong -(a)item Primary selection -a transient selection that gets replaced every time a new selection is m= ade = -(a)item Secondary selection -for "exchanging" with the primary selection +For no limit, use an argument of @samp{nil}. = -(a)item Cut buffers -a clipboard internal to the X server (deprecated) +You can also change this with Customize. Select from the +(a)code{Options} menu +(a)code{Advanced (Customize)->Emacs->Environment->Menu->Buffers Menu->Ma= x Size...} +or type @kbd{M-x customize @key{RET} buffers-menu @key{RET}}. = -(a)item Clipboard selection -a selection with a notification protocol that allows a separate app to -manage the clipboard -(a)end table +(a)node Q4.4.5, Q4.5.1, Q4.4.4, Display +(a)unnumberedsubsec Q4.4.5: Resources like @code{Emacs*menubar*font} are= not working? = -The cut buffers are deprecated because managing them is even more -inefficient than the clipboard notification protocol. The primary -selection works fine for many users and applications, but is not very -robust under intensive or sophisticated use. +I am trying to use a resource like @code{Emacs*menubar*font} to set the +font of the menubar but it's not working. = -In Motif and MS Windows, a clipboard has become the primary means for -managing cut and paste. These means that "modern" applications tend to -be oriented toward a true clipboard, rather than the primary selection. -(On Windows, there is nothing equivalent to the primary selection.) -It's not that XEmacs doesn't support the simple primary selection -method, it's that more and more other applications don't. +In Motif, the use of @samp{font} resources is obsoleted in order to +support internationalization. If you are using the real Motif menubar, +this resource is not recognized at all; you have to say: = -So the slowdown occurs because XEmacs now engages in the clipboard -notification protocol on @emph{every} kill. This is especially slow on -Motif. +(a)example +Emacs*menubar*fontList: FONT +(a)end example = -With most people running most clients and server on the same host, and -many of the rest working over very fast communication, you may expect -that the situation is not going to improve. +If you are using the Lucid menubar, for backward compatibility with +existing user configurations, the @samp{font} resource is recognized. +Since this is not supported by Motif itself, the code is a kludge and +the @samp{font} resource will be recognized only if the @samp{fontList} +resource resource is unset. This means that the resource = -There are a number of workarounds. The most effective is to use a -special command to do selection ownership only when you intend to paste -to another application. Useful commands are @code{kill-primary-selectio= n} -and @code{copy-primary-selection}. These work only on text selected -with the mouse (probably; experiment), and are bound by default to the -(a)kbd{Cut} and @kbd{Copy}, respectively, buttons on the toolbar. -(a)code{copy-primary-selection} is also bound to @kbd{C-Insert}. You can -yank the clipboard contents with @code{yank-primary-selection}, bound to -the @kbd{Paste} toolbar button and @kbd{Sh-Insert}. +(a)example +*fontList: FONT +(a)end example = -If you are communicating by cut and paste with applications that use the -primary selection, then you can customize -(a)code{interprogram-cut-function} to @code{nil}, restoring the XEmacs -version 20 behavior. How can you tell if a program will support this? -Motifly-correct programs require the clipboard; you lose. For others, -only by trying it. You also need to customize the complementary -(a)code{interprogram-paste-function} to @code{nil}. (Otherwise -XEmacs-to-XEmacs pastes will not work correctly.) +will override = -You may get some relief on Motif by setting -(a)code{x-selection-strict-motif-ownership} to nil, but this means you w= ill -only intermittently be able to paste XEmacs kills to Motif applications. +(a)example +Emacs*menubar*font: FONT +(a)end example = -Thanks to Jeff Mincy and Glynn Clements for corrections. +even though the latter is more specific. = -(a)node Q3.7.8, Q3.8.1, Q3.7.7, Display Subsystems -(a)unnumberedsubsec Q3.7.8: Why does @kbd{M-w} take so long? +In non-Motif configurations using @samp{--with-mule} and +(a)samp{--with-xfs} it @emph{is} necessary to use the @code{fontSet} +resource @emph{instead of} the @code{font} resource. The backward +compatibility kludge was never implemented for non-Motif builds. +Example: = -It actually doesn't. It leaves the region visible for a second so that -you can see what area is being yanked. If you start working, though, it -will immediately complete its operation. In other words, it will only -delay for a second if you let it. +(a)example +*fontSet: FONT +(a)end example = -(a)unnumberedsec 3.8: Buffers, Text Editing +(a)unnumberedsec 4.5: The Toolbar = -(a)node Q3.8.1, Q3.8.2, Q3.7.8, Display Subsystems -(a)unnumberedsubsec Q3.8.1: Can I have the end of the buffer delimited i= n some way? +(a)node Q4.5.1, Q4.5.2, Q4.4.5, Display +(a)unnumberedsubsec Q4.5.1: How do I get rid of the toolbar? = -Say, with: @samp{[END]}? +#### Write me. = -Try this: +(a)node Q4.5.2, Q4.5.3, Q4.5.1, Display +(a)unnumberedsubsec Q4.5.2: How can I customize the toolbar? = -(a)lisp -(let ((ext (make-extent (point-min) (point-max)))) - (set-extent-property ext 'start-closed t) - (set-extent-property ext 'end-closed t) - (set-extent-property ext 'detachable nil) - (set-extent-end-glyph ext (make-glyph [string :data "[END]"]))) -(a)end lisp +#### Write me. = -Since this is XEmacs, you can specify an icon to be shown on -window-system devices. To do so, change the @code{make-glyph} call to -something like this: +(a)node Q4.5.3, Q4.5.4, Q4.5.2, Display +(a)unnumberedsubsec Q4.5.3: How can I bind a key to a function to toggle= the toolbar? = +Try something like: + @lisp -(make-glyph '([xpm :file "~/something.xpm"] - [string :data "[END]"])) +(defun my-toggle-toolbar () + (interactive) + (set-specifier default-toolbar-visible-p + (not (specifier-instance default-toolbar-visible-p)))) +(global-set-key "\C-xT" 'my-toggle-toolbar) @end lisp = -You can inline the @sc{xpm} definition yourself by specifying -(a)code{:data} instead of @code{:file}. Here is such a full-featured -version that works on both X and TTY devices: +(a)ignore +(a)c Probably not relevant any more +There are redisplay bugs in 19.14 that may make the preceding result in +a messed-up display, especially for frames with multiple windows. You +may need to resize the frame before XEmacs completely realizes the +toolbar is really gone. +(a)end ignore = -(a)lisp -(let ((ext (make-extent (point-min) (point-max)))) - (set-extent-property ext 'start-closed t) - (set-extent-property ext 'end-closed t) - (set-extent-property ext 'detachable nil) - (set-extent-end-glyph ext (make-glyph '([xpm :data "\ -/* XPM */ -static char* eye =3D @{ -\"20 11 7 2\", -\"__ c None\" -\"_` c #7f7f7f\", -\"_a c #fefefe\", -\"_b c #7f0000\", -\"_c c #fefe00\", -\"_d c #fe0000\", -\"_e c #bfbfbf\", -\"___________`_`_`___b_b_b_b_________`____\", -\"_________`_`_`___b_c_c_c_b_b____________\", -\"_____`_`_`_e___b_b_c_c_c___b___b_______`\", -\"___`_`_e_a___b_b_d___b___b___b___b______\", -\"_`_`_e_a_e___b_b_d_b___b___b___b___b____\", -\"_`_`_a_e_a___b_b_d___b___b___b___b___b__\", -\"_`_`_e_a_e___b_b_d_b___b___b___b___b_b__\", -\"___`_`_e_a___b_b_b_d_c___b___b___d_b____\", -\"_____`_`_e_e___b_b_b_d_c___b_b_d_b______\", -\"_`_____`_`_`_`___b_b_b_d_d_d_d_b________\", -\"___`_____`_`_`_`___b_b_b_b_b_b__________\", -@} ;"] - [string :data "[END]"])))) -(a)end lisp +Thanks to @email{martin@@xemacs.org, Martin Buchholz} for the correct +code. = -Note that you might want to make this a function, and put it to a hook. -We leave that as an exercise for the reader. +(a)node Q4.5.4, Q4.6.1, Q4.5.3, Display +(a)unnumberedsubsec Q4.5.4: @samp{Can't instantiate image error...} in t= oolbar = -(a)node Q3.8.2, Q3.8.3, Q3.8.1, Display Subsystems -(a)unnumberedsubsec Q3.8.2: How do I insert today's date into a buffer? +(a)email{expt@@alanine.ram.org, Dr. Ram Samudrala} writes: = -Like this: +I just installed the XEmacs (20.4-2) RPMS that I downloaded from +(a)uref{http://www.xemacs.org/}. Everything works fine, except that when +I place my mouse over the toolbar, it beeps and gives me this message: = -(a)lisp -(insert (current-time-string)) -(a)end lisp +(a)example + Can't instantiate image (probably cached): + [xbm :mask-file "/usr/include/X11/bitmaps/leftptrmsk :mask-data + (16 16 ... +(a)end example = -(a)node Q3.8.3, Q3.8.4, Q3.8.2, Display Subsystems -(a)unnumberedsubsec Q3.8.3: How do I get a single minibuffer frame? +(a)email{kyle_jones@@wonderworks.com, Kyle Jones} writes: +(a)quotation +This is problem specific to some Chips and Technologies video +chips, when running XFree86. Putting = -(a)email{acs@@acm.org, Vin Shelton} writes: +(a)code{Option "sw_cursor"} = -(a)lisp -(setq initial-frame-plist '(minibuffer nil)) -(setq default-frame-plist '(minibuffer nil)) -(setq default-minibuffer-frame - (make-frame - '(minibuffer only - width 86 - height 1 - menubar-visible-p nil - default-toolbar-visible-p nil - name "minibuffer" - top -2 - left -2 - has-modeline-p nil))) -(frame-notice-user-settings) -(a)end lisp +in @file{XF86Config} gets rid of the problem. +(a)end quotation = -(a)strong{Please note:} The single minibuffer frame may not be to everyo= ne's -taste, and there any number of other XEmacs options settings that may -make it difficult or inconvenient to use. +(a)unnumberedsec 4.6: Scrollbars and Scrolling = -(a)node Q3.8.4, Q3.8.5, Q3.8.3, Display Subsystems -(a)unnumberedsubsec Q3.8.4: How can I enable auto-indent and/or Filladap= t? +(a)node Q4.6.1, Q4.6.2, Q4.5.4, Display +(a)unnumberedsubsec Q4.6.1: How can I disable the scrollbar? = -Put the following line in your @file{init.el}: +To disable them for all frames, add the following line to +your @file{.Xresources}: = -(a)lisp -(setq indent-line-function 'indent-relative-maybe) -(a)end lisp +(a)example +Emacs.scrollBarWidth: 0 +(a)end example = -If you want to get fancy, try the @code{filladapt} package available -standard with XEmacs. Put this into your @file{init.el}: +Or select @samp{Options->Display->Scrollbars}. +Remember to save options. + +To turn the scrollbar off on a per-frame basis, use the following +function: = @lisp -(require 'filladapt) -(setq-default filladapt-mode t) -(add-hook 'c-mode-hook 'turn-off-filladapt-mode) +(set-specifier scrollbar-width 0 (selected-frame)) @end lisp = -This will enable Filladapt for all modes except C mode, where it doesn't -work well. To turn Filladapt on only in particular major modes, remove -the @code{(setq-default ...)} line and use -(a)code{turn-on-filladapt-mode}, like this: +You can actually turn the scrollbars on at any level you want by +substituting for (selected-frame) in the above command. For example, to +turn the scrollbars off only in a single buffer: = @lisp -(add-hook 'text-mode-hook 'turn-on-filladapt-mode) +(set-specifier scrollbar-width 0 (current-buffer)) @end lisp - -You can customize filling and adaptive filling with Customize. -Select from the @code{Options} menu -(a)code{Advanced (Customize)->Emacs->Editing->Fill->Fill...} -or type @kbd{M-x customize @key{RET} fill @key{RET}}. - -Note that well-behaving text-lookalike modes will run -(a)code{text-mode-hook} by default (e.g. that's what Message does). For -the nasty ones, you'll have to provide the @code{add-hook}s yourself. - -Please note that the @code{fa-extras} package is no longer useful. = -(a)node Q3.8.5, Q3.9.1, Q3.8.4, Display Subsystems -(a)unnumberedsubsec Q3.8.5: How can I get XEmacs to come up in text/auto= -fill mode by default? +(a)node Q4.6.2, Q4.6.3, Q4.6.1, Display +(a)unnumberedsubsec Q4.6.2: How can I change the scrollbar width? = -Try the following lisp in your @file{init.el}: +#### Write me. = -(a)lisp -(setq default-major-mode 'text-mode) -(setq text-mode-hook 'turn-on-auto-fill) -(a)end lisp +(a)node Q4.6.3, Q4.6.4, Q4.6.2, Display +(a)unnumberedsubsec Q4.6.3: How can I use resources to change scrollbar = colors? = -(a)strong{WARNING}: note that changing the value of -(a)code{default-major-mode} from @code{fundamental-mode} can break a lar= ge -amount of built-in code that expects newly created buffers to be in -(a)code{fundamental-mode}. (Changing from @code{fundamental-mode} to -(a)code{text-mode} might not wreak too much havoc, but changing to -something more exotic like a lisp-mode would break many Emacs packages). +Here's a recap of how to use resources to change your scrollbar colors: = -Note that Emacs by default starts up in buffer @code{*scratch*} in -(a)code{initial-major-mode}, which defaults to -(a)code{lisp-interaction-mode}. Thus adding the following form to your -Emacs init file will cause the initial @code{*scratch*} buffer to be put -into auto-fill'ed @code{text-mode}: +(a)example +! Motif scrollbars = -(a)lisp -(setq initial-major-mode - (lambda () - (text-mode) - (turn-on-auto-fill))) -(a)end lisp +Emacs*XmScrollBar.Background: skyblue +Emacs*XmScrollBar.troughColor: lightgray = -Note that after your init file is loaded, if -(a)code{inhibit-startup-message} is @code{nil} (the default) and the -startup buffer is @code{*scratch*} then the startup message will be -inserted into @code{*scratch*}; it will be removed after a timeout by -erasing the entire @code{*scratch*} buffer. Keep in mind this default -usage of @code{*scratch*} if you desire any prior manipulation of -(a)code{*scratch*} from within your Emacs init file. In particular, -anything you insert into @code{*scratch*} from your init file will be -later erased. Also, if you change the mode of the @code{*scratch*} -buffer, be sure that this will not interfere with possible later -insertion of the startup message (e.g. if you put @code{*scratch*} into -a nonstandard mode that has automatic font lock rules, then the startup -message might get fontified in a strange foreign manner, e.g. as code in -some programming language). +! Athena scrollbars = -(a)unnumberedsec 3.9: Editing Source Code +Emacs*Scrollbar.Foreground: skyblue +Emacs*Scrollbar.Background: lightgray +(a)end example = -(a)node Q3.9.1, Q3.9.2, Q3.8.5, Display Subsystems -(a)unnumberedsubsec Q3.9.1: How can I do source code highlighting using = font-lock? +Note the capitalization of @code{Scrollbar} for the Athena widget. = -For most modes, font-lock is already set up and just needs to be turned -on. This can be done by adding the line: +(a)node Q4.6.4, Q4.6.5, Q4.6.3, Display +(a)unnumberedsubsec Q4.6.4: Moving the scrollbar can move the point; can= I disable this? = -(a)lisp -(require 'font-lock) -(a)end lisp +When I move the scrollbar in an XEmacs window, it moves the point as +well, which should not be the default behavior. Is this a bug or a +feature? Can I disable it? = -to your @file{init.el}. (You can turn it on for the -current buffer and session only by @kbd{M-x font-lock-mode}.) See the -file @file{etc/sample.init.el} (@file{etc/sample.emacs} in XEmacs -versions prior to 21.4) for more information. +The current behavior is a feature, not a bug. Point remains at the same +buffer position as long as that position does not scroll off the screen. +In that event, point will end up in either the upper-left or lower-left +hand corner. = -(a)c the old way: -(a)c (add-hook 'emacs-lisp-mode-hook 'turn-on-font-lock) -(a)c (add-hook 'dired-mode-hook 'turn-on-font-lock) +This cannot be changed. = -See also @code{Syntax Highlighting} from the @code{Options} menu. -Remember to save options. +(a)node Q4.6.5, Q4.6.6, Q4.6.4, Display +(a)unnumberedsubsec Q4.6.5: Scrolling one line at a time. = -(a)node Q3.9.2, Q3.9.3, Q3.9.1, Display Subsystems -(a)unnumberedsubsec Q3.9.2: How do I get @samp{More} Syntax Highlighting= on by default? +Can the cursor keys scroll the screen a line at a time, rather than the +default half page jump? I tend it to find it disorienting. = -Use the following code in your @file{init.el}: +Use the following: = @lisp -(setq-default font-lock-maximum-decoration t) +(setq scroll-step 1) @end lisp = -See also @code{Syntax Highlighting} from the @code{Options} menu. -Remember to save options. +You can also change this with Customize. Select from the +(a)code{Options} menu +(a)code{Advanced (Customize)->Emacs->Environment->Windows->Scroll Step..= .} +or type @kbd{M-x customize @key{RET} windows @key{RET}}. = -(a)node Q3.9.3, Q3.9.4, Q3.9.2, Display Subsystems -(a)unnumberedsubsec Q3.9.3: Where do I get the latest CC Mode? +(a)node Q4.6.6, Q4.6.7, Q4.6.5, Display +(a)unnumberedsubsec Q4.6.6: How can I turn off automatic horizontal scro= lling in specific modes? = -(a)email{bwarsaw@@cnri.reston.va.us, Barry A. Warsaw} writes: +Do @code{(setq truncate-lines t)} in the mode-hooks for any modes +in which you want lines truncated. = -(a)quotation -This can be had from @uref{http://www.python.org/emacs/}. -(a)end quotation +More precisely: If @code{truncate-lines} is nil, horizontal scrollbars +will never appear. Otherwise, they will appear only if the value of +(a)code{scrollbar-height} for that buffer/window/etc. is non-zero. If y= ou +do = -(a)node Q3.9.4, Q3.9.5, Q3.9.3, Display Subsystems -(a)unnumberedsubsec Q3.9.4: I do not like cc-mode. How do I use the old= c-mode? +(a)lisp +(set-specifier scrollbar-height 0) +(a)end lisp = -Well, first off, consider if you really want to do this. cc-mode is -much more powerful than the old c-mode. If you're having trouble -getting your old offsets to work, try using @code{c-set-offset} instead. -You might also consider using the package @code{cc-compat}. +then horizontal scrollbars will not appear in truncated buffers unless +the package specifically asked for them. = -But, if you still insist, add the following lines to your @file{init.el}: +(a)node Q4.6.7, Q4.7.1, Q4.6.6, Display +(a)unnumberedsubsec Q4.6.7: I find auto-show-mode disconcerting. How do= I turn it off? = -(a)lisp -(fmakunbound 'c-mode) -(makunbound 'c-mode-map) -(fmakunbound 'c++-mode) -(makunbound 'c++-mode-map) -(makunbound 'c-style-alist) -(load-library "old-c-mode") -(load-library "old-c++-mode") -(a)end lisp +(a)code{auto-show-mode} controls whether or not a horizontal scrollbar +magically appears when a line is too long to be displayed. This is +enabled by default. To turn it off, put the following in your +(a)file{init.el}: = -This must be done before any other reference is made to either c-mode or -c++-mode. +(a)lisp +(setq auto-show-mode nil) +(setq-default auto-show-mode nil) +(a)end lisp = -(a)node Q3.9.5, , Q3.9.4, Display Subsystems -(a)unnumberedsubsec Q3.9.5: How do you make XEmacs indent CL if-clauses = correctly? +(a)unnumberedsec 4.7: The Gutter Tabs, The Progress Bar, Widgets = -I'd like XEmacs to indent all the clauses of a Common Lisp @code{if} the -same amount instead of indenting the 3rd clause differently from the -first two. +(a)node Q4.7.1, Q4.7.2, Q4.6.7, Display +(a)unnumberedsubsec Q4.7.1: How can I disable the gutter tabs? = -One way is to add, to @file{init.el}: +#### Write me. = -(a)lisp -(put 'if 'lisp-indent-function nil) -(a)end lisp +(a)node Q4.7.2, Q4.7.3, Q4.7.1, Display +(a)unnumberedsubsec Q4.7.2: How can I disable the progress bar? = -However, note that the package @code{cl-indent} that comes with -XEmacs sets up this kind of indentation by default. @code{cl-indent} -also knows about many other CL-specific forms. To use @code{cl-indent}, -one can do this: +#### Write me. = -(a)lisp -(load "cl-indent") -(setq lisp-indent-function (function common-lisp-indent-function)) -(a)end lisp +(a)node Q4.7.3, Q4.7.4, Q4.7.2, Display +(a)unnumberedsubsec Q4.7.3: There are bugs in the gutter or widgets. = -One can also customize @file{cl-indent.el} so it mimics the default -(a)code{if} indentation @code{then} indented more than the @code{else}. -Here's how: +#### Write me. = -(a)lisp -(put 'if 'common-lisp-indent-function '(nil nil &body)) -(a)end lisp +(a)node Q4.7.4, , Q4.7.3, Display +(a)unnumberedsubsec Q4.7.4: How can I customize the gutter or gutter tab= s? = -Also, a new version (1.2) of @file{cl-indent.el} was posted to -comp.emacs.xemacs on 12/9/94. This version includes more documentation -than previous versions. This may prove useful if you need to customize -any indent-functions. +#### Write me. = -(a)node External Subsystems, Internet, Display Subsystems, Top -(a)unnumbered 4 Interfacing with the Operating System and External Devic= es +(a)node External Subsystems, Internet, Display, Top +(a)unnumbered 5 Interfacing with the Operating System and External Devic= es = -This is part 4 of the XEmacs Frequently Asked Questions list. This +This is part 5 of the XEmacs Frequently Asked Questions list. This section is devoted to the various ways that XEmacs interfaces with the operating system, with other processes and with external devices such as speakers and the printer. = @menu -4.0: X Window System and Resources -* Q4.0.1:: Where is a list of X resources? -* Q4.0.2:: How can I detect a color display? -* Q4.0.3:: How can I get the icon to just say @samp{XEmacs}? -* Q4.0.4:: How can I have the window title area display the full path? -* Q4.0.5:: @samp{xemacs -name junk} doesn't work? -* Q4.0.6:: @samp{-iconic} doesn't work. - -4.1: Microsoft Windows -* Q4.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp= {w32-*}? -* Q4.1.2:: How do I get Windows Explorer to associate a file type wit= h XEmacs? - -4.2: Printing -* Q4.2.1:: What do I need to change to make printing work? -* Q4.2.2:: How can I print WYSIWYG a font-locked buffer? -* Q4.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. -* Q4.2.4:: Can you print under MS Windows? - -4.3: Sound -* Q4.3.1:: How do I turn off the sound? -* Q4.3.2:: How do I get funky sounds instead of a boring beep? -* Q4.3.3:: What's NAS, how do I get it? -* Q4.3.4:: Sunsite sounds don't play. - -4.4: Running an Interior Shell, Invoking Subprocesses -* Q4.4.1:: What is an interior shell? -* Q4.4.2:: How do I start up a second shell buffer? -* Q4.4.3:: Telnet from shell filters too much -* Q4.4.4:: Strange things are happening in Shell Mode. -* Q4.4.5:: XEmacs complains "No such file or directory, diff" - -4.5: Multiple Device Support -* Q4.5.1:: How do I open a frame on another screen of my multi-headed= display? -* Q4.5.2:: Can I really connect to a running XEmacs after calling up = over a modem? How? -* Q4.5.3:: How do I disable gnuserv from opening a new frame? -* Q4.5.4:: How do I start gnuserv so that each subsequent XEmacs is a= client? -* Q4.5.5:: Is there a way to start a new XEmacs if there's no gnuserv= running, and otherwise use gnuclient? - -4.6: TeX -* Q4.6.1:: Is there something better than LaTeX mode? -* Q4.6.2:: What is AUCTeX? Where do you get it? -* Q4.6.3:: Problems installing AUCTeX. -* Q4.6.4:: How do I turn off current chapter from AUCTeX modeline? - -4.7: Other Unbundled Packages -* Q4.7.1:: Is there a reason for an Emacs package not to be included = in XEmacs? -* Q4.7.2:: Are there any Emacs Lisp Spreadsheets? -* Q4.7.3:: Is there a MatLab mode? - -4.8: Environments Built Around XEmacs -* Q4.8.1:: What are SPARCworks, EOS, and WorkShop? -* Q4.8.2:: How do I start the Sun Workshop support in XEmacs 21? -* Q4.8.3:: What is/was Energize? -* Q4.8.4:: What is Infodock? +5.0: X Window System and Resources +* Q5.0.1:: Where is a list of X resources? +* Q5.0.2:: How can I detect a color display? +* Q5.0.3:: How can I get the icon to just say @samp{XEmacs}? +* Q5.0.4:: How can I have the window title area display the full path? +* Q5.0.5:: @samp{xemacs -name junk} doesn't work? +* Q5.0.6:: @samp{-iconic} doesn't work. + +5.1: Microsoft Windows +* Q5.1.1:: Does XEmacs rename all the @samp{win32-*} symbols to @samp= {w32-*}? +* Q5.1.2:: How do I get Windows Explorer to associate a file type wit= h XEmacs? + +5.2: Printing +* Q5.2.1:: What do I need to change to make printing work? +* Q5.2.2:: How can I print WYSIWYG a font-locked buffer? +* Q5.2.3:: Getting @kbd{M-x lpr} to work with postscript printer. +* Q5.2.4:: Can you print under MS Windows? + +5.3: Sound +* Q5.3.1:: How do I turn off the sound? +* Q5.3.2:: How do I get funky sounds instead of a boring beep? +* Q5.3.3:: What are NAS and ESD (EsounD)? +* Q5.3.4:: Sunsite sounds don't play. + +5.4: Running an Interior Shell, Invoking Subprocesses +* Q5.4.1:: What is an interior shell? +* Q5.4.2:: How do I start up a second shell buffer? +* Q5.4.3:: Telnet from shell filters too much +* Q5.4.4:: Strange things are happening in Shell Mode. +* Q5.4.5:: XEmacs complains "No such file or directory, diff" +* Q5.4.6:: Cygwin error "fork_copy: linked dll/bss pass 0 failed" + +5.5: Multiple Device Support +* Q5.5.1:: How do I open a frame on another screen of my multi-headed= display? +* Q5.5.2:: Can I really connect to a running XEmacs after calling up = over a modem? How? +* Q5.5.3:: How do I disable gnuserv from opening a new frame? +* Q5.5.4:: How do I start gnuserv so that each subsequent XEmacs is a= client? +* Q5.5.5:: Is there a way to start a new XEmacs if there's no gnuserv= running, and otherwise use gnuclient? @end menu = -(a)unnumberedsec 4.0: X Window System and Resources +(a)unnumberedsec 5.0: X Window System and Resources = -(a)node Q4.0.1, Q4.0.2, External Subsystems, External Subsystems -(a)unnumberedsubsec Q4.0.1: Where is a list of X resources? +(a)node Q5.0.1, Q5.0.2, External Subsystems, External Subsystems +(a)unnumberedsubsec Q5.0.1: Where is a list of X resources? = Search through the @file{NEWS} file for @samp{X Resources}. A fairly comprehensive list is given after it. @@ -5116,8 +6144,8 @@ as @file{etc/Emacs.ad}, but a few entrie installing the contents of this file into your @file{.Xresources} (or legacy @file{.Xdefaults}) file if you use GNU Emacs under X11 as well. = -(a)node Q4.0.2, Q4.0.3, Q4.0.1, External Subsystems -(a)unnumberedsubsec Q4.0.2: How can I detect a color display? +(a)node Q5.0.2, Q5.0.3, Q5.0.1, External Subsystems +(a)unnumberedsubsec Q5.0.2: How can I detect a color display? = You can test the return value of the function @code{(device-class)}, as in: @@ -5130,8 +6158,8 @@ in: ) @end lisp = -(a)node Q4.0.3, Q4.0.4, Q4.0.2, External Subsystems -(a)unnumberedsubsec Q4.0.3: How can I get the icon to just say @samp{XEm= acs}? +(a)node Q5.0.3, Q5.0.4, Q5.0.2, External Subsystems +(a)unnumberedsubsec Q5.0.3: How can I get the icon to just say @samp{XEm= acs}? = I'd like the icon to just say @samp{XEmacs}, and not include the name of the current file in it. @@ -5142,8 +6170,8 @@ Add the following line to your @file{ini (setq frame-icon-title-format "XEmacs") @end lisp = -(a)node Q4.0.4, Q4.0.5, Q4.0.3, External Subsystems -(a)unnumberedsubsec Q4.0.4: How can I have the window title area display= the full path? +(a)node Q5.0.4, Q5.0.5, Q5.0.3, External Subsystems +(a)unnumberedsubsec Q5.0.4: How can I have the window title area display= the full path? = I'd like to have the window title area display the full directory/name of the current buffer file and not just the name. @@ -5164,8 +6192,8 @@ A more sophisticated title might be: = That is, use the file name, or the dired-directory, or the buffer name. = -(a)node Q4.0.5, Q4.0.6, Q4.0.4, External Subsystems -(a)unnumberedsubsec Q4.0.5: @samp{xemacs -name junk} doesn't work? +(a)node Q5.0.5, Q5.0.6, Q5.0.4, External Subsystems +(a)unnumberedsubsec Q5.0.5: @samp{xemacs -name junk} doesn't work? = When I run @samp{xterm -name junk}, I get an xterm whose class name according to xprop, is @samp{junk}. This is the way it's supposed to @@ -5215,8 +6243,8 @@ To make a frame with a particular name u (make-frame '((name . "the-name"))) @end lisp = -(a)node Q4.0.6, Q4.1.1, Q4.0.5, External Subsystems -(a)unnumberedsubsec Q4.0.6: @samp{-iconic} doesn't work. +(a)node Q5.0.6, Q5.1.1, Q5.0.5, External Subsystems +(a)unnumberedsubsec Q5.0.6: @samp{-iconic} doesn't work. = When I start up XEmacs using @samp{-iconic} it doesn't work right. Using @samp{-unmapped} on the command line, and setting the @@ -5230,10 +6258,10 @@ getting it to work. The principal probl bugs... @end quotation = -(a)unnumberedsec 4.1: Microsoft Windows +(a)unnumberedsec 5.1: Microsoft Windows = -(a)node Q4.1.1, Q4.1.2, Q4.0.6, External Subsystems -(a)unnumberedsubsec Q4.1.1: Does XEmacs rename all the @samp{win32-*} sy= mbols to @samp{w32-*}? +(a)node Q5.1.1, Q5.1.2, Q5.0.6, External Subsystems +(a)unnumberedsubsec Q5.1.1: Does XEmacs rename all the @samp{win32-*} sy= mbols to @samp{w32-*}? = In his flavor of Emacs 20, Richard Stallman has renamed all the @samp{wi= n32-*} symbols to @samp{w32-*}. Does XEmacs do the same? @@ -5260,8 +6288,8 @@ provide generic interfaces that apply to @c with our convention, but we provide the GNU Emacs names as @c compatibility aliases. = -(a)node Q4.1.2, Q4.2.1, Q4.1.1, External Subsystems -(a)unnumberedsubsec Q4.1.2: How do I get Windows Explorer to associate a= file type with XEmacs? +(a)node Q5.1.2, Q5.2.1, Q5.1.1, External Subsystems +(a)unnumberedsubsec Q5.1.2: How do I get Windows Explorer to associate a= file type with XEmacs? = @unnumberedsubsubsec Associating a new file type with XEmacs. = @@ -5314,10 +6342,10 @@ it and pressing @samp{Set Default}. Note for Windows 2000 users: Under Windows 2000, get to @samp{File Types} using @samp{Control Panel->Folder Options->File Types}. = -(a)unnumberedsec 4.2: Printing +(a)unnumberedsec 5.2: Printing = -(a)node Q4.2.1, Q4.2.2, Q4.1.2, External Subsystems -(a)unnumberedsubsec Q4.2.1: What do I need to change to make printing wo= rk? +(a)node Q5.2.1, Q5.2.2, Q5.1.2, External Subsystems +(a)unnumberedsubsec Q5.2.1: What do I need to change to make printing wo= rk? = For regular printing there are two variables that can be customized. = @@ -5360,8 +6388,8 @@ NOTE: It is an undocumented limitation i printing (the @code{Pretty Print Buffer} menu item) @strong{requires} a window system environment. It cannot be used outside of X11. = -(a)node Q4.2.2, Q4.2.3, Q4.2.1, External Subsystems -(a)unnumberedsubsec Q4.2.2: How can I print WYSIWYG a font-locked buffer? +(a)node Q5.2.2, Q5.2.3, Q5.2.1, External Subsystems +(a)unnumberedsubsec Q5.2.2: How can I print WYSIWYG a font-locked buffer? = Font-lock looks nice. How can I print (WYSIWYG) the highlighted document? @@ -5372,8 +6400,8 @@ on its use, in @file{$prefix/lib/xemacs/xemacs-packages/lisp/ps-print/ps-print.el}, being the default location of an installed ps-print package. = -(a)node Q4.2.3, Q4.2.4, Q4.2.2, External Subsystems -(a)unnumberedsubsec Q4.2.3: Getting @kbd{M-x lpr} to work with postscrip= t printer. +(a)node Q5.2.3, Q5.2.4, Q5.2.2, External Subsystems +(a)unnumberedsubsec Q5.2.3: Getting @kbd{M-x lpr} to work with postscrip= t printer. = My printer is a Postscript printer and @code{lpr} only works for Postscript files, so how do I get @kbd{M-x lpr-region} and @kbd{M-x @@ -5390,8 +6418,8 @@ If you don't use a2ps to convert ASCII t free?), replace with the command you do use. Note also that some versions of a2ps require a @samp{-Pprinter} to ensure spooling. = -(a)node Q4.2.4, Q4.3.1, Q4.2.3, External Subsystems -(a)unnumberedsubsec Q4.2.4: Can you print under MS Windows? +(a)node Q5.2.4, Q5.3.1, Q5.2.3, External Subsystems +(a)unnumberedsubsec Q5.2.4: Can you print under MS Windows? = As of 21.4, printing works on Windows, using simply @samp{File->Print BUFFER...}, and can be configured with @@ -5399,601 +6427,328 @@ As of 21.4, printing works on Windows, u = Prior to 21.4, there is no built-in support, but there are some clever hacks out there. If you know how, please let us know and we'll put it -here. - -(a)unnumberedsec 4.3: Sound - -(a)node Q4.3.1, Q4.3.2, Q4.2.4, External Subsystems -(a)unnumberedsubsec Q4.3.1: How do I turn off the sound? - -Add the following line to your @file{init.el}: - -(a)lisp -(setq bell-volume 0) -(setq sound-alist nil) -(a)end lisp - -That will make your XEmacs totally silent---even the default ding sound -(TTY beep on TTY-s) will be gone. - -You can also change these with Customize. Select from the -(a)code{Options} menu @code{Advanced -(Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x -customize @key{RET} sound @key{RET}}. - - -(a)node Q4.3.2, Q4.3.3, Q4.3.1, External Subsystems -(a)unnumberedsubsec Q4.3.2: How do I get funky sounds instead of a borin= g beep? - -Make sure your XEmacs was compiled with sound support, and then put this -in your @file{init.el}: - -(a)lisp -(load-default-sounds) -(a)end lisp - -(a)node Q4.3.3, Q4.3.4, Q4.3.2, External Subsystems -(a)unnumberedsubsec Q4.3.3: What's NAS, how do I get it? - -(a)xref{Q2.1.3, Compiling XEmacs with Netaudio}, for an explanation of -the @dfn{Network Audio System}. - -(a)node Q4.3.4, Q4.4.1, Q4.3.3, External Subsystems -(a)unnumberedsubsec Q4.3.4: Sunsite sounds don't play. - -I'm having some trouble with sounds I've downloaded from sunsite. They -play when I run them through @code{showaudio} or cat them directly to -(a)file{/dev/audio}, but XEmacs refuses to play them. - -(a)email{gutschk@@uni-muenster.de, Markus Gutschke} writes: - -(a)quotation -[Many of] These files have an (erroneous) 24byte header that tells about -the format that they have been recorded in. If you cat them to -(a)file{/dev/audio}, the header will be ignored and the default behavior -for /dev/audio will be used. This happens to be 8kHz uLaw. It is -probably possible to fix the header by piping through @code{sox} and -passing explicit parameters for specifying the sampling format; you then -need to perform a 'null' conversion from SunAudio to SunAudio. -(a)end quotation - -(a)unnumberedsec 4.4: Running an Interior Shell, Invoking Subprocesses - -(a)node Q4.4.1, Q4.4.2, Q4.3.4, External Subsystems -(a)unnumberedsubsec Q4.4.1: What is an interior shell? - -#### Write me. - -(a)node Q4.4.2, Q4.4.3, Q4.4.1, External Subsystems -(a)unnumberedsubsec Q4.4.2: How do I start up a second shell buffer? - -In the @code{*shell*} buffer: - -(a)lisp -M-x rename-buffer @key{RET} *shell-1* @key{RET} -M-x shell RET -(a)end lisp - -This will then start a second shell. The key is that no buffer named -(a)samp{*shell*} can exist. It might be preferable to use @kbd{M-x -rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x -rename-buffer}. - -Alternately, you can set the variable @code{shell-multiple-shells}. -If the value of this variable is non-nil, each time shell mode is invoke= d, -a new shell is made - -(a)node Q4.4.3, Q4.4.4, Q4.4.2, External Subsystems -(a)unnumberedsubsec Q4.4.3: Telnet from shell filters too much - -I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke -and use a telnet session within it. Everything works fine except that -now all @samp{^M}'s are filtered out by Emacs. Fixes? - -Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather -than doing rsh or telnet within the local shell buffer. You can also -use @kbd{M-x ssh} to open secure remote session if you have @code{ssh} -installed. - -(a)node Q4.4.4, Q4.4.5, Q4.4.3, External Subsystems -(a)unnumberedsubsec Q4.4.4: Strange things are happening in Shell Mode. - -Sometimes (i.e. it's not repeatable, and I can't work out why it -happens) when I'm typing into shell mode, I hit return and only a -portion of the command is given to the shell, and a blank prompt is -returned. If I hit return again, the rest of the previous command is -given to the shell. - -(a)email{martin@@xemacs.org, Martin Buchholz} writes: - -(a)quotation -There is a known problem with interaction between @code{csh} and the -(a)code{filec} option and XEmacs. You should add the following to your -(a)file{.cshrc}: - -(a)example -if ( "$TERM" =3D=3D emacs || "$TERM" =3D=3D unknown ) unset filec -(a)end example -(a)end quotation - -(a)node Q4.4.5, Q4.5.1, Q4.4.4, External Subsystems -(a)unnumberedsubsec Q4.4.5: XEmacs complains "No such file or directory,= diff" - -or "ispell" or other commands that seem related to whatever you just -tried to do (M-x ediff or M-$, for example). - -There are a large number of common (in the sense that "everyone has -these, they really do") Unix utilities that are not provided with -XEmacs. The GNU Project's implementations are available for Windows in -the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also -provides a complete Unix emulation environment (and thus makes ports of -Unix utilities nearly trivial). Another implementation is that from -MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others, -please let us know! - -(a)unnumberedsec 4.5: Multiple Device Support - -(a)node Q4.5.1, Q4.5.2, Q4.4.5, External Subsystems -(a)unnumberedsubsec Q4.5.1: How do I open a frame on another screen of m= y multi-headed display? - -Use the command @kbd{M-x make-frame-on-display}. This command is also -on the File menu in the menubar. - -The command @code{make-frame-on-tty} also exists, which will establish a -connection to any tty-like device. Opening the TTY devices should be -left to @code{gnuclient}, though. - -(a)node Q4.5.2, Q4.5.3, Q4.5.1, External Subsystems -(a)unnumberedsubsec Q4.5.2: Can I really connect to a running XEmacs aft= er calling up over a modem? How? - -Yes. Use @code{gnuclient -nw}. (Prior to 20.3, use the @code{gnuattach} -program supplied with XEmacs instead.) - -Also see @ref{Q4.5.3, How do I disable gnuserv from opening a new frame?= }. - -(a)node Q4.5.3, Q4.5.4, Q4.5.2, External Subsystems -(a)unnumberedsubsec Q4.5.3: How do I disable gnuserv from opening a new = frame? - -If you set the @code{gnuserv-frame} variable to the frame that should be -used to display buffers that are pulled up, a new frame will not be -created. For example, you could put - -(a)lisp -(setq gnuserv-frame (selected-frame)) -(a)end lisp - -early on in your @file{init.el}, to ensure that the first frame created -is the one used for your gnuserv buffers. - -There is an option to set the gnuserv target to the current frame. See -(a)code{Options->Display->"Other Window" Location->Make Current Frame Gn= userv Target} - -You can also change this with Customize. Select from the -(a)code{Options} menu @code{Advanced -(Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type -(a)kbd{M-x customize @key{RET} gnuserv @key{RET}}. - - -(a)node Q4.5.4, Q4.5.5, Q4.5.3, External Subsystems -(a)unnumberedsubsec Q4.5.4: How do I start gnuserv so that each subseque= nt XEmacs is a client? - -Put the following in your @file{init.el} file to start the server: - -(a)lisp -(gnuserv-start) -(a)end lisp - -Start your first XEmacs as usual. After that, you can do: - -(a)example -gnuclient randomfilename -(a)end example - -from the command line to get your existing XEmacs process to open a new -frame and visit randomfilename in that window. When you're done editing -randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the -frame. - -See also man page of gnuclient. - -(a)node Q4.5.5, Q4.6.1, Q4.5.4, External Subsystems -(a)unnumberedsubsec Q4.5.5: Is there a way to start a new XEmacs if ther= e's no gnuserv running, and otherwise use gnuclient? - -(a)email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: -(a)quotation -Here is one of the solutions, we have this in a script called -(a)file{etc/editclient.sh}. -(a)example - #!/bin/sh - if gnuclient -batch -eval t >/dev/null 2>&1 - then - exec gnuclient $@{1+"$@@"@} - else - xemacs -unmapped -f gnuserv-start & - until gnuclient -batch -eval t >/dev/null 2>&1 - do - sleep 1 - done - exec gnuclient $@{1+"$@@"@} - fi -(a)end example - -Note that there is a known problem when running XEmacs and 'gnuclient --nw' on the same TTY. -(a)end quotation - -(a)unnumberedsec 4.6: TeX - -(a)node Q4.6.1, Q4.6.2, Q4.5.5, External Subsystems -(a)unnumberedsubsec Q4.6.1: Is there something better than LaTeX mode? - -(a)email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} w= rites: - -(a)quotation -The standard TeX modes leave much to be desired, and are somewhat -leniently maintained. Serious TeX users use AUCTeX (@pxref{Q4.6.2, -What is AUCTeX? Where do you get it?}). -(a)end quotation - -(a)node Q4.6.2, Q4.6.3, Q4.6.1, External Subsystems -(a)unnumberedsubsec Q4.6.2: What is AUCTeX? Where do you get it? - -AUCTeX is a complex and sophisticated editing package dedicated to TeX -and related text formatting languages, including LaTeX and Texinfo. -It provides support for running TeX on a file or part of a file, -include files, and of course shortcuts for entering common TeX macros, -LaTeX environments, etc, and for fontlock. - -AUCTeX is a standard package provided by XEmacs. You can get it as -usual through the @kbd{M-x list-packages} interface. It is also -included in the (non-Mule) SUMO package. The AUCTeX XEmacs package is -maintained by Uwe Brauer . - -AUCTeX is extremely complicated, and its developers primarily = -use GNU Emacs. Not all features of the bleeding edge version = -of AUCTeX are immediately ported to XEmacs; if you need = -these, you may be better off getting the most recent versions = -from the GNU AUCTeX project on @uref{http://savannah.gnu.org}. - = -(a)node Q4.6.3, Q4.6.4, Q4.6.2, External Subsystems -(a)unnumberedsubsec Q4.6.3: Problems installing AUCTeX. - -(a)email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: - -(a)quotation -AUCTeX works fine on both stock Emacs and XEmacs has been doing so for -a very very long time. This is mostly due to the work of -(a)email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular= his @file{easymenu} -package. Which leads to what is probably the problem... -(a)end quotation - -Most problems with AUCTeX are one of two things: - -(a)itemize @bullet -(a)item -The TeX-lisp-directory in @file{tex-site.el} and the makefile don't -match. +here. = -Fix: make sure you configure AUCTeX properly @strong{before} installing. +(a)unnumberedsec 5.3: Sound = -(a)item -You have an old version of easymenu.el in your path. +(a)node Q5.3.1, Q5.3.2, Q5.2.4, External Subsystems +(a)unnumberedsubsec Q5.3.1: How do I turn off the sound? = -Fix: use @code{locate-library} and remove old versions to make sure it -(a)strong{only} finds the one that came with XEmacs. -(a)end itemize +Add the following line to your @file{init.el}: = -(a)node Q4.6.4, Q4.7.1, Q4.6.3, External Subsystems -(a)unnumberedsubsec Q4.6.4: How do I turn off current chapter from AUCTe= X modeline? +(a)lisp +(setq bell-volume 0) +(setq sound-alist nil) +(a)end lisp = -With AUCTeX, fast typing is hard because the current chapter, section -etc. are given in the modeline. How can I turn this off? +That will make your XEmacs totally silent---even the default ding sound +(TTY beep on TTY-s) will be gone. = -It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}. +You can also change these with Customize. Select from the +(a)code{Options} menu @code{Advanced +(Customize)->Emacs->Environment->Sound->Sound...} or type @kbd{M-x +customize @key{RET} sound @key{RET}}. = -(a)c Add this code to your @file{init.el} to turn it off: -(a)c -(a)c @lisp -(a)c (setq fume-display-in-modeline-p nil) -(a)c @end lisp -(a)c -(a)c Or just add a hook to @code{TeX-mode-hook} to turn it off only for = TeX -(a)c mode: -(a)c -(a)c @lisp -(a)c (add-hook 'TeX-mode-hook -(a)c '(lambda () (setq fume-display-in-modeline-p nil))) -(a)c @end lisp -(a)c -(a)email{dhughes@@origin-at.co.uk, David Hughes} writes: = -(a)quotation -Try this; you'll still get the function name displayed in the modeline, -but it won't attempt to keep track when you modify the file. To refresh -when it gets out of synch, you simply need click on the @samp{Rescan -Buffer} option in the function-menu. +(a)node Q5.3.2, Q5.3.3, Q5.3.1, External Subsystems +(a)unnumberedsubsec Q5.3.2: How do I get funky sounds instead of a borin= g beep? + +Make sure your XEmacs was compiled with sound support, and then put this +in your @file{init.el}: = @lisp -(setq-default fume-auto-rescan-buffer-p nil) +(load-default-sounds) @end lisp -(a)end quotation = -(a)unnumberedsec 4.7: Other Unbundled Packages +(a)node Q5.3.3, Q5.3.4, Q5.3.2, External Subsystems +(a)unnumberedsubsec Q5.3.3: What are NAS and ESD (EsounD)? = -(a)node Q4.7.1, Q4.7.2, Q4.6.4, External Subsystems -(a)unnumberedsubsec Q4.7.1: Is there a reason for an Emacs package not t= o be included in XEmacs? +(a)dfn{Network Audio System} (NAS) is a client-server sound library for = X. = -The reason for an Emacs package not to be included in XEmacs is -usually one or more of the following: +(a)uref{http://radscan.com/nas.html}. = -(a)enumerate -(a)item -The package has not been ported to XEmacs. This will typically happen -when it uses GNU-Emacs-specific features, which make it fail under -XEmacs. +To build XEmacs with it, use the @file{configure} flag +(a)samp{--with-sound=3Dnas} (@samp{--enable-sound=3Dnas} in 21.5 or late= r). = -Porting a package to XEmacs can range from a trivial amount of change to -a partial or full rewrite. Fortunately, the authors of modern packages -usually choose to support both Emacsen themselves. +(a)dfn{Enlightened Sound Daemon} (ESD or EsounD) is yet another sound sy= stem. = -(a)item -The package has been decided not to be appropriate for XEmacs. It may -have an equivalent or better replacement within XEmacs, in which case -the developers may choose not to burden themselves with supporting an -additional package. +(a)uref{http://www.tux.org/~ricdude/EsounD.html}. = -Each package bundled with XEmacs means more work for the maintainers, -whether they want it or not. If you are ready to take over the -maintenance responsibilities for the package you port, be sure to say -so---we will more likely include it. +To build XEmacs with it, use the @file{configure} flag +(a)samp{--with-sound=3Desd} (@samp{--enable-sound=3Desd} in 21.5 or late= r). = -(a)item -The package simply hasn't been noted by the XEmacs development. If -that's the case, the messages like yours are very useful for attracting -our attention. +You can specify support for both with a flag like +(a)samp{--with-sound=3Dnas,esd} (@samp{--enable-sound=3Dnas,esd} in 21.5= or +later). = -(a)item -The package was noted by the developers, but they simply haven't yet -gotten around to including/porting it. Wait for the next release or, -even better, offer your help. It will be gladly accepted and -appreciated. -(a)end enumerate +(a)node Q5.3.4, Q5.4.1, Q5.3.3, External Subsystems +(a)unnumberedsubsec Q5.3.4: Sunsite sounds don't play. = -(a)node Q4.7.2, Q4.7.3, Q4.7.1, External Subsystems -(a)unnumberedsubsec Q4.7.2: Are there any Emacs Lisp Spreadsheets? +I'm having some trouble with sounds I've downloaded from sunsite. They +play when I run them through @code{showaudio} or cat them directly to +(a)file{/dev/audio}, but XEmacs refuses to play them. = -Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at -(a)iftex -@* -(a)end iftex -(a)uref{ftp://cs.nyu.edu/pub/local/fox/dismal/}. +(a)email{gutschk@@uni-muenster.de, Markus Gutschke} writes: = -(a)node Q4.7.3, Q4.8.1, Q4.7.2, External Subsystems -(a)unnumberedsubsec Q4.7.3: Is there a MatLab mode? +(a)quotation +[Many of] These files have an (erroneous) 24byte header that tells about +the format that they have been recorded in. If you cat them to +(a)file{/dev/audio}, the header will be ignored and the default behavior +for /dev/audio will be used. This happens to be 8kHz uLaw. It is +probably possible to fix the header by piping through @code{sox} and +passing explicit parameters for specifying the sampling format; you then +need to perform a 'null' conversion from SunAudio to SunAudio. +(a)end quotation = -Yes, a matlab mode and other items are available at the -(a)uref{ftp://ftp.mathworks.com/pub/contrib/emacs_add_ons, -MathWorks' emacs_add_ons ftp directory}. +(a)unnumberedsec 5.4: Running an Interior Shell, Invoking Subprocesses = -(a)unnumberedsec 4.8: Environments Built Around XEmacs +(a)node Q5.4.1, Q5.4.2, Q5.3.4, External Subsystems +(a)unnumberedsubsec Q5.4.1: What is an interior shell? = -(a)node Q4.8.1, Q4.8.2, Q4.7.3, External Subsystems -(a)unnumberedsubsec Q4.8.1: What are SPARCworks, EOS, and WorkShop? +#### Write me. = -SPARCworks was a development environment from Sun (circa 1993-1996) -and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and -Pascal), a debugger, and other tools such as TeamWare (for -configuration management), MakeTool, etc. +(a)node Q5.4.2, Q5.4.3, Q5.4.1, External Subsystems +(a)unnumberedsubsec Q5.4.2: How do I start up a second shell buffer? = -EOS is the integration of XEmacs with the SPARCworks debugger. It -allows one to use an XEmacs frame to view code (complete with -fontification, etc.), set breakpoints, print variables, etc., while -using the SPARCworks debugger. +In the @code{*shell*} buffer: = -EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten -Again" and was the name used by Sun for its modified version of Lucid -Emacs (later XEmacs) in the early-mid 90's. This is documented in -more detail in the history section of the XEmacs About page. +(a)lisp +M-x rename-buffer @key{RET} *shell-1* @key{RET} +M-x shell RET +(a)end lisp = -EOS was replaced around 1996 with a newer graphical development -environment called Sun WorkShop. The current status of this is -unknown. +This will then start a second shell. The key is that no buffer named +(a)samp{*shell*} can exist. It might be preferable to use @kbd{M-x +rename-uniquely} to rename the @code{*shell*} buffer instead of @kbd{M-x +rename-buffer}. = -(a)node Q4.8.2, Q4.8.3, Q4.8.1, External Subsystems -(a)unnumberedsubsec Q4.8.2: How do I start the Sun Workshop support in X= Emacs 21? +Alternately, you can set the variable @code{shell-multiple-shells}. +If the value of this variable is non-nil, each time shell mode is invoke= d, +a new shell is made = -Add the switch ---with-workshop to the configure command when building -XEmacs and put the following in one of your startup files -(e.g. site-start.el or .emacs): +(a)node Q5.4.3, Q5.4.4, Q5.4.2, External Subsystems +(a)unnumberedsubsec Q5.4.3: Telnet from shell filters too much = -(a)lisp -(when (featurep 'tooltalk) - (load "tooltalk-macros") - (load "tooltalk-util") - (load "tooltalk-init")) -(when (featurep 'sparcworks) - (load "sunpro-init") - (load "ring") - (load "comint") - (load "annotations") - (sunpro-startup)) -(a)end lisp +I'm using the Emacs @kbd{M-x shell} function, and I would like to invoke +and use a telnet session within it. Everything works fine except that +now all @samp{^M}'s are filtered out by Emacs. Fixes? = -If you are not using the latest Workshop (5.0) you have to apply the -following patch: +Use @kbd{M-x rsh} or @kbd{M-x telnet} to open remote sessions rather +than doing rsh or telnet within the local shell buffer. You can also +use @kbd{M-x ssh} to open secure remote session if you have @code{ssh} +installed. = -(a)format ---- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999 -+++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999 -@@@@ -42,7 +42,7 @@@@ - (defvar running-xemacs nil "t if we're running XEmacs") - (defvar running-emacs nil "t if we're running GNU Emacs 19") +(a)node Q5.4.4, Q5.4.5, Q5.4.3, External Subsystems +(a)unnumberedsubsec Q5.4.4: Strange things are happening in Shell Mode. = --(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-versio= n) -+(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) - (setq running-xemacs t) - (setq running-emacs t)) -(a)end format +Sometimes (i.e. it's not repeatable, and I can't work out why it +happens) when I'm typing into shell mode, I hit return and only a +portion of the command is given to the shell, and a blank prompt is +returned. If I hit return again, the rest of the previous command is +given to the shell. = -(a)node Q4.8.3, Q4.8.4, Q4.8.2, External Subsystems -(a)unnumberedsubsec Q4.8.3: What is/was Energize? +(a)email{martin@@xemacs.org, Martin Buchholz} writes: = -The "Energize Programming System" was a C and C++ development environment -sold by Lucid, Inc. It was the reason why Lucid Emacs, now XEmacs, was -created in the first place. Unfortunately, Lucid went out of business in -1994. The rights to sell it in Japan were purchased by INS -Engineering (which briefly employed Stig Hackvan aka Jonathan -Stigelman to work on Japanese support for XEmacs, in late 1994 and -early 1995) and Tartan bought the rights to sell it in the rest of the -world. However, INS is not selling Energize at this point and may or -may not have ever done so; Tartan certainly never did. +(a)quotation +There is a known problem with interaction between @code{csh} and the +(a)code{filec} option and XEmacs. You should add the following to your +(a)file{.cshrc}: = -(a)node Q4.8.4, , Q4.8.3, External Subsystems -(a)unnumberedsubsec Q4.8.4: What is Infodock? +(a)example +if ( "$TERM" =3D=3D emacs || "$TERM" =3D=3D unknown ) unset filec +(a)end example +(a)end quotation = -(a)uref{http://sourceforge.net/projects/infodock/, InfoDock} is an -integrated productivity toolset, mainly aimed at technical people, -hosted at SourceForge. +(a)node Q5.4.5, Q5.4.6, Q5.4.4, External Subsystems +(a)unnumberedsubsec Q5.4.5: XEmacs complains "No such file or directory,= diff" = -InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of -the power of Emacs, but with an easier to use and more comprehensive -menu-based user interface. The bottom portion of this text describes -how it differs from XEmacs and GNU Emacs from the Free Software -Foundation. +or "ispell" or other commands that seem related to whatever you just +tried to do (M-x ediff or M-$, for example). = -InfoDock is aimed at people who want a free, turn-key productivity -environment. Although InfoDock is customizable, it is not intended for -people who like basic versions of Emacs which need to be customized -extensively for local use; standard Emacs distributions are better for -such uses. InfoDock is for those people who want a complete, -pre-customized environment in one package, which they need not touch -more than once or twice a year to update to new revisions. +There are a large number of common (in the sense that "everyone has +these, they really do") Unix utilities that are not provided with +XEmacs. The GNU Project's implementations are available for Windows in +the the Cygwin distribution (@uref{http://www.cygwin.com/}), which also +provides a complete Unix emulation environment (and thus makes ports of +Unix utilities nearly trivial). Another implementation is that from +MinGW (@uref{http://www.mingw.org/msys.shtml}). If you know of others, +please let us know! = -InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX, -and Intel Linux systems. It is intended for use on a color display, -although most features will work on monochrome monitors. Simply unpack -InfoDock according to the instructions in the ID-INSTALL file and you -are ready to run. +(a)node Q5.4.6, Q5.5.1, Q5.4.5, External Subsystems +(a)unnumberedsubsec Q5.4.6: Cygwin error "fork_copy: linked dll/bss pass= 0 failed" = -The InfoDock Manual is concise, yet sufficient as a user guide for users -who have never used an Emacs-type editor before. For users who are -already familiar with Emacs, it supplements the information in the GNU -Emacs Manual. +If you are getting an error like = -InfoDock menus are much more extensive and more mature than standard -Emacs menus. Each menu offers a @samp{Manual} item which displays -documentation associated with the menu's functions. +(a)example +17797832 [main] bash 3468 fork_copy: linked dll/bss pass 0 failed, +0x675000..0x6756A0, done 0, windows pid 2708, Win 32 error 487 +bash: fork: resource temporarily unavailable +(a)end example = -(a)noindent -Four types of menubars are provided: +when trying to run bash using @kbd{M-x shell}, then you need to rebase +your Cygwin DLL's. This is a known problem with Cygwin. To fix: + @enumerate -(a)item -An extensive menubar providing access to global InfoDock commands. @item -Mode-specific menubars tailored to the current major mode. +Download the @file{rebase} utility from Cygwin setup (it's under +(a)samp{System}). @item -A simple menubar for basic editing to help novices get started with Info= Dock. +Kill @strong{all} of your Cygwin processes, including all of your +shells and all background processes. Use @code{ps -a} to list all the +processes you need to kill. +(a)item +From a DOS prompt, run @file{ash} (@strong{not} @file{bash}, +(a)file{tcsh} or @file{zsh}). Do not try to be clever and @code{exec +/bin/ash} from your last shell; it won't work. @item -The standard XEmacs menubar. +Type @code{/bin/rebaseall -v}. @end enumerate = -Most modes also include mode-specific popup menus. Additionally, region= and -rectangle popup menus are included. +The problem should now be fixed -- at least, until you install another +Cygwin package with DLL's, in which case you may have to repeat the +procedure. + +(a)unnumberedsec 5.5: Multiple Device Support + +(a)node Q5.5.1, Q5.5.2, Q5.4.6, External Subsystems +(a)unnumberedsubsec Q5.5.1: How do I open a frame on another screen of m= y multi-headed display? + +Use the command @kbd{M-x make-frame-on-display}. This command is also +on the File menu in the menubar. + +The command @code{make-frame-on-tty} also exists, which will establish a +connection to any tty-like device. Opening the TTY devices should be +left to @code{gnuclient}, though. + +(a)node Q5.5.2, Q5.5.3, Q5.5.1, External Subsystems +(a)unnumberedsubsec Q5.5.2: Can I really connect to a running XEmacs aft= er calling up over a modem? How? + +Yes. Use @code{gnuclient -nw}. + +Also see @ref{Q5.5.3, How do I disable gnuserv from opening a new frame?= }. + +(a)node Q5.5.3, Q5.5.4, Q5.5.2, External Subsystems +(a)unnumberedsubsec Q5.5.3: How do I disable gnuserv from opening a new = frame? + +If you set the @code{gnuserv-frame} variable to the frame that should be +used to display buffers that are pulled up, a new frame will not be +created. For example, you could put + +(a)lisp +(setq gnuserv-frame (selected-frame)) +(a)end lisp + +early on in your @file{init.el}, to ensure that the first frame created +is the one used for your gnuserv buffers. + +There is an option to set the gnuserv target to the current frame. See +(a)code{Options->Display->"Other Window" Location->Make Current Frame Gn= userv Target} = -(a)samp{Hyperbole}, the everyday information manager, is a core part of -InfoDock. This provides context-sensitive mouse keys, a rolodex-type -contact manager, programmable hypertext buttons, and an autonumbered -outliner with embedded hyperlink anchors. +You can also change this with Customize. Select from the +(a)code{Options} menu @code{Advanced +(Customize)->Emacs->Environment->Gnuserv->Gnuserv Frame...} or type +(a)kbd{M-x customize @key{RET} gnuserv @key{RET}}. = -The @samp{OO-Browser}, a multi-language object-oriented code browser, is= a -standard part of InfoDock. = -InfoDock saves a more extensive set of user options than other Emacs -versions. +(a)node Q5.5.4, Q5.5.5, Q5.5.3, External Subsystems +(a)unnumberedsubsec Q5.5.4: How do I start gnuserv so that each subseque= nt XEmacs is a client? = -InfoDock inserts a useful file header in many file types, showing the -author, summary, and last modification time of each file. A summary -program can then be used to summarize all of the files in a directory, -for easy MANIFEST file creation. +Put the following in your @file{init.el} file to start the server: = -Your working set of buffers is automatically saved and restored (if you -answer yes to a prompt) between InfoDock sessions. +(a)lisp +(gnuserv-start) +(a)end lisp = -Refined color choices for code highlighting are provided for both dark a= nd -light background display frames. +Start your first XEmacs as usual. After that, you can do: = -The @kbd{C-z} key prefix performs frame-based commands which parallel the -(a)kbd{C-x} key prefix for window-based commands. +(a)example +gnuclient randomfilename +(a)end example = -The Smart Menu system is included for producing command menus on dumb -terminals. +from the command line to get your existing XEmacs process to open a new +frame and visit randomfilename in that window. When you're done editing +randomfilename, hit @kbd{C-x #} to kill the buffer and get rid of the +frame. = -Lisp libraries are better categorized according to function. +See also man page of gnuclient. = -Extensions and improvements to many areas of Emacs are included, such as: -paragraph filling, mail reading with Rmail, shell handling, outlining, c= ode -highlighting and browsing, and man page browsing. +(a)node Q5.5.5, , Q5.5.4, External Subsystems +(a)unnumberedsubsec Q5.5.5: Is there a way to start a new XEmacs if ther= e's no gnuserv running, and otherwise use gnuclient? = -InfoDock questions, answers and discussion should go to the mail list -(a)iftex -@* -(a)end iftex -(a)email{infodock@@infodock.com}. Use -(a)email{infodock-request@@infodock.com} to be added or removed from the -list. Always include your InfoDock version number when sending help -requests. +(a)email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: +(a)quotation +Here is one of the solutions, we have this in a script called +(a)file{etc/editclient.sh}. +(a)example + #!/bin/sh + if gnuclient -batch -eval t >/dev/null 2>&1 + then + exec gnuclient $@{1+"$@@"@} + else + xemacs -unmapped -f gnuserv-start & + until gnuclient -batch -eval t >/dev/null 2>&1 + do + sleep 1 + done + exec gnuclient $@{1+"$@@"@} + fi +(a)end example + +Note that there is a known problem when running XEmacs and 'gnuclient +-nw' on the same TTY. +(a)end quotation = @node Internet, Advanced, External Subsystems, Top -(a)unnumbered 5 Connecting to the Internet +(a)unnumbered 6 Connecting to the Internet = -This is part 5 of the XEmacs Frequently Asked Questions list. This +This is part 6 of the XEmacs Frequently Asked Questions list. This section is devoted connecting to the Internet. = @menu -5.0: General Mail and News -* Q5.0.1:: What are the various packages for reading mail? -* Q5.0.2:: How can I send mail? -* Q5.0.3:: How do I get my outgoing mail archived? -* Q5.0.4:: How can I read and/or compose MIME messages? -* Q5.0.5:: How do I customize the From line? -* Q5.0.6:: How do I get my MUA to filter mail for me? -* Q5.0.7:: Remote mail reading with an MUA. -* Q5.0.8:: An MUA gets an error incorporating new mail. -* Q5.0.9:: Why isn't @file{movemail} working? -* Q5.0.10:: How do I make my MUA display graphical smilies? -* Q5.0.11:: How can I get those oh-so-neat X-Face lines? - -5.1: Reading Mail with VM -* Q5.1.1:: How do I set up VM to retrieve mail from a remote site usi= ng POP? -* Q5.1.2:: How can I get VM to automatically check for new mail? -* Q5.1.3:: I have various addresses at which I receive mail. How can= I tell VM to ignore them when doing a "reply-all"? -* Q5.1.4:: Is there a mailing list or FAQ for VM? -* Q5.1.5:: How do I make VM stay in a single frame? -* Q5.1.6:: Customization of VM not covered in the manual, or here. - -5.2: Reading Netnews and Mail with Gnus -* Q5.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quass= ia Gnus, argh! -* Q5.2.2:: How do I make Gnus stay within a single frame? - -5.3: FTP Access -* Q5.3.1:: Can I edit files on other hosts? -* Q5.3.2:: What is EFS? - -5.4: Web Browsing with W3 -* Q5.4.1:: What is W3? -* Q5.4.2:: How do I run W3 from behind a firewall? -* Q5.4.3:: Is it true that W3 supports style sheets and tables? +6.0: General Mail and News +* Q6.0.1:: What are the various packages for reading mail? +* Q6.0.2:: How can I send mail? +* Q6.0.3:: How do I get my outgoing mail archived? +* Q6.0.4:: How can I read and/or compose MIME messages? +* Q6.0.5:: How do I customize the From line? +* Q6.0.6:: How do I get my MUA to filter mail for me? +* Q6.0.7:: Remote mail reading with an MUA. +* Q6.0.8:: An MUA gets an error incorporating new mail. +* Q6.0.9:: Why isn't @file{movemail} working? +* Q6.0.10:: How do I make my MUA display graphical smilies? +* Q6.0.11:: How can I get those oh-so-neat X-Face lines? + +6.1: Reading Mail with VM +* Q6.1.1:: How do I set up VM to retrieve mail from a remote site usi= ng POP? +* Q6.1.2:: How can I get VM to automatically check for new mail? +* Q6.1.3:: I have various addresses at which I receive mail. How can= I tell VM to ignore them when doing a "reply-all"? +* Q6.1.4:: Is there a mailing list or FAQ for VM? +* Q6.1.5:: How do I make VM stay in a single frame? +* Q6.1.6:: Customization of VM not covered in the manual, or here. + +6.2: Reading Netnews and Mail with Gnus +* Q6.2.1:: GNUS, (ding) Gnus, Gnus 5, September Gnus, Red Gnus, Quass= ia Gnus, argh! +* Q6.2.2:: How do I make Gnus stay within a single frame? + +6.3: FTP Access +* Q6.3.1:: Can I edit files on other hosts? +* Q6.3.2:: What is EFS? + +6.4: Web Browsing with W3 +* Q6.4.1:: What is W3? +* Q6.4.2:: How do I run W3 from behind a firewall? +* Q6.4.3:: Is it true that W3 supports style sheets and tables? @end menu = -(a)unnumberedsec 5.0: General Mail and News +(a)unnumberedsec 6.0: General Mail and News = -(a)node Q5.0.1, Q5.0.2, Internet, Internet -(a)unnumberedsubsec Q5.0.1: What are the various packages for reading ma= il? +(a)node Q6.0.1, Q6.0.2, Internet, Internet +(a)unnumberedsubsec Q6.0.1: What are the various packages for reading ma= il? = #### Write me. = -(a)node Q5.0.2, Q5.0.3, Q5.0.1, Internet -(a)unnumberedsubsec Q5.0.2: How can I send mail? +(a)node Q6.0.2, Q6.0.3, Q6.0.1, Internet +(a)unnumberedsubsec Q6.0.2: How can I send mail? = Under Unix and Mac OS X, the @samp{sendmail} package is normally used for this. @@ -6047,23 +6802,23 @@ require logging in to send mail, don't u The other settings may be useful in specific cases, but you should know = what you're doing before enabling them. = -(a)node Q5.0.3, Q5.0.4, Q5.0.2, Internet -(a)unnumberedsubsec Q5.0.3: How do I get my outgoing mail archived? +(a)node Q6.0.3, Q6.0.4, Q6.0.2, Internet +(a)unnumberedsubsec Q6.0.3: How do I get my outgoing mail archived? = @lisp (setq mail-archive-file-name "~/outbox") @end lisp = -(a)node Q5.0.4, Q5.0.5, Q5.0.3, Internet -(a)unnumberedsubsec Q5.0.4: How can I read and/or compose MIME messages? +(a)node Q6.0.4, Q6.0.5, Q6.0.3, Internet +(a)unnumberedsubsec Q6.0.4: How can I read and/or compose MIME messages? = VM, MH-E and GNUS support MIME natively. Other MUAs may or may not have MIME support; refer to their documentation and other resources, such as web pages and mailing lists. Packages like SEMI/WEMI may be useful in connection with MUAs like mew and Wanderlust. = -(a)node Q5.0.5, Q5.0.6, Q5.0.4, Internet -(a)unnumberedsubsec Q5.0.5: How do I customize the From line? +(a)node Q6.0.5, Q6.0.6, Q6.0.4, Internet +(a)unnumberedsubsec Q6.0.5: How do I customize the From line? = How do I change the @samp{From:} line? I have set gnus-user-from-line to @@ -6086,25 +6841,22 @@ Set @code{user-mail-address} to @samp{ga @code{mail-host-address} to @samp{sybase.com}. @end quotation = -(a)node Q5.0.6, Q5.0.7, Q5.0.5, Internet -(a)unnumberedsubsec Q5.0.6: How do I get my MUA to filter mail for me? +(a)node Q6.0.6, Q6.0.7, Q6.0.5, Internet +(a)unnumberedsubsec Q6.0.6: How do I get my MUA to filter mail for me? = One possibility is to use procmail to split your mail before it gets to the MUA. I prefer this personally, since there are many strange and wonderful things one can do with procmail. Procmail may be found at -(a)uref{ftp://ftp.informatik.rwth-aachen.de/pub/packages/procmail/}. +(a)uref{http://www.procmail.org/}. = Also see the Mail Filtering FAQ at: @iftex @* @end iftex -(a)uref{ftp://rtfm.mit.edu/pub/usenet/news.answers/mail/filtering-faq}. -(a)c Link above, -(a)c -(a)c was dead. +(a)uref{http://www.faqs.org/faqs/mail/filtering-faq/}. = -(a)node Q5.0.7, Q5.0.8, Q5.0.6, Internet -(a)unnumberedsubsec Q5.0.7: Remote mail reading with an MUA. +(a)node Q6.0.7, Q6.0.8, Q6.0.6, Internet +(a)unnumberedsubsec Q6.0.7: Remote mail reading with an MUA. = My mailbox lives at the office on a big honkin server. My regular INBOX lives on my honkin desktop machine. I now can PPP to the office from @@ -6141,8 +6893,8 @@ just use ange-ftp or NFS to get to your = the time back at IU. @end quotation = -(a)node Q5.0.8, Q5.0.9, Q5.0.7, Internet -(a)unnumberedsubsec Q5.0.8: An MUA gets an error incorporating new mail. +(a)node Q6.0.8, Q6.0.9, Q6.0.7, Internet +(a)unnumberedsubsec Q6.0.8: An MUA gets an error incorporating new mail. = rmail and VM, and probably other MUA's as well, get new mail from your mailbox (called @file{/var/mail/$USER} or @file{/var/spool/mail/$US= ER} @@ -6151,7 +6903,8 @@ This program interlocks with @code{/bin/ defined by @code{/bin/mail}. = There are various different protocols in general use, which you need to -specify using the @samp{--mail-locking} option to @file{configure}: +specify using the @samp{--mail-locking} option +(@samp{--with-mail-locking} in 21.5 or later) to @file{configure}: = @table @samp @item lockf @@ -6202,18 +6955,18 @@ The installed copy of @file{movemail} is the group and mode of the installed copy; changing the group and mode of the build directory copy is ineffective. = -(a)node Q5.0.9, Q5.0.10, Q5.0.8, Internet -(a)unnumberedsubsec Q5.0.9: Why isn't @file{movemail} working? +(a)node Q6.0.9, Q6.0.10, Q6.0.8, Internet +(a)unnumberedsubsec Q6.0.9: Why isn't @file{movemail} working? = -(a)xref{Q5.0.8}. +(a)xref{Q6.0.8}. = Note also that older versions of Mozilla came with a @file{movemail} program that is @strong{not} compatible with XEmacs. Do not use it. Always use the @file{movemail} installed with your XEmacs. Failure to do so can result in lost mail. = -(a)node Q5.0.10, Q5.0.11, Q5.0.9, Internet -(a)unnumberedsubsec Q5.0.10: How do I make my MUA display graphical smil= ies? +(a)node Q6.0.10, Q6.0.11, Q6.0.9, Internet +(a)unnumberedsubsec Q6.0.10: How do I make my MUA display graphical smil= ies? For mh-e use the following: = @lisp @@ -6238,12 +6991,12 @@ For tm use the following: (add-hook 'mime-viewer/plain-text-preview-hook 'smiley-buffer) @end lisp = -(a)node Q5.0.11, Q5.1.1, Q5.0.10, Internet -(a)unnumberedsubsec Q5.0.11: How can I get those oh-so-neat X-Face lines? +(a)node Q6.0.11, Q6.1.1, Q6.0.10, Internet +(a)unnumberedsubsec Q6.0.11: How can I get those oh-so-neat X-Face lines? = Firstly there is an ftp site which describes X-faces and has the associated tools mentioned below, at -(a)uref{ftp://ftp.cs.indiana.edu:/pub/faces/}. +(a)uref{http://ftp.cs.indiana.edu/pub/faces/}. = Then the steps are = @@ -6309,10 +7062,8 @@ Some people have also found that if one = method, one should NOT quote the face string using the sed script . = It might also be helpful to use @email{stig@@hackvan.com, Stig's} script -(included in the compface distribution at XEmacs.org) to do the +xbm2face (included in the compface distribution at XEmacs.org) to do the conversion. -(a)comment For convenience xbm2xface is available for anonymous FTP at -(a)comment @uref{ftp://ftp.miranova.com/pub/xemacs/xbm2xface.pl}. = Contributors for this item: = @@ -6325,10 +7076,10 @@ Peter Arius, Paul Harrison, and Vegard Vesterheim = -(a)unnumberedsec 5.1: Reading Mail with VM +(a)unnumberedsec 6.1: Reading Mail with VM = -(a)node Q5.1.1, Q5.1.2, Q5.0.11, Internet -(a)unnumberedsubsec Q5.1.1: How do I set up VM to retrieve mail from a r= emote site using POP? +(a)node Q6.1.1, Q6.1.2, Q6.0.11, Internet +(a)unnumberedsubsec Q6.1.1: How do I set up VM to retrieve mail from a r= emote site using POP? = Use @code{vm-spool-files}, like this for example: = @@ -6339,8 +7090,8 @@ Use @code{vm-spool-files}, like this for = Of course substitute your actual password for MYPASS. = -(a)node Q5.1.2, Q5.1.3, Q5.1.1, Internet -(a)unnumberedsubsec Q5.1.2: How can I get VM to automatically check for = new mail? +(a)node Q6.1.2, Q6.1.3, Q6.1.1, Internet +(a)unnumberedsubsec Q6.1.2: How can I get VM to automatically check for = new mail? = @email{turner@@lanl.gov, John Turner} writes: = @@ -6352,8 +7103,8 @@ Use the following: @end lisp @end quotation = -(a)node Q5.1.3, Q5.1.4, Q5.1.2, Internet -(a)unnumberedsubsec Q5.1.3: I have various addresses at which I receive = mail. How can I tell VM to ignore them when doing a "reply-all"? +(a)node Q6.1.3, Q6.1.4, Q6.1.2, Internet +(a)unnumberedsubsec Q6.1.3: I have various addresses at which I receive = mail. How can I tell VM to ignore them when doing a "reply-all"? = Set @code{vm-reply-ignored-addresses} to a list, like = @@ -6365,15 +7116,15 @@ Set @code{vm-reply-ignored-addresses} to = Note that each string is a regular expression. = -(a)node Q5.1.4, Q5.1.5, Q5.1.3, Internet -(a)unnumberedsubsec Q5.1.4: Is there a mailing list or FAQ for VM? +(a)node Q6.1.4, Q6.1.5, Q6.1.3, Internet +(a)unnumberedsubsec Q6.1.4: Is there a mailing list or FAQ for VM? = A FAQ for VM exists at @uref{http://www.wonderworks.com/vm/FAQ.html}. = VM has its own newsgroups gnu.emacs.vm.info and gnu.emacs.vm.bug. = -(a)node Q5.1.5, Q5.1.6, Q5.1.4, Internet -(a)unnumberedsubsec Q5.1.5: How do I make VM stay in a single frame? +(a)node Q6.1.5, Q6.1.6, Q6.1.4, Internet +(a)unnumberedsubsec Q6.1.5: How do I make VM stay in a single frame? = John.(a)email{Cooper@@Eng.Sun.COM, John S Cooper} writes: = @@ -6387,8 +7138,8 @@ John.(a)email{Cooper@@Eng.Sun.COM, John S = @end lisp @end quotation = -(a)node Q5.1.6, Q5.2.1, Q5.1.5, Internet -(a)unnumberedsubsec Q5.1.6: Customization of VM not covered in the manua= l, or here. +(a)node Q6.1.6, Q6.2.1, Q6.1.5, Internet +(a)unnumberedsubsec Q6.1.6: Customization of VM not covered in the manua= l, or here. = @email{boffi@@hp735.stru.polimi.it, giacomo boffi} writes: = @@ -6410,786 +7161,1075 @@ some keywords, maybe the first you conju appropriate variables, copy and experiment. @end quotation = -(a)unnumberedsec 5.2: Reading Netnews and Mail with Gnus +(a)unnumberedsec 6.2: Reading Netnews and Mail with Gnus = -(a)node Q5.2.1, Q5.2.2, Q5.1.6, Internet -(a)unnumberedsubsec Q5.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, R= ed Gnus, Quassia Gnus, argh! +(a)node Q6.2.1, Q6.2.2, Q6.1.6, Internet +(a)unnumberedsubsec Q6.2.1: GNUS, (ding) Gnus, Gnus 5, September Gnus, R= ed Gnus, Quassia Gnus, argh! = The Gnus numbering issues are not meant for mere mortals to know them. If you feel you @emph{must} enter the muddy waters of Gnus, visit the excellent FAQ, maintained by Justin Sheehy, at: = @example -(a)uref{http://www.ccs.neu.edu/software/contrib/gnus/} +(a)uref{http://my.gnus.org/FAQ/} @end example = See also Gnus home page @example @uref{http://www.gnus.org/} @end example + +(a)node Q6.2.2, Q6.3.1, Q6.2.1, Internet +(a)unnumberedsubsec Q6.2.2: How do I make Gnus stay within a single fram= e? + +The toolbar code to start Gnus opens the new frame---and it's a feature +rather than a bug. If you don't like it, but would still like to click +on the seemly icon, use the following code: + +(a)lisp +(defun toolbar-news () + (gnus)) +(a)end lisp + +It will redefine the callback function of the icon to just call +(a)code{gnus}, without all the fancy frame stuff. + +(a)unnumberedsec 6.3: FTP Access + +(a)node Q6.3.1, Q6.3.2, Q6.2.2, Internet +(a)unnumberedsubsec Q6.3.1: Can I edit files on other hosts? + +Yes. Of course XEmacs can use any network file system (such as NFS or +Windows file sharing) you have available, and includes some +optimizations and safety features appropriate to those environments. + +It is also possible to transparently edit files via FTP, ssh, or rsh. T= hat +is, XEmacs makes a local copy using the transport in the background, and +automatically refreshes the remote original from that copy when you save +it. XEmacs also is capable of doing file system manipulations like +creating and removing directories and files. The FTP interface is +provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The +ssh/rsh interface is provided by the optional @samp{tramp} package +(a)ref{Top, TRAMP, , tramp}. + +(a)node Q6.3.2, Q6.4.1, Q6.3.1, Internet +(a)unnumberedsubsec Q6.3.2: What is EFS? + +#### Write me. + +(a)unnumberedsec 6.4: Web Browsing with W3 + +(a)node Q6.4.1, Q6.4.2, Q6.3.2, Internet +(a)unnumberedsubsec Q6.4.1: What is W3? + +W3 is an advanced graphical browser written in Emacs lisp that runs on +XEmacs. It has full support for cascaded style sheets, and more... + +It has a home web page at +(a)uref{http://www.cs.indiana.edu/elisp/w3/docs.html}. + +(a)node Q6.4.2, Q6.4.3, Q6.4.1, Internet +(a)unnumberedsubsec Q6.4.2: How do I run W3 from behind a firewall? + +There is a long, well-written, detailed section in the W3 manual that +describes how to do this. Look in the section entitled "Firewalls". + +(a)node Q6.4.3, , Q6.4.2, Internet +(a)unnumberedsubsec Q6.4.3: Is it true that W3 supports style sheets and= tables? + +Yes, and much more. W3, as distributed with the latest XEmacs is a +full-featured web browser. + +(a)node Advanced, Other Packages, Internet, Top +(a)unnumbered 7 Advanced Customization Using XEmacs Lisp + +This is part 7 of the XEmacs Frequently Asked Questions list. This +section is devoted to advanced customization using XEmacs Lisp. + +(a)menu +7.0: Emacs Lisp and @file{init.el} +* Q7.0.1:: What version of Emacs am I running? +* Q7.0.2:: How can I evaluate Emacs-Lisp expressions? +* Q7.0.3:: @code{(setq tab-width 6)} behaves oddly. +* Q7.0.4:: How can I add directories to the @code{load-path}? +* Q7.0.5:: How to check if a lisp function is defined? +* Q7.0.6:: Can I force the output of @code{(face-list)} to a buffer? + +7.1: Emacs Lisp Programming Techniques +* Q7.1.1:: What is the difference in key sequences between XEmacs and= GNU Emacs? +* Q7.1.2:: Can I generate "fake" keyboard events? +* Q7.1.3:: Could you explain @code{read-kbd-macro} in more detail? +* Q7.1.4:: What is the performance hit of @code{let}? +* Q7.1.5:: What is the recommended use of @code{setq}? +* Q7.1.6:: What is the typical misuse of @code{setq}? +* Q7.1.7:: I like the @code{do} form of cl, does it slow things down? +* Q7.1.8:: I like recursion, does it slow things down? +* Q7.1.9:: How do I put a glyph as annotation in a buffer? +* Q7.1.10:: @code{map-extents} won't traverse all of my extents! +* Q7.1.11:: My elisp program is horribly slow. Is there an easy way t= o find out where it spends time? + +7.2: Mathematics +* Q7.2.1:: What are bignums, ratios, and bigfloats in Lisp? +* Q7.2.2:: XEmacs segfaults when I use very big numbers! +* Q7.2.3:: Bignums are really slow! +* Q7.2.4:: Equal bignums don't compare as equal! What gives? +(a)end menu + +(a)unnumberedsec 7.0: Emacs Lisp and @file{init.el} = -(a)node Q5.2.2, Q5.3.1, Q5.2.1, Internet -(a)unnumberedsubsec Q5.2.2: How do I make Gnus stay within a single fram= e? +(a)node Q7.0.1, Q7.0.2, Advanced, Advanced +(a)unnumberedsubsec Q7.0.1: What version of Emacs am I running? + +How can @file{init.el} determine which of the family of +Emacsen I am using? + +To determine if you are currently running GNU Emacs 18, GNU Emacs 19, +XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the +example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in +XEmacs versions prior to 21.4). There are other nifty things in there +as well! + +For all new code, all you really need to do is: + +(a)lisp +(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) +(a)end lisp + +(a)node Q7.0.2, Q7.0.3, Q7.0.1, Advanced +(a)unnumberedsubsec Q7.0.2: How can I evaluate Emacs-Lisp expressions? + +I know I can evaluate Elisp expressions from @code{*scratch*} buffer +with @kbd{C-j} after the expression. How do I do it from another +buffer? + +Press @kbd{M-:} (the default binding of @code{eval-expression}), and +enter the expression to the minibuffer. + +(a)node Q7.0.3, Q7.0.4, Q7.0.2, Advanced +(a)unnumberedsubsec Q7.0.3: @code{(setq tab-width 6)} behaves oddly. + +If you put @code{(setq tab-width 6)} in your +(a)file{init.el} file it does not work! Is there a reason +for this? If you do it at the EVAL prompt it works fine!! How strange. + +Use @code{setq-default} instead, since @code{tab-width} is +all-buffer-local. + +(a)node Q7.0.4, Q7.0.5, Q7.0.3, Advanced +(a)unnumberedsubsec Q7.0.4: How can I add directories to the @code{load-= path}? + +Here are two ways to do that, one that puts your directories at the +front of the load-path, the other at the end: + +(a)lisp +;;; Add things at the beginning of the load-path, do not add +;;; duplicate directories: +(pushnew "bar" load-path :test 'equal) + +(pushnew "foo" load-path :test 'equal) + +;;; Add things at the end, unconditionally +(setq load-path (nconc load-path '("foo" "bar"))) +(a)end lisp + +(a)email{keithh@@nortel.ca, keith (k.p.) hanlan} writes: + +(a)quotation +To add directories using Unix shell metacharacters use +(a)file{expand-file-name} like this: + +(a)lisp +(push (expand-file-name "~keithh/.emacsdir") load-path) +(a)end lisp +(a)end quotation + +(a)node Q7.0.5, Q7.0.6, Q7.0.4, Advanced +(a)unnumberedsubsec Q7.0.5: How to check if a lisp function is defined? + +Use the following elisp: + +(a)lisp +(fboundp 'foo) +(a)end lisp + +It's almost always a mistake to test @code{emacs-version} or any similar +variables. + +Instead, use feature-tests, such as @code{featurep}, @code{boundp}, +(a)code{fboundp}, or even simple behavioral tests, eg.: + +(a)lisp +(defvar foo-old-losing-code-p + (condition-case nil (progn (losing-code t) nil) + (wrong-number-of-arguments t))) +(a)end lisp + +There is an incredible amount of broken code out there which could work +much better more often in more places if it did the above instead of +trying to divine its environment from the value of one variable. + +(a)node Q7.0.6, Q7.1.1, Q7.0.5, Advanced +(a)unnumberedsubsec Q7.0.6: Can I force the output of @code{(face-list)}= to a buffer? + +It would be good having it in a buffer, as the output of +(a)code{(face-list)} is too wide to fit to a minibuffer. + +Evaluate the expression in the @samp{*scratch*} buffer with point after +the rightmost paren and typing @kbd{C-j}. + +If the minibuffer smallness is the only problem you encounter, you can +simply press @kbd{C-h l} to get the former minibuffer contents in a +buffer. + +(a)unnumberedsec 7.1: Emacs Lisp Programming Techniques + +(a)node Q7.1.1, Q7.1.2, Q7.0.6, Advanced +(a)unnumberedsubsec Q7.1.1: What is the difference in key sequences betw= een XEmacs and GNU Emacs? + +(a)email{clerik@@naggum.no, Erik Naggum} writes; + +(a)quotation +Emacs has a legacy of keyboards that produced characters with modifier +bits, and therefore map a variety of input systems into this scheme even +today. XEmacs is instead optimized for X events. This causes an +incompatibility in the way key sequences are specified, but both Emacs +and XEmacs will accept a key sequence as a vector of lists of modifiers +that ends with a key, e.g., to bind @kbd{M-C-a}, you would say +(a)code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated +form for a single key, just (meta control a). Emacs has an abbreviated +form for the Control and the Meta modifiers to string-characters (the +ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware +that the abbreviated form works only for one-character key sequences, +while Emacs users need to be aware that the string-character is rather +limited. Specifically, the string-character can accommodate only 256 +different values, 128 of which have the Meta modifier and 128 of which +have not. In each of these blocks, only 32 characters have the Control +modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta +control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A} +do not. Programmers are advised to use the full common form, both +because it is more readable and less error-prone, and because it is +supported by both Emacsen. +(a)end quotation + +Another (even safer) way to be sure of the key-sequences is to use the +(a)code{read-kbd-macro} function, which takes a string like @samp{C-c +}, and converts it to the internal key representation of the Emacs +you use. The function is available both on XEmacs and GNU Emacs. + +(a)node Q7.1.2, Q7.1.3, Q7.1.1, Advanced +(a)unnumberedsubsec Q7.1.2: Can I generate "fake" keyboard events? + +I wonder if there is an interactive function that can generate +(a)dfn{fake} keyboard events. This way, I could simply map them inside +XEmacs. = -The toolbar code to start Gnus opens the new frame---and it's a feature -rather than a bug. If you don't like it, but would still like to click -on the seemly icon, use the following code: +This seems to work: = @lisp -(defun toolbar-news () - (gnus)) +(defun cg--generate-char-event (ch) + "Generate an event, as if ch has been typed" + (dispatch-event (character-to-event ch))) + +;; Backspace and Delete stuff +(global-set-key [backspace] + (lambda () (interactive) (cg--generate-char-event 127))) +(global-set-key [unknown_keysym_0x4] + (lambda () (interactive) (cg--generate-char-event 4))) @end lisp = -It will redefine the callback function of the icon to just call -(a)code{gnus}, without all the fancy frame stuff. +(a)node Q7.1.3, Q7.1.4, Q7.1.2, Advanced +(a)unnumberedsubsec Q7.1.3: Could you explain @code{read-kbd-macro} in m= ore detail? = -(a)unnumberedsec 5.3: FTP Access +The @code{read-kbd-macro} function returns the internal Emacs +representation of a human-readable string (which is its argument). +Thus: = -(a)node Q5.3.1, Q5.3.2, Q5.2.2, Internet -(a)unnumberedsubsec Q5.3.1: Can I edit files on other hosts? +(a)lisp +(read-kbd-macro "C-c C-a") +(a)result{} [(control ?c) (control ?a)] = -Yes. Of course XEmacs can use any network file system (such as NFS or -Windows file sharing) you have available, and includes some -optimizations and safety features appropriate to those environments. +(read-kbd-macro "C-c C-. ") +(a)result{} [(control ?c) (control ?.) up] +(a)end lisp = -It is also possible to transparently edit files via FTP, ssh, or rsh. T= hat -is, XEmacs makes a local copy using the transport in the background, and -automatically refreshes the remote original from that copy when you save -it. XEmacs also is capable of doing file system manipulations like -creating and removing directories and files. The FTP interface is -provided by the standard @samp{efs} package @ref{Top, EFS, , efs}. The -ssh/rsh interface is provided by the optional @samp{tramp} package -(a)ref{Top, TRAMP, , tramp}. +In GNU Emacs the same forms will be evaluated to what GNU Emacs +understands internally---the sequences @code{"\C-x\C-c"} and @code{[3 +67108910 up]}, respectively. = -(a)node Q5.3.2, Q5.4.1, Q5.3.1, Internet -(a)unnumberedsubsec Q5.3.2: What is EFS? +The exact @dfn{human-readable} syntax is defined in the docstring of +(a)code{edmacro-mode}. I'll repeat it here, for completeness. = -#### Write me. +(a)quotation +Format of keyboard macros during editing: = -(a)unnumberedsec 5.4: Web Browsing with W3 +Text is divided into @dfn{words} separated by whitespace. Except for +the words described below, the characters of each word go directly as +characters of the macro. The whitespace that separates words is +ignored. Whitespace in the macro must be written explicitly, as in +(a)kbd{foo @key{SPC} bar @key{RET}}. = -(a)node Q5.4.1, Q5.4.2, Q5.3.2, Internet -(a)unnumberedsubsec Q5.4.1: What is W3? +(a)itemize @bullet +(a)item +The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD}, +(a)kbd{ESC}, and @kbd{NUL} represent special control characters. The +words must be written in uppercase. = -W3 is an advanced graphical browser written in Emacs lisp that runs on -XEmacs. It has full support for cascaded style sheets, and more... +(a)item +A word in angle brackets, e.g., @code{}, @code{}, or +(a)code{}, represents a function key. (Note that in the standard +configuration, the function key @code{} and the control key +(a)key{RET} are synonymous.) You can use angle brackets on the words +(a)key{RET}, @key{SPC}, etc., but they are not required there. = -It has a home web page at -(a)uref{http://www.cs.indiana.edu/elisp/w3/docs.html}. +(a)item +Keys can be written by their @sc{ascii} code, using a backslash followed +by up to six octal digits. This is the only way to represent keys with +codes above \377. = -(a)node Q5.4.2, Q5.4.3, Q5.4.1, Internet -(a)unnumberedsubsec Q5.4.2: How do I run W3 from behind a firewall? +(a)item +One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-} +(shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may +precede a character or key notation. For function keys, the prefixes +may go inside or outside of the brackets: @code{C-} @equiv{} +(a)code{}. The prefixes may be written in any order: @kbd{M-C-x} +(a)equiv{} @kbd{C-M-x}. = -There is a long, well-written, detailed section in the W3 manual that -describes how to do this. Look in the section entitled "Firewalls". +Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except +that the Meta prefix is allowed on a sequence of digits and optional +minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}. = -(a)node Q5.4.3, , Q5.4.2, Internet -(a)unnumberedsubsec Q5.4.3: Is it true that W3 supports style sheets and= tables? +(a)item +The @code{^} notation for control characters also works: @kbd{^M} +(a)equiv{} @kbd{C-m}. = -Yes, and much more. W3, as distributed with the latest XEmacs is a -full-featured web browser. +(a)item +Double angle brackets enclose command names: @code{<>} is +shorthand for @kbd{M-x next-line @key{RET}}. = -(a)node Advanced, Current Events, Internet, Top -(a)unnumbered 6 Advanced Customization Using XEmacs Lisp +(a)item +Finally, @code{REM} or @code{;;} causes the rest of the line to be +ignored as a comment. +(a)end itemize = -This is part 6 of the XEmacs Frequently Asked Questions list. This -section is devoted to advanced customization using XEmacs Lisp. +Any word may be prefixed by a multiplier in the form of a decimal number +and @code{*}: @code{3*} @equiv{} @code{ }, +and @code{10*foo} @equiv{} +(a)iftex +@* +(a)end iftex +(a)code{foofoofoofoofoofoofoofoofoofoo}. = -(a)menu -6.0: Online Help -* Q6.0.1:: How can I get two instances of info? -* Q6.0.2:: How do I add new Info directories? - -6.1: Emacs Lisp and @file{init.el} -* Q6.1.1:: What version of Emacs am I running? -* Q6.1.2:: How can I evaluate Emacs-Lisp expressions? -* Q6.1.3:: @code{(setq tab-width 6)} behaves oddly. -* Q6.1.4:: How can I add directories to the @code{load-path}? -* Q6.1.5:: How to check if a lisp function is defined? -* Q6.1.6:: Can I force the output of @code{(face-list)} to a buffer? - -6.2: Emacs Lisp Programming Techniques -* Q6.2.1:: What is the difference in key sequences between XEmacs and= GNU Emacs? -* Q6.2.2:: Can I generate "fake" keyboard events? -* Q6.2.3:: Could you explain @code{read-kbd-macro} in more detail? -* Q6.2.4:: What is the performance hit of @code{let}? -* Q6.2.5:: What is the recommended use of @code{setq}? -* Q6.2.6:: What is the typical misuse of @code{setq}? -* Q6.2.7:: I like the @code{do} form of cl, does it slow things down? -* Q6.2.8:: I like recursion, does it slow things down? -* Q6.2.9:: How do I put a glyph as annotation in a buffer? -* Q6.2.10:: @code{map-extents} won't traverse all of my extents! -* Q6.2.11:: My elisp program is horribly slow. Is there - -6.3: Mathematics -* Q6.3.1:: What are bignums, ratios, and bigfloats in Lisp? -* Q6.3.2:: XEmacs segfaults when I use very big numbers! -* Q6.3.3:: Bignums are really slow! -* Q6.3.4:: Equal bignums don't compare as equal! What gives? -(a)end menu +Multiple text keys can normally be strung together to form a word, but +you may need to add whitespace if the word would look like one of the +above notations: @code{; ; ;} is a keyboard macro with three semicolons, +but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but +(a)code{\123} is a single key written in octal, and @code{< right >} is +seven keys but @code{} is a single function key. When in doubt, +use whitespace. +(a)end quotation = -(a)unnumberedsec 6.0: Online Help +(a)node Q7.1.4, Q7.1.5, Q7.1.3, Advanced +(a)unnumberedsubsec Q7.1.4: What is the performance hit of @code{let}? = -(a)node Q6.0.1, Q6.0.2, Advanced, Advanced -(a)unnumberedsubsec Q6.0.1: How can I get two instances of info? +In most cases, not noticeable. Besides, there's no avoiding +(a)code{let}---you have to bind your local variables, after all. Some +pose a question whether to nest @code{let}s, or use one @code{let} per +function. I think because of clarity and maintenance (and possible +future implementation), @code{let}-s should be used (nested) in a way to +provide the clearest code. = -Before 21.4, you can't. The @code{info} package does not provide for -multiple info buffers. In 21.4, this should be fixed. #### how? +(a)node Q7.1.5, Q7.1.6, Q7.1.4, Advanced +(a)unnumberedsubsec Q7.1.5: What is the recommended use of @code{setq}? = -(a)node Q6.0.2, Q6.1.1, Q6.0.1, Advanced -(a)unnumberedsubsec Q6.0.2: How do I add new Info directories? +(a)itemize @bullet +(a)item Global variables = -You use something like: +You will typically @code{defvar} your global variable to a default +value, and use @code{setq} to set it later. + +It is never a good practice to @code{setq} user variables (like +(a)code{case-fold-search}, etc.), as it ignores the user's choice +unconditionally. Note that @code{defvar} doesn't change the value of a +variable if it was bound previously. If you wish to change a +user-variable temporarily, use @code{let}: = @lisp -(setq Info-directory-list (cons - (expand-file-name "~/info") - Info-default-directory-list)) +(let ((case-fold-search nil)) + ... ; code with searches that must b= e case-sensitive + ...) @end lisp - -(a)email{davidm@@prism.kla.com, David Masterson} writes: - -(a)quotation -Emacs Info and XEmacs Info do many things differently. If you're trying= to -support a number of versions of Emacs, here are some notes to remember: - -(a)enumerate -(a)item -Emacs Info scans @code{Info-directory-list} from right-to-left while -XEmacs Info reads it from left-to-right, so append to the @emph{correct} -end of the list. - -(a)item -Use @code{Info-default-directory-list} to initialize -(a)code{Info-directory-list} @emph{if} it is available at startup, but n= ot -all Emacsen define it. = -(a)item -Emacs Info looks for a standard @file{dir} file in each of the -directories scanned from #1 and magically concatenates them together. +You will notice the user-variables by their docstrings beginning with an +asterisk (a convention). = -(a)item -XEmacs Info looks for a @file{localdir} file (which consists of just the -menu entries from a @file{dir} file) in each of the directories scanned -from #1 (except the first), does a simple concatenation of them, and -magically attaches the resulting list to the end of the menu in the -(a)file{dir} file in the first directory. -(a)end enumerate +(a)item Local variables = -Another alternative is to convert the documentation to HTML with -texi2html and read it from a web browser like Lynx or W3. -(a)end quotation +Bind them with @code{let}, which will unbind them (or restore their +previous value, if they were bound) after exiting from the @code{let} +form. Change the value of local variables with @code{setq} or whatever +you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form +can even return one of its local variables. = -(a)unnumberedsec 6.1: Emacs Lisp and @file{init.el} +Typical usage: = -(a)node Q6.1.1, Q6.1.2, Q6.0.2, Advanced -(a)unnumberedsubsec Q6.1.1: What version of Emacs am I running? +(a)lisp +;; iterate through the elements of the list returned by +;; `hairy-function-that-returns-list' +(let ((l (hairy-function-that-returns-list))) + (while l + ... do something with (car l) ... + (setq l (cdr l)))) +(a)end lisp = -How can @file{init.el} determine which of the family of -Emacsen I am using? +Another typical usage includes building a value simply to work with it. = -To determine if you are currently running GNU Emacs 18, GNU Emacs 19, -XEmacs 19, XEmacs 20, or Epoch, and use appropriate code, check out the -example given in @file{etc/sample.init.el} (@file{etc/sample.emacs} in -XEmacs versions prior to 21.4). There are other nifty things in there -as well! +(a)lisp +;; Build the mode keymap out of the key-translation-alist +(let ((inbox (file-truename (expand-file-name box))) + (i 0)) + ... code dealing with inbox ... + inbox) +(a)end lisp = -For all new code, all you really need to do is: +This piece of code uses the local variable @code{inbox}, which becomes +unbound (or regains old value) after exiting the form. The form also +returns the value of @code{inbox}, which can be reused, for instance: = @lisp -(defvar running-xemacs (string-match "XEmacs\\|Lucid" emacs-version)) +(setq foo-processed-inbox + (let .....)) @end lisp - -(a)node Q6.1.2, Q6.1.3, Q6.1.1, Advanced -(a)unnumberedsubsec Q6.1.2: How can I evaluate Emacs-Lisp expressions? +(a)end itemize = -I know I can evaluate Elisp expressions from @code{*scratch*} buffer -with @kbd{C-j} after the expression. How do I do it from another -buffer? +(a)node Q7.1.6, Q7.1.7, Q7.1.5, Advanced +(a)unnumberedsubsec Q7.1.6: What is the typical misuse of @code{setq}? = -Press @kbd{M-:} (the default binding of @code{eval-expression}), and -enter the expression to the minibuffer. +A typical misuse is probably @code{setq}ing a variable that was meant to +be local. Such a variable will remain bound forever, never to be +garbage-collected. For example, the code doing: = -(a)node Q6.1.3, Q6.1.4, Q6.1.2, Advanced -(a)unnumberedsubsec Q6.1.3: @code{(setq tab-width 6)} behaves oddly. +(a)lisp +(defun my-function (whatever) + (setq a nil) + ... build a large list ... + ... and exit ...) +(a)end lisp = -If you put @code{(setq tab-width 6)} in your -(a)file{init.el} file it does not work! Is there a reason -for this? If you do it at the EVAL prompt it works fine!! How strange. +does a bad thing, as @code{a} will keep consuming memory, never to be +unbound. The correct thing is to do it like this: = -Use @code{setq-default} instead, since @code{tab-width} is -all-buffer-local. +(a)lisp +(defun my-function (whatever) + (let (a) ; default initialization is to n= il + ... build a large list ... + ... and exit, unbinding `a' in the process ...) +(a)end lisp = -(a)node Q6.1.4, Q6.1.5, Q6.1.3, Advanced -(a)unnumberedsubsec Q6.1.4: How can I add directories to the @code{load-= path}? +Not only is this prettier syntactically, but it makes it possible for +Emacs to garbage-collect the objects which @code{a} used to reference. = -Here are two ways to do that, one that puts your directories at the -front of the load-path, the other at the end: +Note that even global variables should not be @code{setq}ed without +(a)code{defvar}ing them first, because the byte-compiler issues warnings. +The reason for the warning is the following: = @lisp -;;; Add things at the beginning of the load-path, do not add -;;; duplicate directories: -(pushnew "bar" load-path :test 'equal) +(defun flurgoze nil) ; ok, global internal variable +... = -(pushnew "foo" load-path :test 'equal) +(setq flurghoze t) ; ops! a typo, but semantically= correct. + ; however, the byte-compiler war= ns. = -;;; Add things at the end, unconditionally -(setq load-path (nconc load-path '("foo" "bar"))) +While compiling toplevel forms: +** assignment to free variable flurghoze @end lisp = -(a)email{keithh@@nortel.ca, keith (k.p.) hanlan} writes: +(a)node Q7.1.7, Q7.1.8, Q7.1.6, Advanced +(a)unnumberedsubsec Q7.1.7: I like the @code{do} form of cl, does it slo= w things down? + +It shouldn't. Here is what Dave Gillespie has to say about cl.el +performance: = @quotation -To add directories using Unix shell metacharacters use -(a)file{expand-file-name} like this: +Many of the advanced features of this package, such as @code{defun*}, +(a)code{loop}, and @code{setf}, are implemented as Lisp macros. In +byte-compiled code, these complex notations will be expanded into +equivalent Lisp code which is simple and efficient. For example, the +forms = @lisp -(push (expand-file-name "~keithh/.emacsdir") load-path) +(incf i n) +(push x (car p)) @end lisp -(a)end quotation - -(a)node Q6.1.5, Q6.1.6, Q6.1.4, Advanced -(a)unnumberedsubsec Q6.1.5: How to check if a lisp function is defined? = -Use the following elisp: +are expanded at compile-time to the Lisp forms = @lisp -(fboundp 'foo) +(setq i (+ i n)) +(setcar p (cons x (car p))) @end lisp = -It's almost always a mistake to test @code{emacs-version} or any similar -variables. +which are the most efficient ways of doing these respective operations +in Lisp. Thus, there is no performance penalty for using the more +readable @code{incf} and @code{push} forms in your compiled code. = -Instead, use feature-tests, such as @code{featurep}, @code{boundp}, -(a)code{fboundp}, or even simple behavioral tests, eg.: +(a)emph{Interpreted} code, on the other hand, must expand these macros +every time they are executed. For this reason it is strongly +recommended that code making heavy use of macros be compiled. (The +features labelled @dfn{Special Form} instead of @dfn{Function} in this +manual are macros.) A loop using @code{incf} a hundred times will +execute considerably faster if compiled, and will also garbage-collect +less because the macro expansion will not have to be generated, used, +and thrown away a hundred times. = -(a)lisp -(defvar foo-old-losing-code-p - (condition-case nil (progn (losing-code t) nil) - (wrong-number-of-arguments t))) -(a)end lisp +You can find out how a macro expands by using the @code{cl-prettyexpand} +function. +(a)end quotation = -There is an incredible amount of broken code out there which could work -much better more often in more places if it did the above instead of -trying to divine its environment from the value of one variable. +(a)node Q7.1.8, Q7.1.9, Q7.1.7, Advanced +(a)unnumberedsubsec Q7.1.8: I like recursion, does it slow things down? = -(a)node Q6.1.6, Q6.2.1, Q6.1.5, Advanced -(a)unnumberedsubsec Q6.1.6: Can I force the output of @code{(face-list)}= to a buffer? +Yes. The Emacs byte-compiler cannot do much to optimize recursion. But +think well whether this is a real concern in Emacs. Much of the Emacs +slowness comes from internal mechanisms such as redisplay, or from the +fact that it is an interpreter. = -It would be good having it in a buffer, as the output of -(a)code{(face-list)} is too wide to fit to a minibuffer. +Please try not to make your code much uglier to gain a very small speed +gain. It's not usually worth it. = -Evaluate the expression in the @samp{*scratch*} buffer with point after -the rightmost paren and typing @kbd{C-j}. +(a)node Q7.1.9, Q7.1.10, Q7.1.8, Advanced +(a)unnumberedsubsec Q7.1.9: How do I put a glyph as annotation in a buff= er? = -If the minibuffer smallness is the only problem you encounter, you can -simply press @kbd{C-h l} to get the former minibuffer contents in a -buffer. +Here is a solution that will insert the glyph annotation at the +beginning of buffer: = -(a)unnumberedsec 6.2: Emacs Lisp Programming Techniques +(a)lisp +(make-annotation (make-glyph '([FORMAT :file FILE] + [string :data "fallback-text"])) + (point-min) + 'text + (current-buffer)) +(a)end lisp = -(a)node Q6.2.1, Q6.2.2, Q6.1.6, Advanced -(a)unnumberedsubsec Q6.2.1: What is the difference in key sequences betw= een XEmacs and GNU Emacs? +Replace @samp{FORMAT} with an unquoted symbol representing the format of +the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.) +Instead of @samp{FILE}, use the image file name +(e.g. +(a)iftex +@* +(a)end iftex +(a)file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}). = -(a)email{clerik@@naggum.no, Erik Naggum} writes; +You can turn this to a function (that optionally prompts you for a file +name), and inserts the glyph at @code{(point)} instead of +(a)code{(point-min)}. = -(a)quotation -Emacs has a legacy of keyboards that produced characters with modifier -bits, and therefore map a variety of input systems into this scheme even -today. XEmacs is instead optimized for X events. This causes an -incompatibility in the way key sequences are specified, but both Emacs -and XEmacs will accept a key sequence as a vector of lists of modifiers -that ends with a key, e.g., to bind @kbd{M-C-a}, you would say -(a)code{[(meta control a)]} in both Emacsen. XEmacs has an abbreviated -form for a single key, just (meta control a). Emacs has an abbreviated -form for the Control and the Meta modifiers to string-characters (the -ASCII characters), as in @samp{\M-\C-a}. XEmacs users need to be aware -that the abbreviated form works only for one-character key sequences, -while Emacs users need to be aware that the string-character is rather -limited. Specifically, the string-character can accommodate only 256 -different values, 128 of which have the Meta modifier and 128 of which -have not. In each of these blocks, only 32 characters have the Control -modifier. Whereas @code{[(meta control A)]} differs from @code{[(meta -control a)]} because the case differs, @samp{\M-\C-a} and @samp{\M-\C-A} -do not. Programmers are advised to use the full common form, both -because it is more readable and less error-prone, and because it is -supported by both Emacsen. -(a)end quotation +(a)node Q7.1.10, Q7.1.11, Q7.1.9, Advanced +(a)unnumberedsubsec Q7.1.10: @code{map-extents} won't traverse all of my= extents! = -Another (even safer) way to be sure of the key-sequences is to use the -(a)code{read-kbd-macro} function, which takes a string like @samp{C-c -}, and converts it to the internal key representation of the Emacs -you use. The function is available both on XEmacs and GNU Emacs. +I tried to use @code{map-extents} to do an operation on all the extents +in a region. However, it seems to quit after processing a random number +of extents. Is it buggy? = -(a)node Q6.2.2, Q6.2.3, Q6.2.1, Advanced -(a)unnumberedsubsec Q6.2.2: Can I generate "fake" keyboard events? +No. The documentation of @code{map-extents} states that it will iterate +across the extents as long as @var{function} returns @code{nil}. +Unexperienced programmers often forget to return @code{nil} explicitly, +which results in buggy code. For instance, the following code is +supposed to delete all the extents in a buffer, and issue as many +(a)samp{fubar!} messages. = -I wonder if there is an interactive function that can generate -(a)dfn{fake} keyboard events. This way, I could simply map them inside -XEmacs. +(a)lisp +(map-extents (lambda (ext ignore) + (delete-extent ext) + (message "fubar!"))) +(a)end lisp = -This seems to work: +Instead, it will delete only the first extent, and stop right there -- +because @code{message} will return a non-nil value. The correct code +is: = @lisp -(defun cg--generate-char-event (ch) - "Generate an event, as if ch has been typed" - (dispatch-event (character-to-event ch))) - -;; Backspace and Delete stuff -(global-set-key [backspace] - (lambda () (interactive) (cg--generate-char-event 127))) -(global-set-key [unknown_keysym_0x4] - (lambda () (interactive) (cg--generate-char-event 4))) +(map-extents (lambda (ext ignore) + (delete-extent ext) + (message "fubar!") + nil)) @end lisp = -(a)node Q6.2.3, Q6.2.4, Q6.2.2, Advanced -(a)unnumberedsubsec Q6.2.3: Could you explain @code{read-kbd-macro} in m= ore detail? +(a)node Q7.1.11, Q7.2.1, Q7.1.10, Advanced +(a)unnumberedsubsec Q7.1.11: My elisp program is horribly slow. Is ther= e an easy way to find out where it spends time? +(a)c New = -The @code{read-kbd-macro} function returns the internal Emacs -representation of a human-readable string (which is its argument). -Thus: +(a)email{hniksic@@xemacs.org, Hrvoje Niksic} writes: +(a)quotation +Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, +press a key (say @key{RET} in the Gnus Group buffer), and get the +results using @kbd{M-x profile-results}. It should give you an idea of +where the time is being spent. +(a)end quotation = -(a)lisp -(read-kbd-macro "C-c C-a") -(a)result{} [(control ?c) (control ?a)] +(a)unnumberedsec 7.2: Mathematics = -(read-kbd-macro "C-c C-. ") -(a)result{} [(control ?c) (control ?.) up] -(a)end lisp +(a)node Q7.2.1, Q7.2.2, Q7.1.11, Advanced +(a)unnumberedsubsec Q7.2.1: What are bignums, ratios, and bigfloats in L= isp? = -In GNU Emacs the same forms will be evaluated to what GNU Emacs -understands internally---the sequences @code{"\C-x\C-c"} and @code{[3 -67108910 up]}, respectively. +Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and +later can use the capabilities of multiple-precision libraries that may +be available for your platform. The GNU Multiple Precision (GMP) and +BSD Multiple Precision (MP) libraries are partially supported. GMP +gives you @dfn{bignums} (arbitrary precision integers), @dfn{ratios} +(arbitrary precision fractions), and @dfn{bigfloats} (arbitrary +precision floating point numbers). GNU MP is better-supported by XEmacs +at the time of writing (2004-04-06). BSD MP support does not include +ratios or bigfloats, and it throws errors that aren't understood. = -The exact @dfn{human-readable} syntax is defined in the docstring of -(a)code{edmacro-mode}. I'll repeat it here, for completeness. +In most cases, bignum support should be transparent to users and Lisp +programmers. A bignum-enabled XEmacs will automatically convert from +fixnums to bignums and back in pure integer arithmetic, and for GNU MP, +from floats to bigfloats. (Bigfloats must be explicitly coerced to +other types, even if they are exactly representable by less precise +types.) The Lisp reader and printer have been enhanced to handle +bignums, as have the mathematical functions. Rationals (fixnums, +bignums, and ratios) are printed using the @samp{%d}, @samp{%o}, +(a)samp{%x}, and @samp{%u} format conversions. The read syntax for rati= os +is @samp{3/5}. = -(a)quotation -Format of keyboard macros during editing: +User-visible changes in behavior include (in probable order of annoyance) = -Text is divided into @dfn{words} separated by whitespace. Except for -the words described below, the characters of each word go directly as -characters of the macro. The whitespace that separates words is -ignored. Whitespace in the macro must be written explicitly, as in -(a)kbd{foo @key{SPC} bar @key{RET}}. +(a)itemize +(a)item +Arithmetic can cause a segfault, depending on your MP library +(a)ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}. = -(a)itemize @bullet @item -The special words @kbd{RET}, @kbd{SPC}, @kbd{TAB}, @kbd{DEL}, @kbd{LFD}, -(a)kbd{ESC}, and @kbd{NUL} represent special control characters. The -words must be written in uppercase. +Terminology is not Common-Lisp-conforming. For example, ``integer'' for +Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being +investigated, but the use of ``integer'' for fixnum is pervasive and may +cause backward-compatibility and GNU-Emacs-compatibility problems. = @item -A word in angle brackets, e.g., @code{}, @code{}, or -(a)code{}, represents a function key. (Note that in the standard -configuration, the function key @code{} and the control key -(a)key{RET} are synonymous.) You can use angle brackets on the words -(a)key{RET}, @key{SPC}, etc., but they are not required there. +Many operations that used to cause a range error now succeed, with +intermediate results and return values coerced to bignums as needed. = @item -Keys can be written by their @sc{ascii} code, using a backslash followed -by up to six octal digits. This is the only way to represent keys with -codes above \377. +An atom with ratio read syntax now returns a number, not a symbol. = @item -One or more prefixes @kbd{M-} (meta), @kbd{C-} (control), @kbd{S-} -(shift), @kbd{A-} (alt), @kbd{H-} (hyper), and @kbd{s-} (super) may -precede a character or key notation. For function keys, the prefixes -may go inside or outside of the brackets: @code{C-} @equiv{} -(a)code{}. The prefixes may be written in any order: @kbd{M-C-x} -(a)equiv{} @kbd{C-M-x}. +The @samp{%u} format conversion will now give an error if its argument +is negative. (Without MP, it prints a number which Lisp can't read.) +(a)end itemize = -Prefixes are not allowed on multi-key words, e.g., @kbd{C-abc}, except -that the Meta prefix is allowed on a sequence of digits and optional -minus sign: @kbd{M--123} @equiv{} @kbd{M-- M-1 M-2 M-3}. +(a)emph{Surgeon General's Warning}: The automatic conversions cannot be +disabled at runtime. New functions have been added which produce +ratios, so there should be few surprises with type conflicts, but they +can't be ruled out. ``Arbitrary'' precision means precisely what it +says. If you work with extremely large numbers, your machine may +arbitrarily decide to hand you an unpleasant surprise rather than a +bignum @ref{Q7.2.2, XEmacs segfaults when I use very big numbers!}. = -(a)item -The @code{^} notation for control characters also works: @kbd{^M} -(a)equiv{} @kbd{C-m}. +To configure with GNU MP, add @samp{--use-number-lib=3Dgmp} +(@samp{--enable-bignum=3Dgmp} in 21.5 or later) to your invocation of +(a)file{configure}. For BSD MP, use @samp{--use-number-lib=3Dmp} +(@samp{--enable-bignum=3Dmp} for 21.5). = -(a)item -Double angle brackets enclose command names: @code{<>} is -shorthand for @kbd{M-x next-line @key{RET}}. +If you would like to help with bignum support, especially on BSD MP, +please subscribe to the @uref{http://www.xemacs.org/Lists/#xemacs-beta, +XEmacs Beta mailing list}, and book up on @file{number-gmp.h} and +(a)file{number-mp.h}. Jerry has promised to write internals documentati= on +eventually, but if your skills run more to analysis and documentation +than to writing new code, feel free to fill in the gap! = -(a)item -Finally, @code{REM} or @code{;;} causes the rest of the line to be -ignored as a comment. -(a)end itemize = -Any word may be prefixed by a multiplier in the form of a decimal number -and @code{*}: @code{3*} @equiv{} @code{ }, -and @code{10*foo} @equiv{} -(a)iftex -@* -(a)end iftex -(a)code{foofoofoofoofoofoofoofoofoofoo}. +(a)node Q7.2.2, Q7.2.3, Q7.2.1, Advanced +(a)unnumberedsubsec Q7.2.2: XEmacs segfaults when I use very big numbers! + +GMP by default allocates temporaries on the stack. If you run out of +stack space, you're dead; there is no way that we know of to reliably +detect this condition, because @samp{alloca} is typically implemented to +be @emph{fast} rather than robust. If you just need a little more +oomph, use a bigger stack (@emph{e.g.}, the @file{ulimit -s} command in +bash(1)). If you want robustness at the cost of speed, configure GMP +with @samp{--disable-alloca} and rebuild the GMP library. = -Multiple text keys can normally be strung together to form a word, but -you may need to add whitespace if the word would look like one of the -above notations: @code{; ; ;} is a keyboard macro with three semicolons, -but @code{;;;} is a comment. Likewise, @code{\ 1 2 3} is four keys but -(a)code{\123} is a single key written in octal, and @code{< right >} is -seven keys but @code{} is a single function key. When in doubt, -use whitespace. -(a)end quotation +We do not know whether BSD MP uses @samp{alloca} or not. Please send +any information you have as a bug report (@kbd{M-x report-xemacs-bug +(a)key{RET}}), which will give us platform information. (We do know that +BSD MP implementations vary across vendors, but how much, we do not know +yet.) = -(a)node Q6.2.4, Q6.2.5, Q6.2.3, Advanced -(a)unnumberedsubsec Q6.2.4: What is the performance hit of @code{let}? = -In most cases, not noticeable. Besides, there's no avoiding -(a)code{let}---you have to bind your local variables, after all. Some -pose a question whether to nest @code{let}s, or use one @code{let} per -function. I think because of clarity and maintenance (and possible -future implementation), @code{let}-s should be used (nested) in a way to -provide the clearest code. +(a)node Q7.2.3, Q7.2.4, Q7.2.2, Advanced +(a)unnumberedsubsec Q7.2.3: Bignums are really slow! = -(a)node Q6.2.5, Q6.2.6, Q6.2.4, Advanced -(a)unnumberedsubsec Q6.2.5: What is the recommended use of @code{setq}? +Many Linux distributions compile all their packages for the i386, and +this is costly. An optimized version can give you two or three orders +of magnitude better performance for a Pentium III or IV. (Yes, really. +See @uref{http://www.swox.com/gmp/gmp-speed.html}.) = -(a)itemize @bullet -(a)item Global variables = -You will typically @code{defvar} your global variable to a default -value, and use @code{setq} to set it later. +(a)node Q7.2.4, , Q7.2.3, Advanced +(a)unnumberedsubsec Q7.2.4: Equal bignums don't compare as equal! What = gives? = -It is never a good practice to @code{setq} user variables (like -(a)code{case-fold-search}, etc.), as it ignores the user's choice -unconditionally. Note that @code{defvar} doesn't change the value of a -variable if it was bound previously. If you wish to change a -user-variable temporarily, use @code{let}: +Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva +CLTL2 warned of the illusion that equal numbers would be @samp{eq}! +Meditate on the deeper truths of @samp{eql}, in which numbers of the same +type which have equal values compare equal, and @samp{=3D}, which does a= ny +necessary type coercions before comparing for equality. = -(a)lisp -(let ((case-fold-search nil)) - ... ; code with searches that must b= e case-sensitive - ...) -(a)end lisp +Yeah, yeah, it has always worked for integer types, because fixnums and +characters have an immediate representation. Sorry about that; +arbitrary precision obviously requires consing new objects because the +objects are ``large'' and of variable size, and the definition of +(a)samp{eq} does not permit different objects to compare as equal. = -You will notice the user-variables by their docstrings beginning with an -asterisk (a convention). +(a)node Other Packages, Current Events, Advanced, Top +(a)unnumbered 8 Other External Packages = -(a)item Local variables +This is part 8 of the XEmacs Frequently Asked Questions list. This +section is devoted to miscellaneous external packages not covered +elsewhere in XEmacs. = -Bind them with @code{let}, which will unbind them (or restore their -previous value, if they were bound) after exiting from the @code{let} -form. Change the value of local variables with @code{setq} or whatever -you like (e.g. @code{incf}, @code{setf} and such). The @code{let} form -can even return one of its local variables. +(a)menu +8.0: TeX +* Q8.0.1:: Is there something better than LaTeX mode? +* Q8.0.2:: What is AUCTeX? Where do you get it? +* Q8.0.3:: Problems installing AUCTeX. +* Q8.0.4:: How do I turn off current chapter from AUCTeX modeline? + +8.1: Other Unbundled Packages +* Q8.1.1:: Is there a reason for an Emacs package not to be included = in XEmacs? +* Q8.1.2:: Are there any Emacs Lisp Spreadsheets? +* Q8.1.3:: Is there a MatLab mode? + +8.2: Environments Built Around XEmacs +* Q8.2.1:: What are SPARCworks, EOS, and WorkShop? +* Q8.2.2:: How do I start the Sun Workshop support in XEmacs 21? +* Q8.2.3:: What is/was Energize? +* Q8.2.4:: What is Infodock? +(a)end menu = -Typical usage: +(a)unnumberedsec 8.0: TeX = -(a)lisp -;; iterate through the elements of the list returned by -;; `hairy-function-that-returns-list' -(let ((l (hairy-function-that-returns-list))) - (while l - ... do something with (car l) ... - (setq l (cdr l)))) -(a)end lisp +(a)node Q8.0.1, Q8.0.2, Other Packages, Other Packages +(a)unnumberedsubsec Q8.0.1: Is there something better than LaTeX mode? = -Another typical usage includes building a value simply to work with it. +(a)email{dak@@fsnif.neuroinformatik.ruhr-uni-bochum.de, David Kastrup} w= rites: = -(a)lisp -;; Build the mode keymap out of the key-translation-alist -(let ((inbox (file-truename (expand-file-name box))) - (i 0)) - ... code dealing with inbox ... - inbox) -(a)end lisp +(a)quotation +The standard TeX modes leave much to be desired, and are somewhat +leniently maintained. Serious TeX users use AUCTeX (@pxref{Q8.0.2, +What is AUCTeX? Where do you get it?}). +(a)end quotation = -This piece of code uses the local variable @code{inbox}, which becomes -unbound (or regains old value) after exiting the form. The form also -returns the value of @code{inbox}, which can be reused, for instance: +(a)node Q8.0.2, Q8.0.3, Q8.0.1, Other Packages +(a)unnumberedsubsec Q8.0.2: What is AUCTeX? Where do you get it? = -(a)lisp -(setq foo-processed-inbox - (let .....)) -(a)end lisp -(a)end itemize +AUCTeX is a complex and sophisticated editing package dedicated to TeX +and related text formatting languages, including LaTeX and Texinfo. +It provides support for running TeX on a file or part of a file, +include files, and of course shortcuts for entering common TeX macros, +LaTeX environments, etc, and for fontlock. = -(a)node Q6.2.6, Q6.2.7, Q6.2.5, Advanced -(a)unnumberedsubsec Q6.2.6: What is the typical misuse of @code{setq}? +AUCTeX is a standard package provided by XEmacs. You can get it as +usual through the @kbd{M-x list-packages} interface. It is also +included in the (non-Mule) SUMO package. The AUCTeX XEmacs package is +maintained by Uwe Brauer . = -A typical misuse is probably @code{setq}ing a variable that was meant to -be local. Such a variable will remain bound forever, never to be -garbage-collected. For example, the code doing: +AUCTeX is extremely complicated, and its developers primarily = +use GNU Emacs. Not all features of the bleeding edge version = +of AUCTeX are immediately ported to XEmacs; if you need = +these, you may be better off getting the most recent versions = +from the GNU AUCTeX project on @uref{http://savannah.gnu.org}. + = +(a)node Q8.0.3, Q8.0.4, Q8.0.2, Other Packages +(a)unnumberedsubsec Q8.0.3: Problems installing AUCTeX. = -(a)lisp -(defun my-function (whatever) - (setq a nil) - ... build a large list ... - ... and exit ...) -(a)end lisp +(a)email{vroonhof@@math.ethz.ch, Jan Vroonhof} writes: = -does a bad thing, as @code{a} will keep consuming memory, never to be -unbound. The correct thing is to do it like this: +(a)quotation +AUCTeX works fine on both stock Emacs and XEmacs has been doing so for +a very very long time. This is mostly due to the work of +(a)email{abraham@@dina.kvl.dk, Per Abrahamsen} (clap clap) in particular= his @file{easymenu} +package. Which leads to what is probably the problem... +(a)end quotation = -(a)lisp -(defun my-function (whatever) - (let (a) ; default initialization is to n= il - ... build a large list ... - ... and exit, unbinding `a' in the process ...) -(a)end lisp +Most problems with AUCTeX are one of two things: = -Not only is this prettier syntactically, but it makes it possible for -Emacs to garbage-collect the objects which @code{a} used to reference. +(a)itemize @bullet +(a)item +The TeX-lisp-directory in @file{tex-site.el} and the makefile don't +match. = -Note that even global variables should not be @code{setq}ed without -(a)code{defvar}ing them first, because the byte-compiler issues warnings. -The reason for the warning is the following: +Fix: make sure you configure AUCTeX properly @strong{before} installing. = -(a)lisp -(defun flurgoze nil) ; ok, global internal variable -... +(a)item +You have an old version of easymenu.el in your path. = -(setq flurghoze t) ; ops! a typo, but semantically= correct. - ; however, the byte-compiler war= ns. +Fix: use @code{locate-library} and remove old versions to make sure it +(a)strong{only} finds the one that came with XEmacs. +(a)end itemize = -While compiling toplevel forms: -** assignment to free variable flurghoze -(a)end lisp +(a)node Q8.0.4, Q8.1.1, Q8.0.3, Other Packages +(a)unnumberedsubsec Q8.0.4: How do I turn off current chapter from AUCTe= X modeline? = -(a)node Q6.2.7, Q6.2.8, Q6.2.6, Advanced -(a)unnumberedsubsec Q6.2.7: I like the @code{do} form of cl, does it slo= w things down? +With AUCTeX, fast typing is hard because the current chapter, section +etc. are given in the modeline. How can I turn this off? = -It shouldn't. Here is what Dave Gillespie has to say about cl.el -performance: +It's not AUCTeX, it comes from @code{func-menu} in @file{func-menu.el}. + +(a)c Add this code to your @file{init.el} to turn it off: +(a)c +(a)c @lisp +(a)c (setq fume-display-in-modeline-p nil) +(a)c @end lisp +(a)c +(a)c Or just add a hook to @code{TeX-mode-hook} to turn it off only for = TeX +(a)c mode: +(a)c +(a)c @lisp +(a)c (add-hook 'TeX-mode-hook +(a)c '(lambda () (setq fume-display-in-modeline-p nil))) +(a)c @end lisp +(a)c +(a)email{dhughes@@origin-at.co.uk, David Hughes} writes: = @quotation -Many of the advanced features of this package, such as @code{defun*}, -(a)code{loop}, and @code{setf}, are implemented as Lisp macros. In -byte-compiled code, these complex notations will be expanded into -equivalent Lisp code which is simple and efficient. For example, the -forms +Try this; you'll still get the function name displayed in the modeline, +but it won't attempt to keep track when you modify the file. To refresh +when it gets out of synch, you simply need click on the @samp{Rescan +Buffer} option in the function-menu. = @lisp -(incf i n) -(push x (car p)) +(setq-default fume-auto-rescan-buffer-p nil) @end lisp - -are expanded at compile-time to the Lisp forms +(a)end quotation = -(a)lisp -(setq i (+ i n)) -(setcar p (cons x (car p))) -(a)end lisp +(a)unnumberedsec 8.1: Other Unbundled Packages = -which are the most efficient ways of doing these respective operations -in Lisp. Thus, there is no performance penalty for using the more -readable @code{incf} and @code{push} forms in your compiled code. +(a)node Q8.1.1, Q8.1.2, Q8.0.4, Other Packages +(a)unnumberedsubsec Q8.1.1: Is there a reason for an Emacs package not t= o be included in XEmacs? = -(a)emph{Interpreted} code, on the other hand, must expand these macros -every time they are executed. For this reason it is strongly -recommended that code making heavy use of macros be compiled. (The -features labelled @dfn{Special Form} instead of @dfn{Function} in this -manual are macros.) A loop using @code{incf} a hundred times will -execute considerably faster if compiled, and will also garbage-collect -less because the macro expansion will not have to be generated, used, -and thrown away a hundred times. +The reason for an Emacs package not to be included in XEmacs is +usually one or more of the following: = -You can find out how a macro expands by using the @code{cl-prettyexpand} -function. -(a)end quotation +(a)enumerate +(a)item +The package has not been ported to XEmacs. This will typically happen +when it uses GNU-Emacs-specific features, which make it fail under +XEmacs. = -(a)node Q6.2.8, Q6.2.9, Q6.2.7, Advanced -(a)unnumberedsubsec Q6.2.8: I like recursion, does it slow things down? +Porting a package to XEmacs can range from a trivial amount of change to +a partial or full rewrite. Fortunately, the authors of modern packages +usually choose to support both Emacsen themselves. = -Yes. The Emacs byte-compiler cannot do much to optimize recursion. But -think well whether this is a real concern in Emacs. Much of the Emacs -slowness comes from internal mechanisms such as redisplay, or from the -fact that it is an interpreter. +(a)item +The package has been decided not to be appropriate for XEmacs. It may +have an equivalent or better replacement within XEmacs, in which case +the developers may choose not to burden themselves with supporting an +additional package. = -Please try not to make your code much uglier to gain a very small speed -gain. It's not usually worth it. +Each package bundled with XEmacs means more work for the maintainers, +whether they want it or not. If you are ready to take over the +maintenance responsibilities for the package you port, be sure to say +so---we will more likely include it. = -(a)node Q6.2.9, Q6.2.10, Q6.2.8, Advanced -(a)unnumberedsubsec Q6.2.9: How do I put a glyph as annotation in a buff= er? +(a)item +The package simply hasn't been noted by the XEmacs development. If +that's the case, the messages like yours are very useful for attracting +our attention. = -Here is a solution that will insert the glyph annotation at the -beginning of buffer: +(a)item +The package was noted by the developers, but they simply haven't yet +gotten around to including/porting it. Wait for the next release or, +even better, offer your help. It will be gladly accepted and +appreciated. +(a)end enumerate = -(a)lisp -(make-annotation (make-glyph '([FORMAT :file FILE] - [string :data "fallback-text"])) - (point-min) - 'text - (current-buffer)) -(a)end lisp +(a)node Q8.1.2, Q8.1.3, Q8.1.1, Other Packages +(a)unnumberedsubsec Q8.1.2: Are there any Emacs Lisp Spreadsheets? = -Replace @samp{FORMAT} with an unquoted symbol representing the format of -the image (e.g. @code{xpm}, @code{xbm}, @code{gif}, @code{jpeg}, etc.) -Instead of @samp{FILE}, use the image file name -(e.g. +Yes. Check out @dfn{dismal} (which stands for Dis' Mode Ain't Lotus) at @iftex @* @end iftex -(a)file{/usr/local/lib/xemacs-21.4/etc/recycle.xpm}). +(a)uref{http://acs.ist.psu.edu/dismal/dismal.html}. = -You can turn this to a function (that optionally prompts you for a file -name), and inserts the glyph at @code{(point)} instead of -(a)code{(point-min)}. +(a)node Q8.1.3, Q8.2.1, Q8.1.2, Other Packages +(a)unnumberedsubsec Q8.1.3: Is there a MatLab mode? = -(a)node Q6.2.10, Q6.2.11, Q6.2.9, Advanced -(a)unnumberedsubsec Q6.2.10: @code{map-extents} won't traverse all of my= extents! +Yes, a matlab mode and other items are available at the +(a)uref{http://www.mathworks.com/matlabcentral/files/104/matlab.el}. = -I tried to use @code{map-extents} to do an operation on all the extents -in a region. However, it seems to quit after processing a random number -of extents. Is it buggy? +(a)unnumberedsec 8.2: Environments Built Around XEmacs = -No. The documentation of @code{map-extents} states that it will iterate -across the extents as long as @var{function} returns @code{nil}. -Unexperienced programmers often forget to return @code{nil} explicitly, -which results in buggy code. For instance, the following code is -supposed to delete all the extents in a buffer, and issue as many -(a)samp{fubar!} messages. +(a)node Q8.2.1, Q8.2.2, Q8.1.3, Other Packages +(a)unnumberedsubsec Q8.2.1: What are SPARCworks, EOS, and WorkShop? = -(a)lisp -(map-extents (lambda (ext ignore) - (delete-extent ext) - (message "fubar!"))) -(a)end lisp +SPARCworks was a development environment from Sun (circa 1993-1996) +and consisted of compilers (C, C++, FORTRAN 77, Fortran 90, Ada, and +Pascal), a debugger, and other tools such as TeamWare (for +configuration management), MakeTool, etc. = -Instead, it will delete only the first extent, and stop right there -- -because @code{message} will return a non-nil value. The correct code -is: +EOS is the integration of XEmacs with the SPARCworks debugger. It +allows one to use an XEmacs frame to view code (complete with +fontification, etc.), set breakpoints, print variables, etc., while +using the SPARCworks debugger. + +EOS stands for "Era on SPARCworks"; Era stood for "Emacs Rewritten +Again" and was the name used by Sun for its modified version of Lucid +Emacs (later XEmacs) in the early-mid 90's. This is documented in +more detail in the history section of the XEmacs About page. + +EOS was replaced around 1996 with a newer graphical development +environment called Sun WorkShop. The current status of this is +unknown. + +(a)node Q8.2.2, Q8.2.3, Q8.2.1, Other Packages +(a)unnumberedsubsec Q8.2.2: How do I start the Sun Workshop support in X= Emacs 21? = +Add the switch ---with-workshop to the configure command when building +XEmacs and put the following in one of your startup files +(e.g. site-start.el or .emacs): + @lisp -(map-extents (lambda (ext ignore) - (delete-extent ext) - (message "fubar!") - nil)) +(when (featurep 'tooltalk) + (load "tooltalk-macros") + (load "tooltalk-util") + (load "tooltalk-init")) +(when (featurep 'sparcworks) + (load "sunpro-init") + (load "ring") + (load "comint") + (load "annotations") + (sunpro-startup)) @end lisp - -(a)node Q6.2.11, Q6.3.1, Q6.2.10, Advanced -(a)unnumberedsubsec Q6.2.11: My elisp program is horribly slow. Is there -an easy way to find out where it spends time? -(a)c New = -(a)email{hniksic@@xemacs.org, Hrvoje Niksic} writes: -(a)quotation -Under XEmacs 20.4 and later you can use @kbd{M-x profile-key-sequence}, -press a key (say @key{RET} in the Gnus Group buffer), and get the -results using @kbd{M-x profile-results}. It should give you an idea of -where the time is being spent. -(a)end quotation +If you are not using the latest Workshop (5.0) you have to apply the +following patch: = -(a)unnumberedsec 6.3: Mathematics +(a)format +--- /opt/SUNWspro/lib/eserve.el.ORIG Fri May 14 15:23:26 1999 ++++ /opt/SUNWspro/lib/eserve.el Fri May 14 15:24:54 1999 +@@@@ -42,7 +42,7 @@@@ + (defvar running-xemacs nil "t if we're running XEmacs") + (defvar running-emacs nil "t if we're running GNU Emacs 19") = -(a)node Q6.3.1, Q6.3.2, Q6.2.11, Advanced -(a)unnumberedsubsec Q6.3.1: What are bignums, ratios, and bigfloats in L= isp? +-(if (string-match "^\\(19\\|20\\)\..*\\(XEmacs\\|Lucid\\)" emacs-versio= n) ++(if (string-match "\\(XEmacs\\|Lucid\\)" emacs-version) + (setq running-xemacs t) + (setq running-emacs t)) +(a)end format = -Thanks to @email{james@@xemacs.org, Jerry James}, XEmacs 21.5.18 and -later can use the capabilities of multiple-precision libraries that may -be available for your platform. The GNU Multiple Precision (GMP) and -BSD Multiple Precision (MP) libraries are partially supported. GMP -gives you @dfn{bignums} (arbitrary precision integers), @dfn{ratios} -(arbitrary precision fractions), and @dfn{bigfloats} (arbitrary -precision floating point numbers). GNU MP is better-supported by XEmacs -at the time of writing (2004-04-06). BSD MP support does not include -ratios or bigfloats, and it throws errors that aren't understood. +(a)node Q8.2.3, Q8.2.4, Q8.2.2, Other Packages +(a)unnumberedsubsec Q8.2.3: What is/was Energize? = -In most cases, bignum support should be transparent to users and Lisp -programmers. A bignum-enabled XEmacs will automatically convert from -fixnums to bignums and back in pure integer arithmetic, and for GNU MP, -from floats to bigfloats. (Bigfloats must be explicitly coerced to -other types, even if they are exactly representable by less precise -types.) The Lisp reader and printer have been enhanced to handle -bignums, as have the mathematical functions. Rationals (fixnums, -bignums, and ratios) are printed using the @samp{%d}, @samp{%o}, -(a)samp{%x}, and @samp{%u} format conversions. The read syntax for rati= os -is @samp{3/5}. +The "Energize Programming System" was a C and C++ development environment +sold by Lucid, Inc. It was the reason why Lucid Emacs, now XEmacs, was +created in the first place. Unfortunately, Lucid went out of business in +1994. The rights to sell it in Japan were purchased by INS +Engineering (which briefly employed Stig Hackvan aka Jonathan +Stigelman to work on Japanese support for XEmacs, in late 1994 and +early 1995) and Tartan bought the rights to sell it in the rest of the +world. However, INS is not selling Energize at this point and may or +may not have ever done so; Tartan certainly never did. = -User-visible changes in behavior include (in probable order of annoyance) +(a)node Q8.2.4, , Q8.2.3, Other Packages +(a)unnumberedsubsec Q8.2.4: What is Infodock? = -(a)itemize -(a)item -Arithmetic can cause a segfault, depending on your MP library -(a)ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}. +(a)uref{http://sourceforge.net/projects/infodock/, InfoDock} is an +integrated productivity toolset, mainly aimed at technical people, +hosted at SourceForge. = -(a)item -Terminology is not Common-Lisp-conforming. For example, ``integer'' for -Emacs Lisp means what Common Lisp calls ``fixnum''. This issue is being -investigated, but the use of ``integer'' for fixnum is pervasive and may -cause backward-compatibility and GNU-Emacs-compatibility problems. +InfoDock is built atop the XEmacs variant of GNU Emacs and so has all of +the power of Emacs, but with an easier to use and more comprehensive +menu-based user interface. The bottom portion of this text describes +how it differs from XEmacs and GNU Emacs from the Free Software +Foundation. = -(a)item -Many operations that used to cause a range error now succeed, with -intermediate results and return values coerced to bignums as needed. +InfoDock is aimed at people who want a free, turn-key productivity +environment. Although InfoDock is customizable, it is not intended for +people who like basic versions of Emacs which need to be customized +extensively for local use; standard Emacs distributions are better for +such uses. InfoDock is for those people who want a complete, +pre-customized environment in one package, which they need not touch +more than once or twice a year to update to new revisions. = -(a)item -An atom with ratio read syntax now returns a number, not a symbol. +InfoDock is pre-built for SPARC SunOS/Solaris systems, PA-RISC HP-UX, +and Intel Linux systems. It is intended for use on a color display, +although most features will work on monochrome monitors. Simply unpack +InfoDock according to the instructions in the ID-INSTALL file and you +are ready to run. = -(a)item -The @samp{%u} format conversion will now give an error if its argument -is negative. (Without MP, it prints a number which Lisp can't read.) -(a)end itemize +The InfoDock Manual is concise, yet sufficient as a user guide for users +who have never used an Emacs-type editor before. For users who are +already familiar with Emacs, it supplements the information in the GNU +Emacs Manual. = -(a)emph{Surgeon General's Warning}: The automatic conversions cannot be -disabled at runtime. New functions have been added which produce -ratios, so there should be few surprises with type conflicts, but they -can't be ruled out. ``Arbitrary'' precision means precisely what it -says. If you work with extremely large numbers, your machine may -arbitrarily decide to hand you an unpleasant surprise rather than a -bignum @ref{Q6.3.2, XEmacs segfaults when I use very big numbers!}. +InfoDock menus are much more extensive and more mature than standard +Emacs menus. Each menu offers a @samp{Manual} item which displays +documentation associated with the menu's functions. = -To configure with GNU MP, add -(a)samp{--use-number-lib=3Dgmp} -to your invocation of @file{configure}. For BSD MP, use -(a)samp{--use-number-lib=3Dmp}. +(a)noindent +Four types of menubars are provided: +(a)enumerate +(a)item +An extensive menubar providing access to global InfoDock commands. +(a)item +Mode-specific menubars tailored to the current major mode. +(a)item +A simple menubar for basic editing to help novices get started with Info= Dock. +(a)item +The standard XEmacs menubar. +(a)end enumerate = -If you would like to help with bignum support, especially on BSD MP, -please subscribe to the @uref{http://www.xemacs.org/Lists/#xemacs-beta, -XEmacs Beta mailing list}, and book up on @file{number-gmp.h} and -(a)file{number-mp.h}. Jerry has promised to write internals documentati= on -eventually, but if your skills run more to analysis and documentation -than to writing new code, feel free to fill in the gap! +Most modes also include mode-specific popup menus. Additionally, region= and +rectangle popup menus are included. = +(a)samp{Hyperbole}, the everyday information manager, is a core part of +InfoDock. This provides context-sensitive mouse keys, a rolodex-type +contact manager, programmable hypertext buttons, and an autonumbered +outliner with embedded hyperlink anchors. = -(a)node Q6.3.2, Q6.3.3, Q6.3.1, Advanced -(a)unnumberedsubsec Q6.3.2: XEmacs segfaults when I use very big numbers! +The @samp{OO-Browser}, a multi-language object-oriented code browser, is= a +standard part of InfoDock. = -GMP by default allocates temporaries on the stack. If you run out of -stack space, you're dead; there is no way that we know of to reliably -detect this condition, because @samp{alloca} is typically implemented to -be @emph{fast} rather than robust. If you just need a little more -oomph, use a bigger stack (@emph{e.g.}, the @file{ulimit -s} command in -bash(1)). If you want robustness at the cost of speed, configure GMP -with @samp{--disable-alloca} and rebuild the GMP library. +InfoDock saves a more extensive set of user options than other Emacs +versions. = -We do not know whether BSD MP uses @samp{alloca} or not. Please send -any information you have as a bug report (@kbd{M-x report-xemacs-bug -(a)key{RET}}), which will give us platform information. (We do know that -BSD MP implementations vary across vendors, but how much, we do not know -yet.) +InfoDock inserts a useful file header in many file types, showing the +author, summary, and last modification time of each file. A summary +program can then be used to summarize all of the files in a directory, +for easy MANIFEST file creation. = +Your working set of buffers is automatically saved and restored (if you +answer yes to a prompt) between InfoDock sessions. = -(a)node Q6.3.3, Q6.3.4, Q6.3.2, Advanced -(a)unnumberedsubsec Q6.3.3: Bignums are really slow! +Refined color choices for code highlighting are provided for both dark a= nd +light background display frames. = -Many Linux distributions compile all their packages for the i386, and -this is costly. An optimized version can give you two or three orders -of magnitude better performance for a Pentium III or IV. (Yes, really. -See @uref{http://www.swox.com/gmp/gmp-speed.html}.) +The @kbd{C-z} key prefix performs frame-based commands which parallel the +(a)kbd{C-x} key prefix for window-based commands. = +The Smart Menu system is included for producing command menus on dumb +terminals. = -(a)node Q6.3.4, , Q6.3.3, Advanced -(a)unnumberedsubsec Q6.3.4: Equal bignums don't compare as equal! What = gives? +Lisp libraries are better categorized according to function. = -Ah, Grasshopper, I see you are using @code{(eq x y)}. The Bodhisattva -CLTL2 warned of the illusion that equal numbers would be @samp{eq}! -Meditate on the deeper truths of @samp{eql}, in which numbers of the same -type which have equal values compare equal, and @samp{=3D}, which does a= ny -necessary type coercions before comparing for equality. +Extensions and improvements to many areas of Emacs are included, such as: +paragraph filling, mail reading with Rmail, shell handling, outlining, c= ode +highlighting and browsing, and man page browsing. = -Yeah, yeah, it has always worked for integer types, because fixnums and -characters have an immediate representation. Sorry about that; -arbitrary precision obviously requires consing new objects because the -objects are ``large'' and of variable size, and the definition of -(a)samp{eq} does not permit different objects to compare as equal. +InfoDock questions, answers and discussion should go to the mail list +(a)iftex +@* +(a)end iftex +(a)email{infodock@@infodock.com}. Use +(a)email{infodock-request@@infodock.com} to be added or removed from the +list. Always include your InfoDock version number when sending help +requests. = -(a)node Current Events, Legacy Versions, Advanced, Top -(a)unnumbered 7 What the Future Holds +(a)node Current Events, Legacy Versions, Other Packages, Top +(a)unnumbered 9 What the Future Holds = -This is part 7 of the XEmacs Frequently Asked Questions list. This +This is part 9 of the XEmacs Frequently Asked Questions list. This section will change frequently, and (in theory) should contain any interesting items that have transpired recently. (But in practice it's not getting updated like this.) @@ -7204,26 +8244,25 @@ menu. Information on older versions of XEmacs can be find in @file{ONEWS} in the same directory, or @file{OONEWS} for really old versions. = - @menu -7.0: Changes -* Q7.0.1:: What new features will be in XEmacs soon? -* Q7.0.2:: What's new in XEmacs 21.4? -* Q7.0.3:: What's new in XEmacs 21.1? -* Q7.0.4:: What's new in XEmacs 20.4? -* Q7.0.5:: What's new in XEmacs 20.3? -* Q7.0.6:: What's new in XEmacs 20.2? +9.0: Changes +* Q9.0.1:: What new features will be in XEmacs soon? +* Q9.0.2:: What's new in XEmacs 21.4? +* Q9.0.3:: What's new in XEmacs 21.1? +* Q9.0.4:: What's new in XEmacs 20.4? +* Q9.0.5:: What's new in XEmacs 20.3? +* Q9.0.6:: What's new in XEmacs 20.2? @end menu = -(a)unnumberedsec 7.0: Changes +(a)unnumberedsec 9.0: Changes = -(a)node Q7.0.1, Q7.0.2, Current Events, Current Events -(a)unnumberedsubsec Q7.0.1: What new features will be in XEmacs soon? +(a)node Q9.0.1, Q9.0.2, Current Events, Current Events +(a)unnumberedsubsec Q9.0.1: What new features will be in XEmacs soon? = #### Write me. = -(a)node Q7.0.2, Q7.0.3, Q7.0.1, Current Events -(a)unnumberedsubsec Q7.0.2: What's new in XEmacs 21.4? +(a)node Q9.0.2, Q9.0.3, Q9.0.1, Current Events +(a)unnumberedsubsec Q9.0.2: What's new in XEmacs 21.4? = 21.4 was the "stable" version of the 21.2 series, which was considered "experimental" throughout its life; thus there were no "official" @@ -7344,11 +8383,11 @@ Not yet written. @c @itemize @bullet @c @end itemize = -(a)node Q7.0.3, Q7.0.4, Q7.0.2, Current Events -(a)unnumberedsubsec Q7.0.3: What's new in XEmacs 21.1? +(a)node Q9.0.3, Q9.0.4, Q9.0.2, Current Events +(a)unnumberedsubsec Q9.0.3: What's new in XEmacs 21.1? = 21.1 was the "stable" version of "experimental" 21.0 series. -(a)xref{Q7.0.2, What's new in XEmacs 21.4?}. +(a)xref{Q9.0.2, What's new in XEmacs 21.4?}. = The following lists summarizes the essential changes made in this version. For a fuller list, see the @file{NEWS} in the @file{etc} @@ -7360,7 +8399,7 @@ directory of the XEmacs distribution, or @itemize @bullet = @item -XEmacs is now supported under Microsoft Windows 95/98/ME and Windows +XEmacs is now supported under Microsoft Windows 95/98 and Windows NT/2000/XP operating systems. To discuss Windows-specific issues, subscribe to the mailing list at @email{xemacs-winnt-request@@xemacs.org}. @@ -7483,14 +8522,14 @@ longer on the load-path by default. = @end itemize = -(a)node Q7.0.4, Q7.0.5, Q7.0.3, Current Events -(a)unnumberedsubsec Q7.0.4: What's new in XEmacs 20.4? +(a)node Q9.0.4, Q9.0.5, Q9.0.3, Current Events +(a)unnumberedsubsec Q9.0.4: What's new in XEmacs 20.4? = XEmacs 20.4 is a bugfix release with no user-visible changes. @c Filled in from NEWS file of 20.5-b33 = -(a)node Q7.0.5, Q7.0.6, Q7.0.4, Current Events -(a)unnumberedsubsec Q7.0.5: What's new in XEmacs 20.3? +(a)node Q9.0.5, Q9.0.6, Q9.0.4, Current Events +(a)unnumberedsubsec Q9.0.5: What's new in XEmacs 20.3? = XEmacs 20.3 was released in November 1997. It contains many bugfixes, and a number of new features, including Autoconf 2 based configuration, @@ -7509,8 +8548,8 @@ the default) is definitely faster than X XEmacs 20.3 is the first non-beta v20 release, and will be the basis for all further development. = -(a)node Q7.0.6, , Q7.0.5, Current Events -(a)unnumberedsubsec Q7.0.6: What's new in XEmacs 20.2? +(a)node Q9.0.6, , Q9.0.5, Current Events +(a)unnumberedsubsec Q9.0.6: What's new in XEmacs 20.2? = The biggest changes in 20.2 include integration of EFS (the next generation of ange-ftp) and AUC Tex (the Emacs subsystem that includes a @@ -7526,9 +8565,9 @@ For older news, see the file @file{ONEWS the XEmacs distribution. = @node Legacy Versions, , Current Events, Top -(a)unnumbered 8 New information about old XEmacsen +(a)unnumbered 10 New information about old XEmacsen = -This is part 8 of the XEmacs Frequently Asked Questions list. It will +This is part 10 of the XEmacs Frequently Asked Questions list. It will occasionally be updated to reflect new information about versions which are no longer being revised by the XEmacs Project. The primary purpose is advice on compatibility of older XEmacsen with new packages and @@ -7536,13 +8575,15 @@ updated versions of packages, but bug fi to released XEmacsen, but users can apply themselves) are also accepted. = @menu -* Q8.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. +10.0: XEmacs 21.1 +* Q10.0.1:: Gnus 5.10 won't display smileys in XEmacs 21.1. +* Q10.0.2:: XEmacs won't start on Windows in XEmacs 21.1. @end menu = -(a)unnumberedsec 8.0: XEmacs 21.1 +(a)unnumberedsec 10.0: XEmacs 21.1 = -(a)node Q8.0.1, , Legacy Versions, Legacy Versions -(a)unnumberedsubsec Q8.0.1: Gnus 5.10 won't display smileys in XEmacs 21= .1. +(a)node Q10.0.1, Q10.0.2, Legacy Versions, Legacy Versions +(a)unnumberedsubsec Q10.0.1: Gnus 5.10 won't display smileys in XEmacs 2= 1.1. = @email{eeide@@cs.utah.edu, Eric Eide} wrote: = @@ -7578,5 +8619,25 @@ Do this: The image-mode stuff is gone from format-alist in the 21.4 branch, praise be. @end quotation + +(a)node Q10.0.2, , Q10.0.1, Legacy Versions +(a)unnumberedsubsec Q10.0.2: XEmacs won't start on Windows in XEmacs 21.= 1. + +XEmacs relies on a process called "dumping" to generate a working +executable. Under MS-Windows this process effectively fixes the memory +addresses of information in the executable. When XEmacs starts up it tri= es +to reserve these memory addresses so that the dumping process can be +reversed -- putting the information back at the correct addresses. +Unfortunately some .DLLs (for instance the soundblaster driver) occupy +memory addresses that can conflict with those needed by the dumped XEmacs +executable. In this instance XEmacs will fail to start without any +explanation. Note that this is extremely machine specific. + +21.1.10 includes a fix for this that makes more intelligent guesses +about which memory addresses will be free, and this should cure the +problem for most people. 21.4 implements "portable dumping", which +eliminates the problem altogether. We recommend you use the 21.4 +binaries, but you can use the 21.1 binaries if you are very paranoid +about stability. @xref{Q1.1.2, Are binaries available?}. = @bye = = = 1.52.2.9 +75 -59 XEmacs/xemacs/man/internals/internals.texi = Index: internals.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/internals/internals.texi,v retrieving revision 1.52.2.8 retrieving revision 1.52.2.9 diff -u -p -r1.52.2.8 -r1.52.2.9 --- internals.texi 2005/09/27 16:28:59 1.52.2.8 +++ internals.texi 2005/11/06 16:14:15 1.52.2.9 @@ -470,7 +470,7 @@ Multilingual Support * Encodings:: = * Internal Mule Encodings:: = * Byte/Character Types; Buffer Positions; Other Typedefs:: = -* Internal Text API's:: = +* Internal Text APIs:: = * Coding for Mule:: = * CCL:: = * Microsoft Windows-Related Multilingual Issues:: = @@ -495,9 +495,9 @@ Byte/Character Types; Buffer Positions; = * Usage of the Various Representations:: = * Working With the Various Representations:: = = -Internal Text API's +Internal Text APIs = -* Basic internal-format API's:: = +* Basic internal-format APIs:: = * The DFC API:: = * The Eistring API:: = = @@ -4499,6 +4499,8 @@ some of the important features: @item Selectively enabling debugging, error checking, and tracing. @item +Specifying options by either @code{--with} or @code{--enable}. +(a)item Complex options, which are set-valued (@i{i.e.}, unordered; ordered lists of options, for example ``take the first available from the list,'' are neither used currently nor given special support). @@ -4572,6 +4574,29 @@ Generate the appropriate shared library = implemented in the file @file{aclocal.m4}. @end table = +(a)heading XEmacs merged option support + +Autoconf 2.59 divides the @file{configure} options into those that +specify features (@samp{--enable}) and those that specify external +libraries (@samp{--with}). Many XEmacs options to not fall neatly into +either of these catagories and so as a matter of policy all options can +be specified by either method. + +These merged options are declared with the @code{XE_MERGED_ARG} macro. +The arguments to the option are the same as @code{AC_ARG_WITH} and +(a)code{AC_ARG_ENABLE} and code that worked with either of these macros +will worked unchanged with @code{XE_MERGED_ARG}. The option value is +stored in both @code{with_FEATURE} and @code{enable_FEATURE} shell +variables. + +(a)table @code +(a)item XE_MERGED_ARG(package, help-string, action-if-true, action-if-fa= lse) +Declare an option that can be selected by either @samp{--enable} or +(a)samp{--with}. The value of the option is stored in both +(a)code{with_FEATURE} and @code{enable_FEATURE}. + +(a)end table + @heading XEmacs keyword option support = A @dfn{keyword} option is one that accepts one of a number of @@ -4579,19 +4604,19 @@ pre-defined values (if support for sets = ``complex options'' below). For example, @samp{--with-mail-locking=3Dflock}. = -Keyword options are defined with expanded forms of -(a)samp{AC_ARG_[WITH|ENABLE]} called @samp{XE_KEYWORD_ARG_[WITH|ENABLE]}, -both taking 5 parameters. The first 4 parameters of these macros are -the same as original macros with the exception that all four parameters -are @strong{required}. The @var{action-if-true} code is run after the -argument list has been parsed. +Keyword options are defined with an expanded form of +(a)samp{XE_MERGED_ARG} called @samp{XE_KEYWORD_ARG}, which taks 5 +parameters. The first 4 parameters are the same as original macro with +the exception that all of these four parameters are @strong{required}. +The @var{action-if-true} code is run after the argument list has been +parsed. = The 5th parameter is a list of supported keywords. The whole list must be quoted but the individual keywords should not. Here is how the @samp{mail-locking} flag is defined: = @example -XE_KEYWORD_ARG_WITH([mail-locking], +XE_KEYWORD_ARG([mail-locking], AC_HELP_STRING([--with-mail-locking],[Specify the locking to be used by movemail to prevent concurrent updates of mail spool files. Valid types are `lockf', @@ -4615,13 +4640,8 @@ Macros labeled @dfn{internal} are not ex higher-level features. = @table @code -(a)item XE_KEYWORD_ARG_WITH(package, help-string, action-if-true, action= -if-false, [keyword1, keyword2, ....]) -Expanded version of @code{AC_ARG_WITH} for keyword options. All the -parameters are required. The last argument is a comma-separated list of -supported keywords, @file{m4}-quoted with @samp{[]}. - -(a)item XE_KEYWORD_ARG_ENABLE(feature, help-string, action-if-true, acti= on-if-false, [keyword1, keyword2, ....]) -Expanded version of @code{AC_ARG_ENABLE} for keyword options. All the +(a)item XE_KEYWORD_ARG(package, help-string, action-if-true, action-if-f= alse, [keyword1, keyword2, ....]) +Expanded version of @code{XE_MERGED_ARG} for keyword options. All the parameters are required. The last argument is a comma-separated list of supported keywords, @file{m4}-quoted with @samp{[]}. = @@ -4641,12 +4661,12 @@ A @dfn{complex option} is one that takes a set. For example, we might use @code{--with-sound=3Dnative,nas} to pl= ay sounds using the native libraries and via NAS. = -Complex options are defined with expanded forms of -(a)samp{AC_ARG_[WITH|ENABLE]} called @samp{XE_COMPLEX_ARG_[WITH|ENABLE]}, -both taking 5 parameters. The first 4 parameters of these macros are -the same as original macros with the exception that all four parameters -are @strong{required}. The @var{action-if-true} code is run after the -argument list has been parsed. +Complex options are defined with an expanded form of +(a)samp{XE_MERGED_ARG} called @samp{XE_COMPLEX_ARG}, taking 5 parameters. +The first 4 parameters are the same as original macro with the exception +that all four parameters are @strong{required}. The +(a)var{action-if-true} code is run after the argument list has been +parsed. = The 5th parameter is a list of @code{XE_COMPLEX_OPTION} macro calls that define the valid components and their default values. The list must be @@ -4654,7 +4674,7 @@ quoted but the individual macro calls sh @samp{sound} flag is defined: = @example -XE_COMPLEX_ARG_ENABLE([sound], +XE_COMPLEX_ARG([sound], AC_HELP_STRING([--enable-sound],[Compile with sound support. Valid types are `native', `nas' and `esd'. Prefix a type with 'no' to disable. @@ -4722,13 +4742,9 @@ Format a boilerplate help string for com This was originally written for the Xft option, and doesn't read so well for options based on alternative libraries like sound. Hackers beware: the API may be enhanced to deal with this in the future. - -(a)item XE_COMPLEX_ARG_WITH(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION= -IF-FALSE, [XE_COMPLEX_OPTION(a,yes), ....]) -Extended version of @code{AC_ARG_WITH} for complex options. All the -parameters are required. = -(a)item XE_COMPLEX_ARG_ENABLE(FEATURE, HELP-STRING, ACTION-IF-TRUE, ACTI= ON-IF-FALSE, [XE_COMPLEX_OPTION(a,yes), ....]) -Expanded version of @code{AC_ARG_ENABLE} for complex options. All the +(a)item XE_COMPLEX_ARG(PACKAGE, HELP-STRING, ACTION-IF-TRUE, ACTION-IF-F= ALSE, [XE_COMPLEX_OPTION(a,yes), ....]) +Extended version of @code{XE_MERGED_ARG} for complex options. All the parameters are required. = @item XE_EXPAND_COMPLEX_OPTION(prefix, component, yesno) @@ -5816,7 +5832,7 @@ regular quantity of any sort. The only = When there's a reasonable possibility you will actually need all 32 or 64 bits to store the quantity. @item -When calling existing API's that require unsigned types. In this case, +When calling existing APIs that require unsigned types. In this case, you should still do all manipulation using signed types, and do the conversion at the very threshold of the API call. @item @@ -10168,7 +10184,7 @@ integrated. @emph{NOTE}: The information at the top of the source file @file{text.c} is more complete than the following, and there is also a list of all other places to look for text/I18N-related info. Also look = in -(a)file{text.h} for info about the DFC and Eistring API's. +(a)file{text.h} for info about the DFC and Eistring APIs. = Recall that there are two primary ways that text is represented in XEmacs. The @dfn{buffer} representation sees the text as a series of @@ -10191,7 +10207,7 @@ representation is that it's compact and = * Encodings:: = * Internal Mule Encodings:: = * Byte/Character Types; Buffer Positions; Other Typedefs:: = -* Internal Text API's:: = +* Internal Text APIs:: = * Coding for Mule:: = * CCL:: = * Microsoft Windows-Related Multilingual Issues:: = @@ -11161,7 +11177,7 @@ always corresponds to the last byte in t character. (This is important because the Boyer-Moore algorithm works by looking at the last byte of the search string and &&#### finish this. = -(a)node Byte/Character Types; Buffer Positions; Other Typedefs, Internal= Text API's, Internal Mule Encodings, Multilingual Support +(a)node Byte/Character Types; Buffer Positions; Other Typedefs, Internal= Text APIs, Internal Mule Encodings, Multilingual Support @section Byte/Character Types; Buffer Positions; Other Typedefs @cindex byte/character types; buffer positions; other typedefs @cindex byte/character types @@ -11211,7 +11227,7 @@ h) [Chbyte] null-semantics @code{char *} Types (b), (c), (f) and (h) are defined as @code{char}, while the others= are @code{unsigned char}. This is for maximum safety (signed characters are dangerous to work with) while maintaining as much compatibility with -external API's and string constants as possible. +external APIs and string constants as possible. = We also provide versions of the above types defined with different underlying C types, for API compatibility. These use the following @@ -11226,7 +11242,7 @@ S =3D signed (Formerly I had a comment saying that type (e) "should be replaced with void *". However, there are in fact many places where an unsigned char * might be used -- e.g. for ease in pointer computation, since void * -doesn't allow this, and for compatibility with external API's.) +doesn't allow this, and for compatibility with external APIs.) = Note that these typedefs are purely for documentation purposes; from the C code's perspective, they are exactly equivalent to @code{char *}, @@ -11532,27 +11548,27 @@ MAX_BYTEBPOS_GAP_SIZE_3 is a multiple of 65535 is a multiple of 3, but this may not always be the case. #### unfinished = -(a)node Internal Text API's, Coding for Mule, Byte/Character Types; Buff= er Positions; Other Typedefs, Multilingual Support -(a)section Internal Text API's -(a)cindex internal text API's -(a)cindex text API's, internal -(a)cindex API's, text, internal +(a)node Internal Text APIs, Coding for Mule, Byte/Character Types; Buffe= r Positions; Other Typedefs, Multilingual Support +(a)section Internal Text APIs +(a)cindex internal text APIs +(a)cindex text APIs, internal +(a)cindex APIs, text, internal = -(a)strong{NOTE}: The most current documentation for these API's is in +(a)strong{NOTE}: The most current documentation for these APIs is in @file{text.h}. In case of error, assume that file is correct and this one wrong. = @menu -* Basic internal-format API's:: = +* Basic internal-format APIs:: = * The DFC API:: = * The Eistring API:: = @end menu = -(a)node Basic internal-format API's, The DFC API, Internal Text API's, I= nternal Text API's -(a)subsection Basic internal-format API's -(a)cindex basic internal-format API's -(a)cindex internal-format API's, basic -(a)cindex API's, basic internal-format +(a)node Basic internal-format APIs, The DFC API, Internal Text APIs, Int= ernal Text APIs +(a)subsection Basic internal-format APIs +(a)cindex basic internal-format APIs +(a)cindex internal-format APIs, basic +(a)cindex APIs, basic internal-format = These are simple functions and macros to convert between text representation and characters, move forward and back in text, etc. @@ -11581,7 +11597,7 @@ a Lisp character. Stuff working with Li "char", so we consistently use "Ichar" when that's what we're working with. = -(a)node The DFC API, The Eistring API, Basic internal-format API's, Inte= rnal Text API's +(a)node The DFC API, The Eistring API, Basic internal-format APIs, Inter= nal Text APIs @subsection The DFC API @cindex DFC API @cindex API, DFC @@ -11804,13 +11820,13 @@ this appears to cause no problems -- so = switching, and feel no compunctions about writing further such function- like @code{alloca()} routines in lieu of statement-like ones. --ben = -(a)node The Eistring API, , The DFC API, Internal Text API's +(a)node The Eistring API, , The DFC API, Internal Text APIs @subsection The Eistring API @cindex Eistring API @cindex API, Eistring = (This API is currently under-used) When doing simple things with -internal text, the basic internal-format API's are enough. But to do +internal text, the basic internal-format APIs are enough. But to do things like delete or replace a substring, concatenate various strings, etc. is difficult to do cleanly because of the allocation issues. The Eistring API is designed to deal with this, and provides a clean @@ -12268,7 +12284,7 @@ void eiupr (Eistring *eistr); Convert all characters in the Eistring to uppercase. @end example = -(a)node Coding for Mule, CCL, Internal Text API's, Multilingual Support +(a)node Coding for Mule, CCL, Internal Text APIs, Multilingual Support @section Coding for Mule @cindex coding for Mule @cindex Mule, coding for @@ -12665,7 +12681,7 @@ input or output is a Lisp_Object of type A source type of @code{C_STRING} or a sink type of @code{C_STRING_ALLOCA} or @code{C_STRING_MALLOC} is appropriate where the external API is not '\0'-byte-clean -- i.e. it expects strings to be -terminated with a null byte. For external API's that are in fact +terminated with a null byte. For external APIs that are in fact '\0'-byte-clean, we should of course not use these. = The sinks to be specified must be lvalues, unless they are the lisp @@ -13373,7 +13389,7 @@ Qmswindows_tstr as the external conversi qxe...() Unicode-split version of library functions, and doing other thi= ngs in certain cases, e.g. when a qxe() function is not present. = -Unicode support also requires that the various Windows API's be +Unicode support also requires that the various Windows APIs be "Unicode-encapsulated", so that they automatically call the ANSI or Unicode version of the API call appropriately and handle the size differences in structures. What this means is: @@ -13381,7 +13397,7 @@ differences in structures. What this me @itemize @bullet @item first, note that Windows already provides a sort of encapsulation -of all API's that deal with text. All such API's are underlyingly +of all APIs that deal with text. All such APIs are underlyingly provided in two versions, with an A or W suffix (ANSI or "wide" i.e. Unicode), and the compile-time constant UNICODE controls which is selected by the unsuffixed API. Same thing happens with structures, and @@ -13611,7 +13627,7 @@ NOTE: @item wsetargv.obj uses routines that were buggily left out of MSVCRT; anyway, from looking at the source, it does NOT correctly work under Win 9x as -it blindly calls the Unicode version of Unicode-split API's such as +it blindly calls the Unicode version of Unicode-split APIs such as FindFirstFile) = @item @@ -18955,7 +18971,7 @@ started and I'll be doing more work to m IV. GUTTER ETC. = This stuff needs to be "stable" and generally free from bugs. Any -API's we create need to be well-reviewed or marked clearly as +APIs we create need to be well-reviewed or marked clearly as experimental. = V. PORTABLE DUMPER @@ -19510,7 +19526,7 @@ Author: @uref{mailto:ben@@xemacs.org,Ben = NOTE: These changes are partly motivated by the various user-interface changes elsewhere in this document, and partly for Mule support. In -general the various API's in this document would benefit greatly from +general the various APIs in this document would benefit greatly from built-in keywords. = I would like to make keyword parameters an integral part of Elisp. The @@ -21909,7 +21925,7 @@ API is set-unicode-mapping: each byte. (Most common values are 128, for codepoints given with the high bit set, or -32, for codepoints given as 1-94 or 0-95.) = -Other API's: +Other APIs: = @example (write-unicode-mapping file charset) = = = 1.6.4.2 +1 -1 XEmacs/xemacs/man/lispref/compile.texi = Index: compile.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/compile.texi,v retrieving revision 1.6.4.1 retrieving revision 1.6.4.2 diff -u -p -r1.6.4.1 -r1.6.4.2 --- compile.texi 2005/09/27 16:29:06 1.6.4.1 +++ compile.texi 2005/11/06 16:14:20 1.6.4.2 @@ -503,7 +503,7 @@ Default: @code{nil} when Emacs version i @defvar byte-compile-print-gensym When non-(a)code{nil}, the compiler may generate code that creates unique symbols at run-time. This is achieved by printing uninterned symbols -using the @code{#:@var{SYMBOL}} notation, so that they will be read +using the @code{#:@var{symbol}} notation, so that they will be read uninterned when run. = With this feature, code that uses uninterned symbols in macros will = = = 1.36.2.6 +58 -0 XEmacs/xemacs/modules/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.36.2.5 retrieving revision 1.36.2.6 diff -u -p -r1.36.2.5 -r1.36.2.6 --- ChangeLog 2005/09/27 16:29:10 1.36.2.5 +++ ChangeLog 2005/11/06 16:14:22 1.36.2.6 @@ -1,3 +1,61 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-22 Stephen J. Turnbull + + Warning elimination: + + * ldap/eldap.c (Fldap_add): Remove declaration of `current', which + is now declared by EXTERNAL_LIST_LOOP_2. + (Fldap_modify): Remove redundant variable `gcpro2', + +2005-10-25 Ben Wing + + * postgresql/postgresql.c (allocate_pgconn): + * postgresql/postgresql.c (allocate_pgresult): + * postgresql/postgresql.h (struct Lisp_PGconn): + * postgresql/postgresql.h (struct Lisp_PGresult): + MC-Alloc refactoring. + +2005-10-25 Ben Wing + + * ldap/eldap.c (allocate_ldap): + * ldap/eldap.h (struct Lisp_LDAP): + MC-Alloc refactoring. + +2005-10-21 Stephen J. Turnbull + + UNDO: + * canna/canna-api.c: + * canna/Makefile.in.in (MODNAME,SRCS): + Rename module from canna_api to canna-api. + +2005-10-21 Stephen J. Turnbull + + * canna/configure: Create and CVS add. + +2005-10-04 Stephen J. Turnbull + + * canna/Makefile.in.in (MODVER): Bump to 0.5. + + * canna/canna-api.c: + * canna/Makefile.in.in (MODNAME,SRCS): + Rename module from canna_api to canna-api. + +2005-09-22 Stephen J. Turnbull + + * canna: New module. + + * canna/canna_api.c: Move from $srcdir/src/mule-canna.c. Add module + initialization function and some boilerplate. Change name to + canna_api to reflect changed role. + + * canna/configure.ac: + * canna/Makefile.in.in: + * canna/install-sh: + Standard module boilerplate, adapted to Canna. + 2005-09-14 Stephen J. Turnbull = * XEmacs 21.5.22 "cucumber" is released. = = = 1.1.2.2 +1 -1 XEmacs/xemacs/modules/canna/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/canna/Makefile.in.in,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -p -r1.1.2.1 -r1.1.2.2 --- Makefile.in.in 2005/09/24 14:02:25 1.1.2.1 +++ Makefile.in.in 2005/11/06 16:14:23 1.1.2.2 @@ -27,7 +27,7 @@ = ### Specialize this part for your module MODNAME=3Dcanna_api -MODVER=3D0.0.1 +MODVER=3D0.5.0 MODTITLE=3D"Module wrapping Canna libraries for XEmacs" CFLAGS=3D@CFLAGS@ LDFLAGS=3D@LDFLAGS@ @ld_switch_all@ @canna_libs@ = = = 1.1.2.2 +1 -1 XEmacs/xemacs/modules/canna/configure.ac = Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/canna/configure.ac,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -p -r1.1.2.1 -r1.1.2.2 --- configure.ac 2005/09/24 14:02:25 1.1.2.1 +++ configure.ac 2005/11/06 16:14:23 1.1.2.2 @@ -2,7 +2,7 @@ # This is only used for independent module building. AC_INIT([Sample module], [1.0], [xemacs-beta(a)xemacs.org]) AC_PREREQ(2.53) -AC_REVISION($Revision: 1.1.2.1 $) +AC_REVISION($Revision: 1.1.2.2 $) AC_COPYRIGHT([Configuration script for the sample module. Copyright (C) 2002 Jerry James. = = = = 1.12.2.2 +2 -7 XEmacs/xemacs/modules/ldap/eldap.c = Index: eldap.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ldap/eldap.c,v retrieving revision 1.12.2.1 retrieving revision 1.12.2.2 diff -u -p -r1.12.2.1 -r1.12.2.2 --- eldap.c 2005/07/13 04:46:01 1.12.2.1 +++ eldap.c 2005/11/06 16:14:24 1.12.2.2 @@ -141,11 +141,7 @@ print_ldap (Lisp_Object obj, Lisp_Object static Lisp_LDAP * allocate_ldap (void) { -#ifdef MC_ALLOC - Lisp_LDAP *ldap =3D alloc_lrecord_type (Lisp_LDAP, &lrecord_ldap); -#else /* not MC_ALLOC */ - Lisp_LDAP *ldap =3D alloc_lcrecord_type (Lisp_LDAP, &lrecord_ldap); -#endif /* not MC_ALLOC */ + Lisp_LDAP *ldap =3D ALLOC_LCRECORD_TYPE (Lisp_LDAP, &lrecord_ldap); = ldap->ld =3D NULL; ldap->host =3D Qnil; @@ -623,7 +619,6 @@ containing attribute/value string pairs. int i, j; Elemcount len; = - Lisp_Object current =3D Qnil; Lisp_Object values =3D Qnil; struct gcpro gcpro1; = @@ -724,7 +719,7 @@ or `replace'. ATTR is the LDAP attribute Elemcount len; = Lisp_Object values =3D Qnil; - struct gcpro gcpro1, gcpro2; + struct gcpro gcpro1; = /* Do all the parameter checking */ CHECK_LIVE_LDAP (ldap); = = = 1.2.6.2 +1 -7 XEmacs/xemacs/modules/ldap/eldap.h = Index: eldap.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ldap/eldap.h,v retrieving revision 1.2.6.1 retrieving revision 1.2.6.2 diff -u -p -r1.2.6.1 -r1.2.6.2 --- eldap.h 2005/07/13 04:46:01 1.2.6.1 +++ eldap.h 2005/11/06 16:14:24 1.2.6.2 @@ -31,13 +31,7 @@ Boston, MA 02111-1307, USA. */ = struct Lisp_LDAP { -#ifdef MC_ALLOC - /* lrecord header */ - struct lrecord_header header; -#else /* not MC_ALLOC */ - /* lcrecord header */ - struct lcrecord_header header; -#endif /* not MC_ALLOC */ + struct LCRECORD_HEADER header; /* The LDAP connection handle used by the LDAP API */ LDAP *ld; /* Name of the host we connected to */ = = = 1.6.2.2 +4 -24 XEmacs/xemacs/modules/postgresql/postgresql.c = Index: postgresql.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/postgresql/postgresql.c,v retrieving revision 1.6.2.1 retrieving revision 1.6.2.2 diff -u -p -r1.6.2.1 -r1.6.2.2 --- postgresql.c 2005/07/13 04:46:02 1.6.2.1 +++ postgresql.c 2005/11/06 16:14:25 1.6.2.2 @@ -238,21 +238,11 @@ static Lisp_PGconn * allocate_pgconn (void) { #ifdef RUNNING_XEMACS_21_1 -#ifdef MC_ALLOC - Lisp_PGconn *pgconn =3D alloc_lrecord_type (Lisp_PGconn, - lrecord_pgconn); -#else /* not MC_ALLOC */ - Lisp_PGconn *pgconn =3D alloc_lcrecord_type (Lisp_PGconn, + Lisp_PGconn *pgconn =3D ALLOC_LCRECORD_TYPE (Lisp_PGconn, lrecord_pgconn); -#endif /* not MC_ALLOC */ #else -#ifdef MC_ALLOC - Lisp_PGconn *pgconn =3D alloc_lrecord_type (Lisp_PGconn, - &lrecord_pgconn); -#else /* not MC_ALLOC */ - Lisp_PGconn *pgconn =3D alloc_lcrecord_type (Lisp_PGconn, + Lisp_PGconn *pgconn =3D ALLOC_LCRECORD_TYPE (Lisp_PGconn, &lrecord_pgconn); -#endif /* not MC_ALLOC */ #endif pgconn->pgconn =3D (PGconn *)NULL; return pgconn; @@ -373,21 +363,11 @@ static Lisp_PGresult * allocate_pgresult (void) { #ifdef RUNNING_XEMACS_21_1 -#ifdef MC_ALLOC - Lisp_PGresult *pgresult =3D alloc_lrecord_type (Lisp_PGresult, - lrecord_pgresult); -#else /* not MC_ALLOC */ - Lisp_PGresult *pgresult =3D alloc_lcrecord_type (Lisp_PGresult, + Lisp_PGresult *pgresult =3D ALLOC_LCRECORD_TYPE (Lisp_PGresult, lrecord_pgresult); -#endif /* not MC_ALLOC */ #else -#ifdef MC_ALLOC - Lisp_PGresult *pgresult =3D alloc_lrecord_type (Lisp_PGresult, - &lrecord_pgresult); -#else /* not MC_ALLOC */ - Lisp_PGresult *pgresult =3D alloc_lcrecord_type (Lisp_PGresult, + Lisp_PGresult *pgresult =3D ALLOC_LCRECORD_TYPE (Lisp_PGresult, &lrecord_pgresult); -#endif /* not MC_ALLOC */ #endif pgresult->pgresult =3D (PGresult *)NULL; return pgresult; = = = 1.1.6.2 +2 -10 XEmacs/xemacs/modules/postgresql/postgresql.h = Index: postgresql.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/postgresql/postgresql.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -p -r1.1.6.1 -r1.1.6.2 --- postgresql.h 2005/07/13 04:46:03 1.1.6.1 +++ postgresql.h 2005/11/06 16:14:25 1.1.6.2 @@ -28,11 +28,7 @@ xemacs-patches. */ struct Lisp_PGconn { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* not MC_ALLOC */ - struct lcrecord_header header; -#endif /* not MC_ALLOC */ + struct LCRECORD_HEADER header; PGconn *pgconn; }; typedef struct Lisp_PGconn Lisp_PGconn; @@ -52,11 +48,7 @@ DECLARE_LRECORD (pgconn, Lisp_PGconn); */ struct Lisp_PGresult { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* not MC_ALLOC */ - struct lcrecord_header header; -#endif /* not MC_ALLOC */ + struct LCRECORD_HEADER header; PGresult *pgresult; }; typedef struct Lisp_PGresult Lisp_PGresult; = = = 1.31.2.4 +6 -2 XEmacs/xemacs/netinstall/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/ChangeLog,v retrieving revision 1.31.2.3 retrieving revision 1.31.2.4 diff -u -p -r1.31.2.3 -r1.31.2.4 --- ChangeLog 2005/09/20 16:05:52 1.31.2.3 +++ ChangeLog 2005/11/06 16:14:27 1.31.2.4 @@ -1,6 +1,10 @@ -2005-06-16 Stephen J. Turnbull +2005-11-06 Stephen J. Turnbull = - * ChangeLog: Nuke the CVS revision keywords. + * ChangeLog: Nuke useless CVS keyword. + +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. = 2005-09-14 Stephen J. Turnbull = = = = 1.175.2.5 +4 -0 XEmacs/xemacs/nt/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/ChangeLog,v retrieving revision 1.175.2.4 retrieving revision 1.175.2.5 diff -u -p -r1.175.2.4 -r1.175.2.5 --- ChangeLog 2005/09/27 16:29:12 1.175.2.4 +++ ChangeLog 2005/11/06 16:14:28 1.175.2.5 @@ -1,3 +1,7 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + 2005-09-26 Ben Wing = * README: = = = 1.20.2.5 +4 -0 XEmacs/xemacs/nt/installer/Wise/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/installer/Wise/ChangeLog,v retrieving revision 1.20.2.4 retrieving revision 1.20.2.5 diff -u -p -r1.20.2.4 -r1.20.2.5 --- ChangeLog 2005/09/20 16:05:55 1.20.2.4 +++ ChangeLog 2005/11/06 16:14:29 1.20.2.5 @@ -1,3 +1,7 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + 2005-09-14 Stephen J. Turnbull = * XEmacs 21.5.22 "cucumber" is released. = = = 1.758.2.32 +553 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.758.2.31 retrieving revision 1.758.2.32 diff -u -p -r1.758.2.31 -r1.758.2.32 --- ChangeLog 2005/09/27 16:29:18 1.758.2.31 +++ ChangeLog 2005/11/06 16:14:30 1.758.2.32 @@ -1,3 +1,556 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + +2005-10-22 Stephen J. Turnbull + + * lrecord.h: Explain the EXTERNAL_LRECORD macros better. + +2005-10-25 Ben Wing + + * config.h.in (EXTERN_C): + Don't define new and catch under C++ any more. + (Places using new were just fixed by the last patch, places using + catch were fixed a couple of weeks ago.) + +2005-10-25 Ben Wing + + * EmacsFrame.c (EmacsFrameInitialize): + * EmacsFrame.c (EmacsFrameSetValues): + * ExternalClient.c: + * ExternalClient.c (externalClientInitialize): + * ExternalShell.c: + * ExternalShell.c (ExternalShellInitialize): + * chartab.c (copy_char_table_entry): + * chartab.c (Fcopy_char_table): + * cmdloop.c: + * cmdloop.c (initial_command_loop): + * compiler.h: + * console.c (Fvalid_console_type_p): + * database.c: + * device-msw.c: + * device-x.c: + * device.c (Fvalid_device_class_p): + * device.c (Fdevice_class): + * device.c (Fset_device_class): + * device.c (Fdomain_device_type): + * doc.c (Fsubstitute_command_keys): + * dragdrop.c: + * eval.c: + * eval.c (throw_or_bomb_out): + * eval.c (Fsignal): + * event-msw.c: + * event-msw.c (vars_of_event_mswindows): + * event-stream.c (execute_internal_event): + * event-stream.c (push_this_command_keys): + * events.c: + * extents.c (Fset_extent_parent): + * extents.c (get_char_property): + * extents.c (put_text_prop_mapper): + * file-coding.c: + * file-coding.c (Fvalid_coding_system_type_p): + * file-coding.c (Fdetect_coding_region): + * fns.c (Freplace_list): + * frame-tty.c (tty_lower_frame): + * frame.c: + * frame.c (Fframe_visible_p): + * gpmevent.c (Fgpm_enable): + * gutter.c (Fset_default_gutter_position): + * gutter.c (gutter_size_validate): + * gutter.c (specifier_vars_of_gutter): + * hash.c (KEYS_DIFFER_P): + * imgproc.c (splitbox): + * indent.c: + * keymap.c: + * keymap.c (copy_keymap_mapper): + * keymap.c (define_key_check_and_coerce_keysym): + * keymap.c (event_matches_key_specifier_p): + * keymap.c (process_event_binding_result): + * keymap.c (where_is_recursive_mapper): + * lisp-union.h: + * lisp-union.h (union Lisp_Object): + * macros.c (store_kbd_macro_event): + * malloc.c (realloc): + * marker.c (copy_marker_1): + * menubar-x.c (menu_move_down): + * menubar.c: + * menubar.c (vars_of_menubar): + * mule-charset.c: + * mule-charset.c (Fmake_charset): + * mule-charset.c (Fcharset_property): + * mule-charset.c (Fset_charset_ccl_program): + * mule-charset.c (Fset_charset_registry): + * number.c: + * process.c: + * profile.h: + * ralloc.c (obtain): + * redisplay.c: + * redisplay.c (get_display_block_from_line): + * redisplay.c (redisplay_frame): + * redisplay.c (vars_of_redisplay): + * redisplay.c (specifier_vars_of_redisplay): + * select-common.h: + * select.c: + * select.c (vars_of_select): + * syntax.c: + * syntax.c (scan_sexps_forward): + * sysfile.h: + * sysproc.h: + * systime.h: + * syswindows.h: + * toolbar.c (Fset_default_toolbar_position): + * toolbar.c (Fcheck_toolbar_button_syntax): + * toolbar.c (specifier_vars_of_toolbar): + * tooltalk.c: + * tooltalk.c (Freturn_tooltalk_message): + * tooltalk.c (Fadd_tooltalk_message_arg): + * tooltalk.c (Fadd_tooltalk_pattern_attribute): + * tparam.c (tparam1): + * unexaix.c (PERROR): + * unexaix.c (ERROR0): + * unexaix.c (unexec): + * unexaix.c (make_hdr): + * unexaix.c (copy_text_and_data): + * unexaix.c (write_segment): + * unexaix.c (copy_sym): + * unexaix.c (mark_x): + * unexaix.c (adjust_lnnoptrs): + * unexaix.c (unrelocate_symbols): + * unexalpha.c (unexec): + * unexalpha.c (update_dynamic_symbols): + * unexconvex.c (PERROR): + * unexconvex.c (ERROR0): + * unexconvex.c (entry_address;): + * unexconvex.c (make_hdr): + * unexconvex.c (new_;): + * unexconvex.c (sptr;): + * unexconvex.c (copy_sym): + * unexconvex.c (name;): + * unexec.c: + * unexec.c (PERROR): + * unexec.c (ERROR0): + * unexec.c (unexec): + * unexec.c (make_hdr): + * unexec.c (write_segment): + * unexec.c (copy_sym): + * unexec.c (mark_x): + * unexec.c (adjust_lnnoptrs): + * unexhp9k800.c: + * unexhp9k800.c (unexec): + * unexhp9k800.c (copy_file): + * unexhp9k800.c (copy_rest): + * unexmips.c (unexec): + * unicode.c: + * unicode.c (Fchar_to_unicode): + * window.c (make_dummy_parent): + * window.c (Fsplit_window): + * window.c (Fenlarge_window): + new -> new_. + 'foo -> `foo'. + +2005-10-25 Ben Wing + + * alloc.c: + * alloc.c (old_basic_alloc_lcrecord): + * alloc.c (very_old_free_lcrecord): + * alloc.c (disksave_object_finalization_1): + * alloc.c (copy_lisp_object): + * alloc.c (make_lcrecord_list): + * alloc.c (alloc_managed_lcrecord): + * alloc.c (old_free_lcrecord): + * alloc.c (GC_CHECK_NOT_FREE): + * alloc.c (tick_lcrecord_stats): + * alloc.c (sweep_lcrecords_1): + * buffer.c (compute_buffer_usage): + * buffer.c (DEFVAR_BUFFER_LOCAL_1): + * console.c (DEFVAR_CONSOLE_LOCAL_1): + * emacs.c: + * emacs.c (main_1): + * file-coding.c (allocate_coding_system): + * lrecord.h: + * lrecord.h (struct old_lcrecord_header): + * lrecord.h (struct free_lcrecord_header): + * lrecord.h (struct lrecord_implementation): + * lrecord.h (struct lcrecord_list): + * lrecord.h (old_alloc_lcrecord_type): + * lrecord.h (old_copy_sized_lcrecord): + * lrecord.h (old_zero_lcrecord): + * lstream.c (Lstream_new): + * mule-charset.c (compute_charset_usage): + * print.c (debug_p4): + * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): + * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): + * scrollbar-x.c (x_compute_scrollbar_instance_usage): + * scrollbar.c (compute_scrollbar_instance_usage): + * symbols.c (guts_of_unbound_marker): + * symeval.h (DEFVAR_SYMVAL_FWD): + * unicode.c (compute_from_unicode_table_size_1): + * unicode.c (compute_to_unicode_table_size_1): + * window.c (compute_window_mirror_usage): + * window.c (compute_window_usage): + * xemacs.def.in.in: + rename `struct lcrecord_header' to `struct old_lcrecord_header'; + likewise for `old_basic_alloc_lcrecord', `old_free_lcrecord', + `old_zero_lcrecord', `old_zero_sized_lcrecord', `old_copy_lcrecord', + `old_copy_sized_lcrecord', `old_alloc_lcrecord_type'. Created new + LISPOBJ_STORAGE_SIZE() used only on objects created through allocation + of Lisp-Object memory instead of basic xmalloc()/xfree(). This is + distinguished from malloced_storage_size(), for non-Lisp-Objects. + The definition of LISPOBJ_STORAGE_SIZE() can reduce down to + malloced_storage_size() when not MC-ALLOC, but with MC-ALLOC it's + a different function. + + The whole point other than cleaning up the use of LISPOBJ_STORAGE_SIZE + is to make it harder to accidentally use the old kind (lowercase) of + function in new code, since you get a compile error. + +2005-10-25 Ben Wing + + * frame-msw.c (mswindows_window_id): + Fix warning. + +2005-10-24 Ben Wing + + * frame-msw.c: + * frame-msw.c (decode_mswindows_frame): + New function, like decode_x_frame. + = + * frame-msw.c (mswindows_window_id): + * frame-msw.c (mswindows_frame_property): + * frame-msw.c (mswindows_internal_frame_property_p): + * frame-msw.c (mswindows_frame_properties): + * frame-msw.c (vars_of_frame_mswindows): + Add `window-id' property for MS Windows frames. + +2005-10-24 Ben Wing + + * alloc.c: + * alloc.c (Lisp_Free): + * alloc.c (Fcons): + * alloc.c (noseeum_cons): + * alloc.c (make_float): + * alloc.c (make_bignum): + * alloc.c (make_bignum_bg): + * alloc.c (make_ratio): + * alloc.c (make_ratio_bg): + * alloc.c (make_ratio_rt): + * alloc.c (make_bigfloat): + * alloc.c (make_bigfloat_bf): + * alloc.c (make_vector_internal): + * alloc.c (make_bit_vector_internal): + * alloc.c (make_compiled_function): + * alloc.c (Fmake_symbol): + * alloc.c (allocate_extent): + * alloc.c (allocate_event): + * alloc.c (make_key_data): + * alloc.c (make_button_data): + * alloc.c (make_motion_data): + * alloc.c (make_process_data): + * alloc.c (make_timeout_data): + * alloc.c (make_magic_data): + * alloc.c (make_magic_eval_data): + * alloc.c (make_eval_data): + * alloc.c (make_misc_user_data): + * alloc.c (Fmake_marker): + * alloc.c (noseeum_make_marker): + * buffer.c (allocate_buffer): + * buffer.c (compute_buffer_usage): + * buffer.c (nuke_all_buffer_slots): + * buffer.c (common_init_complex_vars_of_buffer): + * buffer.h (struct buffer): + * casetab.c (allocate_case_table): + * casetab.h (struct Lisp_Case_Table): + * charset.h (struct Lisp_Charset): + * chartab.c (fill_char_table): + * chartab.c (Fmake_char_table): + * chartab.c (make_char_table_entry): + * chartab.c (copy_char_table_entry): + * chartab.c (Fcopy_char_table): + * chartab.c (put_char_table): + * chartab.h (struct Lisp_Char_Table_Entry): + * chartab.h (struct Lisp_Char_Table): + * console-impl.h (struct console): + * console-msw-impl.h (struct Lisp_Devmode): + * console-msw-impl.h (struct mswindows_dialog_id): + * console.c (allocate_console): + * console.c (nuke_all_console_slots): + * console.c (common_init_complex_vars_of_console): + * data.c (make_weak_list): + * data.c (make_weak_box): + * data.c (make_ephemeron): + * database.c (struct Lisp_Database): + * database.c (allocate_database): + * device-impl.h (struct device): + * device-msw.c (allocate_devmode): + * device.c (nuke_all_device_slots): + * device.c (allocate_device): + * dialog-msw.c (handle_question_dialog_box): + * elhash.c (struct Lisp_Hash_Table): + * elhash.c (make_general_lisp_hash_table): + * elhash.c (Fcopy_hash_table): + * events.h (struct Lisp_Timeout): + * events.h (struct command_builder): + * extents-impl.h (struct extent_auxiliary): + * extents-impl.h (struct extent_info): + * extents.c (allocate_extent_auxiliary): + * extents.c (allocate_extent_info): + * extents.c (copy_extent): + * faces.c (allocate_face): + * faces.h (struct Lisp_Face): + * file-coding.c (Fcopy_coding_system): + * file-coding.h (struct Lisp_Coding_System): + * frame-impl.h (struct frame): + * frame.c (nuke_all_frame_slots): + * frame.c (allocate_frame_core): + * glyphs.c (allocate_image_instance): + * glyphs.c (Fcolorize_image_instance): + * glyphs.c (allocate_glyph): + * glyphs.h (struct Lisp_Image_Instance): + * glyphs.h (struct Lisp_Glyph): + * gui.c (allocate_gui_item): + * gui.h (struct Lisp_Gui_Item): + * keymap.c (struct Lisp_Keymap): + * keymap.c (make_keymap): + * lisp.h (struct Lisp_Vector): + * lisp.h (struct Lisp_Bit_Vector): + * lisp.h (struct weak_box): + * lisp.h (struct ephemeron): + * lisp.h (struct weak_list): + * lrecord.h: + * lrecord.h (struct toolbar_button): + * lstream.c (COPY_SIZED_LCRECORD): + * lstream.h (struct lstream): + * mule-charset.c (make_charset): + * mule-charset.c (compute_charset_usage): + * objects-impl.h (struct Lisp_Color_Instance): + * objects-impl.h (struct Lisp_Font_Instance): + * objects.c (Fmake_color_instance): + * objects.c (Fmake_font_instance): + * objects.c (reinit_vars_of_objects): + * opaque.c (make_opaque): + * opaque.h (Lisp_Opaque): + * opaque.h (Lisp_Opaque_Ptr): + * print.c (default_object_printer): + * process.c (make_process_internal): + * procimpl.h (struct Lisp_Process): + * rangetab.c (Fmake_range_table): + * rangetab.c (Fcopy_range_table): + * rangetab.h (struct Lisp_Range_Table): + * scrollbar-gtk.c (gtk_compute_scrollbar_instance_usage): + * scrollbar-msw.c (mswindows_compute_scrollbar_instance_usage): + * scrollbar-x.c (x_compute_scrollbar_instance_usage): + * scrollbar.c (create_scrollbar_instance): + * scrollbar.c (compute_scrollbar_instance_usage): + * scrollbar.h (struct scrollbar_instance): + * specifier.c (make_specifier_internal): + * specifier.h (struct Lisp_Specifier): + * symbols.c (Fdefvaralias): + * symeval.h (SYMBOL_VALUE_MAGIC_P): + * toolbar.c (update_toolbar_button): + * toolbar.h (struct toolbar_button): + * tooltalk.c (struct Lisp_Tooltalk_Message): + * tooltalk.c (make_tooltalk_message): + * tooltalk.c (struct Lisp_Tooltalk_Pattern): + * tooltalk.c (make_tooltalk_pattern): + * ui-gtk.c (allocate_ffi_data): + * ui-gtk.c (allocate_emacs_gtk_object_data): + * ui-gtk.c (allocate_emacs_gtk_boxed_data): + * ui-gtk.h: + * unicode.c (compute_from_unicode_table_size_1): + * unicode.c (compute_to_unicode_table_size_1): + * window-impl.h (struct window): + * window-impl.h (struct window_mirror): + * window.c (allocate_window): + * window.c (new_window_mirror): + * window.c (make_dummy_parent): + * window.c (compute_window_mirror_usage): + * window.c (compute_window_usage): + Eliminate the majority of #ifdef MC_ALLOC occurrences through + macros LCRECORD_HEADER, ALLOC_LCRECORD_TYPE, MALLOCED_STORAGE_SIZE, + etc. (defined in lrecord.h). + +2005-10-21 Stephen J. Turnbull + + * Makefile.in.in (mule_canna_objs): Revert canna-api to canna_api. + +2005-10-13 Ben Wing + + * config.h.in: + * alloc.c: + * alloc.c (struct): + * alloc.c (alloc_lrecord): + * alloc.c (noseeum_alloc_lrecord): + * alloc.c (finalize_string): + * alloc.c (make_uninit_string): + * alloc.c (make_string_nocopy): + * alloc.c (garbage_collect_1): + * alloc.c (object_memory_usage_stats): + * alloc.c (HACK_O_MATIC): + * alloc.c (Fgarbage_collect): + * alloc.c (Ftotal_memory_usage): + * alloc.c (recompute_need_to_garbage_collect): + * alloc.c (common_init_alloc_early): + * alloc.c (syms_of_alloc): + * alloc.c (vars_of_alloc): + * dumper.c (pdump_load_finish): + * emacs.c: + * emacs.c (main_1): + * emacs.c (shut_down_emacs): + * lrecord.h: + * lrecord.h (MC_ALLOC_CALL_FINALIZER): + * mc-alloc.c (remove_cell): + * mc-alloc.h: + * symbols.c (init_symbols_once_early): + Rename MC_ALLOC_TYPE_STATS to ALLOC_TYPE_STATS, since + (with refactoring) this is not really specific to mc-alloc. + Generalize code to implement the GC % threshold for garbage + collecting. Rename `lrecord-stats' to `object-memory-usage-stats' + (defined when not mc-alloc, too). Rename `memory-usage' to + `total-memory-usage' and add `object-memory-usage'. Bump + gc_cons_threshold to 2,000,000 (suggestion by Stephen Turnbull). + + Avoid use of C++ reserved word `catch'. + + Change address for crash reporting to xemacs-beta(a)xemacs.org from + crashes(a)xemacs.org. + + new -> new_ in emacs.c. + + Turn on _CRT_SECURE_NO_DEPRECATE under Visual C++ to avoid tons of + warnings in VC8. + +2005-10-10 Andrey Slusar + + * unexelf.c: define `Elfw(type)' for FreeBSD alpha and all _LP64 + archs. = + From Dejan Lesjak + +2005-10-04 Stephen J. Turnbull + + * Makefile.in.in (mule_canna_objs): Use correct name of .o. + +2005-09-22 Stephen J. Turnbull + + * Makefile.in.in (HAVE_CANNA): Handle Canna as a module. + + * emacs.c (main_1): Update Canna initializers to *_canna_api names. + + * mule-canna.c: Moved to modules/canna/canna_api.c. + + * symsinit.h (syms_of_mule_canna): + (vars_of_mule_canna): + Rename to *_of_canna_api. + +2005-09-29 Ben Wing + + * alloca.c (xemacs_c_alloca): + Don't declare a variable `register' when it can be passed to + xfree(), which may take its address. + + new -> new_. + +2005-09-26 Marcus Crestani + + * symbols.c (check_module_subr): Fix new allocator's module + support: remove duplicating the subr. + +2005-09-27 Ben Wing + + * glyphs.c: + * glyphs.c (find_instantiator_differences): + * glyphs.c (Fvalid_image_instance_type_p): + * glyphs.c (Fimage_instance_type): + * glyphs.c (Fcolorize_image_instance): + * glyphs.c (Fglyph_type): + * glyphs.c (glyph_image_instance): + * glyphs.c (image_instantiator_format_create): + * glyphs-eimage.c: + * glyphs-eimage.c (jpeg_instantiate): + * glyphs-eimage.c (gif_instantiate): + * glyphs-eimage.c (png_instantiate): + * glyphs-eimage.c (tiff_instantiate): + * glyphs-x.c: + * glyphs-x.c (image_instance_convert_to_pointer): + * glyphs-x.c (init_image_instance_from_x_image): + * glyphs-x.c (x_init_image_instance_from_eimage): + * glyphs-x.c (x_xpm_instantiate): + * glyphs-x.c (x_colorize_image_instance): + * glyphs-gtk.c: + * glyphs-gtk.c (image_instance_convert_to_pointer): + * glyphs-gtk.c (init_image_instance_from_gdk_image): + * glyphs-gtk.c (gtk_init_image_instance_from_eimage): + * glyphs-gtk.c (gtk_xpm_instantiate): + * glyphs-msw.c: + * glyphs-msw.c (mswindows_init_image_instance_from_eimage): + * console-impl.h: + * console-impl.h (struct console_methods): + Allow all kinds of color images (GIF, JPEG, ...) to be mouse pointers. + new -> new_, 'foo -> `foo'. + +2005-09-27 Ben Wing + + * Makefile.in.in (cppflags): + Always include SRC, so in lib-src always works. + +2005-09-27 Ben Wing + + * sysdep.c (emacs_set_tty): + * sysdep.c (qxe_link): + * sysdep.c (qxe_rename): + * sysdep.c (dup2): + Fix bit-rotted dup2 code. Also new -> new_. + * nt.c: + * nt.c (mswindows_closedir): + * nt.c (mswindows_link): + Fix possible use of uninitialized var. Also new -> new_. + +2005-09-27 Ben Wing + + * text.c (wcscmp_ascii): + * text.c (COPY_TEXT_BETWEEN_FORMATS): + * event-Xt.c (x_event_to_emacs_event): + * event-Xt.c (ShellVisualPatch): + * lisp.h: + * lisp.h (assert_with_message): + * number-gmp.c (bigfloat_to_string): + * number-gmp.h: + Fix compilation warnings. A couple of changes of new -> new_, + 'foo -> `foo'. + +2005-09-26 Ben Wing + + * specifier.c: + * specifier.c (Fvalid_specifier_type_p): + * specifier.c (Fvalid_specifier_locale_p): + * specifier.c (Fvalid_specifier_domain_p): + * specifier.c (Fvalid_specifier_locale_type_p): + * specifier.c (Fdefine_specifier_tag): + * specifier.c (specifier_get_external_inst_list): + * specifier.c (Fspecifier_specs): + * specifier.c (Fspecifier_fallback): + * specifier.c (specifier_instance_from_inst_list): + * specifier.c (CHECK_INSTANCE_ENTRY): + * specifier.c (specifier_instance_1): + * specifier.c (specifier_instance): + * specifier.c (specifier_matching_foo): + * specifier.c (Fspecifier_instance): + * specifier.c (Fspecifier_instantiator): + * specifier.c (Fspecifier_matching_instance): + * specifier.c (specifier_matching_foo_from_inst_list): + * specifier.c (syms_of_specifier): + Add `specifier-instantiator' and related primitives. + +2005-09-26 Ben Wing + + * rangetab.c: + * rangetab.c (Fmap_range_table): + Fix bug in handling of range endpoints when not start-closed, end-open. + +2005-09-17 Olivier Galibert + + * intl.c (Fset_current_locale): setlocale return string is valid + only until the next setlocale call. + 2005-09-12 Mike Alexander = * intl-win32.c (mswindows_current_locale): Define in non-MULE = = = 1.1.2.9 +6 -12 XEmacs/xemacs/src/Attic/ChangeLog.Xft = Index: ChangeLog.Xft =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/ChangeLog.Xft,v retrieving revision 1.1.2.8 retrieving revision 1.1.2.9 diff -u -p -r1.1.2.8 -r1.1.2.9 --- ChangeLog.Xft 2005/09/27 16:29:28 1.1.2.8 +++ ChangeLog.Xft 2005/11/06 16:14:34 1.1.2.9 @@ -1,3 +1,9 @@ +2005-11-06 Stephen J. Turnbull + + * xft-fonts.h: + * xft-fonts.c: + Substitute new *LCRECORD* macros for #ifdef MC_ALLOC. + 2005-09-10 Clemens Fruhwirth = * glyphs-x.c (update_widget_face): Wrap error checking of rf in an @@ -11,18 +17,6 @@ 2005-09-25 Stephen J. Turnbull = * objects-x.c (x_finalize_font_instance): Add newline to message. - -2005-09-22 Stephen J. Turnbull - - * Makefile.in.in (HAVE_CANNA): Handle Canna as a module. - - * emacs.c (main_1): Update Canna initializers to *_canna_api names. - - * mule-canna.c: Moved to modules/canna/canna_api.c. - - * symsinit.h (syms_of_mule_canna): - (vars_of_mule_canna): - Rename to *_of_canna_api. = 2005-09-24 Stephen J. Turnbull = = = = 1.26.2.2 +32 -32 XEmacs/xemacs/src/EmacsFrame.c = Index: EmacsFrame.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/EmacsFrame.c,v retrieving revision 1.26.2.1 retrieving revision 1.26.2.2 diff -u -p -r1.26.2.1 -r1.26.2.2 --- EmacsFrame.c 2005/03/15 05:23:47 1.26.2.1 +++ EmacsFrame.c 2005/11/06 16:14:34 1.26.2.2 @@ -266,10 +266,10 @@ update_various_frame_slots (EmacsFrame e } = static void -EmacsFrameInitialize (Widget UNUSED (request), Widget new, +EmacsFrameInitialize (Widget UNUSED (request), Widget new_, ArgList UNUSED (unused1), Cardinal *UNUSED (unused2)) { - EmacsFrame ew =3D (EmacsFrame)new; + EmacsFrame ew =3D (EmacsFrame)new_; struct frame *f =3D ew->emacs_frame.frame; = if (!f) @@ -380,8 +380,8 @@ EmacsFrameSetValues (Widget cur_widget, = Widget new_widget, ArgList argv, Cardinal *argc) { EmacsFrame cur =3D (EmacsFrame) cur_widget; - EmacsFrame new =3D (EmacsFrame) new_widget; - struct frame *f =3D new->emacs_frame.frame; + EmacsFrame new_ =3D (EmacsFrame) new_widget; + struct frame *f =3D new_->emacs_frame.frame; in_resource_setting++; /* This function does not need to do much. Pretty much everything interesting will get done in the resize method, which will @@ -396,10 +396,10 @@ EmacsFrameSetValues (Widget cur_widget, = called or XtSetValues() is called. */ = - if (cur->emacs_frame.iconic !=3D new->emacs_frame.iconic && - FRAME_X_TOP_LEVEL_FRAME_P (new->emacs_frame.frame)) - x_wm_set_shell_iconic_p (FRAME_X_SHELL_WIDGET (new->emacs_frame.fram= e), - new->emacs_frame.iconic); + if (cur->emacs_frame.iconic !=3D new_->emacs_frame.iconic && + FRAME_X_TOP_LEVEL_FRAME_P (new_->emacs_frame.frame)) + x_wm_set_shell_iconic_p (FRAME_X_SHELL_WIDGET (new_->emacs_frame.fra= me), + new_->emacs_frame.iconic); = /* If we got here, then we were likely called as a result of the EditRes protocol, so go ahead and change scrollbar-width @@ -407,74 +407,74 @@ EmacsFrameSetValues (Widget cur_widget, = a change made to scrollbar-width etc. so don't do anything special. */ if (cur->emacs_frame.internal_border_width !=3D - new->emacs_frame.internal_border_width) + new_->emacs_frame.internal_border_width) { - f->internal_border_width =3D new->emacs_frame.internal_border_widt= h; + f->internal_border_width =3D new_->emacs_frame.internal_border_wid= th; MARK_FRAME_SIZE_SLIPPED (f); } = #ifdef HAVE_SCROLLBARS if (cur->emacs_frame.scrollbar_width !=3D - new->emacs_frame.scrollbar_width) + new_->emacs_frame.scrollbar_width) Fadd_spec_to_specifier (Vscrollbar_width, - make_int (new->emacs_frame.scrollbar_width), + make_int (new_->emacs_frame.scrollbar_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.scrollbar_height !=3D - new->emacs_frame.scrollbar_height) + new_->emacs_frame.scrollbar_height) Fadd_spec_to_specifier (Vscrollbar_height, - make_int (new->emacs_frame.scrollbar_height), + make_int (new_->emacs_frame.scrollbar_height), wrap_frame (f), Qnil, Qnil); #endif /* HAVE_SCROLLBARS */ #ifdef HAVE_TOOLBARS if (cur->emacs_frame.top_toolbar_height !=3D - new->emacs_frame.top_toolbar_height) + new_->emacs_frame.top_toolbar_height) Fadd_spec_to_specifier (Vtoolbar_size[TOP_TOOLBAR], - make_int (new->emacs_frame.top_toolbar_height), + make_int (new_->emacs_frame.top_toolbar_height), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.bottom_toolbar_height !=3D - new->emacs_frame.bottom_toolbar_height) + new_->emacs_frame.bottom_toolbar_height) Fadd_spec_to_specifier (Vtoolbar_size[BOTTOM_TOOLBAR], - make_int (new->emacs_frame.bottom_toolbar_height), + make_int (new_->emacs_frame.bottom_toolbar_height), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.left_toolbar_width !=3D - new->emacs_frame.left_toolbar_width) + new_->emacs_frame.left_toolbar_width) Fadd_spec_to_specifier (Vtoolbar_size[LEFT_TOOLBAR], - make_int (new->emacs_frame.left_toolbar_width), + make_int (new_->emacs_frame.left_toolbar_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.right_toolbar_width !=3D - new->emacs_frame.right_toolbar_width) + new_->emacs_frame.right_toolbar_width) Fadd_spec_to_specifier (Vtoolbar_size[RIGHT_TOOLBAR], - make_int (new->emacs_frame.right_toolbar_width), + make_int (new_->emacs_frame.right_toolbar_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.top_toolbar_border_width !=3D - new->emacs_frame.top_toolbar_border_width) + new_->emacs_frame.top_toolbar_border_width) Fadd_spec_to_specifier (Vtoolbar_border_width[TOP_TOOLBAR], - make_int (new->emacs_frame.top_toolbar_border_width), + make_int (new_->emacs_frame.top_toolbar_border_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.bottom_toolbar_border_width !=3D - new->emacs_frame.bottom_toolbar_border_width) + new_->emacs_frame.bottom_toolbar_border_width) Fadd_spec_to_specifier (Vtoolbar_border_width[BOTTOM_TOOLBAR], - make_int (new->emacs_frame.bottom_toolbar_border_width), + make_int (new_->emacs_frame.bottom_toolbar_border_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.left_toolbar_border_width !=3D - new->emacs_frame.left_toolbar_border_width) + new_->emacs_frame.left_toolbar_border_width) Fadd_spec_to_specifier (Vtoolbar_border_width[LEFT_TOOLBAR], - make_int (new->emacs_frame.left_toolbar_border_width), + make_int (new_->emacs_frame.left_toolbar_border_width), wrap_frame (f), Qnil, Qnil); if (cur->emacs_frame.right_toolbar_border_width !=3D - new->emacs_frame.right_toolbar_border_width) + new_->emacs_frame.right_toolbar_border_width) Fadd_spec_to_specifier (Vtoolbar_border_width[RIGHT_TOOLBAR], - make_int (new->emacs_frame.right_toolbar_border_width), + make_int (new_->emacs_frame.right_toolbar_border_width), wrap_frame (f), Qnil, Qnil); #endif /* HAVE_TOOLBARS */ = @@ -485,8 +485,8 @@ EmacsFrameSetValues (Widget cur_widget, = request might be issued as a result of hiding/showing menubar or changing toolbar placement, where we rely on relayout made by the callback, we go ahead and simulate such a call */ - if (cur->core.width =3D=3D new->core.width - && cur->core.height =3D=3D new->core.height) + if (cur->core.width =3D=3D new_->core.width + && cur->core.height =3D=3D new_->core.height) { int i; for (i =3D 0; i < (int) *argc; i++) = = = 1.7.2.1 +6 -6 XEmacs/xemacs/src/ExternalClient.c = Index: ExternalClient.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ExternalClient.c,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -p -r1.7 -r1.7.2.1 --- ExternalClient.c 2004/09/22 03:04:44 1.7 +++ ExternalClient.c 2005/11/06 16:14:35 1.7.2.1 @@ -57,7 +57,7 @@ ERROR! This ought not be getting compil extw_send_notify_3(XtDisplay((Widget)(w)), XtWindow((Widget)(w)),\ type, l0, l1, l2) = -static void externalClientInitialize (Widget req, Widget new, ArgList ar= gs, +static void externalClientInitialize (Widget req, Widget new_, ArgList a= rgs, Cardinal *num_args); static void externalClientRealize (Widget widget, XtValueMask *mask, XSetWindowAttributes *attrs); @@ -174,13 +174,13 @@ ExternalClientClassRec externalClientCla WidgetClass externalClientWidgetClass =3D (WidgetClass) &externalClientC= lassRec; = static void -externalClientInitialize (Widget UNUSED (req), Widget new, +externalClientInitialize (Widget UNUSED (req), Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - ExternalClientWidget ecw =3D (ExternalClientWidget) new; + ExternalClientWidget ecw =3D (ExternalClientWidget) new_; static int error_handler_added =3D 0; = - extw_initialize_atoms (XtDisplay (new)); + extw_initialize_atoms (XtDisplay (new_)); extw_which_side =3D extw_client_send; = #ifdef EXTW_USES_MOTIF @@ -194,7 +194,7 @@ externalClientInitialize (Widget UNUSED = = */ = - XtOverrideTranslations (new, + XtOverrideTranslations (new_, XtParseTranslationTable ("NoneTab:\n" ":focusIn()\n" ":focusOut()\n" @@ -203,7 +203,7 @@ externalClientInitialize (Widget UNUSED = = #endif = - XtAddEventHandler (new, 0, TRUE, EventHandler, (XtPointer) NULL); + XtAddEventHandler (new_, 0, TRUE, EventHandler, (XtPointer) NULL); = ecw->externalClient.shell_ready =3D False; ecw->externalClient.has_focus =3D False; = = = 1.7.2.1 +3 -3 XEmacs/xemacs/src/ExternalShell.c = Index: ExternalShell.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ExternalShell.c,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -p -r1.7 -r1.7.2.1 --- ExternalShell.c 2004/09/22 03:04:44 1.7 +++ ExternalShell.c 2005/11/06 16:14:35 1.7.2.1 @@ -153,7 +153,7 @@ extern void emacs_Xt_handle_focus_event = extw_send_notify_3(XtDisplay((Widget)(w)),\ (w)->externalShell.external_window, type, l0, l1, l2) = -static void ExternalShellInitialize (Widget req, Widget new, ArgList arg= s, +static void ExternalShellInitialize (Widget req, Widget new_, ArgList ar= gs, Cardinal *num_args); static void ExternalShellRealize (Widget wid, Mask *vmask, XSetWindowAtt= ributes *attr); @@ -252,10 +252,10 @@ ExternalShellClassRec externalShellClass WidgetClass externalShellWidgetClass =3D (WidgetClass) &externalShellCla= ssRec; = static void -ExternalShellInitialize (Widget req, Widget new, ArgList UNUSED (args), +ExternalShellInitialize (Widget req, Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - XtAddEventHandler(new, 0, + XtAddEventHandler(new_, 0, TRUE, EventHandler, (XtPointer) NULL); extw_initialize_atoms(XtDisplay(req)); extw_which_side =3D extw_shell_send; = = = 1.112.2.7 +1 -1 XEmacs/xemacs/src/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Makefile.in.in,v retrieving revision 1.112.2.6 retrieving revision 1.112.2.7 diff -u -p -r1.112.2.6 -r1.112.2.7 --- Makefile.in.in 2005/09/27 16:29:28 1.112.2.6 +++ Makefile.in.in 2005/11/06 16:14:35 1.112.2.7 @@ -200,7 +200,7 @@ mule_objs=3Dmule-ccl.o mule-charset.o mule #endif = #if defined(HAVE_CANNA) && !defined(HAVE_SHLIB) -mule_canna_objs=3D$(BLDMODULES)/canna/cannamod.o +mule_canna_objs=3D$(BLDMODULES)/canna/canna_api.o #endif = #ifdef HAVE_WNN = = = 1.103.2.3 +240 -367 XEmacs/xemacs/src/alloc.c = Index: alloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/alloc.c,v retrieving revision 1.103.2.2 retrieving revision 1.103.2.3 diff -u -p -r1.103.2.2 -r1.103.2.3 --- alloc.c 2005/07/13 04:46:23 1.103.2.2 +++ alloc.c 2005/11/06 16:14:35 1.103.2.3 @@ -1,7 +1,7 @@ /* Storage allocation and gc for XEmacs Lisp interpreter. Copyright (C) 1985-1998 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004 Ben Wing. + Copyright (C) 1995, 1996, 2001, 2002, 2003, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -94,6 +94,8 @@ static Fixnum debug_allocation_backtrace /* Number of bytes of consing done since the last gc */ static EMACS_INT consing_since_gc; EMACS_UINT total_consing; +EMACS_INT total_gc_usage; +int total_gc_usage_set; = int need_to_garbage_collect; int need_to_check_c_alloca; @@ -510,7 +512,7 @@ allocate_lisp_storage (Bytecount size) } #endif /* not MC_ALLOC */ = -#ifdef MC_ALLOC_TYPE_STATS +#if defined (MC_ALLOC) && defined (ALLOC_TYPE_STATS) static struct { int instances_in_use; @@ -579,13 +581,13 @@ dec_lrecord_stats (Bytecount size_includ = DECREMENT_CONS_COUNTER (size); } -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* not (MC_ALLOC && ALLOC_TYPE_STATS) */ = #ifndef MC_ALLOC /* lcrecords are chained together through their "next" field. After doing the mark phase, GC will walk this linked list and free any lcrecord which hasn't been marked. */ -static struct lcrecord_header *all_lcrecords; +static struct old_lcrecord_header *all_lcrecords; #endif /* not MC_ALLOC */ = #ifdef MC_ALLOC @@ -605,9 +607,9 @@ alloc_lrecord (Bytecount size, gc_checking_assert (LRECORD_FREE_P (lheader)); set_lheader_implementation (lheader, implementation); lheader->uid =3D lrecord_uid_counter++; -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_stats (size, lheader); -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ INCREMENT_CONS_COUNTER (size, implementation->name); return lheader; } @@ -627,9 +629,9 @@ noseeum_alloc_lrecord (Bytecount size, gc_checking_assert (LRECORD_FREE_P (lheader)); set_lheader_implementation (lheader, implementation); lheader->uid =3D lrecord_uid_counter++; -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_stats (size, lheader); -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ NOSEEUM_INCREMENT_CONS_COUNTER (size, implementation->name); return lheader; } @@ -651,10 +653,10 @@ free_lrecord (Lisp_Object lrecord) specified size. See lrecord.h. */ = void * -basic_alloc_lcrecord (Bytecount size, - const struct lrecord_implementation *implementation) +old_basic_alloc_lcrecord (Bytecount size, + const struct lrecord_implementation *implementation) { - struct lcrecord_header *lcheader; + struct old_lcrecord_header *lcheader; = type_checking_assert ((implementation->static_size =3D=3D 0 ? @@ -665,7 +667,7 @@ basic_alloc_lcrecord (Bytecount size, && (! (implementation->hash =3D=3D NULL && implementation->equal !=3D = NULL))); = - lcheader =3D (struct lcrecord_header *) allocate_lisp_storage (size); + lcheader =3D (struct old_lcrecord_header *) allocate_lisp_storage (siz= e); set_lheader_implementation (&lcheader->lheader, implementation); lcheader->next =3D all_lcrecords; #if 1 /* mly prefers to see small ID numbers */ @@ -687,7 +689,7 @@ basic_alloc_lcrecord (Bytecount size, * Otherwise, just let the GC do its job -- that's what it's there for */ void -very_old_free_lcrecord (struct lcrecord_header *lcrecord) +very_old_free_lcrecord (struct old_lcrecord_header *lcrecord) { if (all_lcrecords =3D=3D lcrecord) { @@ -695,10 +697,10 @@ very_old_free_lcrecord (struct lcrecord_ } else { - struct lrecord_header *header =3D all_lcrecords; + struct old_lcrecord_header *header =3D all_lcrecords; for (;;) { - struct lrecord_header *next =3D header->next; + struct old_lcrecord_header *next =3D header->next; if (next =3D=3D lcrecord) { header->next =3D lrecord->next; @@ -725,7 +727,7 @@ disksave_object_finalization_1 (void) #ifdef MC_ALLOC mc_finalize_for_disksave (); #else /* not MC_ALLOC */ - struct lcrecord_header *header; + struct old_lcrecord_header *header; = for (header =3D all_lcrecords; header; header =3D header->next) { @@ -758,9 +760,11 @@ copy_lisp_object (Lisp_Object dst, Lisp_ (char *) XRECORD_LHEADER (src) + sizeof (struct lrecord_header), size - sizeof (struct lrecord_header)); else - memcpy ((char *) XRECORD_LHEADER (dst) + sizeof (struct lcrecord_hea= der), - (char *) XRECORD_LHEADER (src) + sizeof (struct lcrecord_header), - size - sizeof (struct lcrecord_header)); + memcpy ((char *) XRECORD_LHEADER (dst) + + sizeof (struct old_lcrecord_header), + (char *) XRECORD_LHEADER (src) + + sizeof (struct old_lcrecord_header), + size - sizeof (struct old_lcrecord_header)); #endif /* not MC_ALLOC */ } = @@ -809,7 +813,9 @@ dbg_eq (Lisp_Object obj1, Lisp_Object ob } = =0C -#ifndef MC_ALLOC +#ifdef MC_ALLOC +#define DECLARE_FIXED_TYPE_ALLOC(type, structture) struct __foo__ +#else /***********************************************************************= */ /* Fixed-size type macros */ /***********************************************************************= */ @@ -1083,7 +1089,6 @@ do \ NOSEEUM_INCREMENT_CONS_COUNTER (sizeof (structtype), #type); \ } while (0) = - /* Lisp_Free is the type to represent a free list member inside a frob block of any lisp object type. */ typedef struct Lisp_Free @@ -1170,18 +1175,42 @@ do { FREE_FIXED_TYPE (type, structtype, = #endif #endif /* not MC_ALLOC */ = +#ifdef MC_ALLOC +#define ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, lrec_ptr)= \ +do { \ + (var) =3D alloc_lrecord_type (lisp_type, lrec_ptr); \ +} while (0) +#define NOSEEUM_ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, \ + lrec_ptr) \ +do { \ + (var) =3D noseeum_alloc_lrecord_type (lisp_type, lrec_ptr); \ +} while (0) +#else /* not MC_ALLOC */ +#define ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, lrec_ptr)= \ +do \ +{ \ + ALLOCATE_FIXED_TYPE (type, lisp_type, var); \ + set_lheader_implementation (&(var)->lheader, lrec_ptr); \ +} while (0) +#define NOSEEUM_ALLOCATE_FIXED_TYPE_AND_SET_IMPL(type, lisp_type, var, \ + lrec_ptr) \ +do \ +{ \ + NOSEEUM_ALLOCATE_FIXED_TYPE (type, lisp_type, var); \ + set_lheader_implementation (&(var)->lheader, lrec_ptr); \ +} while (0) +#endif /* MC_ALLOC */ + = =0C /***********************************************************************= */ /* Cons allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (cons, Lisp_Cons); /* conses are used and freed so often that we set this really high */ /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_cons 20000 */ #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_cons 2000 -#endif /* not MC_ALLOC */ = static Lisp_Object mark_cons (Lisp_Object obj) @@ -1235,12 +1264,7 @@ Create a new cons, give it CAR and CDR a Lisp_Object val; Lisp_Cons *c; = -#ifdef MC_ALLOC - c =3D alloc_lrecord_type (Lisp_Cons, &lrecord_cons); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (cons, Lisp_Cons, c); - set_lheader_implementation (&c->lheader, &lrecord_cons); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (cons, Lisp_Cons, c, &lrecord_cons); val =3D wrap_cons (c); XSETCAR (val, car); XSETCDR (val, cdr); @@ -1256,12 +1280,7 @@ noseeum_cons (Lisp_Object car, Lisp_Obje Lisp_Object val; Lisp_Cons *c; = -#ifdef MC_ALLOC - c =3D noseeum_alloc_lrecord_type (Lisp_Cons, &lrecord_cons); -#else /* not MC_ALLOC */ - NOSEEUM_ALLOCATE_FIXED_TYPE (cons, Lisp_Cons, c); - set_lheader_implementation (&c->lheader, &lrecord_cons); -#endif /* not MC_ALLOC */ + NOSEEUM_ALLOCATE_FIXED_TYPE_AND_SET_IMPL (cons, Lisp_Cons, c, &lrecord= _cons); val =3D wrap_cons (c); XCAR (val) =3D car; XCDR (val) =3D cdr; @@ -1363,27 +1382,20 @@ Return a new list of length LENGTH, with = /*** With enhanced number support, these are short floats */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (float, Lisp_Float); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_float 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_float (double float_value) { Lisp_Float *f; = -#ifdef MC_ALLOC - f =3D alloc_lrecord_type (Lisp_Float, &lrecord_float); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (float, Lisp_Float, f); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (float, Lisp_Float, f, &lrecord_float= ); = /* Avoid dump-time `uninitialized memory read' purify warnings. */ if (sizeof (struct lrecord_header) + sizeof (double) !=3D sizeof (*f)) - xzero (*f); -#endif /* not MC_ALLOC */ + zero_lrecord (f); = - set_lheader_implementation (&f->lheader, &lrecord_float); float_data (f) =3D float_value; return wrap_float (f); } @@ -1395,10 +1407,8 @@ make_float (double float_value) = /*** Bignum ***/ #ifdef HAVE_BIGNUM -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (bignum, Lisp_Bignum); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_bignum 250 -#endif /* not MC_ALLOC */ = /* WARNING: This function returns a bignum even if its argument fits int= o a fixnum. See Fcanonicalize_number(). */ @@ -1407,12 +1417,7 @@ make_bignum (long bignum_value) { Lisp_Bignum *b; = -#ifdef MC_ALLOC - b =3D alloc_lrecord_type (Lisp_Bignum, &lrecord_bignum); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (bignum, Lisp_Bignum, b); - set_lheader_implementation (&b->lheader, &lrecord_bignum); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (bignum, Lisp_Bignum, b, &lrecord_big= num); bignum_init (bignum_data (b)); bignum_set_long (bignum_data (b), bignum_value); return wrap_bignum (b); @@ -1425,12 +1430,7 @@ make_bignum_bg (bignum bg) { Lisp_Bignum *b; = -#ifdef MC_ALLOC - b =3D alloc_lrecord_type (Lisp_Bignum, &lrecord_bignum); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (bignum, Lisp_Bignum, b); - set_lheader_implementation (&b->lheader, &lrecord_bignum); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (bignum, Lisp_Bignum, b, &lrecord_big= num); bignum_init (bignum_data (b)); bignum_set (bignum_data (b), bg); return wrap_bignum (b); @@ -1439,22 +1439,15 @@ make_bignum_bg (bignum bg) = /*** Ratio ***/ #ifdef HAVE_RATIO -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (ratio, Lisp_Ratio); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_ratio 250 -#endif /* not MC_ALLOC */ = Lisp_Object make_ratio (long numerator, unsigned long denominator) { Lisp_Ratio *r; = -#ifdef MC_ALLOC - r =3D alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); - set_lheader_implementation (&r->lheader, &lrecord_ratio); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (ratio, Lisp_Ratio, r, &lrecord_ratio= ); ratio_init (ratio_data (r)); ratio_set_long_ulong (ratio_data (r), numerator, denominator); ratio_canonicalize (ratio_data (r)); @@ -1466,12 +1459,7 @@ make_ratio_bg (bignum numerator, bignum = { Lisp_Ratio *r; = -#ifdef MC_ALLOC - r =3D alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); - set_lheader_implementation (&r->lheader, &lrecord_ratio); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (ratio, Lisp_Ratio, r, &lrecord_ratio= ); ratio_init (ratio_data (r)); ratio_set_bignum_bignum (ratio_data (r), numerator, denominator); ratio_canonicalize (ratio_data (r)); @@ -1483,12 +1471,7 @@ make_ratio_rt (ratio rat) { Lisp_Ratio *r; = -#ifdef MC_ALLOC - r =3D alloc_lrecord_type (Lisp_Ratio, &lrecord_ratio); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (ratio, Lisp_Ratio, r); - set_lheader_implementation (&r->lheader, &lrecord_ratio); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (ratio, Lisp_Ratio, r, &lrecord_ratio= ); ratio_init (ratio_data (r)); ratio_set (ratio_data (r), rat); return wrap_ratio (r); @@ -1497,10 +1480,8 @@ make_ratio_rt (ratio rat) = /*** Bigfloat ***/ #ifdef HAVE_BIGFLOAT -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (bigfloat, Lisp_Bigfloat); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_bigfloat 250 -#endif /* not MC_ALLOC */ = /* This function creates a bigfloat with the default precision if the PRECISION argument is zero. */ @@ -1509,12 +1490,7 @@ make_bigfloat (double float_value, unsig { Lisp_Bigfloat *f; = -#ifdef MC_ALLOC - f =3D alloc_lrecord_type (Lisp_Bigfloat, &lrecord_bigfloat); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (bigfloat, Lisp_Bigfloat, f); - set_lheader_implementation (&f->lheader, &lrecord_bigfloat); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (bigfloat, Lisp_Bigfloat, f, &lrecord= _bigfloat); if (precision =3D=3D 0UL) bigfloat_init (bigfloat_data (f)); else @@ -1529,12 +1505,7 @@ make_bigfloat_bf (bigfloat float_value) { Lisp_Bigfloat *f; = -#ifdef MC_ALLOC - f =3D alloc_lrecord_type (Lisp_Bigfloat, &lrecord_bigfloat); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (bigfloat, Lisp_Bigfloat, f); - set_lheader_implementation (&f->lheader, &lrecord_bigfloat); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (bigfloat, Lisp_Bigfloat, f, &lrecord= _bigfloat); bigfloat_init_prec (bigfloat_data (f), bigfloat_get_prec (float_value)= ); bigfloat_set (bigfloat_data (f), float_value); return wrap_bigfloat (f); @@ -1611,11 +1582,7 @@ make_vector_internal (Elemcount sizei) Bytecount sizem =3D FLEXIBLE_ARRAY_STRUCT_SIZEOF (Lisp_Vector, Lisp_Ob= ject, contents, sizei); Lisp_Vector *p =3D -#ifdef MC_ALLOC - (Lisp_Vector *) alloc_lrecord (sizem, &lrecord_vector); -#else /* not MC_ALLOC */ - (Lisp_Vector *) basic_alloc_lcrecord (sizem, &lrecord_vector); -#endif /* not MC_ALLOC */ + (Lisp_Vector *) BASIC_ALLOC_LCRECORD (sizem, &lrecord_vector); = p->size =3D sizei; return p; @@ -1772,11 +1739,7 @@ make_bit_vector_internal (Elemcount size unsigned long, bits, num_longs); Lisp_Bit_Vector *p =3D (Lisp_Bit_Vector *) -#ifdef MC_ALLOC - alloc_lrecord (sizem, &lrecord_bit_vector); -#else /* not MC_ALLOC */ - basic_alloc_lcrecord (sizem, &lrecord_bit_vector); -#endif /* not MC_ALLOC */ + BASIC_ALLOC_LCRECORD (sizem, &lrecord_bit_vector); = bit_vector_length (p) =3D sizei; return p; @@ -1852,22 +1815,16 @@ Each argument must be one of the integer /* Compiled-function allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (compiled_function, Lisp_Compiled_Function); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_compiled_function 1000 -#endif /* not MC_ALLOC */ = static Lisp_Object make_compiled_function (void) { Lisp_Compiled_Function *f; = -#ifdef MC_ALLOC - f =3D alloc_lrecord_type (Lisp_Compiled_Function, &lrecord_compiled_fu= nction); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (compiled_function, Lisp_Compiled_Function, f); - set_lheader_implementation (&f->lheader, &lrecord_compiled_function); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (compiled_function, Lisp_Compiled_Fun= ction, + f, &lrecord_compiled_function); = f->stack_depth =3D 0; f->specpdl_depth =3D 0; @@ -1999,10 +1956,8 @@ This is terrible behavior which is retai /* Symbol allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (symbol, Lisp_Symbol); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_symbol 1000 -#endif /* not MC_ALLOC */ = DEFUN ("make-symbol", Fmake_symbol, 1, 1, 0, /* Return a newly allocated uninterned symbol whose name is NAME. @@ -2014,12 +1969,7 @@ Its value and function definition are vo = CHECK_STRING (name); = -#ifdef MC_ALLOC - p =3D alloc_lrecord_type (Lisp_Symbol, &lrecord_symbol); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (symbol, Lisp_Symbol, p); - set_lheader_implementation (&p->lheader, &lrecord_symbol); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (symbol, Lisp_Symbol, p, &lrecord_sym= bol); p->name =3D name; p->plist =3D Qnil; p->value =3D Qunbound; @@ -2033,22 +1983,15 @@ Its value and function definition are vo /* Extent allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (extent, struct extent); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_extent 1000 -#endif /* not MC_ALLOC */ = struct extent * allocate_extent (void) { struct extent *e; = -#ifdef MC_ALLOC - e =3D alloc_lrecord_type (struct extent, &lrecord_extent); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (extent, struct extent, e); - set_lheader_implementation (&e->lheader, &lrecord_extent); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (extent, struct extent, e, &lrecord_e= xtent); extent_object (e) =3D Qnil; set_extent_start (e, -1); set_extent_end (e, -1); @@ -2068,221 +2011,151 @@ allocate_extent (void) /* Event allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (event, Lisp_Event); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_event 1000 -#endif /* not MC_ALLOC */ = Lisp_Object allocate_event (void) { Lisp_Event *e; = -#ifdef MC_ALLOC - e =3D alloc_lrecord_type (Lisp_Event, &lrecord_event); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (event, Lisp_Event, e); - set_lheader_implementation (&e->lheader, &lrecord_event); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (event, Lisp_Event, e, &lrecord_event= ); = return wrap_event (e); } = #ifdef EVENT_DATA_AS_OBJECTS -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (key_data, Lisp_Key_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_key_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_key_data (void) { Lisp_Key_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Key_Data, &lrecord_key_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (key_data, Lisp_Key_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_key_data); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (key_data, Lisp_Key_Data, d, + &lrecord_key_data); + zero_lrecord (d); d->keysym =3D Qnil; = return wrap_key_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (button_data, Lisp_Button_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_button_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_button_data (void) { Lisp_Button_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Button_Data, &lrecord_button_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (button_data, Lisp_Button_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_button_data); - -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (button_data, Lisp_Button_Data, d, &l= record_button_data); + zero_lrecord (d); return wrap_button_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (motion_data, Lisp_Motion_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_motion_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_motion_data (void) { Lisp_Motion_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Motion_Data, &lrecord_motion_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (motion_data, Lisp_Motion_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_motion_data); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (motion_data, Lisp_Motion_Data, d, &l= record_motion_data); + zero_lrecord (d); = return wrap_motion_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (process_data, Lisp_Process_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_process_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_process_data (void) { Lisp_Process_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Process_Data, &lrecord_process_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (process_data, Lisp_Process_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_process_data); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (process_data, Lisp_Process_Data, d, = &lrecord_process_data); + zero_lrecord (d); d->process =3D Qnil; -#endif /* not MC_ALLOC */ = return wrap_process_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (timeout_data, Lisp_Timeout_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_timeout_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_timeout_data (void) { Lisp_Timeout_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Timeout_Data, &lrecord_timeout_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (timeout_data, Lisp_Timeout_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_timeout_data); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (timeout_data, Lisp_Timeout_Data, d, = &lrecord_timeout_data); + zero_lrecord (d); d->function =3D Qnil; d->object =3D Qnil; -#endif /* not MC_ALLOC */ = return wrap_timeout_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (magic_data, Lisp_Magic_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_magic_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_magic_data (void) { Lisp_Magic_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Magic_Data, &lrecord_magic_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (magic_data, Lisp_Magic_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_magic_data); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (magic_data, Lisp_Magic_Data, d, &lre= cord_magic_data); + zero_lrecord (d); = return wrap_magic_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (magic_eval_data, Lisp_Magic_Eval_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_magic_eval_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_magic_eval_data (void) { Lisp_Magic_Eval_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Magic_Eval_Data, &lrecord_magic_eval_da= ta); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (magic_eval_data, Lisp_Magic_Eval_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_magic_eval_data); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (magic_eval_data, Lisp_Magic_Eval_Dat= a, d, &lrecord_magic_eval_data); + zero_lrecord (d); d->object =3D Qnil; -#endif /* not MC_ALLOC */ = return wrap_magic_eval_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (eval_data, Lisp_Eval_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_eval_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_eval_data (void) { Lisp_Eval_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Eval_Data, &lrecord_eval_data); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (eval_data, Lisp_Eval_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_eval_data); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (eval_data, Lisp_Eval_Data, d, &lreco= rd_eval_data); + zero_lrecord (d); d->function =3D Qnil; d->object =3D Qnil; -#endif /* not MC_ALLOC */ = return wrap_eval_data (d); } = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (misc_user_data, Lisp_Misc_User_Data); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_misc_user_data 1000 -#endif /* not MC_ALLOC */ = Lisp_Object make_misc_user_data (void) { Lisp_Misc_User_Data *d; = -#ifdef MC_ALLOC - d =3D alloc_lrecord_type (Lisp_Misc_User_Data, &lrecord_misc_user_data= ); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (misc_user_data, Lisp_Misc_User_Data, d); - xzero (*d); - set_lheader_implementation (&d->lheader, &lrecord_misc_user_data); + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (misc_user_data, Lisp_Misc_User_Data,= d, &lrecord_misc_user_data); + zero_lrecord (d); d->function =3D Qnil; d->object =3D Qnil; -#endif /* not MC_ALLOC */ = return wrap_misc_user_data (d); } @@ -2293,10 +2166,8 @@ make_misc_user_data (void) /* Marker allocation */ /***********************************************************************= */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (marker, Lisp_Marker); #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_marker 1000 -#endif /* not MC_ALLOC */ = DEFUN ("make-marker", Fmake_marker, 0, 0, 0, /* Return a new marker which does not point at any place. @@ -2305,12 +2176,7 @@ Return a new marker which does not point { Lisp_Marker *p; = -#ifdef MC_ALLOC - p =3D alloc_lrecord_type (Lisp_Marker, &lrecord_marker); -#else /* not MC_ALLOC */ - ALLOCATE_FIXED_TYPE (marker, Lisp_Marker, p); - set_lheader_implementation (&p->lheader, &lrecord_marker); -#endif /* not MC_ALLOC */ + ALLOCATE_FIXED_TYPE_AND_SET_IMPL (marker, Lisp_Marker, p, &lrecord_mar= ker); p->buffer =3D 0; p->membpos =3D 0; marker_next (p) =3D 0; @@ -2324,12 +2190,8 @@ noseeum_make_marker (void) { Lisp_Marker *p; = -#ifdef MC_ALLOC - p =3D noseeum_alloc_lrecord_type (Lisp_Marker, &lrecord_marker); -#else /* not MC_ALLOC */ - NOSEEUM_ALLOCATE_FIXED_TYPE (marker, Lisp_Marker, p); - set_lheader_implementation (&p->lheader, &lrecord_marker); -#endif /* not MC_ALLOC */ + NOSEEUM_ALLOCATE_FIXED_TYPE_AND_SET_IMPL (marker, Lisp_Marker, p, + &lrecord_marker); p->buffer =3D 0; p->membpos =3D 0; marker_next (p) =3D 0; @@ -2356,12 +2218,10 @@ noseeum_make_marker (void) = This new method makes things somewhat bigger, but it is MUCH safer. = */ = -#ifndef MC_ALLOC DECLARE_FIXED_TYPE_ALLOC (string, Lisp_String); /* strings are used and freed quite often */ /* #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 10000 */ #define MINIMUM_ALLOWED_FIXED_TYPE_CELLS_string 1000 -#endif /* not MC_ALLOC */ = static Lisp_Object mark_string (Lisp_Object obj) @@ -2492,9 +2352,9 @@ finalize_string (void *header, int for_d { Lisp_String *s =3D (Lisp_String *) header; Bytecount size =3D s->size_; -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS dec_lrecord_string_data_stats (size); -#endif /* MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ if (BIG_STRING_SIZE_P (size)) xfree (s->data_, Ibyte *); } @@ -2614,9 +2474,9 @@ make_uninit_string (Bytecount length) = #ifdef MC_ALLOC s =3D alloc_lrecord_type (Lisp_String, &lrecord_string); -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_string_data_stats (length); -#endif /* MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ #else /* not MC_ALLOC */ /* Allocate the string header */ ALLOCATE_FIXED_TYPE (string, Lisp_String, s); @@ -3000,9 +2860,9 @@ make_string_nocopy (const Ibyte *content = #ifdef MC_ALLOC s =3D alloc_lrecord_type (Lisp_String, &lrecord_string); -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_string_data_stats (length); -#endif /* MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ mcpro (wrap_pointer_1 (s)); /* otherwise nocopy_strings get collected and static data is tried to be freed. */ @@ -3029,7 +2889,7 @@ make_string_nocopy (const Ibyte *content /***********************************************************************= */ = /* Lcrecord lists are used to manage the allocation of particular - sorts of lcrecords, to avoid calling basic_alloc_lcrecord() (and thus + sorts of lcrecords, to avoid calling BASIC_ALLOC_LCRECORD() (and thus malloc() and garbage-collection junk) as much as possible. It is similar to the Blocktype class. = @@ -3101,11 +2961,11 @@ Lisp_Object make_lcrecord_list (Elemcount size, const struct lrecord_implementation *implementation) { - /* Don't use alloc_lcrecord_type() avoid infinite recursion + /* Don't use old_alloc_lcrecord_type() avoid infinite recursion allocating this, */ struct lcrecord_list *p =3D (struct lcrecord_list *) - basic_alloc_lcrecord (sizeof (struct lcrecord_list), - &lrecord_lcrecord_list); + old_basic_alloc_lcrecord (sizeof (struct lcrecord_list), + &lrecord_lcrecord_list); = p->implementation =3D implementation; p->size =3D size; @@ -3147,12 +3007,12 @@ alloc_managed_lcrecord (Lisp_Object lcre free_header->lcheader.free =3D 0; /* Put back the correct type, as we set it to lrecord_type_free. */ lheader->type =3D list->implementation->lrecord_type_index; - zero_sized_lcrecord (free_header, list->size); + old_zero_sized_lcrecord (free_header, list->size); return val; } else - return wrap_pointer_1 (basic_alloc_lcrecord (list->size, - list->implementation)); + return wrap_pointer_1 (old_basic_alloc_lcrecord (list->size, + list->implementation)); } = /* "Free" a Lisp object LCRECORD by placing it on its associated free li= st @@ -3223,7 +3083,7 @@ alloc_automanaged_lcrecord (Bytecount si } = void -free_lcrecord (Lisp_Object rec) +old_free_lcrecord (Lisp_Object rec) { int type =3D XRECORD_LHEADER (rec)->type; = @@ -3759,7 +3619,7 @@ lispdesc_block_size_1 (const void *obj, = #define GC_CHECK_NOT_FREE(lheader) \ gc_checking_assert (! LRECORD_FREE_P (lheader)); \ gc_checking_assert (LHEADER_IMPLEMENTATION (lheader)->basic_p || \ - ! ((struct lcrecord_header *) lheader)->free) + ! ((struct old_lcrecord_header *) lheader)->free) #endif /* MC_ALLOC */ = #ifdef USE_KKCC @@ -4290,7 +4150,7 @@ tick_lcrecord_stats (const struct lrecor { int type_index =3D h->type; = - if (((struct lcrecord_header *) h)->free) + if (((struct old_lcrecord_header *) h)->free) { gc_checking_assert (!free_p); lcrecord_stats[type_index].instances_on_free_list++; @@ -4317,9 +4177,9 @@ tick_lcrecord_stats (const struct lrecor #ifndef MC_ALLOC /* Free all unmarked records */ static void -sweep_lcrecords_1 (struct lcrecord_header **prev, int *used) +sweep_lcrecords_1 (struct old_lcrecord_header **prev, int *used) { - struct lcrecord_header *header; + struct old_lcrecord_header *header; int num_used =3D 0; /* int total_size =3D 0; */ = @@ -4364,11 +4224,11 @@ sweep_lcrecords_1 (struct lcrecord_heade } else { - struct lcrecord_header *next =3D header->next; + struct old_lcrecord_header *next =3D header->next; *prev =3D next; tick_lcrecord_stats (h, 1); /* used to call finalizer right here. */ - xfree (header, struct lcrecord_header *); + xfree (header, struct old_lcrecord_header *); header =3D next; } } @@ -5525,13 +5385,13 @@ garbage_collect_1 (void) } = { - struct catchtag *catch; - for (catch =3D catchlist; catch; catch =3D catch->next) + struct catchtag *c; + for (c =3D catchlist; c; c =3D c->next) { - mark_object (catch->tag); - mark_object (catch->val); - mark_object (catch->actual_tag); - mark_object (catch->backtrace); + mark_object (c->tag); + mark_object (c->val); + mark_object (c->actual_tag); + mark_object (c->backtrace); } } = @@ -5667,10 +5527,10 @@ garbage_collect_1 (void) return; } = -#ifdef MC_ALLOC -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS + static Lisp_Object -gc_plist_hack (const Ascbyte *name, int value, Lisp_Object tail) +gc_plist_hack (const Ascbyte *name, EMACS_INT value, Lisp_Object tail) { /* C doesn't have local functions (or closures, or GC, or readable syn= tax, or portable numeric datatypes, or bit-vectors, or characters, or @@ -5678,13 +5538,14 @@ gc_plist_hack (const Ascbyte *name, int = return cons3 (intern (name), make_int (value), tail); } = -DEFUN("lrecord-stats", Flrecord_stats, 0, 0 ,"", /* -Return statistics about lrecords in a property list. -*/ - ()) +static Lisp_Object +object_memory_usage_stats (int set_total_gc_usage) { Lisp_Object pl =3D Qnil; int i; + EMACS_INT tgu_val =3D 0; + +#ifdef MC_ALLOC = for (i =3D 0; i < (countof (lrecord_implementations_table) + MODULE_DEFINABLE_TYPE_COUNT); i++) @@ -5709,6 +5570,7 @@ Return statistics about lrecords in a pr pl =3D gc_plist_hack (buf, = lrecord_stats[i].bytes_in_use, pl); + tgu_val +=3D lrecord_stats[i].bytes_in_use_including_overhead; = if (name[len-1] =3D=3D 's') sprintf (buf, "%ses-used", name); @@ -5723,85 +5585,18 @@ Return statistics about lrecords in a pr lrecord_string_data_bytes_in_use, pl); pl =3D gc_plist_hack ("string-data-used", = lrecord_string_data_instances_in_use, pl); - = - return pl; -} -#endif /* not MC_ALLOC_TYPE_STATS */ + tgu_val +=3D lrecord_string_data_bytes_in_use_including_overhead; = -DEFUN ("garbage-collect", Fgarbage_collect, 0, 0, "", /* -Reclaim storage for Lisp objects no longer needed. -Return info on amount of space in use: - ((USED-CONSES . STORAGE-CONSES) (USED-SYMS . STORAGE-SYMS) - (USED-MARKERS . STORAGE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS - PLIST) - where `PLIST' is a list of alternating keyword/value pairs providing - more detailed information. -Garbage collection happens automatically if you cons more than -`gc-cons-threshold' bytes of Lisp data since previous garbage collection. -*/ - ()) -{ - garbage_collect_1 (); - -#ifdef MC_ALLOC_TYPE_STATS - /* The things we do for backwards-compatibility */ - return - list6 = - (Fcons (make_int (lrecord_stats[lrecord_type_cons].instances_in_use), - make_int (lrecord_stats[lrecord_type_cons] - .bytes_in_use_including_overhead)), - Fcons (make_int (lrecord_stats[lrecord_type_symbol].instances_in_us= e), - make_int (lrecord_stats[lrecord_type_symbol] - .bytes_in_use_including_overhead)), - Fcons (make_int (lrecord_stats[lrecord_type_marker].instances_in_us= e), - make_int (lrecord_stats[lrecord_type_marker] - .bytes_in_use_including_overhead)), - make_int (lrecord_stats[lrecord_type_string] - .bytes_in_use_including_overhead), - make_int (lrecord_stats[lrecord_type_vector] - .bytes_in_use_including_overhead), - Flrecord_stats ()); -#else /* not MC_ALLOC_TYPE_STATS */ - return Qnil; -#endif /* not MC_ALLOC_TYPE_STATS */ -} #else /* not MC_ALLOC */ -/* Debugging aids. */ = -static Lisp_Object -gc_plist_hack (const Ascbyte *name, int value, Lisp_Object tail) -{ - /* C doesn't have local functions (or closures, or GC, or readable syn= tax, - or portable numeric datatypes, or bit-vectors, or characters, or - arrays, or exceptions, or ...) */ - return cons3 (intern (name), make_int (value), tail); -} - #define HACK_O_MATIC(type, name, pl) do { \ - int s =3D 0; \ + EMACS_INT s =3D 0; \ struct type##_block *x =3D current_##type##_block; \ while (x) { s +=3D sizeof (*x) + MALLOC_OVERHEAD; x =3D x->prev; } \ + tgu_val +=3D s; \ (pl) =3D gc_plist_hack ((name), s, (pl)); \ } while (0) = -DEFUN ("garbage-collect", Fgarbage_collect, 0, 0, "", /* -Reclaim storage for Lisp objects no longer needed. -Return info on amount of space in use: - ((USED-CONSES . FREE-CONSES) (USED-SYMS . FREE-SYMS) - (USED-MARKERS . FREE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS - PLIST) - where `PLIST' is a list of alternating keyword/value pairs providing - more detailed information. -Garbage collection happens automatically if you cons more than -`gc-cons-threshold' bytes of Lisp data since previous garbage collection. -*/ - ()) -{ - Lisp_Object pl =3D Qnil; - int i; - int gc_count_vector_total_size =3D 0; - garbage_collect_1 (); - for (i =3D 0; i < lrecord_type_count; i++) { if (lcrecord_stats[i].bytes_in_use !=3D 0 @@ -5811,13 +5606,10 @@ Garbage collection happens automatically char buf [255]; const char *name =3D lrecord_implementations_table[i]->name; int len =3D strlen (name); - /* save this for the FSFmacs-compatible part of the summary */ - if (i =3D=3D lrecord_type_vector) - gc_count_vector_total_size =3D - lcrecord_stats[i].bytes_in_use + lcrecord_stats[i].bytes_freed; = sprintf (buf, "%s-storage", name); pl =3D gc_plist_hack (buf, lcrecord_stats[i].bytes_in_use, pl); + tgu_val +=3D lcrecord_stats[i].bytes_in_use; /* Okay, simple pluralization check for `symbol-value-varalias' */ if (name[len-1] =3D=3D 's') sprintf (buf, "%ses-freed", name); @@ -5895,8 +5687,71 @@ Garbage collection happens automatically pl =3D gc_plist_hack ("conses-free", gc_count_num_cons_freelist, pl); pl =3D gc_plist_hack ("conses-used", gc_count_num_cons_in_use, pl); = +#undef HACK_O_MATIC + +#endif /* MC_ALLOC */ + + if (set_total_gc_usage) + { + total_gc_usage =3D tgu_val; + total_gc_usage_set =3D 1; + } + + return pl; +} + +DEFUN("object-memory-usage-stats", Fobject_memory_usage_stats, 0, 0 ,"",= /* +Return statistics about memory usage of Lisp objects. +*/ + ()) +{ + return object_memory_usage_stats (0); +} + +#endif /* ALLOC_TYPE_STATS */ + +/* Debugging aids. */ + +DEFUN ("garbage-collect", Fgarbage_collect, 0, 0, "", /* +Reclaim storage for Lisp objects no longer needed. +Return info on amount of space in use: + ((USED-CONSES . FREE-CONSES) (USED-SYMS . FREE-SYMS) + (USED-MARKERS . FREE-MARKERS) USED-STRING-CHARS USED-VECTOR-SLOTS + PLIST) + where `PLIST' is a list of alternating keyword/value pairs providing + more detailed information. +Garbage collection happens automatically if you cons more than +`gc-cons-threshold' bytes of Lisp data since previous garbage collection. +*/ + ()) +{ + /* Record total usage for purposes of determining next GC */ + garbage_collect_1 (); + + /* This will get set to 1, and total_gc_usage computed, as part of the + call to object_memory_usage_stats() -- if ALLOC_TYPE_STATS is enabl= ed. */ + total_gc_usage_set =3D 0; +#ifdef ALLOC_TYPE_STATS /* The things we do for backwards-compatibility */ +#ifdef MC_ALLOC return + list6 = + (Fcons (make_int (lrecord_stats[lrecord_type_cons].instances_in_use), + make_int (lrecord_stats[lrecord_type_cons] + .bytes_in_use_including_overhead)), + Fcons (make_int (lrecord_stats[lrecord_type_symbol].instances_in_us= e), + make_int (lrecord_stats[lrecord_type_symbol] + .bytes_in_use_including_overhead)), + Fcons (make_int (lrecord_stats[lrecord_type_marker].instances_in_us= e), + make_int (lrecord_stats[lrecord_type_marker] + .bytes_in_use_including_overhead)), + make_int (lrecord_stats[lrecord_type_string] + .bytes_in_use_including_overhead), + make_int (lrecord_stats[lrecord_type_vector] + .bytes_in_use_including_overhead), + object_memory_usage_stats (1)); +#else /* not MC_ALLOC */ + return list6 (Fcons (make_int (gc_count_num_cons_in_use), make_int (gc_count_num_cons_freelist)), Fcons (make_int (gc_count_num_symbol_in_use), @@ -5904,11 +5759,14 @@ Garbage collection happens automatically Fcons (make_int (gc_count_num_marker_in_use), make_int (gc_count_num_marker_freelist)), make_int (gc_count_string_total_size), - make_int (gc_count_vector_total_size), - pl); -} -#undef HACK_O_MATIC + make_int (lcrecord_stats[lrecord_type_vector].bytes_in_use + + lcrecord_stats[lrecord_type_vector].bytes_freed), + object_memory_usage_stats (1)); #endif /* not MC_ALLOC */ +#else /* not ALLOC_TYPE_STATS */ + return Qnil; +#endif /* ALLOC_TYPE_STATS */ +} = DEFUN ("consing-since-gc", Fconsing_since_gc, 0, 0, "", /* Return the number of bytes consed since the last garbage collection. @@ -5934,15 +5792,30 @@ The value is divided by 1024 to make sur } #endif = -DEFUN ("memory-usage", Fmemory_usage, 0, 0, 0, /* +DEFUN ("total-memory-usage", Ftotal_memory_usage, 0, 0, 0, /* Return the total number of bytes used by the data segment in XEmacs. This may be helpful in debugging XEmacs's memory usage. +NOTE: This may or may not be accurate! It is hard to determine this +value in a system-independent fashion. On Windows, for example, the +returned number tends to be much greater than reality. */ ()) { return make_int (total_data_usage ()); } = +#ifdef ALLOC_TYPE_STATS +DEFUN ("object-memory-usage", Fobject_memory_usage, 0, 0, 0, /* +Return total number of bytes used for object storage in XEmacs. +This may be helpful in debugging XEmacs's memory usage. +See also `consing-since-gc' and `object-memory-usage-stats'. +*/ + ()) +{ + return make_int (total_gc_usage + consing_since_gc); +} +#endif /* ALLOC_TYPE_STATS */ + void recompute_funcall_allocation_flag (void) { @@ -5961,11 +5834,15 @@ recompute_need_to_garbage_collect (void) else need_to_garbage_collect =3D (consing_since_gc > gc_cons_threshold -#if 0 /* #### implement this better */ && +#if 0 /* #### implement this better */ (100 * consing_since_gc) / total_data_usage () >=3D gc_cons_percentage -#endif /* 0 */ +#else + (!total_gc_usage_set || + (100 * consing_since_gc) / total_gc_usage >=3D + gc_cons_percentage) +#endif ); recompute_funcall_allocation_flag (); } @@ -6216,13 +6093,12 @@ common_init_alloc_early (void) funcall_alloca_count =3D 0; = #if 1 - gc_cons_threshold =3D 500000; /* XEmacs change */ + gc_cons_threshold =3D 2000000; /* XEmacs change */ #else gc_cons_threshold =3D 15000; /* debugging */ #endif - gc_cons_percentage =3D 0; /* #### 20; Don't have an accurate measure of - memory usage on Windows; not verified on other - systems */ + gc_cons_percentage =3D 40; /* #### what is optimal? */ + total_gc_usage_set =3D 0; lrecord_uid_counter =3D 259; #ifndef MC_ALLOC debug_string_purity =3D 0; @@ -6347,14 +6223,15 @@ syms_of_alloc (void) DEFSUBR (Fmake_symbol); DEFSUBR (Fmake_marker); DEFSUBR (Fpurecopy); -#ifdef MC_ALLOC_TYPE_STATS - DEFSUBR (Flrecord_stats); -#endif /* MC_ALLOC_TYPE_STATS */ +#ifdef ALLOC_TYPE_STATS + DEFSUBR (Fobject_memory_usage_stats); + DEFSUBR (Fobject_memory_usage); +#endif /* ALLOC_TYPE_STATS */ DEFSUBR (Fgarbage_collect); #if 0 DEFSUBR (Fmemory_limit); #endif - DEFSUBR (Fmemory_usage); + DEFSUBR (Ftotal_memory_usage); DEFSUBR (Fconsing_since_gc); } = @@ -6386,26 +6263,22 @@ effective way to check GCPRO problems, b will be unusable! You almost certainly won't have the patience to wait long enough to be able to set it back. = -See also `consing-since-gc'. +See also `consing-since-gc' and `gc-cons-percentage'. */ ); = DEFVAR_INT ("gc-cons-percentage", &gc_cons_percentage /* *Percentage of memory allocated between garbage collections. = Garbage collection will happen if this percentage of the total amount of -memory used for data has been allocated since the last garbage collectio= n. -However, it will not happen if less than `gc-cons-threshold' bytes have -been allocated -- this sets an absolute minimum in case very little data -has been allocated or the percentage is set very low. Set this to 0 to -have garbage collection always happen after `gc-cons-threshold' bytes ha= ve -been allocated, regardless of current memory usage. - -Garbage collection happens automatically when `eval' or `funcall' are -called. (Note that `funcall' is called implicitly as part of evaluation= .) -By binding this temporarily to a large number, you can effectively -prevent garbage collection during a part of the program. +memory used for data (see `lisp-object-memory-usage') has been allocated +since the last garbage collection. However, it will not happen if less +than `gc-cons-threshold' bytes have been allocated -- this sets an absol= ute +minimum in case very little data has been allocated or the percentage is +set very low. Set this to 0 to have garbage collection always happen af= ter +`gc-cons-threshold' bytes have been allocated, regardless of current mem= ory +usage. = -See also `consing-since-gc'. +See also `consing-since-gc' and `gc-cons-threshold'. */ ); = #ifdef DEBUG_XEMACS = = = 1.8.2.2 +7 -7 XEmacs/xemacs/src/alloca.c = Index: alloca.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/alloca.c,v retrieving revision 1.8.2.1 retrieving revision 1.8.2.2 diff -u -p -r1.8.2.1 -r1.8.2.2 --- alloca.c 2005/03/15 05:23:49 1.8.2.1 +++ alloca.c 2005/11/06 16:14:36 1.8.2.2 @@ -143,7 +143,7 @@ xemacs_c_alloca (unsigned int size) was allocated from deeper in the stack than currently. */ = { - register header *hp; /* Traverses linked list. */ + header *hp; /* Traverses linked list. */ = for (hp =3D last_alloca_header; hp !=3D NULL;) if ((STACK_DIR > 0 && hp->h.deep > depth) @@ -177,20 +177,20 @@ xemacs_c_alloca (unsigned int size) = { #ifdef emacs - register pointer new =3D xmalloc (sizeof (header) + size); + register pointer new_ =3D xmalloc (sizeof (header) + size); #else - register pointer new =3D malloc (sizeof (header) + size); + register pointer new_ =3D malloc (sizeof (header) + size); #endif /* Address of header. */ = - ((header *) new)->h.next =3D last_alloca_header; - ((header *) new)->h.deep =3D depth; + ((header *) new_)->h.next =3D last_alloca_header; + ((header *) new_)->h.deep =3D depth; = - last_alloca_header =3D (header *) new; + last_alloca_header =3D (header *) new_; = /* User storage begins just after header. */ = - return (pointer) ((char *) new + sizeof (header)); + return (pointer) ((char *) new_ + sizeof (header)); } } = = = = 1.67.2.4 +7 -26 XEmacs/xemacs/src/buffer.c = Index: buffer.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/buffer.c,v retrieving revision 1.67.2.3 retrieving revision 1.67.2.4 diff -u -p -r1.67.2.3 -r1.67.2.4 --- buffer.c 2005/07/13 04:46:24 1.67.2.3 +++ buffer.c 2005/11/06 16:14:36 1.67.2.4 @@ -587,15 +587,9 @@ get_truename_buffer (REGISTER Lisp_Objec static struct buffer * allocate_buffer (void) { -#ifdef MC_ALLOC - struct buffer *b =3D alloc_lrecord_type (struct buffer, &lrecord_buffe= r); - - copy_lrecord (b, XBUFFER (Vbuffer_defaults)); -#else /* not MC_ALLOC */ - struct buffer *b =3D alloc_lcrecord_type (struct buffer, &lrecord_buff= er); + struct buffer *b =3D ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_buff= er); = - copy_lcrecord (b, XBUFFER (Vbuffer_defaults)); -#endif /* not MC_ALLOC */ + COPY_LCRECORD (b, XBUFFER (Vbuffer_defaults)); = return b; } @@ -1763,11 +1757,7 @@ compute_buffer_usage (struct buffer *b, = struct overhead_stats *ovstats) { xzero (*stats); -#ifdef MC_ALLOC - stats->other +=3D mc_alloced_storage_size (sizeof (*b), ovstats); -#else /* not MC_ALLOC */ - stats->other +=3D malloced_storage_size (b, sizeof (*b), ovstats); -#endif /* not MC_ALLOC */ + stats->other +=3D LISPOBJ_STORAGE_SIZE (b, sizeof (*b), ovstats); stats->text +=3D compute_buffer_text_usage (b, ovstats); stats->markers +=3D compute_buffer_marker_usage (b, ovstats); stats->extents +=3D compute_buffer_extent_usage (b, ovstats); @@ -2156,7 +2146,7 @@ do { \ static const struct symbol_value_forward I_hate_C =3D \ { /* struct symbol_value_forward */ \ { /* struct symbol_value_magic */ \ - { /* struct lcrecord_header */ \ + { /* struct old_lcrecord_header */ \ { /* struct lrecord_header */ \ lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ 1, /* mark bit */ \ @@ -2204,11 +2194,7 @@ do { \ static void nuke_all_buffer_slots (struct buffer *b, Lisp_Object zap) { -#ifdef MC_ALLOC - zero_lrecord (b); -#else /* not MC_ALLOC */ - zero_lcrecord (b); -#endif /* not MC_ALLOC */ + ZERO_LCRECORD (b); = b->extent_info =3D Qnil; b->indirect_children =3D Qnil; @@ -2223,13 +2209,8 @@ common_init_complex_vars_of_buffer (void { /* Make sure all markable slots in buffer_defaults are initialized reasonably, so mark_buffer won't choke. */ -#ifdef MC_ALLOC - struct buffer *defs =3D alloc_lrecord_type (struct buffer, &lrecord_bu= ffer); - struct buffer *syms =3D alloc_lrecord_type (struct buffer, &lrecord_bu= ffer); -#else /* not MC_ALLOC */ - struct buffer *defs =3D alloc_lcrecord_type (struct buffer, &lrecord_b= uffer); - struct buffer *syms =3D alloc_lcrecord_type (struct buffer, &lrecord_b= uffer); -#endif /* not MC_ALLOC */ + struct buffer *defs =3D ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_b= uffer); + struct buffer *syms =3D ALLOC_LCRECORD_TYPE (struct buffer, &lrecord_b= uffer); = staticpro_nodump (&Vbuffer_defaults); staticpro_nodump (&Vbuffer_local_symbols); = = = 1.31.2.2 +1 -5 XEmacs/xemacs/src/buffer.h = Index: buffer.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/buffer.h,v retrieving revision 1.31.2.1 retrieving revision 1.31.2.2 diff -u -p -r1.31.2.1 -r1.31.2.2 --- buffer.h 2005/07/13 04:46:25 1.31.2.1 +++ buffer.h 2005/11/06 16:14:37 1.31.2.2 @@ -140,11 +140,7 @@ struct buffer_text = struct buffer { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* This structure holds the coordinates of the buffer contents in ordinary buffers. In indirect buffers, this is not used. */ = = = 1.15.2.2 +1 -5 XEmacs/xemacs/src/casetab.c = Index: casetab.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/casetab.c,v retrieving revision 1.15.2.1 retrieving revision 1.15.2.2 diff -u -p -r1.15.2.1 -r1.15.2.2 --- casetab.c 2005/07/13 04:46:26 1.15.2.1 +++ casetab.c 2005/11/06 16:14:37 1.15.2.2 @@ -116,11 +116,7 @@ static Lisp_Object allocate_case_table (int init_tables) { Lisp_Case_Table *ct =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Case_Table, &lrecord_case_table); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Case_Table, &lrecord_case_table); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Case_Table, &lrecord_case_table); = if (init_tables) { = = = 1.5.8.2 +1 -5 XEmacs/xemacs/src/casetab.h = Index: casetab.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/casetab.h,v retrieving revision 1.5.8.1 retrieving revision 1.5.8.2 diff -u -p -r1.5.8.1 -r1.5.8.2 --- casetab.h 2005/07/13 04:46:26 1.5.8.1 +++ casetab.h 2005/11/06 16:14:37 1.5.8.2 @@ -25,11 +25,7 @@ Boston, MA 02111-1307, USA. */ = struct Lisp_Case_Table { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object downcase_table; Lisp_Object upcase_table; Lisp_Object case_canon_table; = = = 1.9.2.3 +1 -5 XEmacs/xemacs/src/charset.h = Index: charset.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/charset.h,v retrieving revision 1.9.2.2 retrieving revision 1.9.2.3 diff -u -p -r1.9.2.2 -r1.9.2.3 --- charset.h 2005/07/13 04:46:27 1.9.2.2 +++ charset.h 2005/11/06 16:14:38 1.9.2.3 @@ -181,11 +181,7 @@ leading_byte_prefix_p (Ibyte lb) = struct Lisp_Charset { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = int id; Lisp_Object name; = = = 1.32.2.3 +17 -41 XEmacs/xemacs/src/chartab.c = Index: chartab.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/chartab.c,v retrieving revision 1.32.2.2 retrieving revision 1.32.2.3 diff -u -p -r1.32.2.2 -r1.32.2.3 --- chartab.c 2005/07/13 04:46:27 1.32.2.2 +++ chartab.c 2005/11/06 16:14:38 1.32.2.3 @@ -476,11 +476,7 @@ fill_char_table (Lisp_Char_Table *ct, Li if (!EQ (ct->level1[i], Qnull_pointer) && CHAR_TABLE_ENTRYP (ct->level1[i]) && !OBJECT_DUMPED_P (ct->level1[1])) -#ifdef MC_ALLOC - free_lrecord (ct->level1[i]); -#else /* not MC_ALLOC */ - free_lcrecord (ct->level1[i]); -#endif /* not MC_ALLOC */ + FREE_LCRECORD (ct->level1[i]); ct->level1[i] =3D value; } #endif /* MULE */ @@ -596,11 +592,7 @@ sorts of values. The different char tab Lisp_Object obj; enum char_table_type ty =3D symbol_to_char_table_type (type); = -#ifdef MC_ALLOC - ct =3D alloc_lrecord_type (Lisp_Char_Table, &lrecord_char_table); -#else /* not MC_ALLOC */ - ct =3D alloc_lcrecord_type (Lisp_Char_Table, &lrecord_char_table); -#endif /* not MC_ALLOC */ + ct =3D ALLOC_LCRECORD_TYPE (Lisp_Char_Table, &lrecord_char_table); ct->type =3D ty; obj =3D wrap_char_table (ct); if (ty =3D=3D CHAR_TABLE_TYPE_SYNTAX) @@ -633,11 +625,7 @@ make_char_table_entry (Lisp_Object initv { int i; Lisp_Char_Table_Entry *cte =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry= ); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entr= y); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Char_Table_Entry, &lrecord_char_table_entr= y); = for (i =3D 0; i < 96; i++) cte->level2[i] =3D initval; @@ -651,19 +639,15 @@ copy_char_table_entry (Lisp_Object entry Lisp_Char_Table_Entry *cte =3D XCHAR_TABLE_ENTRY (entry); int i; Lisp_Char_Table_Entry *ctenew =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entry= ); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Char_Table_Entry, &lrecord_char_table_entr= y); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Char_Table_Entry, &lrecord_char_table_entr= y); = for (i =3D 0; i < 96; i++) { - Lisp_Object new =3D cte->level2[i]; - if (CHAR_TABLE_ENTRYP (new)) - ctenew->level2[i] =3D copy_char_table_entry (new); + Lisp_Object new_ =3D cte->level2[i]; + if (CHAR_TABLE_ENTRYP (new_)) + ctenew->level2[i] =3D copy_char_table_entry (new_); else - ctenew->level2[i] =3D new; + ctenew->level2[i] =3D new_; } = return wrap_char_table_entry (ctenew); @@ -684,11 +668,7 @@ as CHAR-TABLE. The values will not them = CHECK_CHAR_TABLE (char_table); ct =3D XCHAR_TABLE (char_table); -#ifdef MC_ALLOC - ctnew =3D alloc_lrecord_type (Lisp_Char_Table, &lrecord_char_table); -#else /* not MC_ALLOC */ - ctnew =3D alloc_lcrecord_type (Lisp_Char_Table, &lrecord_char_table); -#endif /* not MC_ALLOC */ + ctnew =3D ALLOC_LCRECORD_TYPE (Lisp_Char_Table, &lrecord_char_table); ctnew->type =3D ct->type; ctnew->parent =3D ct->parent; ctnew->default_ =3D ct->default_; @@ -697,22 +677,22 @@ as CHAR-TABLE. The values will not them = for (i =3D 0; i < NUM_ASCII_CHARS; i++) { - Lisp_Object new =3D ct->ascii[i]; + Lisp_Object new_ =3D ct->ascii[i]; #ifdef MULE - assert (! (CHAR_TABLE_ENTRYP (new))); + assert (! (CHAR_TABLE_ENTRYP (new_))); #endif /* MULE */ - ctnew->ascii[i] =3D new; + ctnew->ascii[i] =3D new_; } = #ifdef MULE = for (i =3D 0; i < NUM_LEADING_BYTES; i++) { - Lisp_Object new =3D ct->level1[i]; - if (CHAR_TABLE_ENTRYP (new)) - ctnew->level1[i] =3D copy_char_table_entry (new); + Lisp_Object new_ =3D ct->level1[i]; + if (CHAR_TABLE_ENTRYP (new_)) + ctnew->level1[i] =3D copy_char_table_entry (new_); else - ctnew->level1[i] =3D new; + ctnew->level1[i] =3D new_; } = #endif /* MULE */ @@ -1080,11 +1060,7 @@ put_char_table (Lisp_Object table, struc int lb =3D XCHARSET_LEADING_BYTE (range->charset) - MIN_LEADING_BYTE; if (CHAR_TABLE_ENTRYP (ct->level1[lb]) && !OBJECT_DUMPED_P (ct->level1[lb])) -#ifdef MC_ALLOC - free_lrecord (ct->level1[lb]); -#else /* not MC_ALLOC */ - free_lcrecord (ct->level1[lb]); -#endif /* not MC_ALLOC */ + FREE_LCRECORD (ct->level1[lb]); ct->level1[lb] =3D val; } break; = = = 1.14.2.2 +2 -10 XEmacs/xemacs/src/chartab.h = Index: chartab.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/chartab.h,v retrieving revision 1.14.2.1 retrieving revision 1.14.2.2 diff -u -p -r1.14.2.1 -r1.14.2.2 --- chartab.h 2005/07/13 04:46:28 1.14.2.1 +++ chartab.h 2005/11/06 16:14:38 1.14.2.2 @@ -42,11 +42,7 @@ Boston, MA 02111-1307, USA. */ = struct Lisp_Char_Table_Entry { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* In the interests of simplicity, we just use a fixed 96-entry table. If we felt like being smarter, we could make this @@ -84,11 +80,7 @@ enum char_table_type = struct Lisp_Char_Table { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = Lisp_Object ascii[NUM_ASCII_CHARS]; Lisp_Object default_; = = = 1.22.2.2 +6 -6 XEmacs/xemacs/src/cmdloop.c = Index: cmdloop.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/cmdloop.c,v retrieving revision 1.22.2.1 retrieving revision 1.22.2.2 diff -u -p -r1.22.2.1 -r1.22.2.2 --- cmdloop.c 2005/03/15 05:23:52 1.22.2.1 +++ cmdloop.c 2005/11/06 16:14:38 1.22.2.2 @@ -174,18 +174,18 @@ You should almost certainly not be using call_command_loop() is called when a macro is started and when the minibuffer is entered; normal termination of the macro or minibuffer causes a throw out of the recursive command loop. (To - 'execute-kbd-macro for macros and 'exit for minibuffers. Note also + `execute-kbd-macro' for macros and `exit' for minibuffers. Note also that the low-level minibuffer-entering function, `read-minibuffer-internal', provides its own error handling and does not need command_loop_2()'s error encapsulation; so it tells call_command_loop() to invoke command_loop_1() directly.) = Note that both read-minibuffer-internal and recursive-edit set - up a catch for 'exit; this is why `abort-recursive-edit', which + up a catch for `exit'; this is why `abort-recursive-edit', which throws to this catch, exits out of either one. = initial_command_loop(), called from main(), sets up a catch - for 'top-level when invoking command_loop_2(), allowing functions + for `top-level' when invoking command_loop_2(), allowing functions to throw all the way to the top level if they really need to. Before invoking command_loop_2(), initial_command_loop() calls top_level_1(), which handles all of the startup stuff (creating @@ -194,7 +194,7 @@ You should almost certainly not be using is in Lisp and is pointed to by the variable `top-level'; normally this function is `normal-top-level'. top_level_1() is just an error-handling wrapper similar to command_loop_2(). - Note also that initial_command_loop() sets up a catch for 'top-level + Note also that initial_command_loop() sets up a catch for `top-level' when invoking top_level_1(), just like when it invokes command_loop_2(). */ = @@ -286,7 +286,7 @@ initial_command_loop (Lisp_Object load_m Vtop_level =3D list2 (Qload, load_me); = /* First deal with startup and command-line arguments. A throw - to 'top-level gets us back here directly (does this ever happen?). + to `top-level' gets us back here directly (does this ever happen?). Otherwise, this function will return normally when all command- line arguments have been processed, the user's initialization file has been read in, and the first frame has been created. */ @@ -309,7 +309,7 @@ initial_command_loop (Lisp_Object load_m command_loop_level =3D 0; MARK_MODELINE_CHANGED; /* Now invoke the command loop. It never returns; however, a - throw to 'top-level will place us at the end of this loop. */ + throw to `top-level' will place us at the end of this loop. */ internal_catch (Qtop_level, command_loop_2, Qnil, 0, 0, 0); /* #### wrong with selected-console? */ /* We don't actually call clear_echo_area() here, partially = = = 1.8.2.4 +1 -1 XEmacs/xemacs/src/compiler.h = Index: compiler.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/compiler.h,v retrieving revision 1.8.2.3 retrieving revision 1.8.2.4 diff -u -p -r1.8.2.3 -r1.8.2.4 --- compiler.h 2005/03/15 05:23:52 1.8.2.3 +++ compiler.h 2005/11/06 16:14:38 1.8.2.4 @@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA. */ #define INCLUDED_compiler_h = /* Define min() and max(). (Some compilers put them in strange places th= at - won't be referenced by include files used by XEmacs, such as 'macros.= h' + won't be referenced by include files used by XEmacs, such as `macros.= h' under Solaris.) */ = #ifndef min = = = 1.95.2.7 +18 -5 XEmacs/xemacs/src/config.h.in = Index: config.h.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/config.h.in,v retrieving revision 1.95.2.6 retrieving revision 1.95.2.7 diff -u -p -r1.95.2.6 -r1.95.2.7 --- config.h.in 2005/07/13 04:46:28 1.95.2.6 +++ config.h.in 2005/11/06 16:14:39 1.95.2.7 @@ -1,6 +1,6 @@ /* XEmacs site configuration template file. -*- C -*- Copyright (C) 1986, 1991-1994, 1998, 1999 Free Software Foundation, I= nc. - Copyright (C) 2000, 2001, 2002, 2004 Ben Wing. + Copyright (C) 2000, 2001, 2002, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -822,6 +822,13 @@ things are arranged in config.h.in. In = = #endif /* WIN32_NO_CONFIGURE */ = +#ifdef _MSC_VER +/* Turn off tons of C4996 warnings in VC 8 about standard functions being + "deprecated" in favor of Microsoft-specific "secure" ones (!) + This must go *before* the inclusion of any system files. */ +#define _CRT_SECURE_NO_DEPRECATE +#endif + /* alloca twiddling. Because we might be #including alloca.h here, feature test macros such as _XOPEN_SOURCE must be defined above. @@ -916,6 +923,16 @@ extern "C" { #define SYSTEM_MALLOC #endif = +/* This enables type based information (updated during gc). The output + is used by show-memory-usage to print memory information for each + type. Since the new allocator does not distinguish between types + anymore, this functionality is additionally implemented and + consumes a lot of time. That is why this functionality can be + disabled; for the moment, we keep it enabled. */ +#if !defined (MC_ALLOC) || 1 +# define ALLOC_TYPE_STATS 1 +#endif + /* Define the return type of signal handlers if the s/xxx.h file did not already do so. */ #define RETSIGTYPE void @@ -1049,10 +1066,6 @@ extern "C" { = #ifndef NOT_C_CODE /* Actually means C or C++ */ # if defined (__cplusplus) -/* Avoid C++ keywords used as ordinary C identifiers */ -# define new c_new -# define catch c_catch - # define EXTERN_C extern "C" # else /* C code */ # define EXTERN_C extern = = = 1.7.2.5 +1 -5 XEmacs/xemacs/src/console-impl.h = Index: console-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-impl.h,v retrieving revision 1.7.2.4 retrieving revision 1.7.2.5 diff -u -p -r1.7.2.4 -r1.7.2.5 --- console-impl.h 2005/09/27 16:29:29 1.7.2.4 +++ console-impl.h 2005/11/06 16:14:39 1.7.2.5 @@ -412,11 +412,7 @@ struct console_methods * type##_console_ = struct console { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Description of this console's methods. */ struct console_methods *conmeths; = = = 1.3.2.2 +2 -10 XEmacs/xemacs/src/console-msw-impl.h = Index: console-msw-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-msw-impl.h,v retrieving revision 1.3.2.1 retrieving revision 1.3.2.2 diff -u -p -r1.3.2.1 -r1.3.2.2 --- console-msw-impl.h 2005/07/13 04:46:29 1.3.2.1 +++ console-msw-impl.h 2005/11/06 16:14:39 1.3.2.2 @@ -57,11 +57,7 @@ DECLARE_CONSOLE_TYPE (msprinter); = struct Lisp_Devmode { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Pointer to the DEVMODE structure */ DEVMODEW *devmode; @@ -279,11 +275,7 @@ struct msprinter_frame = struct mswindows_dialog_id { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = Lisp_Object frame; Lisp_Object callbacks; = = = 1.38.2.3 +7 -24 XEmacs/xemacs/src/console.c = Index: console.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console.c,v retrieving revision 1.38.2.2 retrieving revision 1.38.2.3 diff -u -p -r1.38.2.2 -r1.38.2.3 --- console.c 2005/07/13 04:46:29 1.38.2.2 +++ console.c 2005/11/06 16:14:39 1.38.2.3 @@ -194,18 +194,10 @@ static struct console * allocate_console (Lisp_Object type) { Lisp_Object console; -#ifdef MC_ALLOC - struct console *con =3D alloc_lrecord_type (struct console, &lrecord_c= onsole); -#else /* not MC_ALLOC */ - struct console *con =3D alloc_lcrecord_type (struct console, &lrecord_= console); -#endif /* not MC_ALLOC */ + struct console *con =3D ALLOC_LCRECORD_TYPE (struct console, &lrecord_= console); struct gcpro gcpro1; = -#ifdef MC_ALLOC - copy_lrecord (con, XCONSOLE (Vconsole_defaults)); -#else /* not MC_ALLOC */ - copy_lcrecord (con, XCONSOLE (Vconsole_defaults)); -#endif /* not MC_ALLOC */ + COPY_LCRECORD (con, XCONSOLE (Vconsole_defaults)); = console =3D wrap_console (con); GCPRO1 (console); @@ -280,7 +272,7 @@ valid_console_type_p (Lisp_Object type) = DEFUN ("valid-console-type-p", Fvalid_console_type_p, 1, 1, 0, /* Return t if CONSOLE-TYPE is a valid console type. -Valid types are 'x, 'tty, 'mswindows, 'msprinter, 'gtk, and 'stream. +Valid types are `x', `tty', `mswindows', `msprinter', `gtk', and `stream= '. */ (console_type)) { @@ -670,11 +662,7 @@ find_nonminibuffer_frame_not_on_console = static void nuke_all_console_slots (struct console *con, Lisp_Object zap) { -#ifdef MC_ALLOC - zero_lrecord (con); -#else /* not MC_ALLOC */ - zero_lcrecord (con); -#endif /* not MC_ALLOC */ + ZERO_LCRECORD (con); = #define MARKED_SLOT(x) con->x =3D zap; #include "conslots.h" @@ -1353,7 +1341,7 @@ do { \ static const struct symbol_value_forward I_hate_C =3D \ { /* struct symbol_value_forward */ \ { /* struct symbol_value_magic */ \ - { /* struct lcrecord_header */ \ + { /* struct old_lcrecord_header */ \ { /* struct lrecord_header */ \ lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ 1, /* mark bit */ \ @@ -1405,13 +1393,8 @@ common_init_complex_vars_of_console (voi /* Make sure all markable slots in console_defaults are initialized reasonably, so mark_console won't choke. */ -#ifdef MC_ALLOC - struct console *defs =3D alloc_lrecord_type (struct console, &lrecord_= console); - struct console *syms =3D alloc_lrecord_type (struct console, &lrecord_= console); -#else /* not MC_ALLOC */ - struct console *defs =3D alloc_lcrecord_type (struct console, &lrecord= _console); - struct console *syms =3D alloc_lcrecord_type (struct console, &lrecord= _console); -#endif /* not MC_ALLOC */ + struct console *defs =3D ALLOC_LCRECORD_TYPE (struct console, &lrecord= _console); + struct console *syms =3D ALLOC_LCRECORD_TYPE (struct console, &lrecord= _console); = staticpro_nodump (&Vconsole_defaults); staticpro_nodump (&Vconsole_local_symbols); = = = 1.60.2.3 +3 -15 XEmacs/xemacs/src/data.c = Index: data.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/data.c,v retrieving revision 1.60.2.2 retrieving revision 1.60.2.3 diff -u -p -r1.60.2.2 -r1.60.2.3 --- data.c 2005/07/13 04:46:29 1.60.2.2 +++ data.c 2005/11/06 16:14:39 1.60.2.3 @@ -2577,11 +2577,7 @@ make_weak_list (enum weak_list_type type { Lisp_Object result; struct weak_list *wl =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct weak_list, &lrecord_weak_list); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct weak_list, &lrecord_weak_list); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (struct weak_list, &lrecord_weak_list); = wl->list =3D Qnil; wl->type =3D type; @@ -3056,11 +3052,7 @@ make_weak_box (Lisp_Object value) Lisp_Object result; = struct weak_box *wb =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct weak_box, &lrecord_weak_box); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct weak_box, &lrecord_weak_box); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (struct weak_box, &lrecord_weak_box); = wb->value =3D value; result =3D wrap_weak_box (wb); @@ -3283,11 +3275,7 @@ make_ephemeron(Lisp_Object key, Lisp_Obj struct gcpro gcpro1, gcpro2; = struct ephemeron *eph =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct ephemeron, &lrecord_ephemeron); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct ephemeron, &lrecord_ephemeron); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (struct ephemeron, &lrecord_ephemeron); = eph->key =3D Qnil; eph->cons_chain =3D Qnil; = = = 1.30.2.3 +3 -11 XEmacs/xemacs/src/database.c = Index: database.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/database.c,v retrieving revision 1.30.2.2 retrieving revision 1.30.2.3 diff -u -p -r1.30.2.2 -r1.30.2.3 --- database.c 2005/07/13 04:46:30 1.30.2.2 +++ database.c 2005/11/06 16:14:40 1.30.2.3 @@ -1,6 +1,6 @@ /* Database access routines Copyright (C) 1996, William M. Perry - Copyright (C) 2001, 2002 Ben Wing. + Copyright (C) 2001, 2002, 2005 Ben Wing. = This file is part of XEmacs. = @@ -98,11 +98,7 @@ typedef struct = struct Lisp_Database { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object fname; int mode; int access_; @@ -135,11 +131,7 @@ struct Lisp_Database static Lisp_Database * allocate_database (void) { -#ifdef MC_ALLOC - Lisp_Database *db =3D alloc_lrecord_type (Lisp_Database, &lrecord_data= base); -#else /* not MC_ALLOC */ - Lisp_Database *db =3D alloc_lcrecord_type (Lisp_Database, &lrecord_dat= abase); -#endif /* not MC_ALLOC */ + Lisp_Database *db =3D ALLOC_LCRECORD_TYPE (Lisp_Database, &lrecord_dat= abase); = db->fname =3D Qnil; db->live_p =3D 0; = = = 1.51.2.5 +1 -2 XEmacs/xemacs/src/depend = Index: depend =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/depend,v retrieving revision 1.51.2.4 retrieving revision 1.51.2.5 diff -u -p -r1.51.2.4 -r1.51.2.5 --- depend 2005/09/20 16:06:01 1.51.2.4 +++ depend 2005/11/06 16:14:40 1.51.2.5 @@ -91,7 +91,6 @@ ui-gtk.o: $(LISP_H) buffer.h bufslots.h = database.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h = database.h sysfile.h #endif #if defined(MULE) -mule-canna.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.= h coding-system-slots.h file-coding.h mule-ccl.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h = coding-system-slots.h file-coding.h mule-ccl.h mule-charset.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h charta= b.h console.h device.h elhash.h faces.h lstream.h mule-ccl.h objects.h mule-coding.o: $(LISP_H) charset.h coding-system-slots.h file-coding.h m= ule-ccl.h @@ -266,5 +265,5 @@ vm-limit.o: $(LISP_H) mem-limits.h widget.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h win32.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h charset.h c= hartab.h console-msw.h console.h hash.h intl-auto-encap-win32.h profile.h s= ysfile.h sysproc.h syssignal.h systime.h syswindows.h window.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h co= mmands.h conslots.h console-impl.h console.h device-impl.h device.h devslot= s.h elhash.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h ob= jects.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots= .h -xft-fonts.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-impl.h= console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h h= ash.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xft= -fonts.h xintrinsic.h +xft-fonts.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-impl.h= console-x-impl.h console-x.h console.h device-impl.h device.h devslots.h o= bjects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xft-fonts.= h xintrinsic.h xmu.o: $(CONFIG_H) = = = 1.4.2.2 +1 -5 XEmacs/xemacs/src/device-impl.h = Index: device-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/device-impl.h,v retrieving revision 1.4.2.1 retrieving revision 1.4.2.2 diff -u -p -r1.4.2.1 -r1.4.2.2 --- device-impl.h 2005/07/13 04:46:31 1.4.2.1 +++ device-impl.h 2005/11/06 16:14:40 1.4.2.2 @@ -71,11 +71,7 @@ struct pixel_to_glyph_translation_cache = struct device { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Methods for this device's console. This can also be retrieved through device->console, but it's faster this way. */ = = = 1.54.2.4 +2 -6 XEmacs/xemacs/src/device-msw.c = Index: device-msw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/device-msw.c,v retrieving revision 1.54.2.3 retrieving revision 1.54.2.4 diff -u -p -r1.54.2.3 -r1.54.2.4 --- device-msw.c 2005/07/13 04:46:31 1.54.2.3 +++ device-msw.c 2005/11/06 16:14:41 1.54.2.4 @@ -1044,7 +1044,7 @@ Return value is the previously selected = } = DEFUN ("msprinter-apply-settings", Fmsprinter_apply_settings, 2, 2, 0, /* -Apply settings from a SETTINGS object to a 'msprinter DEVICE. +Apply settings from a SETTINGS object to a `msprinter' DEVICE. The settings from the settings object are immediately applied to the printer, possibly changing even the target printer itself. The SETTING object is not modified, unlike `msprinter-select-settings', and the @@ -1188,11 +1188,7 @@ allocate_devmode (DEVMODEW* src_devmode, { Lisp_Devmode *dm; = -#ifdef MC_ALLOC - dm =3D alloc_lrecord_type (Lisp_Devmode, &lrecord_devmode); -#else /* not MC_ALLOC */ - dm =3D alloc_lcrecord_type (Lisp_Devmode, &lrecord_devmode); -#endif /* not MC_ALLOC */ + dm =3D ALLOC_LCRECORD_TYPE (Lisp_Devmode, &lrecord_devmode); = if (d) dm->device =3D wrap_device (d); = = = 1.59.2.4 +6 -6 XEmacs/xemacs/src/device-x.c = Index: device-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/device-x.c,v retrieving revision 1.59.2.3 retrieving revision 1.59.2.4 diff -u -p -r1.59.2.3 -r1.59.2.4 --- device-x.c 2005/09/20 16:06:02 1.59.2.3 +++ device-x.c 2005/11/06 16:14:41 1.59.2.4 @@ -1392,11 +1392,11 @@ Retrieve an X resource from the resource = The first arg is the name of the resource to retrieve, such as "font". The second arg is the class of the resource to retrieve, such as "Font". -The third arg must be one of the symbols 'string, 'integer, 'natnum, or - 'boolean, specifying the type of object that the database is searched = for. +The third arg must be one of the symbols `string', `integer', `natnum', = or + `boolean', specifying the type of object that the database is searched= for. The fourth arg is the locale to search for the resources on, and can - currently be a buffer, a frame, a device, or 'global. If omitted, it - defaults to 'global. + currently be a buffer, a frame, a device, or `global'. If omitted, it + defaults to `global'. The fifth arg is the device to search for the resources on. (The resource database for a particular device is constructed by combining non-devic= e- specific resources such as any command-line resources specified and any @@ -1449,7 +1449,7 @@ is an interface to a C call something li "Emacs.EmacsLocaleType.EmacsDevice.Foreground", "String"); = -4) If LOCALE is 'global, a call +4) If LOCALE is `global', a call = (x-get-resource "foreground" "Foreground" 'string 'global) = @@ -1459,7 +1459,7 @@ is an interface to a C call something li "Emacs.Foreground", "String"); = -Note that for 'global, no prefix is added other than that of the +Note that for `global', no prefix is added other than that of the application itself; thus, you can use this locale to retrieve arbitrary application resources, if you really want to. = = = = 1.32.2.3 +6 -14 XEmacs/xemacs/src/device.c = Index: device.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/device.c,v retrieving revision 1.32.2.2 retrieving revision 1.32.2.3 diff -u -p -r1.32.2.2 -r1.32.2.3 --- device.c 2005/07/13 04:46:32 1.32.2.2 +++ device.c 2005/11/06 16:14:41 1.32.2.3 @@ -169,7 +169,7 @@ valid_device_class_p (Lisp_Object class_ = DEFUN ("valid-device-class-p", Fvalid_device_class_p, 1, 1, 0, /* Given a DEVICE-CLASS, return t if it is valid. -Valid classes are 'color, 'grayscale, and 'mono. +Valid classes are `color', `grayscale', and `mono'. */ (device_class)) { @@ -187,11 +187,7 @@ Return a list of valid device classes. static void nuke_all_device_slots (struct device *d, Lisp_Object zap) { -#ifdef MC_ALLOC - zero_lrecord (d); -#else /* not MC_ALLOC */ - zero_lcrecord (d); -#endif /* not MC_ALLOC */ + ZERO_LCRECORD (d); = #define MARKED_SLOT(x) d->x =3D zap; #include "devslots.h" @@ -201,11 +197,7 @@ static struct device * allocate_device (Lisp_Object console) { Lisp_Object device; -#ifdef MC_ALLOC - struct device *d =3D alloc_lrecord_type (struct device, &lrecord_devic= e); -#else /* not MC_ALLOC */ - struct device *d =3D alloc_lcrecord_type (struct device, &lrecord_devi= ce); -#endif /* not MC_ALLOC */ + struct device *d =3D ALLOC_LCRECORD_TYPE (struct device, &lrecord_devi= ce); struct gcpro gcpro1; = device =3D wrap_device (d); @@ -981,7 +973,7 @@ If DEVICE is nil, the selected device wi = DEFUN ("device-class", Fdevice_class, 0, 1, 0, /* Return the class (color behavior) of DEVICE. -This will be one of 'color, 'grayscale, or 'mono. +This will be one of `color', `grayscale', or `mono'. */ (device)) { @@ -990,7 +982,7 @@ This will be one of 'color, 'grayscale, = = DEFUN ("set-device-class", Fset_device_class, 2, 2, 0, /* Set the class (color behavior) of DEVICE. -CLASS should be one of 'color, 'grayscale, or 'mono. +CLASS should be one of `color', `grayscale', or `mono'. This is only allowed on device such as TTY devices, where the color behavior cannot necessarily be determined automatically. */ @@ -1302,7 +1294,7 @@ window_system_pixelated_geometry (Lisp_O } = DEFUN ("domain-device-type", Fdomain_device_type, 0, 1, 0, /* -Return the device type symbol for a DOMAIN, e.g. 'x or 'tty. +Return the device type symbol for a DOMAIN, e.g. `x' or `tty'. DOMAIN can be either a window, frame, device or console. */ (domain)) = = = 1.31.2.3 +1 -6 XEmacs/xemacs/src/dialog-msw.c = Index: dialog-msw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dialog-msw.c,v retrieving revision 1.31.2.2 retrieving revision 1.31.2.3 diff -u -p -r1.31.2.2 -r1.31.2.3 --- dialog-msw.c 2005/07/13 04:46:33 1.31.2.2 +++ dialog-msw.c 2005/11/06 16:14:41 1.31.2.3 @@ -751,13 +751,8 @@ handle_question_dialog_box (struct frame Lisp_Object dialog_data; int i; struct mswindows_dialog_id *did =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct mswindows_dialog_id, - &lrecord_mswindows_dialog_id); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct mswindows_dialog_id, + ALLOC_LCRECORD_TYPE (struct mswindows_dialog_id, &lrecord_mswindows_dialog_id); -#endif /* not MC_ALLOC */ = dialog_data =3D wrap_mswindows_dialog_id (did); = = = = 1.34.2.1 +7 -7 XEmacs/xemacs/src/doc.c = Index: doc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/doc.c,v retrieving revision 1.34 retrieving revision 1.34.2.1 diff -u -p -r1.34 -r1.34.2.1 --- doc.c 2004/11/04 23:06:21 1.34 +++ doc.c 2005/11/06 16:14:42 1.34.2.1 @@ -793,7 +793,7 @@ thus, \\=3D\\=3D\\=3D\\=3D puts \\=3D\\=3D into the = Bytecount strlength; Bytecount idx; Bytecount bsize; - Ibyte *new; + Ibyte *new_; Lisp_Object tem =3D Qnil; Lisp_Object keymap =3D Qnil; Lisp_Object name =3D Qnil; @@ -904,9 +904,9 @@ thus, \\=3D\\=3D\\=3D\\=3D puts \\=3D\\=3D into the = = if (NILP (tem)) /* but not on any keys */ { - new =3D (Ibyte *) xrealloc (buf, bsize +=3D 4); - bufp +=3D new - buf; - buf =3D new; + new_ =3D (Ibyte *) xrealloc (buf, bsize +=3D 4); + bufp +=3D new_ - buf; + buf =3D new_; memcpy (bufp, "M-x ", 4); bufp +=3D 4; goto subst; @@ -978,9 +978,9 @@ thus, \\=3D\\=3D\\=3D\\=3D puts \\=3D\\=3D into the = length =3D XSTRING_LENGTH (tem); subst: bsize +=3D length; - new =3D (Ibyte *) xrealloc (buf, bsize); - bufp +=3D new - buf; - buf =3D new; + new_ =3D (Ibyte *) xrealloc (buf, bsize); + bufp +=3D new_ - buf; + buf =3D new_; memcpy (bufp, start, length); bufp +=3D length; = = = = 1.8.2.1 +3 -3 XEmacs/xemacs/src/dragdrop.c = Index: dragdrop.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dragdrop.c,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -p -r1.8 -r1.8.2.1 --- dragdrop.c 2004/11/04 23:06:21 1.8 +++ dragdrop.c 2005/11/06 16:14:42 1.8.2.1 @@ -34,10 +34,10 @@ Boston, MA 02111-1307, USA. */ defined in ../lisp/dragdrop.el. The object of the misc-user-event has the following format: ( TYPE . DATA ) - TYPE is one of 'dragdrop-MIME and 'dragdrop-URL - DATA - if TYPE is 'dragdrop-URL, DATA is a list of valid URL strings= . It + TYPE is one of `dragdrop-MIME' and `dragdrop-URL' + DATA - if TYPE is `dragdrop-URL', DATA is a list of valid URL string= s. It is always a list, also if only one URL string is within it. - - if TYPE is 'dragdrop-MIME, DATA is a list of MIME elements. + - if TYPE is `dragdrop-MIME', DATA is a list of MIME elements. Each can be a string or a list. if it is a string it is the pure MIME data complete with header and body. = = = 1.20.2.5 +2 -2 XEmacs/xemacs/src/dumper.c = Index: dumper.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dumper.c,v retrieving revision 1.20.2.4 retrieving revision 1.20.2.5 diff -u -p -r1.20.2.4 -r1.20.2.5 --- dumper.c 2005/09/20 16:06:03 1.20.2.4 +++ dumper.c 2005/11/06 16:14:42 1.20.2.5 @@ -2169,7 +2169,7 @@ pdump_load_finish (void) if (count =3D=3D 2) { mc_addr =3D (Rawbyte *) mc_alloc (real_size); -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_stats (real_size, = (const struct lrecord_header *) = ((char *) rdata + delta)); @@ -2178,7 +2178,7 @@ pdump_load_finish (void) =3D=3D lrecord_type_string) inc_lrecord_string_data_stats = (((Lisp_String *) ((char *) rdata + delta))->size_); -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ } else mc_addr =3D (Rawbyte *) xmalloc_and_zero (real_size); = = = 1.37.2.4 +4 -18 XEmacs/xemacs/src/elhash.c = Index: elhash.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/elhash.c,v retrieving revision 1.37.2.3 retrieving revision 1.37.2.4 diff -u -p -r1.37.2.3 -r1.37.2.4 --- elhash.c 2005/07/13 04:46:34 1.37.2.3 +++ elhash.c 2005/11/06 16:14:42 1.37.2.4 @@ -102,11 +102,7 @@ typedef struct htentry = struct Lisp_Hash_Table { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Elemcount size; Elemcount count; Elemcount rehash_count; @@ -554,11 +550,7 @@ make_general_lisp_hash_table (hash_table enum hash_table_weakness weakness) { Lisp_Object hash_table; -#ifdef MC_ALLOC - Lisp_Hash_Table *ht =3D alloc_lrecord_type (Lisp_Hash_Table, &lrecord_= hash_table); -#else /* not MC_ALLOC */ - Lisp_Hash_Table *ht =3D alloc_lcrecord_type (Lisp_Hash_Table, &lrecord= _hash_table); -#endif /* not MC_ALLOC */ + Lisp_Hash_Table *ht =3D ALLOC_LCRECORD_TYPE (Lisp_Hash_Table, &lrecord= _hash_table); = ht->test_function =3D test_function; ht->hash_function =3D hash_function; @@ -975,14 +967,8 @@ The keys and values will not themselves = (hash_table)) { const Lisp_Hash_Table *ht_old =3D xhash_table (hash_table); -#ifdef MC_ALLOC - Lisp_Hash_Table *ht =3D alloc_lrecord_type (Lisp_Hash_Table, &lrecord_= hash_table); - - copy_lrecord (ht, ht_old); -#else /* not MC_ALLOC */ - Lisp_Hash_Table *ht =3D alloc_lcrecord_type (Lisp_Hash_Table, &lrecord= _hash_table); - copy_lcrecord (ht, ht_old); -#endif /* not MC_ALLOC */ + Lisp_Hash_Table *ht =3D ALLOC_LCRECORD_TYPE (Lisp_Hash_Table, &lrecord= _hash_table); + COPY_LCRECORD (ht, ht_old); = ht->hentries =3D xnew_array (htentry, ht_old->size + 1); memcpy (ht->hentries, ht_old->hentries, (ht_old->size + 1) * sizeof (h= tentry)); = = = 1.150.2.8 +19 -18 XEmacs/xemacs/src/emacs.c = Index: emacs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/emacs.c,v retrieving revision 1.150.2.7 retrieving revision 1.150.2.8 diff -u -p -r1.150.2.7 -r1.150.2.8 --- emacs.c 2005/09/24 14:02:34 1.150.2.7 +++ emacs.c 2005/11/06 16:14:43 1.150.2.8 @@ -2,7 +2,7 @@ Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Ben Wing. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -919,9 +919,9 @@ main_1 (int argc, Wexttext **argv, Wextt if (!restart) { init_mc_allocator (); -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS init_lrecord_stats (); -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ } } #endif /* MC_ALLOC */ @@ -1220,16 +1220,16 @@ main_1 (int argc, Wexttext **argv, Wextt This requires inserting a new element into argv. */ if (dpy !=3D 0 && skip_args - count_before =3D=3D 1) { - Wexttext **new =3D xnew_array (Wexttext *, argc + 2); + Wexttext **new_ =3D xnew_array (Wexttext *, argc + 2); int j; = for (j =3D 0; j < count_before + 1; j++) - new[j] =3D argv[j]; - new[count_before + 1] =3D WEXTSTRING ("-d"); - new[count_before + 2] =3D dpy; + new_[j] =3D argv[j]; + new_[count_before + 1] =3D WEXTSTRING ("-d"); + new_[count_before + 2] =3D dpy; for (j =3D count_before + 2; j plist =3D Fcons (extent_aux, ext->plist); ext->flags.has_aux =3D 1; @@ -1174,11 +1166,7 @@ allocate_extent_info (void) { Lisp_Object extent_info; struct extent_info *data =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct extent_info, &lrecord_extent_info); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct extent_info, &lrecord_extent_info); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (struct extent_info, &lrecord_extent_info); = extent_info =3D wrap_extent_info (data); data->extents =3D allocate_extent_list (); @@ -3745,10 +3733,10 @@ See `extent-parent'. Dynarr_length (newprops), sizeof (Lisp_Object_pair), compare_key_value_pairs)) { - Lisp_Object_pair new; - new.key =3D Dynarr_at (oldprops, i).key; - new.value =3D Qunbound; - Dynarr_add (newprops, new); + Lisp_Object_pair new_; + new_.key =3D Dynarr_at (oldprops, i).key; + new_.value =3D Qunbound; + Dynarr_add (newprops, new_); } } for (i =3D 0; i < orignewlength; i++) @@ -3759,10 +3747,10 @@ See `extent-parent'. sizeof (Lisp_Object_pair), compare_key_value_pairs)) { - Lisp_Object_pair new; - new.key =3D Dynarr_at (newprops, i).key; - new.value =3D Qunbound; - Dynarr_add (oldprops, new); + Lisp_Object_pair new_; + new_.key =3D Dynarr_at (newprops, i).key; + new_.value =3D Qunbound; + Dynarr_add (oldprops, new_); } } qsort (Dynarr_atp (oldprops, 0), Dynarr_length (oldprops), @@ -3909,19 +3897,11 @@ copy_extent (EXTENT original, Bytexpos f /* also need to copy the aux struct. It won't work for this extent to share the same aux struct as the original one. */ -#ifdef MC_ALLOC - struct extent_auxiliary *data =3D - alloc_lrecord_type (struct extent_auxiliary, - &lrecord_extent_auxiliary); - - copy_lrecord (data, XEXTENT_AUXILIARY (XCAR (original->plist))); -#else /* not MC_ALLOC */ struct extent_auxiliary *data =3D - alloc_lcrecord_type (struct extent_auxiliary, + ALLOC_LCRECORD_TYPE (struct extent_auxiliary, &lrecord_extent_auxiliary); = - copy_lcrecord (data, XEXTENT_AUXILIARY (XCAR (original->plist))); -#endif /* not MC_ALLOC */ + COPY_LCRECORD (data, XEXTENT_AUXILIARY (XCAR (original->plist))); XCAR (e->plist) =3D wrap_extent_auxiliary (data); } = @@ -6545,7 +6525,7 @@ get_char_property (Bytexpos position, Li Lisp_Object extent; = /* text_props_only specifies whether we only consider text-property - extents (those with the 'text-prop property set) or all extents. */ + extents (those with the `text-prop' property set) or all extents. */ if (!text_props_only) extent =3D extent_at (position, object, prop, 0, fl, 0); else @@ -6685,8 +6665,8 @@ put_text_prop_mapper (EXTENT e, void *ar = extent =3D wrap_extent (e); = - /* Note: in some cases when the property itself is 'start-open - or 'end-closed, the checks to set the openness may do a bit + /* Note: in some cases when the property itself is `start-open' + or `end-closed', the checks to set the openness may do a bit of extra work; but it won't hurt because we then fix up the openness later on in put_text_prop_openness_mapper(). */ if (!EQ (Fextent_property (extent, Qtext_prop, Qnil), closure->prop)) = = = 1.43.2.8 +1 -5 XEmacs/xemacs/src/faces.c = Index: faces.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.c,v retrieving revision 1.43.2.7 retrieving revision 1.43.2.8 diff -u -p -r1.43.2.7 -r1.43.2.8 --- faces.c 2005/09/20 16:06:06 1.43.2.7 +++ faces.c 2005/11/06 16:14:46 1.43.2.8 @@ -373,11 +373,7 @@ reset_face (Lisp_Face *f) static Lisp_Face * allocate_face (void) { -#ifdef MC_ALLOC - Lisp_Face *result =3D alloc_lrecord_type (Lisp_Face, &lrecord_face); -#else /* not MC_ALLOC */ - Lisp_Face *result =3D alloc_lcrecord_type (Lisp_Face, &lrecord_face); -#endif /* not MC_ALLOC */ + Lisp_Face *result =3D ALLOC_LCRECORD_TYPE (Lisp_Face, &lrecord_face); = reset_face (result); return result; = = = 1.12.8.4 +1 -5 XEmacs/xemacs/src/faces.h = Index: faces.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.h,v retrieving revision 1.12.8.3 retrieving revision 1.12.8.4 diff -u -p -r1.12.8.3 -r1.12.8.4 --- faces.h 2005/07/13 04:46:41 1.12.8.3 +++ faces.h 2005/11/06 16:14:46 1.12.8.4 @@ -33,11 +33,7 @@ Boston, MA 02111-1307, USA. */ = struct Lisp_Face { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = Lisp_Object name; Lisp_Object doc_string; = = = 1.41.2.4 +76 -85 XEmacs/xemacs/src/file-coding.c = Index: file-coding.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/file-coding.c,v retrieving revision 1.41.2.3 retrieving revision 1.41.2.4 diff -u -p -r1.41.2.3 -r1.41.2.4 --- file-coding.c 2005/09/20 16:06:07 1.41.2.3 +++ file-coding.c 2005/11/06 16:14:46 1.41.2.4 @@ -2,7 +2,7 @@ #### rename me to coding-system.c or coding.c Copyright (C) 1991, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 2000, 2001, 2002, 2003 Ben Wing. + Copyright (C) 2000, 2001, 2002, 2003, 2005 Ben Wing. = This file is part of XEmacs. = @@ -406,8 +406,8 @@ valid_coding_system_type_p (Lisp_Object = DEFUN ("valid-coding-system-type-p", Fvalid_coding_system_type_p, 1, 1, = 0, /* Given a CODING-SYSTEM-TYPE, return non-nil if it is valid. Valid types depend on how XEmacs was compiled but may include -'undecided, 'chain, 'integer, 'ccl, 'iso2022, 'big5, 'shift-jis, -'utf-16, 'ucs-4, 'utf-8, etc. +`undecided', `chain', `integer', `ccl', `iso2022', `big5', `shift-jis', +`utf-16', `ucs-4', `utf-8', etc. */ (coding_system_type)) { @@ -698,13 +698,8 @@ allocate_coding_system (struct coding_sy { Bytecount total_size =3D offsetof (Lisp_Coding_System, data) + data_si= ze; Lisp_Coding_System *codesys =3D -#ifdef MC_ALLOC - (Lisp_Coding_System *) alloc_lrecord (total_size, - &lrecord_coding_system); -#else /* not MC_ALLOC */ - (Lisp_Coding_System *) basic_alloc_lcrecord (total_size, + (Lisp_Coding_System *) BASIC_ALLOC_LCRECORD (total_size, &lrecord_coding_system); -#endif /* not MC_ALLOC */ = codesys->methods =3D codesys_meths; #define MARKED_SLOT(x) codesys->x =3D Qnil; @@ -1049,54 +1044,54 @@ Register symbol NAME as a coding system. = TYPE describes the conversion method used and should be one of = -nil or 'undecided +nil or `undecided' Automatic conversion. XEmacs attempts to detect the coding system used in the file. -'chain +`chain' Chain two or more coding systems together to make a combination cod= ing system. -'no-conversion +`no-conversion' No conversion. Use this for binary files and such. On output, graphic characters that are not in ASCII or Latin-1 will be replaced by a ?. (For a no-conversion-encoded buffer, these characters will only be present if you explicitly insert them.) -'convert-eol +`convert-eol' Convert CRLF sequences or CR to LF. -'shift-jis +`shift-jis' Shift-JIS (a Japanese encoding commonly used in PC operating system= s). -'unicode +`unicode' Any Unicode encoding (UCS-4, UTF-8, UTF-16, etc.). -'mswindows-unicode-to-multibyte +`mswindows-unicode-to-multibyte' (MS Windows only) Converts from Windows Unicode to Windows Multibyte (any code page encoding) upon encoding, and the other way upon deco= ding. -'mswindows-multibyte +`mswindows-multibyte' Converts to or from Windows Multibyte (any code page encoding). This is resolved into a chain of `mswindows-unicode' and `mswindows-unicode-to-multibyte'. -'iso2022 +`iso2022' Any ISO2022-compliant encoding. Among other things, this includes JIS (the Japanese encoding commonly used for e-mail), EUC (the standard Unix encoding for Japanese and other languages), and Compound Text (the encoding used in X11). You can specify more specific information about the conversion with the PROPS argument. -'big5 +`big5' Big5 (the encoding commonly used for Mandarin Chinese in Taiwan). -'ccl +`ccl' The conversion is performed using a user-written pseudo-code program. CCL (Code Conversion Language) is the name of this pseudo-code. -'gzip +`gzip' GZIP compression format. -'internal +`internal' Write out or read in the raw contents of the memory representing the buffer's text. This is primarily useful for debugging purposes, and is only enabled when XEmacs has been compiled with DEBUG_XEMACS defined (via the --debug configure option). - WARNING: Reading in a file using 'internal conversion can result + WARNING: Reading in a file using `internal' conversion can result in an internal inconsistency in the memory representing a buffer's text, which will produce unpredictable results and may cause XEmacs to crash. Under normal circumstances you should - never use 'internal conversion. + never use `internal' conversion. = DESCRIPTION is a short English phrase describing the coding system, suitable for use as a menu item. (See also the `documentation' property @@ -1105,14 +1100,14 @@ below.) PROPS is a property list, describing the specific nature of the character set. Recognized properties are: = -'mnemonic +`mnemonic' String to be displayed in the modeline when this coding system is active. = -'documentation +`documentation' Detailed documentation on the coding system. = -'eol-type +`eol-type' End-of-line conversion to be used. It should be one of = nil @@ -1120,18 +1115,18 @@ character set. Recognized properties ar or CR). Also generate subsidiary coding systems named `NAME-unix', `NAME-dos', and `NAME-mac', that are identical to this coding system but have an EOL-TYPE - value of 'lf, 'crlf, and 'cr, respectively. - 'lf + value of `lf', `crlf', and `cr', respectively. + `lf' The end of a line is marked externally using ASCII LF. Since this is also the way that XEmacs represents an end-of-line internally, specifying this option results in no end-of-line conversion. This is the standard format for Unix text files. - 'crlf + `crlf' The end of a line is marked externally using ASCII CRLF. This is the standard format for MS-DOS text files. - 'cr + `cr' The end of a line is marked externally using ASCII CR. This is the standard format for Macintosh text files. t @@ -1140,7 +1135,7 @@ character set. Recognized properties ar converted to nil when stored internally, and `coding-system-property' will return nil.) = -'post-read-conversion +`post-read-conversion' The value is a function to call after some text is inserted and decoded by the coding system itself and before any functions in `after-change-functions' are called. (#### Not actually true in @@ -1150,7 +1145,7 @@ character set. Recognized properties ar `after-insert-file-functions', i.e. LENGTH of the text inserted, with point at the head of the text to be decoded. = -'pre-write-conversion +`pre-write-conversion' The value is a function to call after all functions in `write-region-annotate-functions' and `buffer-file-format' are called, and before the text is encoded by the coding system itself. @@ -1163,21 +1158,21 @@ character set. Recognized properties ar The following properties are allowed for FSF compatibility but currently ignored: = -'translation-table-for-decode +`translation-table-for-decode' The value is a translation table to be applied on decoding. See the function `make-translation-table' for the format of translation table. This is not applicable to CCL-based coding systems. = -'translation-table-for-encode +`translation-table-for-encode' The value is a translation table to be applied on encoding. This is not applicable to CCL-based coding systems. = -'safe-chars +`safe-chars' The value is a char table. If a character has non-nil value in it, the character is safely supported by the coding system. This overrides the specification of safe-charsets. = -'safe-charsets +`safe-charsets' The value is a list of charsets safely supported by the coding system. The value t means that all charsets Emacs handles are supported. Even if some charset is not in this list, it doesn't @@ -1185,11 +1180,11 @@ ignored: it just means that some other receiver of text encoded in the coding system won't be able to handle that charset. = -'mime-charset +`mime-charset' The value is a symbol of which name is `MIME-charset' parameter of the coding system. = -'valid-codes (meaningful only for a coding system based on CCL) +`valid-codes' (meaningful only for a coding system based on CCL) The value is a list to indicate valid byte ranges of the encoded file. Each element of the list is an integer or a cons of integer. In the former case, the integer value is a valid byte code. In the @@ -1197,9 +1192,9 @@ ignored: = = = -The following additional property is recognized if TYPE is 'convert-eol: +The following additional property is recognized if TYPE is `convert-eol': = -'subtype +`subtype' One of `lf', `crlf', `cr' or nil (for autodetection). When decodin= g, the corresponding sequence will be converted to LF. When encoding, the opposite happens. This coding system converts characters to @@ -1207,12 +1202,12 @@ The following additional property is rec = = = -The following additional properties are recognized if TYPE is 'iso2022: +The following additional properties are recognized if TYPE is `iso2022': = -'charset-g0 -'charset-g1 -'charset-g2 -'charset-g3 +`charset-g0' +`charset-g1' +`charset-g2' +`charset-g3' The character set initially designated to the G0 - G3 registers. The value should be one of = @@ -1222,38 +1217,38 @@ The following additional properties are = the register, but may be later on; this automatically sets the corresponding `force-g*-on-output' property) = -'force-g0-on-output -'force-g1-on-output -'force-g2-on-output -'force-g2-on-output +`force-g0-on-output' +`force-g1-on-output' +`force-g2-on-output' +`force-g2-on-output' If non-nil, send an explicit designation sequence on output before using the specified register. = -'short +`short' If non-nil, use the short forms "ESC $ @", "ESC $ A", and "ESC $ B" on output in place of the full designation sequences "ESC $ ( @", "ESC $ ( A", and "ESC $ ( B". = -'no-ascii-eol +`no-ascii-eol' If non-nil, don't designate ASCII to G0 at each end of line on outp= ut. Setting this to non-nil also suppresses other state-resetting that normally happens at the end of a line. = -'no-ascii-cntl +`no-ascii-cntl' If non-nil, don't designate ASCII to G0 before control chars on out= put. = -'seven +`seven' If non-nil, use 7-bit environment on output. Otherwise, use 8-bit environment. = -'lock-shift +`lock-shift' If non-nil, use locking-shift (SO/SI) instead of single-shift or designation by escape sequence. = -'no-iso6429 +`no-iso6429' If non-nil, don't use ISO6429's direction specification. = -'escape-quoted +`escape-quoted' If non-nil, literal control characters that are the same as the beginning of a recognized ISO2022 or ISO6429 escape sequence (in particular, ESC (0x1B), SO (0x0E), SI (0x0F), SS2 (0x8E), @@ -1266,44 +1261,44 @@ The following additional properties are = or Control-1 character sets; this is explicitly disallowed by the ISO2022 standard. = -'input-charset-conversion +`input-charset-conversion' A list of conversion specifications, specifying conversion of characters in one charset to another when decoding is performed. Each specification is a list of two elements: the source charset, and the destination charset. = -'output-charset-conversion +`output-charset-conversion' A list of conversion specifications, specifying conversion of characters in one charset to another when encoding is performed. The form of each specification is the same as for - 'input-charset-conversion. + `input-charset-conversion'. = = = The following additional properties are recognized (and required) -if TYPE is 'ccl: +if TYPE is `ccl': = -'decode +`decode' CCL program used for decoding (converting to internal format). = -'encode +`encode' CCL program used for encoding (converting to external format). = = -The following additional properties are recognized if TYPE is 'chain: +The following additional properties are recognized if TYPE is `chain': = -'chain +`chain' List of coding systems to be chained together, in decoding order. = -'canonicalize-after-coding +`canonicalize-after-coding' Coding system to be returned by the detector routines in place of this coding system. = = = -The following additional properties are recognized if TYPE is 'unicode: +The following additional properties are recognized if TYPE is `unicode': = -'type +`type' One of `utf-16', `utf-8', `ucs-4', or `utf-7' (the latter is not yet implemented). `utf-16' is the basic two-byte encoding; `ucs-4' is the four-byte encoding; `utf-8' is an ASCII-compatible @@ -1312,12 +1307,12 @@ The following additional properties are = [[ This should be \"transformation format\". There should also be `ucs-2' (or `bmp' -- no surrogates) and `utf-32' (range checked). ]] = -'little-endian +`little-endian' If non-nil, `utf-16' and `ucs-4' will write out the groups of two or four bytes little-endian instead of big-endian. This is require= d, for example, under Windows. = -'need-bom +`need-bom' If non-nil, a byte order mark (BOM, or Unicode FFFE) should be written out at the beginning of the data. This serves both to identify the endianness of the following data and to mark the @@ -1327,16 +1322,16 @@ The following additional properties are = = = The following additional properties are recognized if TYPE is -'mswindows-multibyte: +`mswindows-multibyte': = -'code-page +`code-page' Either a number (specifying a particular code page) or one of the symbols `ansi', `oem', `mac', or `ebcdic', specifying the ANSI, OEM, Macintosh, or EBCDIC code page associated with a particular locale (given by the `locale' property). NOTE: EBCDIC code pages only exist in Windows 2000 and later. = -'locale +`locale' If `code-page' is a symbol, this specifies the locale whose code page of the corresponding type should be used. This should be one of the following: A cons of two strings, (LANGUAGE @@ -1349,16 +1344,16 @@ The following additional properties are = = = = -The following additional properties are recognized if TYPE is 'undecided: +The following additional properties are recognized if TYPE is `undecided= ': [[ Doesn't GNU use \"detect-*\" for the following two? ]] = -'do-eol +`do-eol' Do EOL detection. = -'do-coding +`do-coding' Do encoding detection. = -'coding-system +`coding-system' If encoding detection is not done, use the specified coding system to do decoding. This is used internally when implementing coding systems with an EOL type that specifies autodetection (the default), @@ -1366,9 +1361,9 @@ The following additional properties are = = = = -The following additional property is recognized if TYPE is 'gzip: +The following additional property is recognized if TYPE is `gzip': = -'level +`level' Compression level: 0 through 9, or `default' (currently 6). = */ @@ -1409,11 +1404,7 @@ Use `define-coding-system-alias' instead { Lisp_Coding_System *to =3D XCODING_SYSTEM (new_coding_system); Lisp_Coding_System *from =3D XCODING_SYSTEM (old_coding_system); -#ifdef MC_ALLOC - copy_sized_lrecord (to, from, sizeof_coding_system (from)); -#else /* not MC_ALLOC */ - copy_sized_lcrecord (to, from, sizeof_coding_system (from)); -#endif /* not MC_ALLOC */ + COPY_SIZED_LCRECORD (to, from, sizeof_coding_system (from)); to->name =3D new_name; } return new_coding_system; @@ -4073,7 +4064,7 @@ detect_coding_stream (Lisp_Object stream DEFUN ("detect-coding-region", Fdetect_coding_region, 2, 3, 0, /* Detect coding system of the text in the region between START and END. Return a list of possible coding systems ordered by priority. -If only ASCII characters are found, return 'undecided or one of +If only ASCII characters are found, return `undecided' or one of its subsidiary coding systems according to a detected end-of-line type. Optional arg BUFFER defaults to the current buffer. */ = = = 1.25.2.2 +1 -5 XEmacs/xemacs/src/file-coding.h = Index: file-coding.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/file-coding.h,v retrieving revision 1.25.2.1 retrieving revision 1.25.2.2 diff -u -p -r1.25.2.1 -r1.25.2.2 --- file-coding.h 2005/07/13 04:46:42 1.25.2.1 +++ file-coding.h 2005/11/06 16:14:47 1.25.2.2 @@ -188,11 +188,7 @@ enum eol_type = struct Lisp_Coding_System { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; struct coding_system_methods *methods; = #define CODING_SYSTEM_SLOT_DECLARATION = = = 1.61.2.3 +2 -2 XEmacs/xemacs/src/fns.c = Index: fns.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/fns.c,v retrieving revision 1.61.2.2 retrieving revision 1.61.2.3 diff -u -p -r1.61.2.2 -r1.61.2.3 --- fns.c 2005/07/13 04:46:43 1.61.2.2 +++ fns.c 2005/11/06 16:14:47 1.61.2.3 @@ -3348,11 +3348,11 @@ This is like (copy-sequence NEW) except = conses in OLD as much as possible. If OLD and NEW are the same length, no consing will take place. */ - (old, new)) + (old, new_)) { Lisp_Object oldtail =3D old, prevoldtail =3D Qnil; = - EXTERNAL_LIST_LOOP_2 (elt, new) + EXTERNAL_LIST_LOOP_2 (elt, new_) { if (!NILP (oldtail)) { = = = 1.4.2.2 +1 -5 XEmacs/xemacs/src/frame-impl.h = Index: frame-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame-impl.h,v retrieving revision 1.4.2.1 retrieving revision 1.4.2.2 diff -u -p -r1.4.2.1 -r1.4.2.2 --- frame-impl.h 2005/07/13 04:46:45 1.4.2.1 +++ frame-impl.h 2005/11/06 16:14:48 1.4.2.2 @@ -41,11 +41,7 @@ Boston, MA 02111-1307, USA. */ = struct frame { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Methods for this frame's console. This can also be retrieved through frame->device->console, but it's faster this way. */ = = = 1.55.2.2 +30 -1 XEmacs/xemacs/src/frame-msw.c = Index: frame-msw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame-msw.c,v retrieving revision 1.55.2.1 retrieving revision 1.55.2.2 diff -u -p -r1.55.2.1 -r1.55.2.2 --- frame-msw.c 2005/09/20 16:06:08 1.55.2.1 +++ frame-msw.c 2005/11/06 16:14:48 1.55.2.2 @@ -102,6 +102,18 @@ const struct sized_memory_description ms /*----- DISPLAY FRAME -----*/ /*---------------------------------------------------------------------*/ = +static struct frame * +decode_mswindows_frame (Lisp_Object frame) +{ + if (NILP (frame)) + frame =3D wrap_frame (selected_frame ()); + CHECK_LIVE_FRAME (frame); + /* this will also catch dead frames, but putting in the above check + results in a more useful error */ + CHECK_MSWINDOWS_FRAME (frame); + return XFRAME (frame); +} + HWND mswindows_get_selected_frame_hwnd (void) { @@ -564,6 +576,16 @@ mswindows_set_title_from_ibyte (struct f } = static Lisp_Object +mswindows_window_id (Lisp_Object frame) +{ + Ibyte str[255]; + struct frame *f =3D decode_mswindows_frame (frame); + + qxesprintf (str, "%lu", (unsigned long) FRAME_MSWINDOWS_HANDLE (f)); + return build_intstring (str); +} + +static Lisp_Object mswindows_frame_property (struct frame *f, Lisp_Object property) { if (EQ (Qleft, property) || EQ (Qtop, property)) @@ -572,6 +594,9 @@ mswindows_frame_property (struct frame * GetWindowRect (FRAME_MSWINDOWS_HANDLE (f), &rc); return make_int (EQ (Qtop, property) ? rc.top : rc.left); } + if (EQ (Qwindow_id, property)) + return mswindows_window_id (wrap_frame (f)); + return Qunbound; } = @@ -580,7 +605,8 @@ mswindows_internal_frame_property_p (str Lisp_Object property) { return EQ (property, Qleft) - || EQ (property, Qtop); + || EQ (property, Qtop) + || EQ (property, Qwindow_id); /* #### frame-x.c has also this. Why? || STRINGP (property); */ @@ -595,6 +621,7 @@ mswindows_frame_properties (struct frame = props =3D cons3 (Qtop, make_int (rc.top), props); props =3D cons3 (Qleft, make_int (rc.left), props); + props =3D cons3 (Qwindow_id, mswindows_window_id (wrap_frame (f)), pro= ps); = return props; } @@ -1209,6 +1236,8 @@ set at any time, except as otherwise not outermost corner of the frame (i.e. the upper-left of the window-manager decorations). + window-id Window handle (HWND) of the frame. + Cannot be set. = See also `default-frame-plist', which specifies properties which apply to all frames, not just mswindows frames. = = = 1.14.2.1 +5 -5 XEmacs/xemacs/src/frame-tty.c = Index: frame-tty.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame-tty.c,v retrieving revision 1.14 retrieving revision 1.14.2.1 diff -u -p -r1.14 -r1.14.2.1 --- frame-tty.c 2004/09/20 19:19:44 1.14 +++ frame-tty.c 2005/11/06 16:14:48 1.14.2.1 @@ -151,7 +151,7 @@ static void tty_lower_frame (struct frame *f) { Lisp_Object frame_list =3D DEVICE_FRAME_LIST (XDEVICE (FRAME_DEVICE (f= ))); - Lisp_Object tail, new; + Lisp_Object tail, new_; = if (!FRAME_REPAINT_P (f)) return; @@ -169,11 +169,11 @@ tty_lower_frame (struct frame *f) = tty_make_frame_hidden (f); if (CONSP (XCDR (tail))) - new =3D XCAR (XCDR (tail)); + new_ =3D XCAR (XCDR (tail)); else - new =3D XCAR (frame_list); - tty_make_frame_unhidden (XFRAME (new)); - tty_schedule_frame_select (XFRAME (new)); + new_ =3D XCAR (frame_list); + tty_make_frame_unhidden (XFRAME (new_)); + tty_schedule_frame_select (XFRAME (new_)); } = static void = = = 1.65.2.3 +22 -30 XEmacs/xemacs/src/frame.c = Index: frame.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame.c,v retrieving revision 1.65.2.2 retrieving revision 1.65.2.3 diff -u -p -r1.65.2.2 -r1.65.2.3 --- frame.c 2005/07/13 04:46:45 1.65.2.2 +++ frame.c 2005/11/06 16:14:48 1.65.2.3 @@ -1,6 +1,6 @@ /* Generic frame functions. Copyright (C) 1989, 1992, 1993, 1994, 1995 Free Software Foundation, = Inc. - Copyright (C) 1995, 1996, 2002, 2003 Ben Wing. + Copyright (C) 1995, 1996, 2002, 2003, 2005 Ben Wing. Copyright (C) 1995 Sun Microsystems, Inc. = This file is part of XEmacs. @@ -259,11 +259,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("frame", = static void nuke_all_frame_slots (struct frame *f) { -#ifdef MC_ALLOC - zero_lrecord (f); -#else /* not MC_ALLOC */ - zero_lcrecord (f); -#endif /* not MC_ALLOC */ + ZERO_LCRECORD (f); = #define MARKED_SLOT(x) f->x =3D Qnil; #include "frameslots.h" @@ -279,11 +275,7 @@ allocate_frame_core (Lisp_Object device) /* This function can GC */ Lisp_Object frame; Lisp_Object root_window; -#ifdef MC_ALLOC - struct frame *f =3D alloc_lrecord_type (struct frame, &lrecord_frame); -#else /* not MC_ALLOC */ - struct frame *f =3D alloc_lcrecord_type (struct frame, &lrecord_frame); -#endif /* not MC_ALLOC */ + struct frame *f =3D ALLOC_LCRECORD_TYPE (struct frame, &lrecord_frame); = nuke_all_frame_slots (f); frame =3D wrap_frame (f); @@ -1302,24 +1294,24 @@ returned. = Possible values for WHICH-FRAMES are = -'visible Consider only frames that are visible. -'iconic Consider only frames that are iconic. -'invisible Consider only frames that are invisible - (this is different from iconic). -'visible-iconic Consider frames that are visible or iconic. -'invisible-iconic Consider frames that are invisible or iconic. -'nomini Consider all frames except minibuffer-only ones. -'visible-nomini Like `visible' but omits minibuffer-only frames. -'iconic-nomini Like `iconic' but omits minibuffer-only frames. -'invisible-nomini Like `invisible' but omits minibuffer-only frames. -'visible-iconic-nomini Like `visible-iconic' but omits minibuffer-only - frames. -'invisible-iconic-nomini Like `invisible-iconic' but omits minibuffer-on= ly - frames. -any other value Consider all frames. +`visible' Consider only frames that are visible. +`iconic' Consider only frames that are iconic. +`invisible' Consider only frames that are invisible + (this is different from iconic). +`visible-iconic' Consider frames that are visible or iconic. +`invisible-iconic' Consider frames that are invisible or iconic. +`nomini' Consider all frames except minibuffer-only one= s. +`visible-nomini' Like `visible' but omits minibuffer-only frame= s. +`iconic-nomini' Like `iconic' but omits minibuffer-only frames. +`invisible-nomini' Like `invisible' but omits minibuffer-only fra= mes. +`visible-iconic-nomini' Like `visible-iconic' but omits minibuffer-only + frames. +`invisible-iconic-nomini' Like `invisible-iconic' but omits minibuffer-o= nly + frames. +any other value Consider all frames. = -If WHICH-FRAMES is omitted, 'nomini is used. A value for WHICH-FRAMES -of 0 (a number) is treated like 'iconic, for backwards compatibility. +If WHICH-FRAMES is omitted, `nomini' is used. A value for WHICH-FRAMES +of 0 (a number) is treated like `iconic', for backwards compatibility. = If WHICH-FRAMES is a window, include only its own frame and any frame now using that window as the minibuffer. @@ -2103,14 +2095,14 @@ Also raises the frame so that nothing ob return Fmake_frame_visible (frame); } = -/* FSF returns 'icon for iconized frames. What a crock! */ +/* FSF returns `icon' for iconized frames. What a crock! */ = DEFUN ("frame-visible-p", Fframe_visible_p, 0, 1, 0, /* Return non NIL if FRAME is now "visible" (actually in use for display). A frame that is not visible is not updated, and, if it works through a window system, may not show at all. N.B. Under X "visible" means Mapped. It the window is mapped but not -actually visible on screen then `frame-visible-p' returns 'hidden. +actually visible on screen then `frame-visible-p' returns `hidden'. */ (frame)) { = = = 1.48.2.4 +3 -15 XEmacs/xemacs/src/glyphs.c = Index: glyphs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs.c,v retrieving revision 1.48.2.3 retrieving revision 1.48.2.4 diff -u -p -r1.48.2.3 -r1.48.2.4 --- glyphs.c 2005/09/27 16:29:33 1.48.2.3 +++ glyphs.c 2005/11/06 16:14:49 1.48.2.4 @@ -1326,11 +1326,7 @@ allocate_image_instance (Lisp_Object gov Lisp_Object instantiator) { Lisp_Image_Instance *lp =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Image_Instance, &lrecord_image_instance); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Image_Instance, &lrecord_image_instance); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Image_Instance, &lrecord_image_instance); Lisp_Object val; = /* It's not possible to simply keep a record of the domain in which @@ -1997,11 +1993,7 @@ instance is a mono pixmap; otherwise, th device-specific method to copy the window-system subobject. */ new_ =3D allocate_image_instance (XIMAGE_INSTANCE_DOMAIN (image_instan= ce), Qnil, Qnil); -#ifdef MC_ALLOC - copy_lrecord (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance)= ); -#else /* not MC_ALLOC */ - copy_lcrecord (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance= )); -#endif /* not MC_ALLOC */ + COPY_LCRECORD (XIMAGE_INSTANCE (new_), XIMAGE_INSTANCE (image_instance= )); /* note that if this method returns non-zero, this method MUST copy any window-system resources, so that when one image instance is freed, the other one is not hosed. */ @@ -3814,11 +3806,7 @@ allocate_glyph (enum glyph_type type, { /* This function can GC */ Lisp_Object obj =3D Qnil; -#ifdef MC_ALLOC - Lisp_Glyph *g =3D alloc_lrecord_type (Lisp_Glyph, &lrecord_glyph); -#else /* not MC_ALLOC */ - Lisp_Glyph *g =3D alloc_lcrecord_type (Lisp_Glyph, &lrecord_glyph); -#endif /* not MC_ALLOC */ + Lisp_Glyph *g =3D ALLOC_LCRECORD_TYPE (Lisp_Glyph, &lrecord_glyph); = g->type =3D type; g->image =3D Fmake_specifier (Qimage); /* This function can GC */ = = = 1.38.2.2 +2 -10 XEmacs/xemacs/src/glyphs.h = Index: glyphs.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs.h,v retrieving revision 1.38.2.1 retrieving revision 1.38.2.2 diff -u -p -r1.38.2.1 -r1.38.2.2 --- glyphs.h 2005/07/13 04:46:47 1.38.2.1 +++ glyphs.h 2005/11/06 16:14:49 1.38.2.2 @@ -594,11 +594,7 @@ struct subwindow_image_instance = struct Lisp_Image_Instance { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object domain; /* The domain in which we were cached. */ Lisp_Object device; /* The device of the domain. Recorded since the domain may get deleted @@ -950,11 +946,7 @@ enum glyph_type = struct Lisp_Glyph { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = enum glyph_type type; = = = = 1.18.2.3 +1 -1 XEmacs/xemacs/src/gpmevent.c = Index: gpmevent.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/gpmevent.c,v retrieving revision 1.18.2.2 retrieving revision 1.18.2.3 diff -u -p -r1.18.2.2 -r1.18.2.3 --- gpmevent.c 2005/09/20 16:06:08 1.18.2.2 +++ gpmevent.c 2005/11/06 16:14:49 1.18.2.3 @@ -562,7 +562,7 @@ Toggle accepting of GPM mouse events. gpm_consolefd =3D fd; = /* We have to pass the virtual console manually, otherwise if you - ** use 'gnuclient -nw' to connect to an XEmacs that is running in + ** use `gnuclient -nw' to connect to an XEmacs that is running in ** X, Gpm_Open() tries to use ttyname(0 | 1 | 2) to find out which ** console you are using, which is of course not correct for the ** new tty device. = = = 1.29.2.2 +1 -5 XEmacs/xemacs/src/gui.c = Index: gui.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/gui.c,v retrieving revision 1.29.2.1 retrieving revision 1.29.2.2 diff -u -p -r1.29.2.1 -r1.29.2.2 --- gui.c 2005/07/13 04:46:48 1.29.2.1 +++ gui.c 2005/11/06 16:14:50 1.29.2.2 @@ -197,11 +197,7 @@ gui_item_init (Lisp_Object gui_item) Lisp_Object allocate_gui_item (void) { -#ifdef MC_ALLOC - Lisp_Gui_Item *lp =3D alloc_lrecord_type (Lisp_Gui_Item, &lrecord_gui_= item); -#else /* not MC_ALLOC */ - Lisp_Gui_Item *lp =3D alloc_lcrecord_type (Lisp_Gui_Item, &lrecord_gui= _item); -#endif /* not MC_ALLOC */ + Lisp_Gui_Item *lp =3D ALLOC_LCRECORD_TYPE (Lisp_Gui_Item, &lrecord_gui= _item); Lisp_Object val; = val =3D wrap_gui_item (lp); = = = 1.18.2.2 +1 -5 XEmacs/xemacs/src/gui.h = Index: gui.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/gui.h,v retrieving revision 1.18.2.1 retrieving revision 1.18.2.2 diff -u -p -r1.18.2.1 -r1.18.2.2 --- gui.h 2005/07/13 04:46:48 1.18.2.1 +++ gui.h 2005/11/06 16:14:50 1.18.2.2 @@ -44,11 +44,7 @@ extern int popup_up_p; menu item or submenu properties */ struct Lisp_Gui_Item { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object name; /* String */ Lisp_Object callback; /* Symbol or form */ Lisp_Object callback_ex; /* Form taking context arguments */ = = = 1.17.2.2 +16 -16 XEmacs/xemacs/src/gutter.c = Index: gutter.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/gutter.c,v retrieving revision 1.17.2.1 retrieving revision 1.17.2.2 diff -u -p -r1.17.2.1 -r1.17.2.2 --- gutter.c 2005/03/15 05:24:23 1.17.2.1 +++ gutter.c 2005/11/06 16:14:50 1.17.2.2 @@ -739,15 +739,15 @@ decode_gutter_position (Lisp_Object posi = DEFUN ("set-default-gutter-position", Fset_default_gutter_position, 1, 1= , 0, /* Set the position that the `default-gutter' will be displayed at. -Valid positions are 'top, 'bottom, 'left and 'right. +Valid positions are `top', `bottom', `left' and `right'. See `default-gutter-position'. */ (position)) { enum gutter_pos cur =3D decode_gutter_position (Vdefault_gutter_positi= on); - enum gutter_pos new =3D decode_gutter_position (position); + enum gutter_pos new_ =3D decode_gutter_position (position); = - if (cur !=3D new) + if (cur !=3D new_) { /* The following calls will automatically cause the dirty flags to be set; we delay frame size changes to avoid @@ -756,18 +756,18 @@ See `default-gutter-position'. int depth =3D begin_hold_frame_size_changes (); = set_specifier_fallback (Vgutter[cur], list1 (Fcons (Qnil, Qnil))); - set_specifier_fallback (Vgutter[new], Vdefault_gutter); + set_specifier_fallback (Vgutter[new_], Vdefault_gutter); set_specifier_fallback (Vgutter_size[cur], list1 (Fcons (Qnil, Qze= ro))); - set_specifier_fallback (Vgutter_size[new], - new =3D=3D TOP_GUTTER || new =3D=3D BOTTOM_GUTTER + set_specifier_fallback (Vgutter_size[new_], + new_ =3D=3D TOP_GUTTER || new_ =3D=3D BOTTOM_GUTTER ? Vdefault_gutter_height : Vdefault_gutter_width); set_specifier_fallback (Vgutter_border_width[cur], list1 (Fcons (Qnil, Qzero))); - set_specifier_fallback (Vgutter_border_width[new], + set_specifier_fallback (Vgutter_border_width[new_], Vdefault_gutter_border_width); set_specifier_fallback (Vgutter_visible_p[cur], list1 (Fcons (Qnil= , Qt))); - set_specifier_fallback (Vgutter_visible_p[new], Vdefault_gutter_vi= sible_p); + set_specifier_fallback (Vgutter_visible_p[new_], Vdefault_gutter_v= isible_p); Vdefault_gutter_position =3D position; = unbind_to (depth); @@ -1035,7 +1035,7 @@ gutter_size_validate (Lisp_Object instan return; = if (!INTP (instantiator) && !EQ (instantiator, Qautodetect)) - invalid_argument ("Gutter size must be an integer or 'autodetect", i= nstantiator); + invalid_argument ("Gutter size must be an integer or `autodetect'", = instantiator); } = DEFUN ("gutter-size-specifier-p", Fgutter_size_specifier_p, 1, 1, 0, /* @@ -1235,7 +1235,7 @@ Use `set-specifier' to change this. = The position of this gutter is specified in the function `default-gutter-position'. If the corresponding position-specific -gutter (e.g. `top-gutter' if `default-gutter-position' is 'top) +gutter (e.g. `top-gutter' if `default-gutter-position' is `top') does not specify a gutter in a particular domain (usually a window), then the value of `default-gutter' in that domain, if any, will be used instead. @@ -1356,21 +1356,21 @@ This is a specifier; use `set-specifier' The position of the default gutter is specified by the function `set-default-gutter-position'. If the corresponding position-specific gutter thickness specifier (e.g. `top-gutter-height' if -`default-gutter-position' is 'top) does not specify a thickness in a +`default-gutter-position' is `top') does not specify a thickness in a particular domain (a window or a frame), then the value of `default-gutter-height' or `default-gutter-width' (depending on the gutter orientation) in that domain, if any, will be used instead. = Note that `default-gutter-height' is only used when -`default-gutter-position' is 'top or 'bottom, and `default-gutter-width' -is only used when `default-gutter-position' is 'left or 'right. +`default-gutter-position' is `top' or `bottom', and `default-gutter-widt= h' +is only used when `default-gutter-position' is `left' or `right'. = Note that all of the position-specific gutter thickness specifiers have a fallback value of zero when they do not correspond to the default gutter. Therefore, you will have to set a non-zero thickness value if you want a position-specific gutter to be displayed. = -If you set the height to 'autodetect the size of the gutter will be +If you set the height to `autodetect' the size of the gutter will be calculated to be large enough to hold the contents of the gutter. This is the default. */ ); @@ -1488,7 +1488,7 @@ This is a specifier; use `set-specifier' The position of the default gutter is specified by the function `set-default-gutter-position'. If the corresponding position-specific gutter border width specifier (e.g. `top-gutter-border-width' if -`default-gutter-position' is 'top) does not specify a border width in a +`default-gutter-position' is `top') does not specify a border width in a particular domain (a window or a frame), then the value of `default-gutter-border-width' in that domain, if any, will be used instead. @@ -1579,7 +1579,7 @@ This is a specifier; use `set-specifier' The position of the default gutter is specified by the function `set-default-gutter-position'. If the corresponding position-specific gutter visibility specifier (e.g. `top-gutter-visible-p' if -`default-gutter-position' is 'top) does not specify a visible-p value +`default-gutter-position' is `top') does not specify a visible-p value in a particular domain (a window or a frame), then the value of `default-gutter-visible-p' in that domain, if any, will be used instead. = = = 1.12.2.2 +2 -2 XEmacs/xemacs/src/hash.c = Index: hash.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/hash.c,v retrieving revision 1.12.2.1 retrieving revision 1.12.2.2 diff -u -p -r1.12.2.1 -r1.12.2.2 --- hash.c 2005/03/15 05:24:23 1.12.2.1 +++ hash.c 2005/11/06 16:14:50 1.12.2.2 @@ -32,8 +32,8 @@ Boston, MA 02111-1307, USA. */ = #define COMFORTABLE_SIZE(size) (21 * (size) / 16) = -#define KEYS_DIFFER_P(old, new, testfun) \ - (((old) !=3D (new)) && (!(testfun) || !(testfun) ((old),(new)))) +#define KEYS_DIFFER_P(old, new_, testfun) \ + (((old) !=3D (new_)) && (!(testfun) || !(testfun) ((old),(new_)))) = static void rehash (hentry *harray, struct hash_table *ht, Elemcount siz= e); = = = = 1.8.2.1 +17 -17 XEmacs/xemacs/src/imgproc.c = Index: imgproc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/imgproc.c,v retrieving revision 1.8 retrieving revision 1.8.2.1 diff -u -p -r1.8 -r1.8.2.1 --- imgproc.c 2004/11/04 23:06:36 1.8 +++ imgproc.c 2005/11/06 16:14:51 1.8.2.1 @@ -202,7 +202,7 @@ splitbox(quant_table *qt, Colorbox* ptr) { int hist2[B_LEN]; int first =3D 0, last =3D 0; - register Colorbox *new; + register Colorbox *new_; register int *iptr, *histp; register int i, j; register int ir,ig,ib; @@ -286,45 +286,45 @@ splitbox(quant_table *qt, Colorbox* ptr) i++; = /* Create new box, re-allocate points */ - new =3D qt->freeboxes; - qt->freeboxes =3D new->next; + new_ =3D qt->freeboxes; + qt->freeboxes =3D new_->next; if (qt->freeboxes) qt->freeboxes->prev =3D NULL; if (qt->usedboxes) - qt->usedboxes->prev =3D new; - new->next =3D qt->usedboxes; - qt->usedboxes =3D new; + qt->usedboxes->prev =3D new_; + new_->next =3D qt->usedboxes; + qt->usedboxes =3D new_; = histp =3D &hist2[first]; for (sum1 =3D 0, j =3D first; j < i; j++) sum1 +=3D *histp++; for (sum2 =3D 0, j =3D i; j <=3D last; j++) sum2 +=3D *histp++; - new->total =3D sum1; + new_->total =3D sum1; ptr->total =3D sum2; = - new->rmin =3D ptr->rmin; - new->rmax =3D ptr->rmax; - new->gmin =3D ptr->gmin; - new->gmax =3D ptr->gmax; - new->bmin =3D ptr->bmin; - new->bmax =3D ptr->bmax; + new_->rmin =3D ptr->rmin; + new_->rmax =3D ptr->rmax; + new_->gmin =3D ptr->gmin; + new_->gmax =3D ptr->gmax; + new_->bmin =3D ptr->bmin; + new_->bmax =3D ptr->bmax; switch (axis) { case RED: - new->rmax =3D i-1; + new_->rmax =3D i-1; ptr->rmin =3D i; break; case GREEN: - new->gmax =3D i-1; + new_->gmax =3D i-1; ptr->gmin =3D i; break; case BLUE: - new->bmax =3D i-1; + new_->bmax =3D i-1; ptr->bmin =3D i; break; } - shrinkbox (qt, new); + shrinkbox (qt, new_); shrinkbox (qt, ptr); } = = = = 1.19.2.2 +2 -2 XEmacs/xemacs/src/indent.c = Index: indent.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/indent.c,v retrieving revision 1.19.2.1 retrieving revision 1.19.2.2 diff -u -p -r1.19.2.1 -r1.19.2.2 --- indent.c 2005/03/15 05:24:24 1.19.2.1 +++ indent.c 2005/11/06 16:14:51 1.19.2.2 @@ -2,7 +2,7 @@ Copyright (C) 1995 Board of Trustees, University of Illinois. Copyright (C) 1985, 1986, 1987, 1988, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. - Copyright (C) 2002 Ben Wing. + Copyright (C) 2002, 2005 Ben Wing. = This file is part of XEmacs. = @@ -392,7 +392,7 @@ and horizontal scrolling has no effect. If specified column is within a character, point goes after that charact= er. If it's past end of line, point goes to end of line. = -A value of 'coerce for the second (optional) argument FORCE means if +A value of `coerce' for the second (optional) argument FORCE means if COLUMN is in the middle of a tab character, change it to spaces. Any other non-nil value means the same, plus if the line is too short to reach column COLUMN, then add spaces/tabs to get there. = = = 1.20.2.2 +4 -2 XEmacs/xemacs/src/inline.c = Index: inline.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/inline.c,v retrieving revision 1.20.2.1 retrieving revision 1.20.2.2 diff -u -p -r1.20.2.1 -r1.20.2.2 --- inline.c 2004/11/25 12:44:14 1.20.2.1 +++ inline.c 2005/11/06 16:14:51 1.20.2.2 @@ -67,11 +67,13 @@ Boston, MA 02111-1307, USA. */ #include "syntax.h" #include "window.h" = -#if defined (HAVE_LDAP) && !defined (HAVE_SHLIB) +/* if we demand !define (HAVE_SHLIB) the inlines don't get instantiated = */ +#if defined (HAVE_LDAP) #include "../modules/ldap/eldap.h" #endif = -#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) +/* if we demand !define (HAVE_SHLIB) the inlines don't get instantiated = */ +#if defined (HAVE_POSTGRESQL) #include "../modules/postgresql/postgresql.h" #endif = = = = 1.52.2.6 +19 -26 XEmacs/xemacs/src/keymap.c = Index: keymap.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/keymap.c,v retrieving revision 1.52.2.5 retrieving revision 1.52.2.6 diff -u -p -r1.52.2.5 -r1.52.2.6 --- keymap.c 2005/09/20 16:06:08 1.52.2.5 +++ keymap.c 2005/11/06 16:14:51 1.52.2.6 @@ -50,7 +50,7 @@ Boston, MA 02111-1307, USA. */ table A hash table, hashing keysyms to their bindings. It will be one of the following: = - -- a symbol, e.g. 'home + -- a symbol, e.g. `home' -- a character, representing something printable (not ?\C-c meaning C-c, for instance) -- an integer representing a modifier combination @@ -148,11 +148,7 @@ Boston, MA 02111-1307, USA. */ = struct Lisp_Keymap { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object parents; /* Keymaps to be searched after this one. An ordered list */ Lisp_Object prompt; /* Qnil or a string to print in the mini= buffer @@ -760,11 +756,7 @@ static Lisp_Object make_keymap (Elemcount size) { Lisp_Object result; -#ifdef MC_ALLOC - Lisp_Keymap *keymap =3D alloc_lrecord_type (Lisp_Keymap, &lrecord_keym= ap); -#else /* not MC_ALLOC */ - Lisp_Keymap *keymap =3D alloc_lcrecord_type (Lisp_Keymap, &lrecord_key= map); -#endif /* not MC_ALLOC */ + Lisp_Keymap *keymap =3D ALLOC_LCRECORD_TYPE (Lisp_Keymap, &lrecord_key= map); = result =3D wrap_keymap (keymap); = @@ -1185,7 +1177,7 @@ copy_keymap_mapper (Lisp_Object key, Lis /* When we encounter a keymap which is indirected through a symbol, we need to copy the sub-map. In v18, the form (lookup-key (copy-keymap global-map) "\C-x") - returned a new keymap, not the symbol 'Control-X-prefix. + returned a new keymap, not the symbol `Control-X-prefix'. */ value =3D get_keymap (value, 0, 1); /* #### autoload GC-safe here? */ if (KEYMAPP (value)) @@ -1305,11 +1297,12 @@ define_key_check_and_coerce_keysym (Lisp { Ibyte *name =3D XSTRING_DATA (XSYMBOL (*keysym)->name); = - /* FSFmacs uses symbols with the printed representation of keysyms= in - their names, like 'M-x, and we use the syntax '(meta x). So, to avoid - confusion, notice the M-x syntax and signal an error - because - otherwise it would be interpreted as a regular keysym, and would even - show up in the list-buffers output, causing confusion to the naive. + /* GNU Emacs uses symbols with the printed representation of keysy= ms in + their names, like `M-x', and we use the syntax '(meta x). So, to + avoid confusion, notice the M-x syntax and signal an error - + because otherwise it would be interpreted as a regular keysym, and + would even show up in the list-buffers output, causing confusion + to the naive. = We can get away with this because none of the X keysym names contain a hyphen (some contain underscore, however). @@ -1582,19 +1575,19 @@ event_matches_key_specifier_p (Lisp_Obje return 0; = /* if the specifier is an integer such as 27, then it should match - both of the events 'escape' and 'control ['. Calling - Fcharacter_to_event() will only match 'escape'. */ + both of the events `escape' and `control ['. Calling + Fcharacter_to_event() will only match `escape'. */ if (CHAR_OR_CHAR_INTP (key_specifier)) return (XCHAR_OR_CHAR_INT (key_specifier) =3D=3D event_to_character (event, 0, 0)); = /* Otherwise, we cannot call event_to_character() because we may be dealing with non-ASCII keystrokes. In any case, if I ask - for 'control [' then I should get exactly that, and not - 'escape'. + for `control [' then I should get exactly that, and not + `escape'. = - However, we have to behave differently on TTY's, where 'control [' - is silently converted into 'escape' by the keyboard driver. + However, we have to behave differently on TTY's, where `control [' + is silently converted into `escape' by the keyboard driver. In this case, ASCII is the only thing we know about, so we have to compare the ASCII values. */ = @@ -2695,7 +2688,7 @@ static Lisp_Object process_event_binding_result (Lisp_Object result) { if (EQ (result, Qundefined)) - /* The suppress-keymap function binds keys to 'undefined - special-c= ase + /* The suppress-keymap function binds keys to `undefined' - special-= case that here, so that being bound to that has the same error-behavio= r as not being defined at all. */ @@ -3746,8 +3739,8 @@ where_is_recursive_mapper (Lisp_Object m int size =3D lower_keys_count + 50; if (! c->keys_so_far_malloced) { - Lisp_Key_Data *new =3D xnew_array (Lisp_Key_Data, size); - memcpy ((void *)new, (const void *)c->keys_so_far, + Lisp_Key_Data *new_ =3D xnew_array (Lisp_Key_Data, size); + memcpy ((void *)new_, (const void *)c->keys_so_far, c->keys_so_far_total_size * sizeof (Lisp_Key_Data)); } else = = = 1.19.2.1 +2 -2 XEmacs/xemacs/src/lisp-union.h = Index: lisp-union.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp-union.h,v retrieving revision 1.19 retrieving revision 1.19.2.1 diff -u -p -r1.19 -r1.19.2.1 --- lisp-union.h 2003/08/19 02:07:16 1.19 +++ lisp-union.h 2005/11/06 16:14:51 1.19.2.1 @@ -1,7 +1,7 @@ /* Fundamental definitions for XEmacs Lisp interpreter -- union objects. Copyright (C) 1985, 1986, 1987, 1992, 1993, 1994 Free Software Foundation, Inc. - Copyright (C) 2002 Ben Wing. + Copyright (C) 2002, 2005 Ben Wing. = This file is part of XEmacs. = @@ -73,7 +73,7 @@ union Lisp_Object EMACS_UINT ui; signed EMACS_INT i; = - /* This was formerly declared 'void *v' etc. but that causes + /* This was formerly declared `void *v' etc. but that causes GCC to accept any (yes, any) pointer as the argument of a function declared to accept a Lisp_Object. */ struct nosuchstruct *v; = = = 1.116.2.7 +5 -25 XEmacs/xemacs/src/lisp.h = Index: lisp.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v retrieving revision 1.116.2.6 retrieving revision 1.116.2.7 diff -u -p -r1.116.2.6 -r1.116.2.7 --- lisp.h 2005/09/27 16:29:35 1.116.2.6 +++ lisp.h 2005/11/06 16:14:52 1.116.2.7 @@ -2372,11 +2372,7 @@ DECLARE_MODULE_API_LRECORD (string, Lisp = struct Lisp_Vector { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; long size; Lisp_Object contents[1]; }; @@ -2413,11 +2409,7 @@ DECLARE_LRECORD (vector, Lisp_Vector); = struct Lisp_Bit_Vector { -#ifdef MC_ALLOC - struct lrecord_header lheader; -#else /* MC_ALLOC */ - struct lcrecord_header lheader; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER lheader; Elemcount size; unsigned long bits[1]; }; @@ -2778,11 +2770,7 @@ void define_structure_type_keyword (stru = struct weak_box { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object value; = Lisp_Object next_weak_box; /* don't mark through this! */ @@ -2804,11 +2792,7 @@ DECLARE_LRECORD (weak_box, struct weak_b = struct ephemeron = { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = Lisp_Object key; = @@ -2867,11 +2851,7 @@ enum weak_list_type = struct weak_list { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object list; /* don't mark through this! */ enum weak_list_type type; Lisp_Object next_weak; /* don't mark through this! */ = = = 1.34.2.6 +66 -59 XEmacs/xemacs/src/lrecord.h = Index: lrecord.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lrecord.h,v retrieving revision 1.34.2.5 retrieving revision 1.34.2.6 diff -u -p -r1.34.2.5 -r1.34.2.6 --- lrecord.h 2005/08/03 06:09:32 1.34.2.5 +++ lrecord.h 2005/11/06 16:14:52 1.34.2.6 @@ -1,6 +1,6 @@ /* The "lrecord" structure (header of a compound lisp object). Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. - Copyright (C) 1996, 2001, 2002, 2004 Ben Wing. + Copyright (C) 1996, 2001, 2002, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -67,9 +67,9 @@ Boston, MA 02111-1307, USA. */ Lcrecords are used for less common sorts of objects that don't do their own allocation. Each such object is malloc()ed individually, and the objects are chained together through a `next' pointer. - Lcrecords have a `struct lcrecord_header' at the top, which + Lcrecords have a `struct old_lcrecord_header' at the top, which contains a `struct lrecord_header' and a `next' pointer, and are - allocated using alloc_lcrecord_type() or its variants. + allocated using old_alloc_lcrecord_type() or its variants. = Creating a new lcrecord type is fairly easy; just follow the lead of some existing type (e.g. hash tables). Note that you @@ -81,6 +81,27 @@ Boston, MA 02111-1307, USA. */ */ #endif /* not MC_ALLOC */ = +#ifdef MC_ALLOC +#define ALLOC_LCRECORD_TYPE alloc_lrecord_type +#define COPY_SIZED_LCRECORD copy_sized_lrecord +#define COPY_LCRECORD copy_lrecord +#define LISPOBJ_STORAGE_SIZE(ptr, size, stats) \ + mc_alloced_storage_size (size, stats) +#define ZERO_LCRECORD zero_lrecord +#define LCRECORD_HEADER lrecord_header +#define BASIC_ALLOC_LCRECORD alloc_lrecord +#define FREE_LCRECORD free_lrecord +#else +#define ALLOC_LCRECORD_TYPE old_alloc_lcrecord_type +#define COPY_SIZED_LCRECORD old_copy_sized_lcrecord +#define COPY_LCRECORD old_copy_lcrecord +#define LISPOBJ_STORAGE_SIZE malloced_storage_size +#define ZERO_LCRECORD old_zero_lcrecord +#define LCRECORD_HEADER old_lcrecord_header +#define BASIC_ALLOC_LCRECORD old_basic_alloc_lcrecord +#define FREE_LCRECORD old_free_lcrecord +#endif + BEGIN_C_DECLS = struct lrecord_header @@ -145,13 +166,13 @@ int lrecord_type_index (const struct lre #endif /* not MC_ALLOC */ = #ifndef MC_ALLOC -struct lcrecord_header +struct old_lcrecord_header { struct lrecord_header lheader; = /* The `next' field is normally used to chain all lcrecords together so that the GC can find (and free) all of them. - `basic_alloc_lcrecord' threads lcrecords together. + `old_basic_alloc_lcrecord' threads lcrecords together. = The `next' field may be used for other purposes as long as some other mechanism is provided for letting the GC do its work. @@ -159,7 +180,7 @@ struct lcrecord_header For example, the event and marker object types allocate members out of memory chunks, and are able to find all unmarked members by sweeping through the elements of the list of chunks. */ - struct lcrecord_header *next; + struct old_lcrecord_header *next; = /* The `uid' field is just for debugging/printing convenience. Having this slot doesn't hurt us much spacewise, since an @@ -179,7 +200,7 @@ struct lcrecord_header /* Used for lcrecords in an lcrecord-list. */ struct free_lcrecord_header { - struct lcrecord_header lcheader; + struct old_lcrecord_header lcheader; Lisp_Object chain; }; #endif /* not MC_ALLOC */ @@ -345,7 +366,8 @@ struct lrecord_implementation /* Only one of `static_size' and `size_in_bytes_method' is non-0. */ #else /* not MC_ALLOC */ /* Only one of `static_size' and `size_in_bytes_method' is non-0. - If both are 0, this type is not instantiable by basic_alloc_lcrecor= d(). */ + If both are 0, this type is not instantiable by + old_basic_alloc_lcrecord(). */ #endif /* not MC_ALLOC */ Bytecount static_size; Bytecount (*size_in_bytes_method) (const void *header); @@ -355,7 +377,7 @@ struct lrecord_implementation = #ifndef MC_ALLOC /* A "basic" lrecord is any lrecord that's not an lcrecord, i.e. - one that does not have an lcrecord_header at the front and which + one that does not have an old_lcrecord_header at the front and which is (usually) allocated in frob blocks. */ unsigned int basic_p :1; #endif /* not MC_ALLOC */ @@ -377,18 +399,16 @@ extern int gc_in_progress; = #ifdef MC_ALLOC #include "mc-alloc.h" -#endif /* MC_ALLOC */ = -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS void init_lrecord_stats (void); void inc_lrecord_string_data_stats (Bytecount size); void dec_lrecord_string_data_stats (Bytecount size); void inc_lrecord_stats (Bytecount size, const struct lrecord_header *h); void dec_lrecord_stats (Bytecount size_including_overhead, = const struct lrecord_header *h); -#endif /* MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ = -#ifdef MC_ALLOC /* Tell mc-alloc how to call a finalizer. */ #define MC_ALLOC_CALL_FINALIZER(ptr) \ { \ @@ -662,11 +682,7 @@ void dec_lrecord_stats (Bytecount size_i = struct Lisp_Hash_Table { -#ifdef MC_ALLOC - struct lrecord_header header; -#else - struct lcrecord_header header; -#endif + struct LCRECORD_HEADER header; Elemcount size; Elemcount count; Elemcount rehash_count; @@ -731,11 +747,7 @@ void dec_lrecord_stats (Bytecount size_i = struct Lisp_Specifier { -#ifdef MC_ALLOC - struct lrecord_header header; -#else - struct lcrecord_header header; -#endif + struct LCRECORD_HEADER header; struct specifier_methods *methods; = ... @@ -1209,11 +1221,7 @@ extern MODULE_API Lisp_Object (*lrecord_ 1. Declare the struct for your object in a header file somewhere. Remember that it must begin with = -#ifdef MC_ALLOC - struct lrecord_header header; -#else - struct lcrecord_header header; -#endif + struct LCRECORD_HEADER header; = 2. Put the "standard junk" (DECLARE_RECORD()/XFOO/etc.) below the struct definition -- see below. @@ -1247,11 +1255,7 @@ An example: = struct toolbar_button { -#ifdef MC_ALLOC - struct lrecord_header header; -#else - struct lcrecord_header header; -#endif + struct LCRECORD_HEADER header; = Lisp_Object next; Lisp_Object frame; @@ -1370,7 +1374,8 @@ enum lrecord_type Note: Object types defined in external dynamically-loaded modules (not part of the XEmacs main source code) should use DECLARE_EXTERNAL_LRECORD and DEFINE_EXTERNAL_LRECORD_IMPLEMENTATION rather than DECLARE_LRECORD -and DEFINE_LRECORD_IMPLEMENTATION. +and DEFINE_LRECORD_IMPLEMENTATION. The EXTERNAL versions declare and +allocate an enumerator for the type being defined. = */ = @@ -1515,7 +1520,7 @@ extern Lisp_Object Q##c_name##p = struct lcrecord_list { - struct lcrecord_header header; + struct LCRECORD_HEADER header; Lisp_Object free; Elemcount size; const struct lrecord_implementation *implementation; @@ -1536,7 +1541,7 @@ DECLARE_LRECORD (lcrecord_list, struct l lrecords. lcrecords themselves are divided into three types: (1) auto-managed, (2) hand-managed, and (3) unmanaged. "Managed" refers = to using a special object called an lcrecord-list to keep track of freed - lcrecords, which can freed with free_lcrecord() or the like and later= be + lcrecords, which can freed with FREE_LCRECORD() or the like and later= be recycled when a new lcrecord is required, rather than requiring new malloc(). Thus, allocation of lcrecords can be very cheap. (Technically, the lcrecord-list manager could divide up large @@ -1550,9 +1555,9 @@ DECLARE_LRECORD (lcrecord_list, struct l in particular dictate the various types of management: = -- "Auto-managed" means that you just go ahead and allocate the lcrec= ord - whenever you want, using alloc_lcrecord_type(), and the appropriate + whenever you want, using old_alloc_lcrecord_type(), and the appropria= te lcrecord-list manager is automatically created. To free, you just ca= ll - "free_lcrecord()" and the appropriate lcrecord-list manager is + "FREE_LCRECORD()" and the appropriate lcrecord-list manager is automatically located and called. The limitation here of course is t= hat all your objects are of the same size. (#### Eventually we should hav= e a more sophisticated system that tracks the sizes seen and creates one @@ -1573,7 +1578,7 @@ DECLARE_LRECORD (lcrecord_list, struct l to hand-manage them, or (b) the objects you create are always or almo= st always Lisp-visible, and thus there's no point in freeing them (and it wouldn't be safe to do so). You just create them with - basic_alloc_lcrecord(), and that's it. + BASIC_ALLOC_LCRECORD(), and that's it. = --ben = @@ -1586,9 +1591,9 @@ DECLARE_LRECORD (lcrecord_list, struct l 1) Create an lcrecord-list object using make_lcrecord_list(). This is often done at initialization. Remember to staticpro_nodump() this object! The arguments to make_lcrecord_list() are the same as wou= ld be - passed to basic_alloc_lcrecord(). + passed to BASIC_ALLOC_LCRECORD(). = - 2) Instead of calling basic_alloc_lcrecord(), call alloc_managed_lcre= cord() + 2) Instead of calling BASIC_ALLOC_LCRECORD(), call alloc_managed_lcre= cord() and pass the lcrecord-list earlier created. = 3) When done with the lcrecord, call free_managed_lcrecord(). The @@ -1599,7 +1604,7 @@ DECLARE_LRECORD (lcrecord_list, struct l lcrecord goodbye as if it were garbage-collected. This means: -- the contents of the freed lcrecord are undefined, and the contents of something produced by alloc_managed_lcrecord() - are undefined, just like for basic_alloc_lcrecord(). + are undefined, just like for BASIC_ALLOC_LCRECORD(). -- the mark method for the lcrecord's type will *NEVER* be called on freed lcrecords. -- the finalize method for the lcrecord's type will be called @@ -1607,8 +1612,8 @@ DECLARE_LRECORD (lcrecord_list, struct l */ = /* UNMANAGED MODEL: */ -void *basic_alloc_lcrecord (Bytecount size, - const struct lrecord_implementation *); +void *old_basic_alloc_lcrecord (Bytecount size, + const struct lrecord_implementation *); = /* HAND-MANAGED MODEL: */ Lisp_Object make_lcrecord_list (Elemcount size, @@ -1621,27 +1626,29 @@ void free_managed_lcrecord (Lisp_Object = MODULE_API void * alloc_automanaged_lcrecord (Bytecount size, const struct lrecord_implementation *); -#define alloc_lcrecord_type(type, lrecord_implementation) \ + +#define old_alloc_lcrecord_type(type, lrecord_implementation) \ ((type *) alloc_automanaged_lcrecord (sizeof (type), lrecord_implement= ation)) = -void free_lcrecord (Lisp_Object rec); +void old_free_lcrecord (Lisp_Object rec); = = /* Copy the data from one lcrecord structure into another, but don't overwrite the header information. */ = -#define copy_sized_lcrecord(dst, src, size) \ - memcpy ((Rawbyte *) (dst) + sizeof (struct lcrecord_header), \ - (Rawbyte *) (src) + sizeof (struct lcrecord_header), \ - (size) - sizeof (struct lcrecord_header)) - -#define copy_lcrecord(dst, src) copy_sized_lcrecord (dst, src, sizeof (*= (dst))) - -#define zero_sized_lcrecord(lcr, size) \ - memset ((Rawbyte *) (lcr) + sizeof (struct lcrecord_header), 0, \ - (size) - sizeof (struct lcrecord_header)) +#define old_copy_sized_lcrecord(dst, src, size) \ + memcpy ((Rawbyte *) (dst) + sizeof (struct old_lcrecord_header), \ + (Rawbyte *) (src) + sizeof (struct old_lcrecord_header), \ + (size) - sizeof (struct old_lcrecord_header)) + +#define old_copy_lcrecord(dst, src) \ + old_copy_sized_lcrecord (dst, src, sizeof (*(dst))) + +#define old_zero_sized_lcrecord(lcr, size) \ + memset ((Rawbyte *) (lcr) + sizeof (struct old_lcrecord_header), 0, \ + (size) - sizeof (struct old_lcrecord_header)) = -#define zero_lcrecord(lcr) zero_sized_lcrecord (lcr, sizeof (*(lcr))) +#define old_zero_lcrecord(lcr) old_zero_sized_lcrecord (lcr, sizeof (*(l= cr))) = #else /* MC_ALLOC */ = @@ -1684,13 +1691,13 @@ void free_lrecord (Lisp_Object rec); = #define copy_lrecord(dst, src) copy_sized_lrecord (dst, src, sizeof (*(d= st))) = +#endif /* MC_ALLOC */ + #define zero_sized_lrecord(lcr, size) \ memset ((char *) (lcr) + sizeof (struct lrecord_header), 0, \ (size) - sizeof (struct lrecord_header)) = #define zero_lrecord(lcr) zero_sized_lrecord (lcr, sizeof (*(lcr))) - -#endif /* MC_ALLOC */ = DECLARE_INLINE_HEADER ( Bytecount = = = 1.18.2.2 +1 -5 XEmacs/xemacs/src/lstream.h = Index: lstream.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lstream.h,v retrieving revision 1.18.2.1 retrieving revision 1.18.2.2 diff -u -p -r1.18.2.1 -r1.18.2.2 --- lstream.h 2005/07/13 04:46:53 1.18.2.1 +++ lstream.h 2005/11/06 16:14:52 1.18.2.2 @@ -230,11 +230,7 @@ typedef struct lstream_implementation = struct lstream { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; const Lstream_implementation *imp; /* methods for this stream */ Lstream_buffering buffering; /* type of buffering in use */ Bytecount buffering_size; /* number of bytes buffered */ = = = 1.12.6.2 +3 -3 XEmacs/xemacs/src/macros.c = Index: macros.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/macros.c,v retrieving revision 1.12.6.1 retrieving revision 1.12.6.2 diff -u -p -r1.12.6.1 -r1.12.6.2 --- macros.c 2005/03/15 05:24:30 1.12.6.1 +++ macros.c 2005/11/06 16:14:53 1.12.6.2 @@ -166,10 +166,10 @@ store_kbd_macro_event (Lisp_Object event int i; int old_size =3D XVECTOR_LENGTH (con->kbd_macro_builder); int new_size =3D old_size * 2; - Lisp_Object new =3D make_vector (new_size, Qnil); + Lisp_Object new_ =3D make_vector (new_size, Qnil); for (i =3D 0; i < old_size; i++) - XVECTOR_DATA (new) [i] =3D XVECTOR_DATA (con->kbd_macro_builder) [i]; - con->kbd_macro_builder =3D new; + XVECTOR_DATA (new_) [i] =3D XVECTOR_DATA (con->kbd_macro_builder) [i]; + con->kbd_macro_builder =3D new_; } XVECTOR_DATA (con->kbd_macro_builder) [con->kbd_macro_ptr++] =3D Fcopy_event (event, Qnil); = = = 1.11.2.2 +4 -4 XEmacs/xemacs/src/malloc.c = Index: malloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/malloc.c,v retrieving revision 1.11.2.1 retrieving revision 1.11.2.2 diff -u -p -r1.11.2.1 -r1.11.2.2 --- malloc.c 2005/03/15 05:24:30 1.11.2.1 +++ malloc.c 2005/11/06 16:14:53 1.11.2.2 @@ -656,13 +656,13 @@ realloc (mem, n) if (n < tocopy) tocopy =3D n; { - char *new; + char *new_; = - if ((new =3D malloc (n)) =3D=3D 0) + if ((new_ =3D malloc (n)) =3D=3D 0) return 0; - memcpy (new, mem, tocopy); + memcpy (new_, mem, tocopy); free (mem); - return new; + return new_; } } = = = = 1.14.2.3 +6 -6 XEmacs/xemacs/src/marker.c = Index: marker.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/marker.c,v retrieving revision 1.14.2.2 retrieving revision 1.14.2.3 diff -u -p -r1.14.2.2 -r1.14.2.3 --- marker.c 2005/07/13 04:46:53 1.14.2.2 +++ marker.c 2005/11/06 16:14:53 1.14.2.3 @@ -397,20 +397,20 @@ set_marker_position (Lisp_Object marker, static Lisp_Object copy_marker_1 (Lisp_Object marker, Lisp_Object type, int noseeum) { - REGISTER Lisp_Object new; + REGISTER Lisp_Object new_; = while (1) { if (INTP (marker) || MARKERP (marker)) { if (noseeum) - new =3D noseeum_make_marker (); + new_ =3D noseeum_make_marker (); else - new =3D Fmake_marker (); - Fset_marker (new, marker, + new_ =3D Fmake_marker (); + Fset_marker (new_, marker, (MARKERP (marker) ? Fmarker_buffer (marker) : Qnil)); - XMARKER (new)->insertion_type =3D !NILP (type); - return new; + XMARKER (new_)->insertion_type =3D !NILP (type); + return new_; } else marker =3D wrong_type_argument (Qinteger_or_marker_p, marker); = = = 1.3.2.3 +2 -2 XEmacs/xemacs/src/mc-alloc.c = Index: mc-alloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/mc-alloc.c,v retrieving revision 1.3.2.2 retrieving revision 1.3.2.3 diff -u -p -r1.3.2.2 -r1.3.2.3 --- mc-alloc.c 2005/09/23 18:20:42 1.3.2.2 +++ mc-alloc.c 2005/11/06 16:14:53 1.3.2.3 @@ -1486,10 +1486,10 @@ remove_cell (void *ptr, page_header *ph) #endif if (PH_ON_USED_LIST_P (ph)) = { -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS dec_lrecord_stats (PH_CELL_SIZE (ph), = (const struct lrecord_header *) ptr); -#endif /* MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ #ifdef ERROR_CHECK_GC assert (!LRECORD_FREE_P (ptr)); deadbeef_memory (ptr, PH_CELL_SIZE (ph)); = = = 1.1.2.2 +0 -12 XEmacs/xemacs/src/mc-alloc.h = Index: mc-alloc.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/mc-alloc.h,v retrieving revision 1.1.2.1 retrieving revision 1.1.2.2 diff -u -p -r1.1.2.1 -r1.1.2.2 --- mc-alloc.h 2005/07/13 05:48:56 1.1.2.1 +++ mc-alloc.h 2005/11/06 16:14:53 1.1.2.2 @@ -35,18 +35,6 @@ Boston, MA 02111-1307, USA. */ # endif #endif /* MALLOC_OVERHEAD */ = - -/* This enables type based information (updated during gc). The output - is used by show-memory-usage to print memory information for each - type. Since the new allocator does not distinguish between types - anymore, this functionality is additionally implemented and - consumes a lot of time. That is why it is kept conditioned on a - separate flag called MC_ALLOC_TYPE_STATS. */ -#if 1 = -# define MC_ALLOC_TYPE_STATS 1 = -#endif - - /*--- prototypes -------------------------------------------------------= */ = BEGIN_C_DECLS = = = 1.44.2.2 +11 -11 XEmacs/xemacs/src/menubar-x.c = Index: menubar-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/menubar-x.c,v retrieving revision 1.44.2.1 retrieving revision 1.44.2.2 diff -u -p -r1.44.2.1 -r1.44.2.2 --- menubar-x.c 2005/03/15 05:24:31 1.44.2.1 +++ menubar-x.c 2005/11/06 16:14:54 1.44.2.2 @@ -893,30 +893,30 @@ static void menu_move_down (void) { widget_value *current =3D lw_get_entries (False); - widget_value *new =3D current; + widget_value *new_ =3D current; = - while (new->next) + while (new_->next) { - new =3D new->next; - if (new->name /*&& new->enabled*/) break; + new_ =3D new_->next; + if (new_->name /*&& new_->enabled*/) break; } = - if (new=3D=3Dcurrent||!(new->name/*||new->enabled*/)) + if (new_=3D=3Dcurrent||!(new_->name/*||new_->enabled*/)) { - new =3D lw_get_entries (True); - while (new!=3Dcurrent) + new_ =3D lw_get_entries (True); + while (new_!=3Dcurrent) { - if (new->name /*&& new->enabled*/) break; - new =3D new->next; + if (new_->name /*&& new_->enabled*/) break; + new_ =3D new_->next; } - if (new=3D=3Dcurrent&&!(new->name /*|| new->enabled*/)) + if (new_=3D=3Dcurrent&&!(new_->name /*|| new_->enabled*/)) { lw_pop_menu (); return; } } = - lw_set_item (new); + lw_set_item (new_); } = static void = = = 1.28.2.2 +2 -2 XEmacs/xemacs/src/menubar.c = Index: menubar.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/menubar.c,v retrieving revision 1.28.2.1 retrieving revision 1.28.2.2 diff -u -p -r1.28.2.1 -r1.28.2.2 --- menubar.c 2005/03/15 05:24:31 1.28.2.1 +++ menubar.c 2005/11/06 16:14:54 1.28.2.2 @@ -1,7 +1,7 @@ /* Implements an elisp-programmable menubar. Copyright (C) 1993, 1994 Free Software Foundation, Inc. Copyright (C) 1995 Tinker Systems and INS Engineering Corp. - Copyright (C) 2001, 2002, 2003 Ben Wing. + Copyright (C) 2001, 2002, 2003, 2005 Ben Wing. = This file is part of XEmacs. = @@ -712,7 +712,7 @@ See also menu-accelerator-enabled and me = DEFVAR_LISP ("menu-accelerator-enabled", &Vmenu_accelerator_enabled /* Whether menu accelerator keys can cause the menubar to become active. -If 'menu-force or 'menu-fallback, then menu accelerator keys can +If `menu-force' or `menu-fallback', then menu accelerator keys can be used to activate the top level menu. Once the menubar becomes active= , the accelerator keys can be used regardless of the value of this variable. = = = = 1.40.2.3 +28 -36 XEmacs/xemacs/src/mule-charset.c = Index: mule-charset.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/mule-charset.c,v retrieving revision 1.40.2.2 retrieving revision 1.40.2.3 diff -u -p -r1.40.2.2 -r1.40.2.3 --- mule-charset.c 2005/07/13 04:46:54 1.40.2.2 +++ mule-charset.c 2005/11/06 16:14:54 1.40.2.3 @@ -1,7 +1,7 @@ /* Functions to handle multilingual characters. Copyright (C) 1992, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 2001, 2002, 2004 Ben Wing. + Copyright (C) 2001, 2002, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -197,11 +197,7 @@ make_charset (int id, Lisp_Object name, = = if (!overwrite) { -#ifdef MC_ALLOC - cs =3D alloc_lrecord_type (Lisp_Charset, &lrecord_charset); -#else /* not MC_ALLOC */ - cs =3D alloc_lcrecord_type (Lisp_Charset, &lrecord_charset); -#endif /* not MC_ALLOC */ + cs =3D ALLOC_LCRECORD_TYPE (Lisp_Charset, &lrecord_charset); obj =3D wrap_charset (cs); = if (final) @@ -420,21 +416,21 @@ DOC-STRING is a string describing the ch PROPS is a property list, describing the specific nature of the character set. Recognized properties are: = -'short-name Short version of the charset name (ex: Latin-1) -'long-name Long version of the charset name (ex: ISO8859-1 (Latin-1)) -'registry A regular expression matching the font registry field for +`short-name' Short version of the charset name (ex: Latin-1) +`long-name' Long version of the charset name (ex: ISO8859-1 (Latin-1)) +`registry' A regular expression matching the font registry field for this character set. -'dimension Number of octets used to index a character in this charset. +`dimension' Number of octets used to index a character in this charset. Either 1 or 2. Defaults to 1. -'columns Number of columns used to display a character in this charset. +`columns' Number of columns used to display a character in this charset. Only used in TTY mode. (Under X, the actual width of a character can be derived from the font used to display the characters.) If unspecified, defaults to the dimension (this is almost always the correct value). -'chars Number of characters in each dimension (94 or 96). +`chars' Number of characters in each dimension (94 or 96). Defaults to 94. Note that if the dimension is 2, the character set thus described is 94x94 or 96x96. -'final Final byte of ISO 2022 escape sequence. Must be +`final' Final byte of ISO 2022 escape sequence. Must be supplied. Each combination of (DIMENSION, CHARS) defines a separate namespace for final bytes. Note that ISO 2022 restricts the final byte to the range @@ -442,22 +438,22 @@ character set. Recognized properties ar dimension =3D=3D 2. Note also that final bytes in the range 0x30 - 0x3F are reserved for user-defined (not official) character sets. -'graphic 0 (use left half of font on output) or 1 (use right half +`graphic' 0 (use left half of font on output) or 1 (use right half of font on output). Defaults to 0. For example, for a font whose registry is ISO8859-1, the left half (octets 0x20 - 0x7F) is the `ascii' character set, while the right half (octets 0xA0 - 0xFF) is the `latin-1' - character set. With 'graphic set to 0, the octets + character set. With `graphic' set to 0, the octets will have their high bit cleared; with it set to 1, the octets will have their high bit set. -'direction 'l2r (left-to-right) or 'r2l (right-to-left). - Defaults to 'l2r. -'ccl-program A compiled CCL program used to convert a character in +`direction' `l2r' (left-to-right) or `r2l' (right-to-left). + Defaults to `l2r'. +`ccl-program' A compiled CCL program used to convert a character in this charset into an index into the font. This is in - addition to the 'graphic property. The CCL program + addition to the `graphic' property. The CCL program is passed the octets of the character, with the high bit cleared and set depending upon whether the value - of the 'graphic property is 0 or 1. + of the `graphic' property is 0 or 1. */ (name, doc_string, props)) { @@ -507,7 +503,7 @@ character set. Recognized properties ar CHECK_INT (value); dimension =3D XINT (value); if (dimension < 1 || dimension > 2) - invalid_constant ("Invalid value for 'dimension", value); + invalid_constant ("Invalid value for `dimension'", value); } = else if (EQ (keyword, Qchars)) @@ -515,7 +511,7 @@ character set. Recognized properties ar CHECK_INT (value); chars =3D XINT (value); if (chars !=3D 94 && chars !=3D 96) - invalid_constant ("Invalid value for 'chars", value); + invalid_constant ("Invalid value for `chars'", value); } = else if (EQ (keyword, Qcolumns)) @@ -523,7 +519,7 @@ character set. Recognized properties ar CHECK_INT (value); columns =3D XINT (value); if (columns !=3D 1 && columns !=3D 2) - invalid_constant ("Invalid value for 'columns", value); + invalid_constant ("Invalid value for `columns'", value); } = else if (EQ (keyword, Qgraphic)) @@ -531,7 +527,7 @@ character set. Recognized properties ar CHECK_INT (value); graphic =3D XINT (value); if (graphic < 0 || graphic > 1) - invalid_constant ("Invalid value for 'graphic", value); + invalid_constant ("Invalid value for `graphic'", value); } = else if (EQ (keyword, Qregistry)) @@ -547,7 +543,7 @@ character set. Recognized properties ar else if (EQ (value, Qr2l)) direction =3D CHARSET_RIGHT_TO_LEFT; else - invalid_constant ("Invalid value for 'direction", value); + invalid_constant ("Invalid value for `direction'", value); } = else if (EQ (keyword, Qfinal)) @@ -555,7 +551,7 @@ character set. Recognized properties ar CHECK_CHAR_COERCE_INT (value); final =3D XCHAR (value); if (final < '0' || final > '~') - invalid_constant ("Invalid value for 'final", value); + invalid_constant ("Invalid value for `final'", value); } = else if (EQ (keyword, Qccl_program)) @@ -563,7 +559,7 @@ character set. Recognized properties ar struct ccl_program test_ccl; = if (setup_ccl_program (&test_ccl, value) < 0) - invalid_argument ("Invalid value for 'ccl-program", value); + invalid_argument ("Invalid value for `ccl-program'", value); ccl_program =3D value; } else @@ -572,7 +568,7 @@ character set. Recognized properties ar } = if (!final) - invalid_argument ("'final must be specified", Qunbound); + invalid_argument ("`final' must be specified", Qunbound); if (dimension =3D=3D 2 && final > 0x5F) invalid_constant ("Final must be in the range 0x30 - 0x5F for dimension =3D=3D 2", @@ -791,7 +787,7 @@ Return dimension of CHARSET. DEFUN ("charset-property", Fcharset_property, 2, 2, 0, /* Return property PROP of CHARSET, a charset object or symbol naming a cha= rset. Recognized properties are those listed in `make-charset', as well as -'name and 'doc-string. +`name' and `doc-string'. */ (charset, prop)) { @@ -836,7 +832,7 @@ Return charset identification number of = allow to be set. */ = DEFUN ("set-charset-ccl-program", Fset_charset_ccl_program, 2, 2, 0, /* -Set the 'ccl-program property of CHARSET to CCL-PROGRAM. +Set the `ccl-program' property of CHARSET to CCL-PROGRAM. */ (charset, ccl_program)) { @@ -852,7 +848,7 @@ Set the 'ccl-program property of CHARSET = /* Japanese folks may want to (set-charset-registry 'ascii "jisx0201") */ DEFUN ("set-charset-registry", Fset_charset_registry, 2, 2, 0, /* -Set the 'registry property of CHARSET to REGISTRY. +Set the `registry' property of CHARSET to REGISTRY. */ (charset, registry)) { @@ -884,11 +880,7 @@ compute_charset_usage (Lisp_Object chars { struct Lisp_Charset *c =3D XCHARSET (charset); xzero (*stats); -#ifdef MC_ALLOC - stats->other +=3D mc_alloced_storage_size (sizeof (*c), ovstats); -#else /* not MC_ALLOC */ - stats->other +=3D malloced_storage_size (c, sizeof (*c), ovstats); -#endif /* not MC_ALLOC */ + stats->other +=3D LISPOBJ_STORAGE_SIZE (c, sizeof (*c), ovstats); stats->from_unicode +=3D compute_from_unicode_table_size (charset, ovs= tats); stats->to_unicode +=3D compute_to_unicode_table_size (charset, ovstats= ); } = = = 1.12.2.2 +2 -2 XEmacs/xemacs/src/number.c = Index: number.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/number.c,v retrieving revision 1.12.2.1 retrieving revision 1.12.2.2 diff -u -p -r1.12.2.1 -r1.12.2.2 --- number.c 2005/03/15 05:24:34 1.12.2.1 +++ number.c 2005/11/06 16:14:54 1.12.2.2 @@ -675,8 +675,8 @@ DEFUN ("coerce-number", Fcoerce_number, = Convert NUMBER to the indicated type, possibly losing information. Do not call this function. Use `coerce' instead. = -TYPE is one of the symbols 'fixnum, 'integer, 'ratio, 'float, or 'bigflo= at. -Not all of these types may be supported. +TYPE is one of the symbols `fixnum', `integer', `ratio', `float', or +`bigfloat'. Not all of these types may be supported. = PRECISION is the number of bits of precision to use when converting to bigfloat; it is ignored otherwise. If nil, the default precision is use= d. = = = 1.3.2.3 +2 -10 XEmacs/xemacs/src/objects-impl.h = Index: objects-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-impl.h,v retrieving revision 1.3.2.2 retrieving revision 1.3.2.3 diff -u -p -r1.3.2.2 -r1.3.2.3 --- objects-impl.h 2005/07/13 04:46:54 1.3.2.2 +++ objects-impl.h 2005/11/06 16:14:54 1.3.2.3 @@ -99,11 +99,7 @@ extern Lisp_Object Qface_boolean; = struct Lisp_Color_Instance { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object name; Lisp_Object device; = @@ -123,11 +119,7 @@ struct Lisp_Color_Instance = struct Lisp_Font_Instance { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object name; /* the instantiator used to create the font instance= */ Lisp_Object truename; /* used by the device-specific methods; we need = to call them to get the truename (#### in reality, = = = 1.23.2.4 +4 -20 XEmacs/xemacs/src/objects.c = Index: objects.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.c,v retrieving revision 1.23.2.3 retrieving revision 1.23.2.4 diff -u -p -r1.23.2.3 -r1.23.2.4 --- objects.c 2005/07/13 04:46:54 1.23.2.3 +++ objects.c 2005/11/06 16:14:55 1.23.2.4 @@ -178,11 +178,7 @@ is deallocated as well. CHECK_STRING (name); device =3D wrap_device (decode_device (device)); = -#ifdef MC_ALLOC - c =3D alloc_lrecord_type (Lisp_Color_Instance, &lrecord_color_instance= ); -#else /* not MC_ALLOC */ - c =3D alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instanc= e); -#endif /* not MC_ALLOC */ + c =3D ALLOC_LCRECORD_TYPE (Lisp_Color_Instance, &lrecord_color_instanc= e); c->name =3D name; c->device =3D device; c->data =3D 0; @@ -396,11 +392,7 @@ these objects are GCed, the underlying G = device =3D wrap_device (decode_device (device)); = -#ifdef MC_ALLOC - f =3D alloc_lrecord_type (Lisp_Font_Instance, &lrecord_font_instance); -#else /* not MC_ALLOC */ - f =3D alloc_lcrecord_type (Lisp_Font_Instance, &lrecord_font_instance); -#endif /* not MC_ALLOC */ + f =3D ALLOC_LCRECORD_TYPE (Lisp_Font_Instance, &lrecord_font_instance); f->name =3D name; f->truename =3D Qnil; f->device =3D device; @@ -1222,11 +1214,7 @@ reinit_vars_of_objects (void) staticpro_nodump (&Vthe_null_color_instance); { Lisp_Color_Instance *c =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Color_Instance, &lrecord_color_instance); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Color_Instance, &lrecord_color_instance); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Color_Instance, &lrecord_color_instance); c->name =3D Qnil; c->device =3D Qnil; c->data =3D 0; @@ -1237,11 +1225,7 @@ reinit_vars_of_objects (void) staticpro_nodump (&Vthe_null_font_instance); { Lisp_Font_Instance *f =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Font_Instance, &lrecord_font_instance); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Font_Instance, &lrecord_font_instance); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Font_Instance, &lrecord_font_instance); f->name =3D Qnil; f->truename =3D Qnil; f->device =3D Qnil; = = = 1.18.2.3 +1 -5 XEmacs/xemacs/src/opaque.c = Index: opaque.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/opaque.c,v retrieving revision 1.18.2.2 retrieving revision 1.18.2.3 diff -u -p -r1.18.2.2 -r1.18.2.3 --- opaque.c 2005/07/13 04:46:55 1.18.2.2 +++ opaque.c 2005/11/06 16:14:55 1.18.2.3 @@ -75,11 +75,7 @@ Lisp_Object make_opaque (const void *data, Bytecount size) { Lisp_Opaque *p =3D (Lisp_Opaque *) -#ifdef MC_ALLOC - alloc_lrecord (aligned_sizeof_opaque (size), &lrecord_opaque); -#else /* not MC_ALLOC */ - basic_alloc_lcrecord (aligned_sizeof_opaque (size), &lrecord_opaque); -#endif /* not MC_ALLOC */ + BASIC_ALLOC_LCRECORD (aligned_sizeof_opaque (size), &lrecord_opaque); p->size =3D size; = if (data =3D=3D OPAQUE_CLEAR) = = = 1.9.2.2 +2 -10 XEmacs/xemacs/src/opaque.h = Index: opaque.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/opaque.h,v retrieving revision 1.9.2.1 retrieving revision 1.9.2.2 diff -u -p -r1.9.2.1 -r1.9.2.2 --- opaque.h 2005/07/13 04:46:55 1.9.2.1 +++ opaque.h 2005/11/06 16:14:55 1.9.2.2 @@ -28,11 +28,7 @@ Boston, MA 02111-1307, USA. */ = typedef struct Lisp_Opaque { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Bytecount size; max_align_t data[1]; } Lisp_Opaque; @@ -58,11 +54,7 @@ Lisp_Object make_opaque (const void *dat = typedef struct Lisp_Opaque_Ptr { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; void *ptr; } Lisp_Opaque_Ptr; = = = = 1.51.2.4 +2 -8 XEmacs/xemacs/src/print.c = Index: print.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/print.c,v retrieving revision 1.51.2.3 retrieving revision 1.51.2.4 diff -u -p -r1.51.2.3 -r1.51.2.4 --- print.c 2005/07/13 04:46:55 1.51.2.3 +++ print.c 2005/11/06 16:14:55 1.51.2.4 @@ -1453,13 +1453,7 @@ static void default_object_printer (Lisp_Object obj, Lisp_Object printcharfun, int UNUSED (escapeflag)) { -#ifdef MC_ALLOC - struct lrecord_header *header =3D - (struct lrecord_header *) XPNTR (obj); -#else /* not MC_ALLOC */ - struct lcrecord_header *header =3D - (struct lcrecord_header *) XPNTR (obj); -#endif /* not MC_ALLOC */ + struct LCRECORD_HEADER *header =3D (struct LCRECORD_HEADER *) XPNTR (o= bj); = if (print_readably) printing_unreadable_object @@ -2225,7 +2219,7 @@ debug_p4 (Lisp_Object obj) LHEADER_IMPLEMENTATION (header)->name, LHEADER_IMPLEMENTATION (header)->basic_p ? (EMACS_INT) header : - ((struct lcrecord_header *) header)->uid); + ((struct old_lcrecord_header *) header)->uid); #endif /* not MC_ALLOC */ } = = = = 1.65.2.3 +5 -9 XEmacs/xemacs/src/process.c = Index: process.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/process.c,v retrieving revision 1.65.2.2 retrieving revision 1.65.2.3 diff -u -p -r1.65.2.2 -r1.65.2.3 --- process.c 2005/07/13 04:46:55 1.65.2.2 +++ process.c 2005/11/06 16:14:55 1.65.2.3 @@ -2,7 +2,7 @@ Copyright (C) 1985, 1986, 1987, 1988, 1992, 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 1995, 1996, 2001, 2002, 2004 Ben Wing. + Copyright (C) 1995, 1996, 2001, 2002, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -483,11 +483,7 @@ make_process_internal (Lisp_Object name) { Lisp_Object val, name1; int i; -#ifdef MC_ALLOC - Lisp_Process *p =3D alloc_lrecord_type (Lisp_Process, &lrecord_process= ); -#else /* not MC_ALLOC */ - Lisp_Process *p =3D alloc_lcrecord_type (Lisp_Process, &lrecord_proces= s); -#endif /* not MC_ALLOC */ + Lisp_Process *p =3D ALLOC_LCRECORD_TYPE (Lisp_Process, &lrecord_proces= s); = #define MARKED_SLOT(x) p->x =3D Qnil; #include "process-slots.h" @@ -846,9 +842,9 @@ Third arg HOST (a string) is the name o or its IP address. Fourth arg SERVICE is the name of the service desired (a string), or an integer specifying a port number to connect to. -Optional fifth arg PROTOCOL is a network protocol. Currently only 'tcp - (Transmission Control Protocol) and 'udp (User Datagram Protocol) are - supported. When omitted, 'tcp is assumed. +Optional fifth arg PROTOCOL is a network protocol. Currently only `tcp' + (Transmission Control Protocol) and `udp' (User Datagram Protocol) are + supported. When omitted, `tcp' is assumed. = Output via `process-send-string' and input via buffer or filter (see `set-process-filter') are stream-oriented. That means UDP datagrams are = = = 1.12.2.2 +1 -5 XEmacs/xemacs/src/procimpl.h = Index: procimpl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/procimpl.h,v retrieving revision 1.12.2.1 retrieving revision 1.12.2.2 diff -u -p -r1.12.2.1 -r1.12.2.2 --- procimpl.h 2005/07/13 04:46:56 1.12.2.1 +++ procimpl.h 2005/11/06 16:14:56 1.12.2.2 @@ -94,11 +94,7 @@ extern struct process_methods the_proces = struct Lisp_Process { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Exit code if process has terminated, signal which stopped/interrupted process = = = 1.1.4.2 +6 -1 XEmacs/xemacs/src/profile.h = Index: profile.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/profile.h,v retrieving revision 1.1.4.1 retrieving revision 1.1.4.2 diff -u -p -r1.1.4.1 -r1.1.4.2 --- profile.h 2005/03/15 05:24:38 1.1.4.1 +++ profile.h 2005/11/06 16:14:56 1.1.4.2 @@ -1,5 +1,5 @@ /* Profiling. - Copyright (C) 2003 Ben Wing. + Copyright (C) 2003, 2005 Ben Wing. = This file is part of XEmacs. = @@ -71,6 +71,11 @@ while (0) function. (To do this, we always need some sort of collusion between profile and eval; this is one way.) */ = +/* Or, we could call xzero() to zero the whole thing, and avoid four + of the statements below; or we could create a global backtrace object, + uninitialized (i.e. it will be initialized to all 0), and do structure + copy to initialize. It's not clear it will make much difference here, + but someone who really cared about counting cycles could implement it= . */ #define PROFILE_RECORD_ENTERING_SECTION(var) \ do \ { \ = = = 1.18.2.3 +5 -5 XEmacs/xemacs/src/ralloc.c = Index: ralloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ralloc.c,v retrieving revision 1.18.2.2 retrieving revision 1.18.2.3 diff -u -p -r1.18.2.2 -r1.18.2.3 --- ralloc.c 2005/09/20 16:06:10 1.18.2.2 +++ ralloc.c 2005/11/06 16:14:56 1.18.2.3 @@ -274,22 +274,22 @@ obtain (POINTER address, size_t size) get more space. */ if (heap =3D=3D NIL_HEAP) { - POINTER new =3D (*real_morecore)(0); + POINTER new_ =3D (*real_morecore)(0); size_t get; = already_available =3D (char *)last_heap->end - (char *)address; = - if (new !=3D last_heap->end) + if (new_ !=3D last_heap->end) { /* Someone else called sbrk. Make a new heap. */ = - heap_ptr new_heap =3D (heap_ptr) MEM_ROUNDUP (new); + heap_ptr new_heap =3D (heap_ptr) MEM_ROUNDUP (new_); POINTER bloc_start =3D (POINTER) MEM_ROUNDUP ((POINTER)(new_heap + 1)= ); = - if ((*real_morecore) (bloc_start - new) !=3D new) + if ((*real_morecore) (bloc_start - new_) !=3D new_) return 0; = - new_heap->start =3D new; + new_heap->start =3D new_; new_heap->end =3D bloc_start; new_heap->bloc_start =3D bloc_start; new_heap->free =3D bloc_start; = = = 1.17.2.5 +2 -11 XEmacs/xemacs/src/rangetab.c = Index: rangetab.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/rangetab.c,v retrieving revision 1.17.2.4 retrieving revision 1.17.2.5 diff -u -p -r1.17.2.4 -r1.17.2.5 --- rangetab.c 2005/09/27 16:29:37 1.17.2.4 +++ rangetab.c 2005/11/06 16:14:56 1.17.2.5 @@ -328,13 +328,8 @@ Range tables allow you to efficiently se */ (type)) { -#ifdef MC_ALLOC - Lisp_Range_Table *rt =3D alloc_lrecord_type (Lisp_Range_Table, - &lrecord_range_table); -#else /* not MC_ALLOC */ - Lisp_Range_Table *rt =3D alloc_lcrecord_type (Lisp_Range_Table, + Lisp_Range_Table *rt =3D ALLOC_LCRECORD_TYPE (Lisp_Range_Table, &lrecord_range_table); -#endif /* not MC_ALLOC */ rt->entries =3D Dynarr_new (range_table_entry); rt->type =3D range_table_symbol_to_type (type); return wrap_range_table (rt); @@ -352,11 +347,7 @@ The values will not themselves be copied CHECK_RANGE_TABLE (range_table); rt =3D XRANGE_TABLE (range_table); = -#ifdef MC_ALLOC - rtnew =3D alloc_lrecord_type (Lisp_Range_Table, &lrecord_range_table); -#else /* not MC_ALLOC */ - rtnew =3D alloc_lcrecord_type (Lisp_Range_Table, &lrecord_range_table); -#endif /* not MC_ALLOC */ + rtnew =3D ALLOC_LCRECORD_TYPE (Lisp_Range_Table, &lrecord_range_table); rtnew->entries =3D Dynarr_new (range_table_entry); rtnew->type =3D rt->type; = = = = 1.5.8.3 +1 -5 XEmacs/xemacs/src/rangetab.h = Index: rangetab.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/rangetab.h,v retrieving revision 1.5.8.2 retrieving revision 1.5.8.3 diff -u -p -r1.5.8.2 -r1.5.8.3 --- rangetab.h 2005/07/13 04:46:57 1.5.8.2 +++ rangetab.h 2005/11/06 16:14:57 1.5.8.3 @@ -49,11 +49,7 @@ enum range_table_type = struct Lisp_Range_Table { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; range_table_entry_dynarr *entries; enum range_table_type type; }; = = = 1.92.2.3 +9 -9 XEmacs/xemacs/src/redisplay.c = Index: redisplay.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay.c,v retrieving revision 1.92.2.2 retrieving revision 1.92.2.3 diff -u -p -r1.92.2.2 -r1.92.2.3 --- redisplay.c 2005/03/15 05:24:42 1.92.2.2 +++ redisplay.c 2005/11/06 16:14:57 1.92.2.3 @@ -1,7 +1,7 @@ /* Display generation from window structure and buffer text. Copyright (C) 1994, 1995, 1996 Board of Trustees, University of Illin= ois. Copyright (C) 1995 Free Software Foundation, Inc. - Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003 Ben Wing. + Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2005 Ben Wing. Copyright (C) 1995 Sun Microsystems, Inc. Copyright (C) 1996 Chuck Thompson. = @@ -472,7 +472,7 @@ int no_redraw_on_reenter; = Lisp_Object Vwindow_system; /* nil or a symbol naming the window system under which emacs is running - ('x is the only current possibility) */ + (`x' is the only current possibility) */ Lisp_Object Vinitial_window_system; = Lisp_Object Vglobal_mode_string; @@ -715,7 +715,7 @@ get_display_block_from_line (struct disp { struct display_block *dbp =3D Dynarr_atp (dl->display_blocks, elt); = - /* 'add' the block to the list */ + /* "add" the block to the list */ Dynarr_increment (dl->display_blocks); = /* initialize and return */ @@ -1784,7 +1784,7 @@ add_propagation_runes (prop_block_dynarr } } = -/* Add 'text layout glyphs at position POS_TYPE that are contained to +/* Add `text' layout glyphs at position POS_TYPE that are contained to the display block, but add all other types to the appropriate list of the display line. They will be added later by different routines. */ @@ -6868,7 +6868,7 @@ redisplay_frame (struct frame *f, int pr = /* The menubar, toolbar, and icon updates should be done before enter_redisplay_critical_section is called and we are officially - 'in_display'. They is because they tend to eval Lisp code, which + `in_display'. They is because they tend to eval Lisp code, which needs to be carefully wrapped within the critical section (and hence is difficult to debug). */ = @@ -9913,8 +9913,8 @@ If this is zero, point is always centere Default behavior is to flash the whole screen. On some platforms, special effects are available using the following values: = -'display Flash the whole screen (ie, the default behavior). -'top-bottom Flash only the top and bottom lines of the selected frame. +`display' Flash the whole screen (ie, the default behavior). +`top-bottom' Flash only the top and bottom lines of the selected fram= e. = When effects are unavailable on a platform, the visual bell is the default, whole screen. (Currently only X supports any special effects.) @@ -10047,7 +10047,7 @@ This is a specifier; use `set-specifier' = DEFVAR_SPECIFIER ("use-left-overflow", &Vuse_left_overflow /* *Non-nil means use the left outside margin as extra whitespace when -displaying 'whitespace or 'inside-margin glyphs. +displaying `whitespace' or `inside-margin' glyphs. This is a specifier; use `set-specifier' to change it. */ ); Vuse_left_overflow =3D Fmake_specifier (Qboolean); @@ -10059,7 +10059,7 @@ This is a specifier; use `set-specifier' = DEFVAR_SPECIFIER ("use-right-overflow", &Vuse_right_overflow /* *Non-nil means use the right outside margin as extra whitespace when -displaying 'whitespace or 'inside-margin glyphs. +displaying `whitespace' or `inside-margin' glyphs. This is a specifier; use `set-specifier' to change it. */ ); Vuse_right_overflow =3D Fmake_specifier (Qboolean); = = = 1.15.2.3 +0 -4 XEmacs/xemacs/src/scrollbar-gtk.c = Index: scrollbar-gtk.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-gtk.c,v retrieving revision 1.15.2.2 retrieving revision 1.15.2.3 diff -u -p -r1.15.2.2 -r1.15.2.3 --- scrollbar-gtk.c 2005/07/13 04:46:57 1.15.2.2 +++ scrollbar-gtk.c 2005/11/06 16:14:58 1.15.2.3 @@ -484,11 +484,7 @@ gtk_compute_scrollbar_instance_usage (st struct gtk_scrollbar_data *data =3D (struct gtk_scrollbar_data *) inst->scrollbar_data; = -#ifdef MC_ALLOC - total +=3D mc_alloced_storage_size (sizeof (*data), ovstats); -#else /* not MC_ALLOC */ total +=3D malloced_storage_size (data, sizeof (*data), ovstats); -#endif /* not MC_ALLOC */ inst =3D inst->next; } = = = = 1.28.2.2 +0 -4 XEmacs/xemacs/src/scrollbar-msw.c = Index: scrollbar-msw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-msw.c,v retrieving revision 1.28.2.1 retrieving revision 1.28.2.2 diff -u -p -r1.28.2.1 -r1.28.2.2 --- scrollbar-msw.c 2005/07/13 04:46:57 1.28.2.1 +++ scrollbar-msw.c 2005/11/06 16:14:58 1.28.2.2 @@ -433,11 +433,7 @@ mswindows_compute_scrollbar_instance_usa struct mswindows_scrollbar_data *data =3D (struct mswindows_scrollbar_data *) inst->scrollbar_data; = -#ifdef MC_ALLOC - total +=3D mc_alloced_storage_size (sizeof (*data), ovstats); -#else /* not MC_ALLOC */ total +=3D malloced_storage_size (data, sizeof (*data), ovstats); -#endif /* not MC_ALLOC */ inst =3D inst->next; } = = = = 1.27.2.3 +0 -5 XEmacs/xemacs/src/scrollbar-x.c = Index: scrollbar-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar-x.c,v retrieving revision 1.27.2.2 retrieving revision 1.27.2.3 diff -u -p -r1.27.2.2 -r1.27.2.3 --- scrollbar-x.c 2005/07/13 04:46:57 1.27.2.2 +++ scrollbar-x.c 2005/11/06 16:14:58 1.27.2.3 @@ -703,14 +703,9 @@ x_compute_scrollbar_instance_usage (stru struct x_scrollbar_data *data =3D (struct x_scrollbar_data *) inst->scrollbar_data; = -#ifdef MC_ALLOC - total +=3D mc_alloced_storage_size (sizeof (*data), ovstats); - total +=3D mc_alloced_storage_size (1 + strlen (data->name), ovsta= ts); -#else /* not MC_ALLOC */ total +=3D malloced_storage_size (data, sizeof (*data), ovstats); total +=3D malloced_storage_size (data->name, 1 + strlen (data->na= me), ovstats); -#endif /* not MC_ALLOC */ inst =3D inst->next; } = = = = 1.32.2.3 +2 -11 XEmacs/xemacs/src/scrollbar.c = Index: scrollbar.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar.c,v retrieving revision 1.32.2.2 retrieving revision 1.32.2.3 diff -u -p -r1.32.2.2 -r1.32.2.3 --- scrollbar.c 2005/07/13 04:46:58 1.32.2.2 +++ scrollbar.c 2005/11/06 16:14:58 1.32.2.3 @@ -199,13 +199,8 @@ create_scrollbar_instance (struct frame = { struct device *d =3D XDEVICE (f->device); struct scrollbar_instance *instance =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct scrollbar_instance, - &lrecord_scrollbar_instance); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct scrollbar_instance, + ALLOC_LCRECORD_TYPE (struct scrollbar_instance, &lrecord_scrollbar_instance); -#endif /* not MC_ALLOC */ = MAYBE_DEVMETH (d, create_scrollbar_instance, (f, vertical, instance)); = @@ -277,11 +272,7 @@ compute_scrollbar_instance_usage (struct = while (inst) { -#ifdef MC_ALLOC - total +=3D mc_alloced_storage_size (sizeof (*inst), ovstats); -#else /* not MC_ALLOC */ - total +=3D malloced_storage_size (inst, sizeof (*inst), ovstats); -#endif /* not MC_ALLOC */ + total +=3D LISPOBJ_STORAGE_SIZE (inst, sizeof (*inst), ovstats); inst =3D inst->next; } = = = = 1.5.8.2 +1 -5 XEmacs/xemacs/src/scrollbar.h = Index: scrollbar.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/scrollbar.h,v retrieving revision 1.5.8.1 retrieving revision 1.5.8.2 diff -u -p -r1.5.8.1 -r1.5.8.2 --- scrollbar.h 2005/07/13 04:46:58 1.5.8.1 +++ scrollbar.h 2005/11/06 16:14:58 1.5.8.2 @@ -27,11 +27,7 @@ Boston, MA 02111-1307, USA. */ = struct scrollbar_instance { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Used by the frame caches. */ struct scrollbar_instance *next; = = = 1.5.2.1 +1 -1 XEmacs/xemacs/src/select-common.h = Index: select-common.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/select-common.h,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -p -r1.5 -r1.5.2.1 --- select-common.h 2004/11/04 23:06:52 1.5 +++ select-common.h 2005/11/06 16:14:59 1.5.2.1 @@ -59,7 +59,7 @@ Boston, MA 02111-1307, USA. */ representation are as above. = NOTE: Under Mule, when someone shoves us a string without a type, we - set the type to 'COMPOUND_TEXT and automatically convert to Compound + set the type to `COMPOUND_TEXT' and automatically convert to Compound Text. If the string has a type, we assume that the user wants the data sent as-is so we just do "binary" conversion. */ = = = 1.6.6.3 +12 -12 XEmacs/xemacs/src/select.c = Index: select.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/select.c,v retrieving revision 1.6.6.2 retrieving revision 1.6.6.3 diff -u -p -r1.6.6.2 -r1.6.6.3 --- select.c 2005/07/13 04:46:59 1.6.6.2 +++ select.c 2005/11/06 16:14:59 1.6.6.3 @@ -107,7 +107,7 @@ get_local_selection (Lisp_Object selecti return Qnil; } = -/* #### Should perhaps handle 'MULTIPLE. The code below is now completely +/* #### Should perhaps handle `MULTIPLE'. The code below is now complete= ly broken due to a re-organization of get_local_selection, but I've left it here should anyone show an interest - ajh */ #if 0 @@ -861,33 +861,33 @@ For X, the return value should be one of explicitly specifies the type that will be sent. -- a string (If the type is not specified, then if Mule support exists, the string will be converted to Compound Text and sent in - the 'COMPOUND_TEXT format; otherwise (no Mule support), - the string will be left as-is and sent in the 'STRING + the `COMPOUND_TEXT' format; otherwise (no Mule support), + the string will be left as-is and sent in the `STRING' format. If the type is specified, the string will be left as-is (or converted to binary format under Mule). In all cases, 8-bit data it sent.) -- a character (With Mule support, will be converted to Compound Text whether or not a type is specified. If a type is not - specified, a type of 'STRING or 'COMPOUND_TEXT will be + specified, a type of `STRING' or `COMPOUND_TEXT' will be sent, as for strings.) --- the symbol 'NULL (Indicates that there is no meaningful return value. - Empty 32-bit data with a type of 'NULL will be sent= .) +-- the symbol `NULL' (Indicates that there is no meaningful return value. + Empty 32-bit data with a type of `NULL' will be sen= t.) -- a symbol (Will be converted into an atom. If the type is not specifi= ed, - a type of 'ATOM will be sent.) + a type of `ATOM' will be sent.) -- an integer (Will be converted into a 16-bit or 32-bit integer dependi= ng on the value. If the type is not specified, a type of - 'INTEGER will be sent.) + `INTEGER' will be sent.) -- a cons (HIGH . LOW) of integers (Will be converted into a 32-bit inte= ger. If the type is not specified, a type= of - 'INTEGER will be sent.) + `INTEGER' will be sent.) -- a vector of symbols (Will be converted into a list of atoms. If the = type - is not specified, a type of 'ATOM will be sent.) + is not specified, a type of `ATOM' will be sent.) -- a vector of integers (Will be converted into a list of 16-bit integer= s. - If the type is not specified, a type of 'INTEGER + If the type is not specified, a type of `INTEGE= R' will be sent.) -- a vector of integers and/or conses (HIGH . LOW) of integers (Will be converted into a list of 16-bit integer= s. - If the type is not specified, a type of 'INTEGER + If the type is not specified, a type of `INTEGE= R' will be sent.) */ ); Vselection_converter_out_alist =3D Qnil; = = = 1.36.2.4 +1 -6 XEmacs/xemacs/src/specifier.c = Index: specifier.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.c,v retrieving revision 1.36.2.3 retrieving revision 1.36.2.4 diff -u -p -r1.36.2.3 -r1.36.2.4 --- specifier.c 2005/09/27 16:29:37 1.36.2.3 +++ specifier.c 2005/11/06 16:14:59 1.36.2.4 @@ -493,13 +493,8 @@ make_specifier_internal (struct specifie { Lisp_Object specifier; Lisp_Specifier *sp =3D (Lisp_Specifier *) -#ifdef MC_ALLOC - alloc_lrecord (aligned_sizeof_specifier (data_size), - &lrecord_specifier); -#else /* not MC_ALLOC */ - basic_alloc_lcrecord (aligned_sizeof_specifier (data_size), + BASIC_ALLOC_LCRECORD (aligned_sizeof_specifier (data_size), &lrecord_specifier); -#endif /* not MC_ALLOC */ = sp->methods =3D spec_meths; sp->global_specs =3D Qnil; = = = 1.14.2.3 +1 -5 XEmacs/xemacs/src/specifier.h = Index: specifier.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.h,v retrieving revision 1.14.2.2 retrieving revision 1.14.2.3 diff -u -p -r1.14.2.2 -r1.14.2.3 --- specifier.h 2005/07/13 04:47:00 1.14.2.2 +++ specifier.h 2005/11/06 16:14:59 1.14.2.3 @@ -216,11 +216,7 @@ struct specifier_methods = struct Lisp_Specifier { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; struct specifier_methods *methods; = /* we keep a chained list of all current specifiers, for GC cleanup = = = 1.46.2.4 +47 -27 XEmacs/xemacs/src/symbols.c = Index: symbols.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/symbols.c,v retrieving revision 1.46.2.3 retrieving revision 1.46.2.4 diff -u -p -r1.46.2.3 -r1.46.2.4 --- symbols.c 2005/07/13 04:47:01 1.46.2.3 +++ symbols.c 2005/11/06 16:15:00 1.46.2.4 @@ -2187,13 +2187,8 @@ sets it. = { struct symbol_value_buffer_local *bfwd -#ifdef MC_ALLOC - =3D alloc_lrecord_type (struct symbol_value_buffer_local, - &lrecord_symbol_value_buffer_local); -#else /* not MC_ALLOC */ - =3D alloc_lcrecord_type (struct symbol_value_buffer_local, + =3D ALLOC_LCRECORD_TYPE (struct symbol_value_buffer_local, &lrecord_symbol_value_buffer_local); -#endif /* not MC_ALLOC */ Lisp_Object foo; bfwd->magic.type =3D SYMVAL_BUFFER_LOCAL; = @@ -2300,13 +2295,8 @@ Use `make-local-hook' instead. } = /* Make sure variable is set up to hold per-buffer values */ -#ifdef MC_ALLOC - bfwd =3D alloc_lrecord_type (struct symbol_value_buffer_local, - &lrecord_symbol_value_buffer_local); -#else /* not MC_ALLOC */ - bfwd =3D alloc_lcrecord_type (struct symbol_value_buffer_local, + bfwd =3D ALLOC_LCRECORD_TYPE (struct symbol_value_buffer_local, &lrecord_symbol_value_buffer_local); -#endif /* not MC_ALLOC */ bfwd->magic.type =3D SYMVAL_SOME_BUFFER_LOCAL; = bfwd->current_buffer =3D Qnil; @@ -3025,13 +3015,8 @@ pity, thereby invalidating your code. valcontents =3D XSYMBOL (variable)->value; if (!SYMBOL_VALUE_LISP_MAGIC_P (valcontents)) { -#ifdef MC_ALLOC - bfwd =3D alloc_lrecord_type (struct symbol_value_lisp_magic, - &lrecord_symbol_value_lisp_magic); -#else /* MC_ALLOC */ - bfwd =3D alloc_lcrecord_type (struct symbol_value_lisp_magic, + bfwd =3D ALLOC_LCRECORD_TYPE (struct symbol_value_lisp_magic, &lrecord_symbol_value_lisp_magic); -#endif /* not MC_ALLOC */ bfwd->magic.type =3D SYMVAL_LISP_MAGIC; for (i =3D 0; i < MAGIC_HANDLER_MAX; i++) { @@ -3166,13 +3151,8 @@ has a buffer-local value in any buffer, = invalid_change ("Variable is magic and cannot be aliased", variable); reject_constant_symbols (variable, Qunbound, 0, Qt); = -#ifdef MC_ALLOC - bfwd =3D alloc_lrecord_type (struct symbol_value_varalias, - &lrecord_symbol_value_varalias); -#else /* not MC_ALLOC */ - bfwd =3D alloc_lcrecord_type (struct symbol_value_varalias, + bfwd =3D ALLOC_LCRECORD_TYPE (struct symbol_value_varalias, &lrecord_symbol_value_varalias); -#endif /* not MC_ALLOC */ bfwd->magic.type =3D SYMVAL_VARALIAS; bfwd->aliasee =3D alias; bfwd->shadowed =3D valcontents; @@ -3276,7 +3256,7 @@ Lisp_Object Qnull_pointer; /* some losing systems can't have static vars at function scope... */ static const struct symbol_value_magic guts_of_unbound_marker =3D { /* struct symbol_value_magic */ - { /* struct lcrecord_header */ + { /* struct old_lcrecord_header */ { /* struct lrecord_header */ lrecord_type_symbol_value_forward, /* lrecord_type_index */ 1, /* mark bit */ @@ -3331,10 +3311,10 @@ init_symbols_once_early (void) mcpro (wrap_pointer_1 (tem)); tem->value =3D 0; tem->type =3D SYMVAL_UNBOUND_MARKER; -#ifdef MC_ALLOC_TYPE_STATS +#ifdef ALLOC_TYPE_STATS inc_lrecord_stats (sizeof (struct symbol_value_magic), = (const struct lrecord_header *) tem); -#endif /* not MC_ALLOC_TYPE_STATS */ +#endif /* ALLOC_TYPE_STATS */ #else /* not MC_ALLOC */ const struct symbol_value_magic *tem =3D &guts_of_unbound_marker; #endif /* not MC_ALLOC */ @@ -3474,6 +3454,7 @@ check_sane_subr (Lisp_Subr *subr, Lisp_O #endif = #ifdef HAVE_SHLIB +#ifndef MC_ALLOC /* * If we are not in a pure undumped Emacs, we need to make a duplicate of * the subr. This is because the only time this function will be called @@ -3533,6 +3514,45 @@ do { \ subr =3D newsubr; \ } \ } while (0) +#else /* MC_ALLOC */ +/* = + * If we have the new allocator enabled, we do not need to make a + * duplicate of the subr. The new allocator already does allocate all + * subrs in Lisp-accessible memory rather than have it in the static + * subr struct. + * + * NOTE: The DOC pointer is not set here as described above. + */ = +#define check_module_subr(subr) \ +do { \ + if (initialized) { \ + Lisp_Object f; \ + \ + if (subr->min_args < 0) \ + signal_ferror (Qdll_error, "%s min_args (%hd) too small", \ + subr_name (subr), subr->min_args); \ + if (subr->min_args > SUBR_MAX_ARGS) \ + signal_ferror (Qdll_error, "%s min_args (%hd) too big (max =3D %d)= ", \ + subr_name (subr), subr->min_args, SUBR_MAX_ARGS); \ + \ + if (subr->max_args !=3D MANY && \ + subr->max_args !=3D UNEVALLED) \ + { \ + /* Need to fix lisp.h and eval.c if SUBR_MAX_ARGS too small */ \ + if (subr->max_args > SUBR_MAX_ARGS) \ + signal_ferror (Qdll_error, "%s max_args (%hd) too big (max =3D %d)", = \ + subr_name (subr), subr->max_args, SUBR_MAX_ARGS); \ + if (subr->min_args > subr->max_args) \ + signal_ferror (Qdll_error, "%s min_args (%hd) > max_args (%hd)", \ + subr_name (subr), subr->min_args, subr->max_args); \ + } \ + \ + f =3D XSYMBOL (sym)->function; \ + if (!UNBOUNDP (f) && (!CONSP (f) || !EQ (XCAR (f), Qautoload))) = \ + signal_ferror (Qdll_error, "Attempt to redefine %s", subr_name (su= br)); \ + } \ +} while (0) +#endif /* MC_ALLOC */ #else /* ! HAVE_SHLIB */ #define check_module_subr(subr) #endif = = = 1.12.2.3 +2 -6 XEmacs/xemacs/src/symeval.h = Index: symeval.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/symeval.h,v retrieving revision 1.12.2.2 retrieving revision 1.12.2.3 diff -u -p -r1.12.2.2 -r1.12.2.3 --- symeval.h 2005/09/20 16:06:11 1.12.2.2 +++ symeval.h 2005/11/06 16:15:00 1.12.2.3 @@ -77,11 +77,7 @@ typedef EMACS_INT Fixnum; = struct symbol_value_magic { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header lcheader; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; void *value; enum symbol_value_type type; }; @@ -424,7 +420,7 @@ do \ static const struct symbol_value_forward I_hate_C =3D \ { /* struct symbol_value_forward */ \ { /* struct symbol_value_magic */ \ - { /* struct lcrecord_header */ \ + { /* struct old_lcrecord_header */ \ { /* struct lrecord_header */ \ lrecord_type_symbol_value_forward, /* lrecord_type_index */ \ 1, /* mark bit */ \ = = = 1.22.2.2 +2 -2 XEmacs/xemacs/src/syntax.c = Index: syntax.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/syntax.c,v retrieving revision 1.22.2.1 retrieving revision 1.22.2.2 diff -u -p -r1.22.2.1 -r1.22.2.2 --- syntax.c 2005/03/15 05:24:52 1.22.2.1 +++ syntax.c 2005/11/06 16:15:00 1.22.2.2 @@ -423,7 +423,7 @@ signal_syntax_table_extent_adjust (struc `syntax_cache.*_change' are the next and previous positions at which syntax_code and c_s_t will need to be recalculated. = - #### Currently this code uses 'get-char-property', which will + #### Currently this code uses `get-char-property', which will return the "last smallest" extent at a given position. In cases where overlapping extents are defined, this code will simply use whatever is returned by get-char-property. @@ -1828,7 +1828,7 @@ scan_sexps_forward (struct buffer *buf, = start_quoted =3D !NILP (tem); = /* if the eighth element of the list is nil, we are in comment sty= le - a; if it is t, we are in comment style b; if it is 'syntax-table, + a; if it is t, we are in comment style b; if it is `syntax-table', we are in a generic comment */ oldstate =3D Fcdr (oldstate); oldstate =3D Fcdr (oldstate); = = = 1.18.2.3 +2 -2 XEmacs/xemacs/src/sysfile.h = Index: sysfile.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sysfile.h,v retrieving revision 1.18.2.2 retrieving revision 1.18.2.3 diff -u -p -r1.18.2.2 -r1.18.2.3 --- sysfile.h 2005/03/15 05:24:53 1.18.2.2 +++ sysfile.h 2005/11/06 16:15:01 1.18.2.3 @@ -391,10 +391,10 @@ Ibyte *qxe_realpath (const Ibyte *path, = int qxe_chmod (const Ibyte *path, mode_t mode); = #if defined (HAVE_LINK) -int qxe_link (const Ibyte *existing, const Ibyte *new); +int qxe_link (const Ibyte *existing, const Ibyte *new_); #endif /* defined (HAVE_LINK) */ = -int qxe_rename (const Ibyte *old, const Ibyte *new); +int qxe_rename (const Ibyte *old, const Ibyte *new_); = #if defined (HAVE_SYMLINK) int qxe_symlink (const Ibyte *name1, const Ibyte *name2); = = = 1.15.2.2 +1 -1 XEmacs/xemacs/src/sysproc.h = Index: sysproc.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sysproc.h,v retrieving revision 1.15.2.1 retrieving revision 1.15.2.2 diff -u -p -r1.15.2.1 -r1.15.2.2 --- sysproc.h 2005/03/15 05:24:53 1.15.2.1 +++ sysproc.h 2005/11/06 16:15:01 1.15.2.2 @@ -102,7 +102,7 @@ Boston, MA 02111-1307, USA. */ #define EREMOTE WSAEREMOTE #endif /* WIN32_NATIVE */ = -/* On some systems, e.g. DGUX, inet_addr returns a 'struct in_addr'. */ +/* On some systems, e.g. DGUX, inet_addr returns a `struct in_addr'. */ #ifdef HAVE_BROKEN_INET_ADDR # define IN_ADDR struct in_addr # define NUMERIC_ADDR_ERROR (numeric_addr.s_addr =3D=3D -1) = = = 1.18.2.1 +1 -1 XEmacs/xemacs/src/systime.h = Index: systime.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/systime.h,v retrieving revision 1.18 retrieving revision 1.18.2.1 diff -u -p -r1.18 -r1.18.2.1 --- systime.h 2003/02/20 08:19:43 1.18 +++ systime.h 2005/11/06 16:15:01 1.18.2.1 @@ -99,7 +99,7 @@ extern char *tzname[]; /* RS6000 and oth #endif =0C /* EMACS_TIME is the type to use to represent temporal intervals. - At one point this was 'struct timeval' on some systems, int on others. + At one point this was `struct timeval' on some systems, int on others. But this is stupid. Other things than select() code like to manipulate time values, and so microsecond precision should be maintained. Separate typedefs and conversion functions are provided = = = 1.23.2.3 +1 -1 XEmacs/xemacs/src/syswindows.h = Index: syswindows.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/syswindows.h,v retrieving revision 1.23.2.2 retrieving revision 1.23.2.3 diff -u -p -r1.23.2.2 -r1.23.2.3 --- syswindows.h 2005/03/15 05:24:54 1.23.2.2 +++ syswindows.h 2005/11/06 16:15:01 1.23.2.3 @@ -1155,7 +1155,7 @@ DECLARE_INLINE_HEADER (int strcasecmp (c = /* in nt.c */ int mswindows_access (const Ibyte *path, int mode); -int mswindows_link (const Ibyte *old, const Ibyte *new); +int mswindows_link (const Ibyte *old, const Ibyte *new_); int mswindows_rename (const Ibyte *oldname, const Ibyte *newname); int mswindows_unlink (const Ibyte *path); int mswindows_stat (const Ibyte *path, struct stat *buf); = = = 1.33.2.3 +17 -21 XEmacs/xemacs/src/toolbar.c = Index: toolbar.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/toolbar.c,v retrieving revision 1.33.2.2 retrieving revision 1.33.2.3 diff -u -p -r1.33.2.2 -r1.33.2.3 --- toolbar.c 2005/07/13 04:47:05 1.33.2.2 +++ toolbar.c 2005/11/06 16:15:01 1.33.2.3 @@ -244,34 +244,34 @@ decode_toolbar_position (Lisp_Object pos = DEFUN ("set-default-toolbar-position", Fset_default_toolbar_position, 1,= 1, 0, /* Set the position that the `default-toolbar' will be displayed at. -Valid positions are 'top, 'bottom, 'left and 'right. +Valid positions are `top', `bottom', `left' and `right'. See `default-toolbar-position'. */ (position)) { enum toolbar_pos cur =3D decode_toolbar_position (Vdefault_toolbar_pos= ition); - enum toolbar_pos new =3D decode_toolbar_position (position); + enum toolbar_pos new_ =3D decode_toolbar_position (position); = - if (cur !=3D new) + if (cur !=3D new_) { /* The following calls will automatically cause the dirty flags to be set; we delay frame size changes to avoid lots of frame flickering. */ int depth =3D begin_hold_frame_size_changes (); set_specifier_fallback (Vtoolbar[cur], list1 (Fcons (Qnil, Qnil))); - set_specifier_fallback (Vtoolbar[new], Vdefault_toolbar); + set_specifier_fallback (Vtoolbar[new_], Vdefault_toolbar); set_specifier_fallback (Vtoolbar_size[cur], list1 (Fcons (Qnil, Qz= ero))); - set_specifier_fallback (Vtoolbar_size[new], - new =3D=3D TOP_TOOLBAR || new =3D=3D BOTTOM_TOOLBAR + set_specifier_fallback (Vtoolbar_size[new_], + new_ =3D=3D TOP_TOOLBAR || new_ =3D=3D BOTTOM_TOOLBAR ? Vdefault_toolbar_height : Vdefault_toolbar_width); set_specifier_fallback (Vtoolbar_border_width[cur], list1 (Fcons (Qnil, Qzero))); - set_specifier_fallback (Vtoolbar_border_width[new], + set_specifier_fallback (Vtoolbar_border_width[new_], Vdefault_toolbar_border_width); set_specifier_fallback (Vtoolbar_visible_p[cur], list1 (Fcons (Qnil, Qt))); - set_specifier_fallback (Vtoolbar_visible_p[new], + set_specifier_fallback (Vtoolbar_visible_p[new_], Vdefault_toolbar_visible_p); Vdefault_toolbar_position =3D position; unbind_to (depth); @@ -303,11 +303,7 @@ update_toolbar_button (struct frame *f, = = if (!tb) { -#ifdef MC_ALLOC - tb =3D alloc_lrecord_type (struct toolbar_button, &lrecord_toolbar= _button); -#else /* not MC_ALLOC */ - tb =3D alloc_lcrecord_type (struct toolbar_button, &lrecord_toolba= r_button); -#endif /* not MC_ALLOC */ + tb =3D ALLOC_LCRECORD_TYPE (struct toolbar_button, &lrecord_toolba= r_button); tb->next =3D Qnil; tb->frame =3D wrap_frame (f); tb->up_glyph =3D Qnil; @@ -1051,7 +1047,7 @@ check_toolbar_button_keywords (Lisp_Obje DEFUN ("check-toolbar-button-syntax", Fcheck_toolbar_button_syntax, 1, 2= , 0, /* Verify the syntax of entry BUTTON in a toolbar description list. If you want to verify the syntax of a toolbar description list as a -whole, use `check-valid-instantiator' with a specifier type of 'toolbar. +whole, use `check-valid-instantiator' with a specifier type of `toolbar'. */ (button, noerror)) { @@ -1398,7 +1394,7 @@ Use `set-specifier' to change this. = The position of this toolbar is specified in the function `default-toolbar-position'. If the corresponding position-specific -toolbar (e.g. `top-toolbar' if `default-toolbar-position' is 'top) +toolbar (e.g. `top-toolbar' if `default-toolbar-position' is `top') does not specify a toolbar in a particular domain (usually a window), then the value of `default-toolbar' in that domain, if any, will be used instead. @@ -1490,7 +1486,7 @@ For the first vector format: = For the other vector formats (specifying blank areas of the toolbar): = --- 2D-OR-3D should be one of the symbols '2d or '3d, indicating +-- 2D-OR-3D should be one of the symbols `2d' or `3d', indicating whether the area is displayed with shadows (giving it a raised, 3-d appearance) or without shadows (giving it a flat appearance). = @@ -1587,14 +1583,14 @@ This is a specifier; use `set-specifier' The position of the default toolbar is specified by the function `set-default-toolbar-position'. If the corresponding position-specific toolbar thickness specifier (e.g. `top-toolbar-height' if -`default-toolbar-position' is 'top) does not specify a thickness in a +`default-toolbar-position' is `top') does not specify a thickness in a particular domain (a window or a frame), then the value of `default-toolbar-height' or `default-toolbar-width' (depending on the toolbar orientation) in that domain, if any, will be used instead. = Note that `default-toolbar-height' is only used when -`default-toolbar-position' is 'top or 'bottom, and `default-toolbar-widt= h' -is only used when `default-toolbar-position' is 'left or 'right. +`default-toolbar-position' is `top' or `bottom', and `default-toolbar-wi= dth' +is only used when `default-toolbar-position' is `left' or `right'. = Note that all of the position-specific toolbar thickness specifiers have a fallback value of zero when they do not correspond to the @@ -1772,7 +1768,7 @@ This is a specifier; use `set-specifier' The position of the default toolbar is specified by the function `set-default-toolbar-position'. If the corresponding position-specific toolbar border width specifier (e.g. `top-toolbar-border-width' if -`default-toolbar-position' is 'top) does not specify a border width in a +`default-toolbar-position' is `top') does not specify a border width in a particular domain (a window or a frame), then the value of `default-toolbar-border-width' in that domain, if any, will be used instead. @@ -1886,7 +1882,7 @@ This is a specifier; use `set-specifier' The position of the default toolbar is specified by the function `set-default-toolbar-position'. If the corresponding position-specific toolbar visibility specifier (e.g. `top-toolbar-visible-p' if -`default-toolbar-position' is 'top) does not specify a visible-p value +`default-toolbar-position' is `top') does not specify a visible-p value in a particular domain (a window or a frame), then the value of `default-toolbar-visible-p' in that domain, if any, will be used instead. = = = 1.13.6.2 +1 -5 XEmacs/xemacs/src/toolbar.h = Index: toolbar.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/toolbar.h,v retrieving revision 1.13.6.1 retrieving revision 1.13.6.2 diff -u -p -r1.13.6.1 -r1.13.6.2 --- toolbar.h 2005/07/13 04:47:06 1.13.6.1 +++ toolbar.h 2005/11/06 16:15:02 1.13.6.2 @@ -38,11 +38,7 @@ Boston, MA 02111-1307, USA. */ = struct toolbar_button { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = Lisp_Object next; Lisp_Object frame; = = = 1.32.2.3 +18 -34 XEmacs/xemacs/src/tooltalk.c = Index: tooltalk.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/tooltalk.c,v retrieving revision 1.32.2.2 retrieving revision 1.32.2.3 diff -u -p -r1.32.2.2 -r1.32.2.3 --- tooltalk.c 2005/09/20 16:06:12 1.32.2.2 +++ tooltalk.c 2005/11/06 16:15:02 1.32.2.3 @@ -147,11 +147,7 @@ Lisp_Object Qtooltalk_messagep; = struct Lisp_Tooltalk_Message { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object plist_sym, callback; Tt_message m; }; @@ -195,11 +191,7 @@ make_tooltalk_message (Tt_message m) { Lisp_Object val; Lisp_Tooltalk_Message *msg =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Tooltalk_Message, &lrecord_tooltalk_message= ); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Tooltalk_Message, &lrecord_tooltalk_messag= e); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Tooltalk_Message, &lrecord_tooltalk_messag= e); = msg->m =3D m; msg->callback =3D Qnil; @@ -233,11 +225,7 @@ Lisp_Object Qtooltalk_patternp; = struct Lisp_Tooltalk_Pattern { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; Lisp_Object plist_sym, callback; Tt_pattern p; }; @@ -280,11 +268,7 @@ static Lisp_Object make_tooltalk_pattern (Tt_pattern p) { Lisp_Tooltalk_Pattern *pat =3D -#ifdef MC_ALLOC - alloc_lrecord_type (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_pattern= ); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_patter= n); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (Lisp_Tooltalk_Pattern, &lrecord_tooltalk_patter= n); Lisp_Object val; = pat->p =3D p; @@ -573,30 +557,30 @@ Return the indicated Tooltalk message at identified by symbols with the same name (underscores and all) as the suffix of the Tooltalk tt_message_ function that extracts the= value. String attribute values are copied, enumerated type values (except dispo= sition) -are converted to symbols - e.g. TT_HANDLER is 'TT_HANDLER, uid and gid a= re +are converted to symbols - e.g. TT_HANDLER is `TT_HANDLER', uid and gid = are represented by fixnums (small integers), opnum is converted to a string, and disposition is converted to a fixnum. We convert opnum (a C int) to= a string, e.g. 123 =3D> "123" because there's no guarantee that opnums wil= l fit within the range of Lisp integers. = -Use the 'plist attribute instead of the C API 'user attribute +Use the `plist' attribute instead of the C API `user' attribute for user defined message data. To retrieve the value of a message prope= rty specify the indicator for argn. For example to get the value of a prope= rty -called 'rflag, use +called `rflag', use (get-tooltalk-message-attribute message 'plist 'rflag) = -To get the value of a message argument use one of the 'arg_val (strings), -'arg_ival (integers), or 'arg_bval (strings with embedded nulls), attrib= utes. +To get the value of a message argument use one of the `arg_val' (strings= ), +`arg_ival' (integers), or `arg_bval' (strings with embedded nulls), attr= ibutes. For example to get the integer value of the third argument: = (get-tooltalk-message-attribute message 'arg_ival 2) = As you can see, argument numbers are zero based. The type of each argum= ent -can be retrieved with the 'arg_type attribute; however, Tooltalk doesn't -define any semantics for the string value of 'arg_type. Conventionally +can be retrieved with the `arg_type' attribute; however, Tooltalk doesn't +define any semantics for the string value of `arg_type'. Conventionally "string" is used for strings and "int" for 32 bit integers. Note that Emacs Lisp stores the lengths of strings explicitly (unlike C) so treati= ng the -value returned by 'arg_bval like a string is fine. +value returned by `arg_bval' like a string is fine. */ (message_, attribute, argn)) { @@ -715,7 +699,7 @@ Initialize one Tooltalk message attribut = Attribute names and values are the same as for `get-tooltalk-message-attribute'. A property list is provided for user -data (instead of the 'user message attribute); see +data (instead of the `user' message attribute); see `get-tooltalk-message-attribute'. = The value of callback should be the name of a function of one argument. @@ -724,8 +708,8 @@ message changes. This is usually used t changed to TT_HANDLED (or TT_FAILED), so that reply argument values can be used. = -If one of the argument attributes is specified, 'arg_val, 'arg_ival, or -'arg_bval then argn must be the number of an already created argument. +If one of the argument attributes is specified, `arg_val', `arg_ival', or +`arg_bval' then argn must be the number of an already created argument. New arguments can be added to a message with add-tooltalk-message-arg. */ (value, message_, attribute, argn)) @@ -839,7 +823,7 @@ New arguments can be added to a message = = DEFUN ("return-tooltalk-message", Freturn_tooltalk_message, 1, 2, 0, /* Send a reply to this message. The second argument can be -'reply, 'reject or 'fail; the default is 'reply. Before sending +`reply', `reject' or `fail'; the default is `reply'. Before sending a reply all message arguments whose mode is TT_INOUT or TT_OUT should have been filled in - see set-tooltalk-message-attribute. */ @@ -929,7 +913,7 @@ Conventionally "string" is used for stri Arguments can initialized by providing a value or with `set-tooltalk-message-attribute'. The latter is necessary if you want to initialize the argument with a string that can contain -embedded nulls (use 'arg_bval). +embedded nulls (use `arg_bval'). */ (message_, mode, vtype, value)) { @@ -1017,7 +1001,7 @@ This effectively unregisters the pattern = DEFUN ("add-tooltalk-pattern-attribute", Fadd_tooltalk_pattern_attribute= , 3, 3, 0, /* Add one value to the indicated pattern attribute. -All Tooltalk pattern attributes are supported except 'user. The names +All Tooltalk pattern attributes are supported except `user'. The names of attributes are the same as the Tooltalk accessors used to set them less the "tooltalk_pattern_" prefix and the "_add" ... */ = = = 1.7.2.1 +7 -7 XEmacs/xemacs/src/tparam.c = Index: tparam.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/tparam.c,v retrieving revision 1.7 retrieving revision 1.7.2.1 diff -u -p -r1.7 -r1.7.2.1 --- tparam.c 2003/09/30 15:27:00 1.7 +++ tparam.c 2005/11/06 16:15:03 1.7.2.1 @@ -100,23 +100,23 @@ tparam1 (const char *string, char *outst /* If the buffer might be too short, make it bigger. */ if (op + 5 >=3D outend) { - char *new; + char *new_; if (outlen =3D=3D 0) { outlen =3D len + 40; - new =3D (char *) malloc (outlen); + new_ =3D (char *) malloc (outlen); outend +=3D 40; - memcpy (new, outstring, op - outstring); + memcpy (new_, outstring, op - outstring); } else { outend +=3D outlen; outlen *=3D 2; - new =3D (char *) realloc (outstring, outlen); + new_ =3D (char *) realloc (outstring, outlen); } - op +=3D new - outstring; - outend +=3D new - outstring; - outstring =3D new; + op +=3D new_ - outstring; + outend +=3D new_ - outstring; + outstring =3D new_; } c =3D *p++; if (!c) = = = 1.20.2.3 +3 -17 XEmacs/xemacs/src/ui-gtk.c = Index: ui-gtk.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ui-gtk.c,v retrieving revision 1.20.2.2 retrieving revision 1.20.2.3 diff -u -p -r1.20.2.2 -r1.20.2.3 --- ui-gtk.c 2005/07/13 04:47:06 1.20.2.2 +++ ui-gtk.c 2005/11/06 16:15:03 1.20.2.3 @@ -280,11 +280,7 @@ import_gtk_type (GtkType t) static emacs_ffi_data * allocate_ffi_data (void) { -#ifdef MC_ALLOC - emacs_ffi_data *data =3D alloc_lrecord_type (emacs_ffi_data, &lrecord_= emacs_ffi); -#else /* not MC_ALLOC */ - emacs_ffi_data *data =3D alloc_lcrecord_type (emacs_ffi_data, &lrecord= _emacs_ffi); -#endif /* not MC_ALLOC */ + emacs_ffi_data *data =3D ALLOC_LCRECORD_TYPE (emacs_ffi_data, &lrecord= _emacs_ffi); = data->return_type =3D GTK_TYPE_NONE; data->n_args =3D 0; @@ -948,13 +944,8 @@ DEFINE_LRECORD_IMPLEMENTATION_WITH_PROPS static emacs_gtk_object_data * allocate_emacs_gtk_object_data (void) { -#ifdef MC_ALLOC - emacs_gtk_object_data *data =3D alloc_lrecord_type (emacs_gtk_object_d= ata, - &lrecord_emacs_gtk_object); -#else /* not MC_ALLOC */ - emacs_gtk_object_data *data =3D alloc_lcrecord_type (emacs_gtk_object_= data, + emacs_gtk_object_data *data =3D ALLOC_LCRECORD_TYPE (emacs_gtk_object_= data, &lrecord_emacs_gtk_object); -#endif /* not MC_ALLOC */ = data->object =3D NULL; data->alive_p =3D FALSE; @@ -1162,13 +1153,8 @@ DEFINE_LRECORD_IMPLEMENTATION_WITH_PROPS static emacs_gtk_boxed_data * allocate_emacs_gtk_boxed_data (void) { -#ifdef MC_ALLOC - emacs_gtk_boxed_data *data =3D alloc_lrecord_type (emacs_gtk_boxed_dat= a, - &lrecord_emacs_gtk_boxed); -#else /* not MC_ALLOC */ - emacs_gtk_boxed_data *data =3D alloc_lcrecord_type (emacs_gtk_boxed_da= ta, + emacs_gtk_boxed_data *data =3D ALLOC_LCRECORD_TYPE (emacs_gtk_boxed_da= ta, &lrecord_emacs_gtk_boxed); -#endif /* not MC_ALLOC */ = data->object =3D NULL; data->object_type =3D GTK_TYPE_INVALID; = = = 1.5.8.2 +3 -15 XEmacs/xemacs/src/ui-gtk.h = Index: ui-gtk.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ui-gtk.h,v retrieving revision 1.5.8.1 retrieving revision 1.5.8.2 diff -u -p -r1.5.8.1 -r1.5.8.2 --- ui-gtk.h 2005/07/13 04:47:06 1.5.8.1 +++ ui-gtk.h 2005/11/06 16:15:03 1.5.8.2 @@ -21,11 +21,7 @@ typedef void (*ffi_marshalling_function) #define MAX_GTK_ARGS 100 = typedef struct { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; GtkType return_type; GtkType args[MAX_GTK_ARGS]; gint n_args; @@ -43,11 +39,7 @@ DECLARE_LRECORD (emacs_ffi, emacs_ffi_da = /* Encapsulate a GtkObject in Lisp */ typedef struct { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; gboolean alive_p; GtkObject *object; Lisp_Object plist; @@ -64,11 +56,7 @@ extern Lisp_Object build_gtk_object (Gtk = /* Encapsulate a GTK_TYPE_BOXED in lisp */ typedef struct { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; GtkType object_type; void *object; } emacs_gtk_boxed_data; = = = 1.12.2.1 +44 -44 XEmacs/xemacs/src/unexaix.c = Index: unexaix.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexaix.c,v retrieving revision 1.12 retrieving revision 1.12.2.1 diff -u -p -r1.12 -r1.12.2.1 --- unexaix.c 2004/09/20 19:20:04 1.12 +++ unexaix.c 2005/11/06 16:15:04 1.12.2.1 @@ -57,7 +57,7 @@ Boston, MA 02111-1307, USA. */ #define PERROR(arg) perror (arg); return -1 #else #include -#define PERROR(file) report_error (file, new) +#define PERROR(file) report_error (file, new_) #endif = #include @@ -126,9 +126,9 @@ report_error (char *file, int fd) } #endif /* emacs */ = -#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1 -#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1 -#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1 +#define ERROR0(msg) report_error_1 (new_, msg, 0, 0); return -1 +#define ERROR1(msg,x) report_error_1 (new_, msg, x, 0); return -1 +#define ERROR2(msg,x,y) report_error_1 (new_, msg, x, y); return -1 = static void report_error_1 (int fd, char *msg, int a1, int a2) @@ -158,30 +158,30 @@ int unexec (char *new_name, char *a_name uintptr_t bss_start, uintptr_t entry_address) { - int new =3D -1, a_out =3D -1; + int new_ =3D -1, a_out =3D -1; = if (a_name && (a_out =3D open (a_name, O_RDONLY)) < 0) { PERROR (a_name); } - if ((new =3D creat (new_name, 0666)) < 0) + if ((new_ =3D creat (new_name, 0666)) < 0) { PERROR (new_name); } - if (make_hdr (new, a_out, + if (make_hdr (new_, a_out, data_start, bss_start, entry_address, a_name, new_name) < 0 - || copy_text_and_data (new) < 0 - || copy_sym (new, a_out, a_name, new_name) < 0 - || adjust_lnnoptrs (new, a_out, new_name) < 0 - || unrelocate_symbols (new, a_out, a_name, new_name) < 0) + || copy_text_and_data (new_) < 0 + || copy_sym (new_, a_out, a_name, new_name) < 0 + || adjust_lnnoptrs (new_, a_out, new_name) < 0 + || unrelocate_symbols (new_, a_out, a_name, new_name) < 0) { - close (new); + close (new_); return -1; = } = - close (new); + close (new_); if (a_out >=3D 0) close (a_out); mark_x (new_name); @@ -195,7 +195,7 @@ int unexec (char *new_name, char *a_name * Modify the text and data sizes. */ static int -make_hdr (int new, int a_out, +make_hdr (int new_, int a_out, unsigned data_start, unsigned bss_start, unsigned UNUSED (entry_address), char *a_name, char *new_name) @@ -391,14 +391,14 @@ make_hdr (int new, int a_out, data_scnptr =3D f_dhdr->s_scnptr; load_scnptr =3D f_lhdr ? f_lhdr->s_scnptr : 0; = - if (write (new, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) + if (write (new_, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) { PERROR (new_name); } = if (f_hdr.f_opthdr > 0) { - if (write (new, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) + if (write (new_, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) { PERROR (new_name); } @@ -406,7 +406,7 @@ make_hdr (int new, int a_out, = for (scns =3D 0; scns < f_hdr.f_nscns; scns++) { struct scnhdr *s =3D §ion[scns]; - if (write (new, s, sizeof (*s)) !=3D sizeof (*s)) + if (write (new_, s, sizeof (*s)) !=3D sizeof (*s)) { PERROR (new_name); } @@ -421,27 +421,27 @@ make_hdr (int new, int a_out, * Copy the text and data segments from memory to the new a.out */ static int -copy_text_and_data (int new) +copy_text_and_data (int new_) { char *end; char *ptr; = - lseek (new, (long) text_scnptr, SEEK_SET); + lseek (new_, (long) text_scnptr, SEEK_SET); ptr =3D start_of_text () + text_scnptr; end =3D ptr + f_ohdr.tsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); = - lseek (new, (long) data_scnptr, SEEK_SET); + lseek (new_, (long) data_scnptr, SEEK_SET); ptr =3D (char *) f_ohdr.data_start; end =3D ptr + f_ohdr.dsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); = return 0; } = #define UnexBlockSz (1<<12) /* read/write block size */ static void -write_segment (int new, char *ptr, char *end) +write_segment (int new_, char *ptr, char *end) { int i, nwrite, ret; char buf[80]; @@ -453,7 +453,7 @@ write_segment (int new, char *ptr, char = nwrite =3D (((int) ptr + UnexBlockSz) & -UnexBlockSz) - (int) ptr; /* But not beyond specified end. */ if (nwrite > end - ptr) nwrite =3D end - ptr; - ret =3D write (new, ptr, nwrite); + ret =3D write (new_, ptr, nwrite); /* If write gets a page fault, it means we reached a gap between the old text segment and the old data segment. This gap has probably been remapped into part of the text segment. @@ -461,13 +461,13 @@ write_segment (int new, char *ptr, char = if (ret =3D=3D -1 && errno =3D=3D EFAULT) { memset (zeros, 0, nwrite); - write (new, zeros, nwrite); + write (new_, zeros, nwrite); } else if (nwrite !=3D ret) { sprintf (buf, "unexec write failure: addr 0x%lx, fileno %d, size 0x%x, wrote 0x%x= , errno %d", - (unsigned long)ptr, new, nwrite, ret, errno); + (unsigned long)ptr, new_, nwrite, ret, errno); PERROR (buf); } i +=3D nwrite; @@ -481,7 +481,7 @@ write_segment (int new, char *ptr, char = * Copy the relocation information and symbol table from the a.out to th= e new */ static int -copy_sym (int new, int a_out, char *a_name, char *new_name) +copy_sym (int new_, int a_out, char *a_name, char *new_name) { char page[UnexBlockSz]; int n; @@ -499,7 +499,7 @@ copy_sym (int new, int a_out, char *a_na = while ((n =3D read (a_out, page, sizeof (page))) > 0) { - if (write (new, page, n) !=3D n) + if (write (new_, page, n) !=3D n) { PERROR (new_name); } @@ -521,7 +521,7 @@ mark_x (char *name) { struct stat sbuf; int um; - int new =3D 0; /* for PERROR */ + int new_ =3D 0; /* for PERROR */ = um =3D umask (777); umask (um); @@ -539,50 +539,50 @@ adjust_lnnoptrs (int UNUSED (writedesc), { int nsyms; int naux; - int new; + int new_; struct syment symentry; union auxent auxentry; = if (!lnnoptr || !f_hdr.f_symptr) return 0; = - if ((new =3D open (new_name, O_RDWR)) < 0) + if ((new_ =3D open (new_name, O_RDWR)) < 0) { PERROR (new_name); return -1; } = - lseek (new, f_hdr.f_symptr, SEEK_SET); + lseek (new_, f_hdr.f_symptr, SEEK_SET); for (nsyms =3D 0; nsyms < f_hdr.f_nsyms; nsyms++) { - read (new, &symentry, SYMESZ); + read (new_, &symentry, SYMESZ); if (symentry.n_sclass =3D=3D C_BINCL || symentry.n_sclass =3D=3D C= _EINCL) { symentry.n_value +=3D bias; - lseek (new, -SYMESZ, SEEK_CUR); - write (new, &symentry, SYMESZ); + lseek (new_, -SYMESZ, SEEK_CUR); + write (new_, &symentry, SYMESZ); } = for (naux =3D symentry.n_numaux; naux-- !=3D 0; ) { - read (new, &auxentry, AUXESZ); + read (new_, &auxentry, AUXESZ); nsyms++; if (naux !=3D 0 /* skip csect auxentry (last entry) */ && (symentry.n_sclass =3D=3D C_EXT || symentry.n_sclass = =3D=3D C_HIDEXT)) { auxentry.x_sym.x_fcnary.x_fcn.x_lnnoptr +=3D bias; - lseek (new, -AUXESZ, SEEK_CUR); - write (new, &auxentry, AUXESZ); + lseek (new_, -AUXESZ, SEEK_CUR); + write (new_, &auxentry, AUXESZ); } } } - close (new); + close (new_); = return 0; } = static int -unrelocate_symbols (int new, int a_out, char *a_name, char *new_name) +unrelocate_symbols (int new_, int a_out, char *a_name, char *new_name) { int i; LDHDR ldhdr; @@ -626,11 +626,11 @@ unrelocate_symbols (int new, int a_out, = { ldrel.l_symndx =3D SYMNDX_DATA; = - lseek (new, + lseek (new_, load_scnptr + LDHDRSZ + LDSYMSZ*ldhdr.l_nsyms + LDRELSZ*i, SEEK_SET); = - if (write (new, &ldrel, LDRELSZ) !=3D LDRELSZ) + if (write (new_, &ldrel, LDRELSZ) !=3D LDRELSZ) { PERROR (new_name); } @@ -665,10 +665,10 @@ unrelocate_symbols (int new, int a_out, = = if (orig_int !=3D * p) { - lseek (new, + lseek (new_, data_scnptr + (ldrel.l_vaddr - f_ohdr.data_start), SEEK_SET); - if (write (new, (void *) &orig_int, sizeof (orig_int)) + if (write (new_, (void *) &orig_int, sizeof (orig_int)) !=3D sizeof (orig_int)) { PERROR (new_name); = = = 1.10.2.1 +16 -16 XEmacs/xemacs/src/unexalpha.c = Index: unexalpha.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexalpha.c,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -p -r1.10 -r1.10.2.1 --- unexalpha.c 2004/09/20 19:20:05 1.10 +++ unexalpha.c 2005/11/06 16:15:04 1.10.2.1 @@ -96,7 +96,7 @@ unexec (char *new_name, char *a_name, unsigned long UNUSED (bss_start), unsigned long entry_address) { - int new, old; + int new_, old; char * oldptr; struct headers ohdr, nhdr; struct stat stat; @@ -110,8 +110,8 @@ unexec (char *new_name, char *a_name, if ((old =3D open (a_name, O_RDONLY)) < 0) fatal_unexec ("opening %s", a_name); = - new =3D creat (new_name, 0666); - if (new < 0) fatal_unexec ("creating %s", new_name); + new_ =3D creat (new_name, 0666); + if (new_ < 0) fatal_unexec ("creating %s", new_name); = if ((fstat (old, &stat) =3D=3D -1)) fatal_unexec ("fstat %s", a_name); @@ -290,9 +290,9 @@ unexec (char *new_name, char *a_name, bss_section->s_scnptr =3D scnptr; } = - WRITE (new, (char *)TEXT_START, nhdr.aout.tsize, + WRITE (new_, (char *)TEXT_START, nhdr.aout.tsize, "writing text section to %s", new_name); - WRITE (new, (char *)DATA_START, nhdr.aout.dsize, + WRITE (new_, (char *)DATA_START, nhdr.aout.dsize, "writing data section to %s", new_name); = = @@ -318,12 +318,12 @@ unexec (char *new_name, char *a_name, symhdr->cbRfdOffset +=3D symrel; symhdr->cbExtOffset +=3D symrel; = - WRITE (new, buffer, cbHDRR, "writing symbol table header of %s", new_n= ame); + WRITE (new_, buffer, cbHDRR, "writing symbol table header of %s", new_= name); = /* * Copy the symbol table and line numbers */ - WRITE (new, oldptr + ohdr.fhdr.f_symptr + cbHDRR, + WRITE (new_, oldptr + ohdr.fhdr.f_symptr + cbHDRR, stat.st_size - ohdr.fhdr.f_symptr - cbHDRR, "writing symbol table of %s", new_name); = @@ -331,7 +331,7 @@ unexec (char *new_name, char *a_name, = /* Not needed for now */ = - update_dynamic_symbols (oldptr, new_name, new, newsyms, + update_dynamic_symbols (oldptr, new_name, new_, newsyms, ((pHDRR) (oldptr + ohdr.fhdr.f_symptr))->issExtMax, ((pHDRR) (oldptr + ohdr.fhdr.f_symptr))->cbExt= Offset, ((pHDRR) (oldptr + ohdr.fhdr.f_symptr))->cbSsE= xtOffset); @@ -340,12 +340,12 @@ unexec (char *new_name, char *a_name, = #undef symhdr = - SEEK (new, 0, "seeking to start of header in %s", new_name); - WRITE (new, &nhdr, sizeof (nhdr), + SEEK (new_, 0, "seeking to start of header in %s", new_name); + WRITE (new_, &nhdr, sizeof (nhdr), "writing header of %s", new_name); = close (old); - close (new); + close (new_); mark_x (new_name); return 0; } @@ -367,7 +367,7 @@ int update_dynamic_symbols ( char *old, /* Pointer to old executable */ char *new_name, /* Name of new executable */ - int new, /* File descriptor for new executable */ + int new_, /* File descriptor for new executable */ long newsyms, /* Offset of Symbol table in new executable */ int nsyms, /* Number of symbol table entries */ long symoff, /* Offset of External Symbols in old file */ @@ -394,9 +394,9 @@ update_dynamic_symbols ( found++; memcpy (&n_edata, x, cbEXTR); n_edata.asym.value =3D Brk; - SEEK (new, newsyms + cbHDRR + i, + SEEK (new_, newsyms + cbHDRR + i, "seeking to symbol _edata in %s", new_name); - WRITE (new, &n_edata, cbEXTR, + WRITE (new_, &n_edata, cbEXTR, "writing symbol table entry for _edata into %s", new_name); } else if (!strcmp(s,"_end")) @@ -404,9 +404,9 @@ update_dynamic_symbols ( found++; memcpy (&n_end, x, cbEXTR); n_end.asym.value =3D Brk; - SEEK (new, newsyms + cbHDRR + i, + SEEK (new_, newsyms + cbHDRR + i, "seeking to symbol _end in %s", new_name); - WRITE (new, &n_end, cbEXTR, + WRITE (new_, &n_end, cbEXTR, "writing symbol table entry for _end into %s", new_name); } } = = = 1.5.2.1 +30 -30 XEmacs/xemacs/src/unexconvex.c = Index: unexconvex.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexconvex.c,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -p -r1.5 -r1.5.2.1 --- unexconvex.c 2004/09/20 19:20:05 1.5 +++ unexconvex.c 2005/11/06 16:15:04 1.5.2.1 @@ -159,7 +159,7 @@ pointer looks like an int) but not on al */ = #include -#define PERROR(file) report_error (file, new) +#define PERROR(file) report_error (file, new_) = #include /* Define getpagesize () if the system does not. @@ -205,9 +205,9 @@ report_error (file, fd) build_string (file)); } = -#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1 -#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1 -#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1 +#define ERROR0(msg) report_error_1 (new_, msg, 0, 0); return -1 +#define ERROR1(msg,x) report_error_1 (new_, msg, x, 0); return -1 +#define ERROR2(msg,x,y) report_error_1 (new_, msg, x, y); return -1 = static report_error_1 (fd, msg, a1, a2) @@ -228,23 +228,23 @@ unexec (new_name, a_name, data_start, bs char *new_name, *a_name; unsigned data_start, bss_start, entry_address; { - int new, a_out =3D -1; + int new_, a_out =3D -1; = if (a_name && (a_out =3D open (a_name, 0)) < 0) { PERROR (a_name); } - if ((new =3D creat (new_name, 0666)) < 0) { + if ((new_ =3D creat (new_name, 0666)) < 0) { PERROR (new_name); } = - if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_na= me, new_name) < 0 - || copy_text_and_data (new) < 0 - || copy_sym (new, a_out, a_name, new_name) < 0 ) { - close (new); + if (make_hdr (new_, a_out, data_start, bss_start, entry_address, a_n= ame, new_name) < 0 + || copy_text_and_data (new_) < 0 + || copy_sym (new_, a_out, a_name, new_name) < 0 ) { + close (new_); return -1; = } = - close (new); + close (new_); if (a_out >=3D 0) close (a_out); mark_x (new_name); @@ -266,8 +266,8 @@ unsigned data_start, bss_start, entry_ad struct scnhdr *f_tbhdr; /* Thread Bss section header */ = static int -make_hdr (new, a_out, data_start, bss_start, entry_address, a_name, new_= name) - int new, a_out; +make_hdr (new_, a_out, data_start, bss_start, entry_address, a_name, new= _name) + int new_, a_out; unsigned data_start, bss_start; unsigned UNUSED (entry_address); char *a_name; @@ -427,11 +427,11 @@ make_hdr (new, a_out, data_start, bss_st f_hdr.h_strptr +=3D bias; } = - if (write (new, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) { + if (write (new_, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) { PERROR (new_name); } = - if (write (new, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) { + if (write (new_, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) { PERROR (new_name); } = @@ -453,7 +453,7 @@ make_hdr (new, a_out, data_start, bss_st = for( scns =3D 0; scns < f_hdr.h_nscns; scns++ ) { = - if( write( new, &stbl[scns], sizeof(*stbl)) !=3D sizeof(*stbl)) { + if( write( new_, &stbl[scns], sizeof(*stbl)) !=3D sizeof(*stbl)) { PERROR (new_name); } = @@ -469,19 +469,19 @@ make_hdr (new, a_out, data_start, bss_st * Copy the text and data segments from memory to the new a.out */ static int -copy_text_and_data (new) -int new; +copy_text_and_data (new_) +int new_; { int scns; = for( scns =3D 0; scns < f_hdr.h_nscns; scns++ ) - write_segment( new, &stbl[scns] ); + write_segment( new_, &stbl[scns] ); = return 0; } = -write_segment( new, sptr ) -int new; +write_segment( new_, sptr ) +int new_; struct scnhdr *sptr; { char *ptr, *end; @@ -493,7 +493,7 @@ struct scnhdr *sptr; if( sptr->s_scnptr =3D=3D 0 ) return; /* Nothing to do */ = - if( lseek( new, (long) sptr->s_scnptr, 0 ) =3D=3D -1 ) + if( lseek( new_, (long) sptr->s_scnptr, 0 ) =3D=3D -1 ) PERROR( "unexecing" ); = memset (zeros, 0, sizeof (zeros)); @@ -507,17 +507,17 @@ struct scnhdr *sptr; nwrite =3D (((int) ptr + 128) & -128) - (int) ptr; /* But not beyond specified end. */ if (nwrite > end - ptr) nwrite =3D end - ptr; - ret =3D write (new, ptr, nwrite); + ret =3D write (new_, ptr, nwrite); /* If write gets a page fault, it means we reached a gap between the old text segment and the old data segment. This gap has probably been remapped into part of the text segment. So write zeros for it. */ if (ret =3D=3D -1 && errno =3D=3D EFAULT) - write (new, zeros, nwrite); + write (new_, zeros, nwrite); else if (nwrite !=3D ret) { sprintf (buf, "unexec write failure: addr 0x%x, fileno %d, size 0x%x, wrote 0x%= x, errno %d", - ptr, new, nwrite, ret, errno); + ptr, new_, nwrite, ret, errno); PERROR (buf); } ptr +=3D nwrite; @@ -530,8 +530,8 @@ struct scnhdr *sptr; * Copy the relocation information and symbol table from the a.out to th= e new */ static int -copy_sym (new, a_out, a_name, new_name) - int new, a_out; +copy_sym (new_, a_out, a_name, new_name) + int new_, a_out; char *a_name, *new_name; { char page[1024]; @@ -544,10 +544,10 @@ copy_sym (new, a_out, a_name, new_name) return 0; = lseek (a_out, SYMS_START, 0); /* Position a.out to symtab. */ - lseek( new, (long)f_ohdr.o_symptr, 0 ); + lseek( new_, (long)f_ohdr.o_symptr, 0 ); = while ((n =3D read (a_out, page, sizeof (page))) > 0) { - if (write (new, page, n) !=3D n) { + if (write (new_, page, n) !=3D n) { PERROR (new_name); } } @@ -568,7 +568,7 @@ char *name; { struct stat sbuf; int um; - int new =3D 0; /* for PERROR */ + int new_ =3D 0; /* for PERROR */ = um =3D umask (777); umask (um); = = = 1.10.2.1 +61 -61 XEmacs/xemacs/src/unexec.c = Index: unexec.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexec.c,v retrieving revision 1.10 retrieving revision 1.10.2.1 diff -u -p -r1.10 -r1.10.2.1 --- unexec.c 2004/09/20 19:20:05 1.10 +++ unexec.c 2005/11/06 16:15:04 1.10.2.1 @@ -169,7 +169,7 @@ pointer looks like an int) but not on al #else #define IN_UNEXEC #include -#define PERROR(file) report_error (file, new) +#define PERROR(file) report_error (file, new_) #endif = #if __STDC__ || defined(STDC_HEADERS) @@ -341,9 +341,9 @@ report_error (const char *file, int fd) } #endif /* emacs */ = -#define ERROR0(msg) report_error_1 (new, msg, 0, 0); return -1 -#define ERROR1(msg,x) report_error_1 (new, msg, x, 0); return -1 -#define ERROR2(msg,x,y) report_error_1 (new, msg, x, y); return -1 +#define ERROR0(msg) report_error_1 (new_, msg, 0, 0); return -1 +#define ERROR1(msg,x) report_error_1 (new_, msg, x, 0); return -1 +#define ERROR2(msg,x,y) report_error_1 (new_, msg, x, y); return -1 = static void report_error_1 (fd, msg, a1, a2) @@ -360,11 +360,11 @@ report_error_1 (fd, msg, a1, a2) #endif } =0C -static int make_hdr (int new, int a_out, unsigned data_start, +static int make_hdr (int new_, int a_out, unsigned data_start, unsigned bss_start, unsigned entry_address, char *a_name, char *new_name); -static int copy_text_and_data (int new, int a_out); -static int copy_sym (int new, int a_out, char *a_name, char *new_name); +static int copy_text_and_data (int new_, int a_out); +static int copy_sym (int new_, int a_out, char *a_name, char *new_name); static void mark_x (char *name); = /* **************************************************************** @@ -377,33 +377,33 @@ unexec (new_name, a_name, data_start, bs char *new_name, *a_name; unsigned data_start, bss_start, entry_address; { - int new, a_out =3D -1; + int new_, a_out =3D -1; = if (a_name && (a_out =3D open (a_name, O_RDONLY)) < 0) { PERROR (a_name); } - if ((new =3D creat (new_name, 0666)) < 0) + if ((new_ =3D creat (new_name, 0666)) < 0) { PERROR (new_name); } = - if (make_hdr (new, a_out, data_start, bss_start, entry_address, a_name= , new_name) < 0 - || copy_text_and_data (new, a_out) < 0 - || copy_sym (new, a_out, a_name, new_name) < 0 + if (make_hdr (new_, a_out, data_start, bss_start, entry_address, a_nam= e, new_name) < 0 + || copy_text_and_data (new_, a_out) < 0 + || copy_sym (new_, a_out, a_name, new_name) < 0 #ifdef COFF #ifndef COFF_BSD_SYMBOLS - || adjust_lnnoptrs (new, a_out, new_name) < 0 + || adjust_lnnoptrs (new_, a_out, new_name) < 0 #endif #endif ) { - close (new); + close (new_); /* unlink (new_name); / * Failed, unlink new a.out */ return -1; } = - close (new); + close (new_); if (a_out >=3D 0) close (a_out); mark_x (new_name); @@ -417,7 +417,7 @@ unexec (new_name, a_name, data_start, bs * Modify the text and data sizes. */ static int -make_hdr (int new, int a_out, unsigned data_start, unsigned bss_start, +make_hdr (int new_, int a_out, unsigned data_start, unsigned bss_start, unsigned entry_address, char *a_name, char *new_name) { #ifdef COFF @@ -618,29 +618,29 @@ make_hdr (int new, int a_out, unsigned d ADJUST_EXEC_HEADER; #endif /* ADJUST_EXEC_HEADER */ = - if (write (new, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) + if (write (new_, &f_hdr, sizeof (f_hdr)) !=3D sizeof (f_hdr)) { PERROR (new_name); } = - if (write (new, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) + if (write (new_, &f_ohdr, sizeof (f_ohdr)) !=3D sizeof (f_ohdr)) { PERROR (new_name); } = #ifndef USG_SHARED_LIBRARIES = - if (write (new, &f_thdr, sizeof (f_thdr)) !=3D sizeof (f_thdr)) + if (write (new_, &f_thdr, sizeof (f_thdr)) !=3D sizeof (f_thdr)) { PERROR (new_name); } = - if (write (new, &f_dhdr, sizeof (f_dhdr)) !=3D sizeof (f_dhdr)) + if (write (new_, &f_dhdr, sizeof (f_dhdr)) !=3D sizeof (f_dhdr)) { PERROR (new_name); } = - if (write (new, &f_bhdr, sizeof (f_bhdr)) !=3D sizeof (f_bhdr)) + if (write (new_, &f_bhdr, sizeof (f_bhdr)) !=3D sizeof (f_bhdr)) { PERROR (new_name); } @@ -671,24 +671,24 @@ make_hdr (int new, int a_out, unsigned d = if (!strcmp (scntemp.s_name, f_thdr.s_name)) /* .text */ { - if (write (new, &f_thdr, sizeof (f_thdr)) !=3D sizeof (f_thdr)) + if (write (new_, &f_thdr, sizeof (f_thdr)) !=3D sizeof (f_thdr)) PERROR (new_name); } else if (!strcmp (scntemp.s_name, f_dhdr.s_name)) /* .data */ { - if (write (new, &f_dhdr, sizeof (f_dhdr)) !=3D sizeof (f_dhdr)) + if (write (new_, &f_dhdr, sizeof (f_dhdr)) !=3D sizeof (f_dhdr)) PERROR (new_name); } else if (!strcmp (scntemp.s_name, f_bhdr.s_name)) /* .bss */ { - if (write (new, &f_bhdr, sizeof (f_bhdr)) !=3D sizeof (f_bhdr)) + if (write (new_, &f_bhdr, sizeof (f_bhdr)) !=3D sizeof (f_bhdr)) PERROR (new_name); } else { if (scntemp.s_scnptr) scntemp.s_scnptr +=3D bias; - if (write (new, &scntemp, sizeof (scntemp)) !=3D sizeof (scntemp)) + if (write (new_, &scntemp, sizeof (scntemp)) !=3D sizeof (scntemp)) PERROR (new_name); } } @@ -780,13 +780,13 @@ make_hdr (int new, int a_out, unsigned d coffheader.text_start =3D tp->s_vaddr; coffheader.data_start =3D dp->s_vaddr; } - if (write (new, &coffheader, sizeof (coffheader)) !=3D sizeof (coffhea= der)) + if (write (new_, &coffheader, sizeof (coffheader)) !=3D sizeof (coffhe= ader)) { PERROR(new_name); } #endif /* COFF_ENCAPSULATE */ = - if (write (new, (char *) &hdr, sizeof (hdr)) !=3D sizeof (hdr)) + if (write (new_, (char *) &hdr, sizeof (hdr)) !=3D sizeof (hdr)) { PERROR (new_name); } @@ -813,7 +813,7 @@ static void write_segment (int, char *, = * Copy the text and data segments from memory to the new a.out */ static int -copy_text_and_data (int new, = +copy_text_and_data (int new_, = #if defined (COFF) && defined (USG_SHARED_LIBRARIES) int a_out #else @@ -850,17 +850,17 @@ copy_text_and_data (int new, = = if (!strcmp (scntemp.s_name, ".text")) { - lseek (new, (long) text_scnptr, 0); + lseek (new_, (long) text_scnptr, 0); ptr =3D (char *) f_ohdr.text_start; end =3D ptr + f_ohdr.tsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); } else if (!strcmp (scntemp.s_name, ".data")) { - lseek (new, (long) data_scnptr, 0); + lseek (new_, (long) data_scnptr, 0); ptr =3D (char *) f_ohdr.data_start; end =3D ptr + f_ohdr.dsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); } else if (!scntemp.s_scnptr) ; /* do nothing - no data for this section */ @@ -874,7 +874,7 @@ copy_text_and_data (int new, = for (size =3D scntemp.s_size; size > 0; size -=3D sizeof (page)) { n =3D size > sizeof (page) ? sizeof (page) : size; - if (read (a_out, page, n) !=3D n || write (new, page, n) !=3D n) + if (read (a_out, page, n) !=3D n || write (new_, page, n) !=3D n) PERROR ("emacs"); } lseek (a_out, old_a_out_ptr, 0); @@ -883,19 +883,19 @@ copy_text_and_data (int new, = = #else /* COFF, but not USG_SHARED_LIBRARIES */ = - lseek (new, (long) text_scnptr, 0); + lseek (new_, (long) text_scnptr, 0); ptr =3D (char *) f_ohdr.text_start; #ifdef HEADER_INCL_IN_TEXT /* For Gould UTX/32, text starts after headers */ ptr =3D (char *) (ptr + text_scnptr); #endif /* HEADER_INCL_IN_TEXT */ end =3D ptr + f_ohdr.tsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); = - lseek (new, (long) data_scnptr, 0); + lseek (new_, (long) data_scnptr, 0); ptr =3D (char *) f_ohdr.data_start; end =3D ptr + f_ohdr.dsize; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); = #endif /* USG_SHARED_LIBRARIES */ = @@ -910,9 +910,9 @@ copy_text_and_data (int new, = the extra A_TEXT_OFFSET bytes, only the actual bytes of code. */ = #ifdef A_TEXT_SEEK - lseek (new, (long) A_TEXT_SEEK (hdr), 0); + lseek (new_, (long) A_TEXT_SEEK (hdr), 0); #else - lseek (new, (long) N_TXTOFF (hdr), 0); + lseek (new_, (long) N_TXTOFF (hdr), 0); #endif /* no A_TEXT_SEEK */ = #ifdef RISCiX @@ -980,26 +980,26 @@ copy_text_and_data (int new, = = end =3D ptr + mcount_offset - EDATA_OFFSET; = - write_segment (new, ptr, end); + write_segment (new_, ptr, end); = proforma[0] =3D bss_end; /* becomes _edata */ proforma[1] =3D bss_end; /* becomes _end */ proforma[2] =3D bss_end; /* becomes _minbrk */ proforma[3] =3D bss_end; /* becomes _curbrk */ = - write (new, proforma, 16); + write (new_, proforma, 16); = temp_ptr =3D ptr; ptr =3D end + 16; end =3D temp_ptr + hdr.a_text; = - write_segment (new, ptr, end); + write_segment (new_, ptr, end); } = #else /* !RISCiX */ ptr =3D (char *) unexec_text_start; end =3D ptr + hdr.a_text; - write_segment (new, ptr, end); + write_segment (new_, ptr, end); #endif /* RISCiX */ = ptr =3D (char *) unexec_data_start; @@ -1007,8 +1007,8 @@ copy_text_and_data (int new, = /* This lseek is certainly incorrect when A_TEXT_OFFSET and I believe it is a no-op otherwise. Let's see if its absence ever fails. */ -/* lseek (new, (long) N_TXTOFF (hdr) + hdr.a_text, 0); */ - write_segment (new, ptr, end); +/* lseek (new_, (long) N_TXTOFF (hdr) + hdr.a_text, 0); */ + write_segment (new_, ptr, end); = #endif /* not COFF */ = @@ -1016,8 +1016,8 @@ copy_text_and_data (int new, = } = static void -write_segment (new, ptr, end) - int new; +write_segment (new_, ptr, end) + int new_; char *ptr, *end; { int i, nwrite, ret; @@ -1038,7 +1038,7 @@ write_segment (new, ptr, end) nwrite =3D (((int) ptr + writesize) & -writesize) - (int) ptr; /* But not beyond specified end. */ if (nwrite > end - ptr) nwrite =3D end - ptr; - ret =3D write (new, ptr, nwrite); + ret =3D write (new_, ptr, nwrite); /* If write gets a page fault, it means we reached a gap between the old text segment and the old data segment. This gap has probably been remapped into part of the text segment. @@ -1054,7 +1054,7 @@ write_segment (new, ptr, end) of the valid memory in the old data segment. */ if (nwrite > pagesize) nwrite =3D pagesize; - write (new, zeros, nwrite); + write (new_, zeros, nwrite); } #if 0 /* Now that we have can ask `write' to write more than a page, it is legit for write do less than the whole amount specified. */ @@ -1062,7 +1062,7 @@ write_segment (new, ptr, end) { sprintf (buf, "unexec write failure: addr 0x%lx, fileno %d, size 0x%x, wrote 0x%x= , errno %d", - (unsigned long) ptr, new, nwrite, ret, errno); + (unsigned long) ptr, new_, nwrite, ret, errno); PERROR (buf); } #endif @@ -1077,7 +1077,7 @@ write_segment (new, ptr, end) * Copy the relocation information and symbol table from the a.out to th= e new */ static int -copy_sym (int new, int a_out, char *a_name, char *new_name) +copy_sym (int new_, int a_out, char *a_name, char *new_name) { char page[1024]; int n; @@ -1099,7 +1099,7 @@ copy_sym (int new, int a_out, char *a_na = while ((n =3D read (a_out, page, sizeof (page))) > 0) { - if (write (new, page, n) !=3D n) + if (write (new_, page, n) !=3D n) { PERROR (new_name); } @@ -1121,7 +1121,7 @@ mark_x (char *name) { struct stat sbuf; int um; - int new =3D 0; /* for PERROR */ + int new_ =3D 0; /* for PERROR */ = um =3D umask (777); umask (um); @@ -1166,7 +1166,7 @@ adjust_lnnoptrs (writedesc, readdesc, ne char *new_name; { int nsyms; - int new; + int new_; #if defined (amdahl_uts) || defined (pfa) SYMENT symentry; AUXENT auxentry; @@ -1178,29 +1178,29 @@ adjust_lnnoptrs (writedesc, readdesc, ne if (!lnnoptr || !f_hdr.f_symptr) return 0; = - if ((new =3D open (new_name, O_RDWR)) < 0) + if ((new_ =3D open (new_name, O_RDWR)) < 0) { PERROR (new_name); return -1; } = - lseek (new, f_hdr.f_symptr, 0); + lseek (new_, f_hdr.f_symptr, 0); for (nsyms =3D 0; nsyms < f_hdr.f_nsyms; nsyms++) { - read (new, &symentry, SYMESZ); + read (new_, &symentry, SYMESZ); if (symentry.n_numaux) { - read (new, &auxentry, AUXESZ); + read (new_, &auxentry, AUXESZ); nsyms++; if (ISFCN (symentry.n_type) || symentry.n_type =3D=3D 0x2400) { auxentry.x_sym.x_fcnary.x_fcn.x_lnnoptr +=3D bias; - lseek (new, -AUXESZ, 1); - write (new, &auxentry, AUXESZ); + lseek (new_, -AUXESZ, 1); + write (new_, &auxentry, AUXESZ); } } } - close (new); + close (new_); return 0; } = = = = 1.16.2.3 +1 -1 XEmacs/xemacs/src/unexelf.c = Index: unexelf.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexelf.c,v retrieving revision 1.16.2.2 retrieving revision 1.16.2.3 diff -u -p -r1.16.2.2 -r1.16.2.3 --- unexelf.c 2005/09/20 16:06:12 1.16.2.2 +++ unexelf.c 2005/11/06 16:15:04 1.16.2.3 @@ -478,7 +478,7 @@ typedef struct { # include #endif = -#if defined(__FreeBSD__) && (defined(__alpha__) || defined(__amd64__)) = +#if defined(__FreeBSD__) && (defined(__alpha__) || defined(_LP64)) = # ifdef __STDC__ = # define ElfW(type) Elf64_##type = # else = = = = 1.6.2.1 +15 -15 XEmacs/xemacs/src/unexhp9k800.c = Index: unexhp9k800.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexhp9k800.c,v retrieving revision 1.6 retrieving revision 1.6.2.1 diff -u -p -r1.6 -r1.6.2.1 --- unexhp9k800.c 2004/09/20 19:20:06 1.6 +++ unexhp9k800.c 2005/11/06 16:15:05 1.6.2.1 @@ -90,8 +90,8 @@ void write_header(int file, struct heade void read_header (int file, struct header *hdr, struct som_exec_auxhdr *= auxhdr); void save_data_space (int file, struct header *hdr, struct som_exec_auxhdr *auxhdr, int size); -void copy_rest (int old, int new); -void copy_file (int old, int new, int size); +void copy_rest (int old, int new_); +void copy_file (int old, int new_, int size); void update_file_ptrs(int file, struct header *hdr, struct som_exec_auxhdr *auxhdr, unsigned int location, int offset); @@ -105,7 +105,7 @@ unexec (char *new_name, /* name of the = uintptr_t UNUSED (dummy1), /* not used by emacs */ uintptr_t UNUSED (dummy2)) { - int old, new; + int old, new_; int old_size, new_size; struct header hdr; struct som_exec_auxhdr auxhdr; @@ -122,8 +122,8 @@ unexec (char *new_name, /* name of the = old =3D open (old_name, O_RDONLY); if (old < 0) { perror(old_name); exit(1); } - new =3D open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777); - if (new < 0) + new_ =3D open (new_name, O_CREAT|O_RDWR|O_TRUNC, 0777); + if (new_ < 0) { perror(new_name); exit(1); } = /* Read the old headers */ @@ -141,24 +141,24 @@ unexec (char *new_name, /* name of the = = /* Copy the old file to the new, up to the data space */ lseek(old, 0, 0); - copy_file(old, new, auxhdr.exec_dfile); + copy_file(old, new_, auxhdr.exec_dfile); = /* Skip the old data segment and write a new one */ lseek(old, old_size, 1); - save_data_space(new, &hdr, &auxhdr, new_size); + save_data_space(new_, &hdr, &auxhdr, new_size); = /* Copy the rest of the file */ - copy_rest(old, new); + copy_rest(old, new_); = /* Update file pointers since we probably changed size of data area */ - update_file_ptrs(new, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_s= ize); + update_file_ptrs(new_, &hdr, &auxhdr, auxhdr.exec_dfile, new_size-old_= size); = /* Save the modified header */ - write_header(new, &hdr, &auxhdr); + write_header(new_, &hdr, &auxhdr); = /* Close the binary file */ close (old); - close (new); + close (new_); return 0; } = @@ -284,7 +284,7 @@ calculate_checksum(struct header *hdr) = /* Copy size bytes from the old file to the new one. */ void -copy_file (int old, int new, int size) +copy_file (int old, int new_, int size) { int len; int buffer[8192]; /* word aligned will be faster */ @@ -297,7 +297,7 @@ copy_file (int old, int new, int size) perror ("Read failure on a.out file"); exit (1); } - if (write (new, buffer, len) !=3D len) + if (write (new_, buffer, len) !=3D len) { perror ("Write failure in a.out file"); exit (1); @@ -307,14 +307,14 @@ copy_file (int old, int new, int size) = /* Copy the rest of the file, up to EOF. */ void -copy_rest (int old, int new) +copy_rest (int old, int new_) { int buffer[4096]; int len; = /* Copy bytes until end of file or error */ while ( (len =3D read(old, buffer, sizeof(buffer))) > 0) - if (write(new, buffer, len) !=3D len) break; + if (write(new_, buffer, len) !=3D len) break; = if (len !=3D 0) { perror("Unable to copy the rest of the file"); exit(1); } = = = 1.3.2.1 +9 -9 XEmacs/xemacs/src/unexmips.c = Index: unexmips.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexmips.c,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -p -r1.3 -r1.3.2.1 --- unexmips.c 2004/09/20 19:20:06 1.3 +++ unexmips.c 2005/11/06 16:15:05 1.3.2.1 @@ -129,7 +129,7 @@ unexec (new_name, a_name, data_start, bs unsigned UNUSED (bss_start); unsigned entry_address; { - int new, old; + int new_, old; int pagesize, brk; int newsyms, symrel; int nread; @@ -142,8 +142,8 @@ unexec (new_name, a_name, data_start, bs old =3D open (a_name, O_RDONLY, 0); if (old < 0) fatal_unexec ("opening %s", a_name); = - new =3D creat (new_name, 0666); - if (new < 0) fatal_unexec ("creating %s", new_name); + new_ =3D creat (new_name, 0666); + if (new_ < 0) fatal_unexec ("creating %s", new_name); = hdr =3D *((struct headers *)TEXT_START); #ifdef MIPS2 @@ -275,9 +275,9 @@ unexec (new_name, a_name, data_start, bs bss_section->s_scnptr =3D scnptr; } = - WRITE (new, (void *) TEXT_START, hdr.aout.tsize, + WRITE (new_, (void *) TEXT_START, hdr.aout.tsize, "writing text section to %s", new_name); - WRITE (new, (void *) DATA_START, hdr.aout.dsize, + WRITE (new_, (void *) DATA_START, hdr.aout.dsize, "writing data section to %s", new_name); = SEEK (old, hdr.fhdr.f_symptr, "seeking to start of symbols in %s", a_n= ame); @@ -307,19 +307,19 @@ unexec (new_name, a_name, data_start, bs #undef symhdr do { - if (write (new, buffer, nread) !=3D nread) + if (write (new_, buffer, nread) !=3D nread) fatal_unexec ("writing symbols to %s", new_name); nread =3D read (old, buffer, BUFSIZE); if (nread < 0) fatal_unexec ("reading symbols from %s", a_name); #undef BUFSIZE } while (nread !=3D 0); = - SEEK (new, 0, "seeking to start of header in %s", new_name); - WRITE (new, &hdr, sizeof (hdr), + SEEK (new_, 0, "seeking to start of header in %s", new_name); + WRITE (new_, &hdr, sizeof (hdr), "writing header of %s", new_name); = close (old); - close (new); + close (new_); mark_x (new_name); } =0C = = = 1.23.2.3 +3 -13 XEmacs/xemacs/src/unicode.c = Index: unicode.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unicode.c,v retrieving revision 1.23.2.2 retrieving revision 1.23.2.3 diff -u -p -r1.23.2.2 -r1.23.2.3 --- unicode.c 2005/07/13 04:47:07 1.23.2.2 +++ unicode.c 2005/11/06 16:15:05 1.23.2.3 @@ -1,5 +1,5 @@ /* Code to handle Unicode conversion. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Ben Wing. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -548,15 +548,10 @@ compute_from_unicode_table_size_1 (void = } } = -#ifdef MC_ALLOC - size +=3D mc_alloced_storage_size (256 * (level =3D=3D 1 ? sizeof (sho= rt) : - sizeof (void *)), stats); -#else /* not MC_ALLOC */ size +=3D malloced_storage_size (table, 256 * (level =3D=3D 1 ? sizeof (short) : sizeof (void *)), stats); -#endif /* not MC_ALLOC */ return size; } = @@ -578,15 +573,10 @@ compute_to_unicode_table_size_1 (void *t } } = -#ifdef MC_ALLOC - size +=3D mc_alloced_storage_size (96 * (level =3D=3D 1 ? sizeof (int)= : - sizeof (void *)), stats); -#else /* not MC_ALLOC */ size +=3D malloced_storage_size (table, 96 * (level =3D=3D 1 ? sizeof (int) : sizeof (void *)), stats); -#endif /* not MC_ALLOC */ return size; } = @@ -1270,7 +1260,7 @@ CHARACTER is one of the following: = DEFUN ("char-to-unicode", Fchar_to_unicode, 1, 1, 0, /* Convert character to Unicode codepoint. -When there is no international support (i.e. the 'mule feature is not +When there is no international support (i.e. the `mule' feature is not present), this function simply does `char-to-int'. */ (character)) @@ -1291,7 +1281,7 @@ charsets will be consulted, in the given Otherwise, the default ordering of all charsets will be given (see `set-unicode-charset-precedence'). = -When there is no international support (i.e. the 'mule feature is not +When there is no international support (i.e. the `mule' feature is not present), this function simply does `int-to-char' and ignores the CHARSE= TS argument. = = = = 1.1.6.2 +2 -10 XEmacs/xemacs/src/window-impl.h = Index: window-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/window-impl.h,v retrieving revision 1.1.6.1 retrieving revision 1.1.6.2 diff -u -p -r1.1.6.1 -r1.1.6.2 --- window-impl.h 2005/07/13 04:47:07 1.1.6.1 +++ window-impl.h 2005/11/06 16:15:05 1.1.6.2 @@ -84,11 +84,7 @@ the window configuration. */ = struct window { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* The upper left corner coordinates of this window, as integers (pixels) relative to upper left corner of frame =3D 0, = 0 */ @@ -172,11 +168,7 @@ struct window = struct window_mirror { -#ifdef MC_ALLOC - struct lrecord_header header; -#else /* MC_ALLOC */ - struct lcrecord_header header; -#endif /* MC_ALLOC */ + struct LCRECORD_HEADER header; = /* Frame this mirror is on. */ struct frame *frame; = = = 1.81.2.3 +23 -49 XEmacs/xemacs/src/window.c = Index: window.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/window.c,v retrieving revision 1.81.2.2 retrieving revision 1.81.2.3 diff -u -p -r1.81.2.2 -r1.81.2.3 --- window.c 2005/07/13 04:47:07 1.81.2.2 +++ window.c 2005/11/06 16:15:05 1.81.2.3 @@ -346,11 +346,7 @@ DEFINE_LRECORD_IMPLEMENTATION ("window", Lisp_Object allocate_window (void) { -#ifdef MC_ALLOC - struct window *p =3D alloc_lrecord_type (struct window, &lrecord_windo= w); -#else /* not MC_ALLOC */ - struct window *p =3D alloc_lcrecord_type (struct window, &lrecord_wind= ow); -#endif /* not MC_ALLOC */ + struct window *p =3D ALLOC_LCRECORD_TYPE (struct window, &lrecord_wind= ow); Lisp_Object val =3D wrap_window (p); = #define WINDOW_SLOT(slot) p->slot =3D Qnil; @@ -487,11 +483,7 @@ static struct window_mirror * new_window_mirror (struct frame *f) { struct window_mirror *t =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct window_mirror, &lrecord_window_mirror); -#else /* not MC_ALLOC */ - alloc_lcrecord_type (struct window_mirror, &lrecord_window_mirror); -#endif /* not MC_ALLOC */ + ALLOC_LCRECORD_TYPE (struct window_mirror, &lrecord_window_mirror); = t->frame =3D f; t->current_display_lines =3D Dynarr_new (display_line); @@ -3808,21 +3800,13 @@ temp_output_buffer_show (Lisp_Object buf static void make_dummy_parent (Lisp_Object window) { - Lisp_Object new; + Lisp_Object new_; struct window *o =3D XWINDOW (window); -#ifdef MC_ALLOC - struct window *p =3D alloc_lrecord_type (struct window, &lrecord_windo= w); -#else /* not MC_ALLOC */ - struct window *p =3D alloc_lcrecord_type (struct window, &lrecord_wind= ow); -#endif /* not MC_ALLOC */ - - new =3D wrap_window (p); -#ifdef MC_ALLOC - copy_lrecord (p, o); -#else /* MC_ALLOC */ - copy_lcrecord (p, o); -#endif /* MC_ALLOC */ + struct window *p =3D ALLOC_LCRECORD_TYPE (struct window, &lrecord_wind= ow); = + new_ =3D wrap_window (p); + COPY_LCRECORD (p, o); + /* Don't copy the pointers to the line start cache or the face instances. */ p->line_start_cache =3D Dynarr_new (line_start_cache); @@ -3832,13 +3816,13 @@ make_dummy_parent (Lisp_Object window) make_image_instance_cache_hash_table (); = /* Put new into window structure in place of window */ - replace_window (window, new); + replace_window (window, new_); = o->next =3D Qnil; o->prev =3D Qnil; o->vchild =3D Qnil; o->hchild =3D Qnil; - o->parent =3D new; + o->parent =3D new_; = p->start[CURRENT_DISP] =3D Qnil; p->start[DESIRED_DISP] =3D Qnil; @@ -3861,7 +3845,7 @@ returned. */ (window, size, horflag)) { - Lisp_Object new; + Lisp_Object new_; struct window *o, *p; struct frame *f; int csize; @@ -3924,8 +3908,8 @@ returned. and see the difference. See redisplay-tests.el --yh */ reset_face_cachels (XWINDOW (window)); #endif - new =3D o->parent; - XWINDOW (new)->vchild =3D window; + new_ =3D o->parent; + XWINDOW (new_)->vchild =3D window; XFRAME (o->frame)->mirror_dirty =3D 1; } } @@ -3944,8 +3928,8 @@ returned. /* #### See above. */ reset_face_cachels (XWINDOW (window)); #endif - new =3D o->parent; - XWINDOW (new)->hchild =3D window; + new_ =3D o->parent; + XWINDOW (new_)->hchild =3D window; XFRAME (o->frame)->mirror_dirty =3D 1; } } @@ -3955,15 +3939,15 @@ returned. if we are making side-by-side windows */ = MARK_FRAME_WINDOWS_STRUCTURE_CHANGED (f); - new =3D allocate_window (); - p =3D XWINDOW (new); + new_ =3D allocate_window (); + p =3D XWINDOW (new_); = p->frame =3D o->frame; p->next =3D o->next; if (!NILP (p->next)) - XWINDOW (p->next)->prev =3D new; + XWINDOW (p->next)->prev =3D new_; p->prev =3D window; - o->next =3D new; + o->next =3D new_; p->parent =3D o->parent; p->buffer =3D Qt; = @@ -3992,13 +3976,13 @@ returned. = XFRAME (p->frame)->mirror_dirty =3D 1; = - note_object_created (new); + note_object_created (new_); = /* do this last (after the window is completely initialized and the mirror-dirty flag is set) so that specifier recomputation caused as a result of this will work properly and not abort. */ - Fset_window_buffer (new, o->buffer, Qt); - return new; + Fset_window_buffer (new_, o->buffer, Qt); + return new_; } =0C = @@ -5112,13 +5096,7 @@ compute_window_mirror_usage (struct wind { if (!mir) return; -#ifdef MC_ALLOC - stats->other +=3D mc_alloced_storage_size (sizeof (struct window_mirro= r), - ovstats); -#else /* not MC_ALLOC */ - stats->other +=3D malloced_storage_size (mir, sizeof (struct window_mi= rror), - ovstats); -#endif /* not MC_ALLOC */ + stats->other +=3D LISPOBJ_STORAGE_SIZE (mir, sizeof (*mir), ovstats); #ifdef HAVE_SCROLLBARS { struct device *d =3D XDEVICE (FRAME_DEVICE (mir->frame)); @@ -5142,11 +5120,7 @@ compute_window_usage (struct window *w, = struct overhead_stats *ovstats) { xzero (*stats); -#ifdef MC_ALLOC - stats->other +=3D mc_alloced_storage_size (sizeof (struct window), ovs= tats); -#else /* not MC_ALLOC */ - stats->other +=3D malloced_storage_size (w, sizeof (struct window), ov= stats); -#endif /* not MC_ALLOC */ + stats->other +=3D LISPOBJ_STORAGE_SIZE (w, sizeof (*w), ovstats); stats->face +=3D compute_face_cachel_usage (w->face_cachels, ovstats); stats->glyph +=3D compute_glyph_cachel_usage (w->glyph_cachels, ovstat= s); stats->line_start +=3D = = = 1.7.2.2 +1 -1 XEmacs/xemacs/src/xemacs.def.in.in = Index: xemacs.def.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xemacs.def.in.in,v retrieving revision 1.7.2.1 retrieving revision 1.7.2.2 diff -u -p -r1.7.2.1 -r1.7.2.2 --- xemacs.def.in.in 2005/07/13 04:47:08 1.7.2.1 +++ xemacs.def.in.in 2005/11/06 16:15:06 1.7.2.2 @@ -18,7 +18,7 @@ mcpro_1 /* mcpro */ #endif mc_alloc /* DEFSUBR */ #else /* not MC_ALLOC */ -alloc_automanaged_lcrecord /* alloc_lcrecord_type */ +alloc_automanaged_lcrecord /* old_alloc_lcrecord_type */ #endif /* not MC_ALLOC */ apply1 #ifdef USE_ASSERTIONS = = = 1.1.2.15 +6 -30 XEmacs/xemacs/src/Attic/xft-fonts.c = Index: xft-fonts.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/xft-fonts.c,v retrieving revision 1.1.2.14 retrieving revision 1.1.2.15 diff -u -p -r1.1.2.14 -r1.1.2.15 --- xft-fonts.c 2005/09/06 08:24:52 1.1.2.14 +++ xft-fonts.c 2005/11/06 16:15:06 1.1.2.15 @@ -194,11 +194,7 @@ Return a new, empty fc-pattern object. ()) { fc_pattern *fcpat =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); = fcpat->fcpatPtr =3D FcPatternCreate(); return wrap_fcpattern(fcpat); @@ -210,11 +206,7 @@ Parse an Fc font name and return its rep (name)) { struct fc_pattern *fcpat =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); = CHECK_STRING(name); /* #### MEMORY LEAK!! maybe not ... */ = @@ -263,11 +255,7 @@ Make a copy of the fc pattern object PAT struct fc_pattern *copy =3D NULL; CHECK_FCPATTERN(pattern); = -#ifdef MC_ALLOC - copy =3D alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - copy =3D alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif + copy =3D ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); copy->fcpatPtr =3D FcPatternDuplicate(XFCPATTERN_PTR(pattern)); return wrap_fcpattern(copy); } @@ -521,11 +509,7 @@ given pattern, or an error code. Possib FcResult res; = struct fc_pattern *res_fcpat =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); CHECK_FCPATTERN(pattern); /* #### MEMORY LEAKS!!! */ if (NILP(device)) return Qnil; @@ -566,11 +550,7 @@ fontset_to_list (FcFontSet *fontset) for (idx =3D 0; idx < fontset->nfont; ++idx) { fcpat =3D = -#ifdef MC_ALLOC - alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); fcpat->fcpatPtr =3D FcPatternDuplicate (fontset->fonts[idx]); fontlist =3D Fcons (wrap_fcpattern(fcpat), fontlist); } @@ -656,11 +636,7 @@ fc pattern matched by the Fc library. */ Display *dpy; XftFont *font; struct fc_pattern *fcpat =3D -#ifdef MC_ALLOC - alloc_lrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#else - alloc_lcrecord_type (struct fc_pattern, &lrecord_fc_pattern); -#endif + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); = CHECK_STRING (fontname); /* #### MEMORY LEAK?! maybe not ... */ if (NILP(xdevice)) = = = 1.1.2.9 +1 -5 XEmacs/xemacs/src/Attic/xft-fonts.h = Index: xft-fonts.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/xft-fonts.h,v retrieving revision 1.1.2.8 retrieving revision 1.1.2.9 diff -u -p -r1.1.2.8 -r1.1.2.9 --- xft-fonts.h 2005/08/03 06:09:32 1.1.2.8 +++ xft-fonts.h 2005/11/06 16:15:06 1.1.2.9 @@ -54,11 +54,7 @@ XftColor xft_get_color (Display *dpy, Co = struct fc_pattern { -#ifdef MC_ALLOC - struct lrecord_header header; -#else - struct lcrecord_header header; -#endif + struct LCRECORD_HEADER header; FcPattern *fcpatPtr; }; = = = = 1.62.2.6 +4 -0 XEmacs/xemacs/tests/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/ChangeLog,v retrieving revision 1.62.2.5 retrieving revision 1.62.2.6 diff -u -p -r1.62.2.5 -r1.62.2.6 --- ChangeLog 2005/09/20 16:06:27 1.62.2.5 +++ ChangeLog 2005/11/06 16:15:40 1.62.2.6 @@ -1,3 +1,7 @@ +2005-10-26 Stephen J. Turnbull + + * XEmacs 21.5.23 "daikon" is released. + 2005-09-14 Stephen J. Turnbull = * XEmacs 21.5.22 "cucumber" is released. = = =20 --===============8466965897227735608==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============7343148267615924530==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-07 08:49:28 +0000 Message-ID: <20051107084928.26277.qmail@sunsite.dk> --===============7343148267615924530== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/07 09:49:28 Modified: xemacs/src inline.c ChangeLog Log: Various small patches (also commit configure): Minor improvements to INSTALL <877jbk3nkk.fsf(a)tleepslib.sk.tsukuba.ac.jp> Add description of changed options to INSTALL <873bm83ncd.fsf(a)tleepslib.sk.tsukuba.ac.jp> Check for libpq (PostgreSQL) linking against SSL and crypto <87y8402820.fsf(a)tleepslib.sk.tsukuba.ac.jp> Include module INLINE_HEADERs in inline.c unconditionally <87u0eo27rn.fsf(a)tleepslib.sk.tsukuba.ac.jp> Fix use of AC_INIT <87pspc27oh.fsf(a)tleepslib.sk.tsukuba.ac.jp> Minor ChangeLog repairs <87ll0027jq.fsf(a)tleepslib.sk.tsukuba.ac.jp> = Revision Changes Path 1.259 +290 -193 XEmacs/xemacs/configure = Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.258 retrieving revision 1.259 diff -u -p -r1.258 -r1.259 --- configure 2005/10/26 15:13:00 1.258 +++ configure 2005/11/07 08:49:12 1.259 @@ -1,7 +1,9 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59. +# Generated by GNU Autoconf 2.59 for XEmacs 21.5. # +# Report bugs to . +# # Copyright (C) 2003 Free Software Foundation, Inc. # This configure script is free software; the Free Software Foundation # gives unlimited permission to copy, distribute and modify it. @@ -312,11 +314,11 @@ SHELL=3D${CONFIG_SHELL-/bin/sh} : ${ac_max_here_lines=3D38} = # Identity of this package. -PACKAGE_NAME=3D -PACKAGE_TARNAME=3D -PACKAGE_VERSION=3D -PACKAGE_STRING=3D -PACKAGE_BUGREPORT=3D +PACKAGE_NAME=3D'XEmacs' +PACKAGE_TARNAME=3D'xemacs' +PACKAGE_VERSION=3D'21.5' +PACKAGE_STRING=3D'XEmacs 21.5' +PACKAGE_BUGREPORT=3D'xemacs-beta(a)xemacs.org' = ac_unique_file=3D"src/lisp.h" # Factoring default headers for most tests. @@ -825,7 +827,7 @@ if test "$ac_init_help" =3D "long"; then # Omit some internal or obsolete options to make the list less imposin= g. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures this package to adapt to many kinds of systems. +\`configure' configures XEmacs 21.5 to adapt to many kinds of systems. = Usage: $0 [OPTION]... [VAR=3DVALUE]... = @@ -888,7 +890,9 @@ _ACEOF fi = if test -n "$ac_init_help"; then - + case $ac_init_help in + short | recursive ) echo "Configuration of XEmacs 21.5:";; + esac cat <<\_ACEOF = Optional Features: @@ -1135,6 +1139,7 @@ Some influential environment variables: Use these variables to override the choices made by `configure' or to he= lp it to find libraries and programs with nonstandard names/locations. = +Report bugs to . _ACEOF fi = @@ -1230,6 +1235,8 @@ fi test -n "$ac_init_help" && exit 0 if $ac_init_version; then cat <<\_ACEOF +XEmacs configure 21.5 +generated by GNU Autoconf 2.59 = Copyright (C) 2003 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation @@ -1289,7 +1296,7 @@ cat >&5 <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. = -It was created by $as_me, which was +It was created by XEmacs $as_me 21.5, which was generated by GNU Autoconf 2.59. Invocation command line was = $ $0 $@ @@ -1622,6 +1629,14 @@ ac_compiler_gnu=3D$ac_cv_c_compiler_gnu = = = + + + + + + + + progname=3D"`echo $0 | sed 's:^\./\./:\./:'`" = MAKE_SUBDIR=3D"$MAKE_SUBDIR lib-src" && if test "$verbose" =3D "yes"; t= hen echo " Appending \"lib-src\" to \$MAKE_SUBDIR"; fi @@ -10187,9 +10202,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -15654,9 +15669,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -17444,9 +17459,9 @@ echo "$as_me: WARNING: Xm/Xm.h: proceedi echo "$as_me: WARNING: Xm/Xm.h: in the future, the compiler will take pr= ecedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -17816,9 +17831,9 @@ echo "$as_me: WARNING: X11/Intrinsic.h: = echo "$as_me: WARNING: X11/Intrinsic.h: in the future, the compiler will= take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -18409,9 +18424,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -19143,9 +19158,9 @@ echo "$as_me: WARNING: X11/Xauth.h: proc echo "$as_me: WARNING: X11/Xauth.h: in the future, the compiler will tak= e precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -19394,9 +19409,9 @@ echo "$as_me: WARNING: dlfcn.h: proceedi echo "$as_me: WARNING: dlfcn.h: in the future, the compiler will take pr= ecedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -19697,9 +19712,9 @@ echo "$as_me: WARNING: dl.h: proceeding = echo "$as_me: WARNING: dl.h: in the future, the compiler will take prece= dence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -19947,9 +19962,9 @@ echo "$as_me: WARNING: ltdl.h: proceedin echo "$as_me: WARNING: ltdl.h: in the future, the compiler will take pre= cedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -20967,9 +20982,9 @@ echo "$as_me: WARNING: ${dir}tt_c.h: pro echo "$as_me: WARNING: ${dir}tt_c.h: in the future, the compiler will ta= ke precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -21214,9 +21229,9 @@ echo "$as_me: WARNING: Dt/Dt.h: proceedi echo "$as_me: WARNING: Dt/Dt.h: in the future, the compiler will take pr= ecedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -21504,9 +21519,9 @@ echo "$as_me: WARNING: ldap.h: proceedin echo "$as_me: WARNING: ldap.h: in the future, the compiler will take pre= cedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -21648,9 +21663,9 @@ echo "$as_me: WARNING: lber.h: proceedin echo "$as_me: WARNING: lber.h: in the future, the compiler will take pre= cedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -22271,9 +22286,9 @@ echo "$as_me: WARNING: ${header_dir}libp echo "$as_me: WARNING: ${header_dir}libpq-fe.h: in the future, the compi= ler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -22297,7 +22312,10 @@ fi = done = - test -n "$libpq_fe_h_file" && { echo "$as_me:$LINENO: checking for PQc= onnectdb in -lpq" >&5 + pq_libs=3D + extra_libs=3D + if test -n "$libpq_fe_h_file"; then + echo "$as_me:$LINENO: checking for PQconnectdb in -lpq" = >&5 echo $ECHO_N "checking for PQconnectdb in -lpq... $ECHO_C" >&6 if test "${ac_cv_lib_pq_PQconnectdb+set}" =3D set; then echo $ECHO_N "(cached) $ECHO_C" >&6 @@ -22362,9 +22380,86 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_pq_PQconnectdb" >&5 echo "${ECHO_T}$ac_cv_lib_pq_PQconnectdb" >&6 if test $ac_cv_lib_pq_PQconnectdb =3D yes; then - have_libpq=3Dyes + pq_libs=3D"-lpq" +else + + unset ac_cv_lib_pq_PQconnectdb; + echo "$as_me:$LINENO: checking for PQconnectdb in -lpq" >&5 +echo $ECHO_N "checking for PQconnectdb in -lpq... $ECHO_C" >&6 +if test "${ac_cv_lib_pq_PQconnectdb+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=3D$LIBS +LIBS=3D"-lpq -lcrypto -lssl $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char PQconnectdb (); +int +main () +{ +PQconnectdb (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_pq_PQconnectdb=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_pq_PQconnectdb=3Dno fi - } +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=3D$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_pq_PQconnectdb" >&5 +echo "${ECHO_T}$ac_cv_lib_pq_PQconnectdb" >&6 +if test $ac_cv_lib_pq_PQconnectdb =3D yes; then + pq_libs=3D"-lpq -lcrypto -lssl" +fi + +fi + + if test -z "$pq_libs"; then + have_libpq=3D"no" + else + have_libpq=3D"yes" + fi + fi = if test -n "$libpq_fe_h_file" -a "$have_libpq" =3D "yes"; then with_postgresql=3Dyes @@ -22378,7 +22473,7 @@ if test "${ac_cv_lib_pq_PQconnectStart+s echo $ECHO_N "(cached) $ECHO_C" >&6 else ac_check_lib_save_LIBS=3D$LIBS -LIBS=3D"-lpq $LIBS" +LIBS=3D"-lpq $extra_libs $LIBS" cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -22443,13 +22538,15 @@ if test $ac_cv_lib_pq_PQconnectStart =3D y #define HAVE_POSTGRESQLV7 1 _ACEOF = +else + : fi = cat >>confdefs.h <<_ACEOF #define LIBPQ_FE_H_FILE "$libpq_fe_h_file" _ACEOF = - postgresql_libs=3D"-lpq $postgresql_libs" && if test "$verbose" =3D= "yes"; then echo " Prepending \"-lpq\" to \$postgresql_libs"; fi + postgresql_libs=3D"$pq_libs $postgresql_libs" && if test "$verbose"= =3D "yes"; then echo " Prepending \"$pq_libs\" to \$postgresql_libs"; fi MAKE_SUBDIR=3D"$MAKE_SUBDIR modules/postgresql" && if test "$verbos= e" =3D "yes"; then echo " Appending \"modules/postgresql\" to \$MAKE_SUB= DIR"; fi need_modules_common=3Dyes if test "$enable_modules" =3D "yes"; then @@ -22743,9 +22840,9 @@ echo "$as_me: WARNING: compface.h: proce echo "$as_me: WARNING: compface.h: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -23185,9 +23282,9 @@ echo "$as_me: WARNING: jpeglib.h: procee echo "$as_me: WARNING: jpeglib.h: in the future, the compiler will take = precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -23505,9 +23602,9 @@ echo "$as_me: WARNING: png.h: proceeding echo "$as_me: WARNING: png.h: in the future, the compiler will take prec= edence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -23791,9 +23888,9 @@ echo "$as_me: WARNING: tiffio.h: proceed echo "$as_me: WARNING: tiffio.h: in the future, the compiler will take p= recedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -24017,9 +24114,9 @@ echo "$as_me: WARNING: compface.h: proce echo "$as_me: WARNING: compface.h: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -24565,9 +24662,9 @@ echo "$as_me: WARNING: X11/Xaw/ThreeD.h: echo "$as_me: WARNING: X11/Xaw/ThreeD.h: in the future, the compiler wil= l take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -24824,9 +24921,9 @@ echo "$as_me: WARNING: X11/$athena_varia echo "$as_me: WARNING: X11/$athena_variant/ThreeD.h: in the future, the = compiler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -25027,9 +25124,9 @@ echo "$as_me: WARNING: $athena_variant/T echo "$as_me: WARNING: $athena_variant/ThreeD.h: in the future, the comp= iler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -25229,9 +25326,9 @@ echo "$as_me: WARNING: X11/Xaw3d/ThreeD. echo "$as_me: WARNING: X11/Xaw3d/ThreeD.h: in the future, the compiler w= ill take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -25435,9 +25532,9 @@ echo "$as_me: WARNING: Xaw3d/ThreeD.h: p echo "$as_me: WARNING: Xaw3d/ThreeD.h: in the future, the compiler will = take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -25587,9 +25684,9 @@ echo "$as_me: WARNING: X11/Xaw/ThreeD.h: echo "$as_me: WARNING: X11/Xaw/ThreeD.h: in the future, the compiler wil= l take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -25749,9 +25846,9 @@ echo "$as_me: WARNING: Xm/Xm.h: proceedi echo "$as_me: WARNING: Xm/Xm.h: in the future, the compiler will take pr= ecedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -26240,9 +26337,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -26791,9 +26888,9 @@ echo "$as_me: WARNING: wnn/jllib.h: proc echo "$as_me: WARNING: wnn/jllib.h: in the future, the compiler will tak= e precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -26935,9 +27032,9 @@ echo "$as_me: WARNING: wnn/commonhd.h: p echo "$as_me: WARNING: wnn/commonhd.h: in the future, the compiler will = take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -27622,9 +27719,9 @@ echo "$as_me: WARNING: canna/jrkanji.h: = echo "$as_me: WARNING: canna/jrkanji.h: in the future, the compiler will= take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -27769,9 +27866,9 @@ echo "$as_me: WARNING: canna/jrkanji.h: = echo "$as_me: WARNING: canna/jrkanji.h: in the future, the compiler will= take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -27917,9 +28014,9 @@ echo "$as_me: WARNING: canna/RK.h: proce echo "$as_me: WARNING: canna/RK.h: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -28807,9 +28904,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -28961,9 +29058,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -29111,9 +29208,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -29261,9 +29358,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -29414,9 +29511,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -29667,9 +29764,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -29922,9 +30019,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -30151,9 +30248,9 @@ echo "$as_me: WARNING: $ac_header: proce echo "$as_me: WARNING: $ac_header: in the future, the compiler will take= precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -31707,9 +31804,9 @@ echo "$as_me: WARNING: termios.h: procee echo "$as_me: WARNING: termios.h: in the future, the compiler will take = precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -31858,9 +31955,9 @@ echo "$as_me: WARNING: termio.h: proceed echo "$as_me: WARNING: termio.h: in the future, the compiler will take p= recedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -32099,9 +32196,9 @@ echo "$as_me: WARNING: netinet/in.h: pro echo "$as_me: WARNING: netinet/in.h: in the future, the compiler will ta= ke precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -32237,9 +32334,9 @@ echo "$as_me: WARNING: arpa/inet.h: proc echo "$as_me: WARNING: arpa/inet.h: in the future, the compiler will tak= e precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -32593,9 +32690,9 @@ echo "$as_me: WARNING: sys/ipc.h: procee echo "$as_me: WARNING: sys/ipc.h: in the future, the compiler will take = precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -32731,9 +32828,9 @@ echo "$as_me: WARNING: sys/msg.h: procee echo "$as_me: WARNING: sys/msg.h: in the future, the compiler will take = precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -32882,9 +32979,9 @@ echo "$as_me: WARNING: dirent.h: proceed echo "$as_me: WARNING: dirent.h: in the future, the compiler will take p= recedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -33025,9 +33122,9 @@ echo "$as_me: WARNING: sys/dir.h: procee echo "$as_me: WARNING: sys/dir.h: in the future, the compiler will take = precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -33176,9 +33273,9 @@ echo "$as_me: WARNING: nlist.h: proceedi echo "$as_me: WARNING: nlist.h: in the future, the compiler will take pr= ecedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -33329,9 +33426,9 @@ echo "$as_me: WARNING: multimedia/audio_ echo "$as_me: WARNING: multimedia/audio_device.h: in the future, the com= piler will take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -33677,9 +33774,9 @@ echo "$as_me: WARNING: ${dir}/soundcard. echo "$as_me: WARNING: ${dir}/soundcard.h: in the future, the compiler w= ill take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -33935,9 +34032,9 @@ echo "$as_me: WARNING: audio/audiolib.h: echo "$as_me: WARNING: audio/audiolib.h: in the future, the compiler wil= l take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -34430,9 +34527,9 @@ echo "$as_me: WARNING: ncurses/curses.h: echo "$as_me: WARNING: ncurses/curses.h: in the future, the compiler wil= l take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -34572,9 +34669,9 @@ echo "$as_me: WARNING: ncurses/term.h: p echo "$as_me: WARNING: ncurses/term.h: in the future, the compiler will = take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -34722,9 +34819,9 @@ echo "$as_me: WARNING: ncurses/curses.h: echo "$as_me: WARNING: ncurses/curses.h: in the future, the compiler wil= l take precedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -35110,9 +35207,9 @@ echo "$as_me: WARNING: gpm.h: proceeding echo "$as_me: WARNING: gpm.h: in the future, the compiler will take prec= edence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -35348,9 +35445,9 @@ echo "$as_me: WARNING: ndbm.h: proceedin echo "$as_me: WARNING: ndbm.h: in the future, the compiler will take pre= cedence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -36255,9 +36352,9 @@ echo "$as_me: WARNING: gmp.h: proceeding echo "$as_me: WARNING: gmp.h: in the future, the compiler will take prec= edence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -36480,9 +36577,9 @@ echo "$as_me: WARNING: mp.h: proceeding = echo "$as_me: WARNING: mp.h: in the future, the compiler will take prece= dence" >&2;} ( cat <<\_ASBOX -## ------------------------------------------ ## -## Report this to the AC_PACKAGE_NAME lists. ## -## ------------------------------------------ ## +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## _ASBOX ) | sed "s/^/$as_me: WARNING: /" >&2 @@ -38063,7 +38160,7 @@ _ASBOX } >&5 cat >&5 <<_CSEOF = -This file was extended by $as_me, which was +This file was extended by XEmacs $as_me 21.5, which was generated by GNU Autoconf 2.59. Invocation command line was = CONFIG_FILES =3D $CONFIG_FILES @@ -38126,7 +38223,7 @@ _ACEOF = cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version=3D"\\ -config.status +XEmacs config.status 21.5 configured by $0, generated by GNU Autoconf 2.59, with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g= '`\\" = = = = 1.18 +20 -4 XEmacs/xemacs/configure.ac = Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- configure.ac 2005/10/24 21:01:08 1.17 +++ configure.ac 2005/11/07 08:49:16 1.18 @@ -24,7 +24,8 @@ dnl macros, die if any version other tha AC_PREREQ(2.59)dnl m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]), [2.59]), 1, [m4_fatal([This script can only be generated with autoconf 2.59])], [])= dnl -AC_INIT(src/lisp.h)dnl +AC_INIT([XEmacs],[21.5],[xemacs-beta(a)xemacs.org])dnl +AC_CONFIG_SRCDIR(src/lisp.h)dnl dnl dnl --------------------------------------------------------------------= ----- dnl Local copyright notices. @@ -3707,16 +3708,31 @@ dnl Look for these standard header file = libpq_fe_h_file=3D${header_dir}libpq-fe.h; break) done = - test -n "$libpq_fe_h_file" && { AC_CHECK_LIB(pq,PQconnectdb,have_libpq= =3Dyes) } + pq_libs=3D + extra_libs=3D + if test -n "$libpq_fe_h_file"; then + dnl #### Would it be nicer to do this with a loop? + dnl It seems unlikely that checking for SSL/crypto support can hurt, + dnl even if it's found. + AC_CHECK_LIB(pq, PQconnectdb,[pq_libs=3D"-lpq"],[ + unset ac_cv_lib_pq_PQconnectdb; + AC_CHECK_LIB(pq, PQconnectdb,[pq_libs=3D"-lpq -lcrypto -lssl"],, + [-lcrypto -lssl])]) + if test -z "$pq_libs"; then + have_libpq=3D"no" + else + have_libpq=3D"yes" + fi + fi = if test -n "$libpq_fe_h_file" -a "$have_libpq" =3D "yes"; then with_postgresql=3Dyes AC_DEFINE(HAVE_POSTGRESQL) AC_CHECK_LIB(pq,PQconnectStart, [ with_postgresqlv7=3Dyes; - AC_DEFINE(HAVE_POSTGRESQLV7)]) + AC_DEFINE(HAVE_POSTGRESQLV7)], [:], $extra_libs) AC_DEFINE_UNQUOTED(LIBPQ_FE_H_FILE, "$libpq_fe_h_file") - XE_PREPEND(-lpq, postgresql_libs) + XE_PREPEND([$pq_libs], postgresql_libs) XE_APPEND(modules/postgresql, MAKE_SUBDIR) need_modules_common=3Dyes if test "$enable_modules" =3D "yes"; then = = = 1.466 +16 -0 XEmacs/xemacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.465 retrieving revision 1.466 diff -u -p -r1.465 -r1.466 --- ChangeLog 2005/10/26 15:13:17 1.465 +++ ChangeLog 2005/11/07 08:49:17 1.466 @@ -1,3 +1,19 @@ +2005-11-07 Stephen J. Turnbull + + * configure.ac (AC_INIT): Use it correctly. + +2005-11-07 Stephen J. Turnbull + + * configure.ac (PostgreSQL): Check for link against SSL+crypto. + +2005-11-07 Stephen J. Turnbull + + * INSTALL: Add map from old options as appendix. + +2005-11-07 Stephen J. Turnbull + + * INSTALL: Various minor improvements. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.45 +253 -30 XEmacs/xemacs/INSTALL = Index: INSTALL =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/INSTALL,v retrieving revision 1.44 retrieving revision 1.45 diff -u -p -r1.44 -r1.45 --- INSTALL 2005/10/24 20:39:38 1.44 +++ INSTALL 2005/11/07 08:49:17 1.45 @@ -16,8 +16,6 @@ Copyright (c) 1994-1999, 2003 Free Softw and that any new or changed statements about the activities of the Free Software Foundation are approved by the Foundation. = -Last modified by Stephen J. Turnbull 2003-02-12 - BUILDING AND INSTALLATION FOR UNIX AND CYGWIN = (for Microsoft Windows, see nt/README also.) @@ -145,6 +143,11 @@ Options are generally of the form `--wit program used in other applications, either `--with-FEATURE' or `--enable-FEATURE' can be used to use the same feature. = +If you haven't built XEmacs 21.5 recently, the change from the +configure script based on Autoconf 2.13 can be a shock. Appendix: +Correspondence to Old Configure Options (at the end of this document) +contains a list of old options and their new equivalents. + Controlling the Host Type ------------------------- = @@ -205,22 +208,36 @@ CFLAGS is consulted. If that is also un = The `--with-cflags-warning=3DFLAGS' option specifies the warnings to be generated. There is normally no reason to use this flag, as XEmacs -turns on as many warnings as possible, and is still expected to build -with no, or at most a few warnings. +turns on as many warnings as possible, and is still intended to build +with no warnings. If you get any undocumented warnings, please report +them as bugs---they very often are, or at least indicate possible +bitrot. = The `--with-cflags-optimization=3DFLAGS' option specifies the -optimizations to be used. There is normally no reason to use this flag, -as XEmacs will already set the maximum safe -optimization flags appropriate for the compiler being invoked. +optimizations to be used. There is normally no reason to use this +flag, as XEmacs will already set the maximum safe optimization flags +appropriate for the compiler being invoked. = The `--with-cflags-debugging=3DFLAGS' option specifies debugging -information to be generated. There is normally no reason to use this -flag, as XEmacs will include debugging information whenever possible -(i.e. unless optimization is turned on and the compiler does not permit -debugging and optimization simultaneously). - -The `--with-dynamic' option specifies that configure should try to link -emacs dynamically rather than statically. +information to be generated. You should avoid using this flag, as it +makes most severe or fatal bugs hard-to-impossible to diagnose and +fix. Debugging information does not slow down XEmacs at runtime, and +it doesn't make the binary very much bigger. + +The `--with-dynamic' option specifies that configure should try to +link XEmacs dynamically rather than statically. `--with-static' +specifies the reverse. XEmacs's configure script detects whether +dynamic linking can be done on all platforms we know of; these options +are normally unnecessary. + +The `--with-modules' option specifies that XEmacs be built with +support for runtime loadable modules. NOTE TO OEMS: XEmacs can be +distributed configured to support several options based on external +APIs (currently LDAP, PostgreSQL, and Canna) as loadable modules. You +can distribute an XEmacs binary package with these options enabled +without depending on the external package. XEmacs will fail +gracefully at runtime, issuing an error message indicating that the +required support was not found on the system. = You can build XEmacs for several different machine types from a single source directory. To do this, you must use a version of `make' that @@ -275,27 +292,27 @@ system has X Window System support, and = The `--without-xmu' option can be used if your vendor doesn't ship the Xmu library. = -The `--enable-menubars=3DTYPE' option allows you to specify which X +The `--with-menubars=3DTYPE' option allows you to specify which X toolkit you wish to use for the menubar. The valid options are `lucid', `motif' and `no'. The default is `lucid' which is a Motif-lookalike menubar. We highly recommend its usage over the real Motif menubar. (In fact, the Motif menubar is currently broken.) If `no' is specified then support for menubars will not be compiled in. = -The `--enable-scrollbars=3DTYPE' option allows you to specify which X +The `--with-scrollbars=3DTYPE' option allows you to specify which X toolkit you wish to use for the scrollbars. The valid options are `lucid', `motif', `athena', `athena3d', and `no'. The default is `lucid' which is a Motif-lookalike scrollbar. If `no' is specified then support for scrollbars will not be compiled in. = -The `--enable-dialogs=3DTYPE' option allows you to specify which X toolk= it +The `--with-dialogs=3DTYPE' option allows you to specify which X toolkit you wish to use for the dialog boxes. The valid options are `athena', `athena3d', `motif, and `no. The `lucid' option is accepted and will result in the `athena' toolkit being used. If the Motif toolkit can be found the default is `motif'. Otherwise, the default is `athena'. If `no' is specified then support for dialog boxes will not be compiled in. = -The `--enable-toolbars' option allows you to enable or disable toolbar +The `--with-toolbars' option allows you to enable or disable toolbar support. The default is `yes' if support for a windowing system is included. = @@ -307,38 +324,41 @@ The `--with-xface' option specifies that X-Faces. `configure' will attempt to detect if you have the compface library and define `--with-xface' for you. = -The `--enable-database' option specifies that XEmacs should be built +The `--with-database' option specifies that XEmacs should be built with simple database support. The valid options are `no' or a comma-separated list of one or more of `dbm', `gnudbm' or `berkdb'. `configure' will attempt to detect the necessary libraries and header -files and define `--enable-database' for you. +files and define `--with-database' for you. = The `--with-postgresql' option specifies that XEmacs should be built with PostgreSQL support, linking with libpq. `configure' will attempt to detect whether PostgreSQL support is available, and automatically -define `--with-postgresql' for you. +define `--with-postgresql' for you. NOTE TO OEMS: If modules are +supported and enabled, the libpq API support will be build as a +module. = The `--with-ldap' option specifies that XEmacs should be build with LDAP support, using the OpenLDAP libraries. `configure' will attempt to detect whether LDAP support is available, and automatically define -`--with-ldap' for you. +`--with-ldap' for you. NOTE TO OEMS: If modules are supported and +enabled, the OpenLDAP API support will be build as a module. = The `--with-socks' option specifies that XEmacs should be built with SOCKS support. This requires the libsocks library. = -The `--enable-external-widget' option specifies that XEmacs should be +The `--with-external-widget' option specifies that XEmacs should be built with support for being used as a widget by other X11 applications. This functionality should be considered beta. = -The `--enable-sound=3DTYPE' option specifies that XEmacs should be built -with sound support. Native (`--enable-sound=3Dnative') sound support is +The `--with-sound=3DTYPE' option specifies that XEmacs should be built +with sound support. Native (`--with-sound=3Dnative') sound support is currently available only on Sun SparcStations, SGI's, HP9000s, and systems (such as Linux) with soundcard.h. Network Audio Support (NAS) -(`--enable-sound=3Dnas') is an extension to X that you may or may not ha= ve +(`--with-sound=3Dnas') is an extension to X that you may or may not have for your system. For NAS, you will probably need to provide the paths to the nas include and library directories to configure. If -`--enable-sound' is not specified, `configure' will attempt to determine -if your configuration supports native sound and define --enable-sound +`--with-sound' is not specified, `configure' will attempt to determine +if your configuration supports native sound and define --with-sound for you. If your native sound library is not in a standard location you can specify it with the `--with-native-sound-lib=3DLIB' flag. For Linux, `/dev/audio' is required for SunAudio files and `/dev/dsp' is required @@ -368,7 +388,7 @@ support can be explicitly disabled via t Internationalization Options ---------------------------- = -The `--enable-mule' option enables MUlti-Lingual Emacs (Mule) support, +The `--with-mule' option enables MUlti-Lingual Emacs (Mule) support, needed to support non-Latin-1 (including Asian) languages. Mule support is required for Asian language and Unicode (multibyte and wide character) support. With the advent of the Euro and European @@ -409,7 +429,8 @@ still unknown. If Canna is already inst it, so you never need to explicitly use this option unless your Canna libraries are somewhere strange. Canna run time support is currently bundled with the `mule-base' package so there is nothing additional to -install in order to use it. +install in order to use it. NOTE TO OEMS: If modules are supported +and enabled, the libcanna API support will be build as a module. = The `--with-wnn' and `--with-wnn6' options are for compiling with the Wnn multi-language input method. `--with-wnn' is for compiling with Wnn-4.2, @@ -788,3 +809,205 @@ without downloading some additional pack See the file PROBLEMS in this directory for a list of various problems sometimes encountered, and what to do about them. PROBLEMS is also the place where platform-specific build notes can be found. + +APPENDIX: CORRESPONDENCE TO OLD CONFIGURE OPTIONS +=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D + +Here is a full translation of command line arguments. Note that any +option starting with "--with" may also be specified with "--enable". +This list may not be up-to-date. + +Old | New +------------------------------------------ +General options: +---------------- + +--help Unchanged +--usage Removed +--verbose Unchanged +--extra-verbose Removed + +Compilation options: +-------------------- + +--compiler --with-compiler +--xemacs-compiler --with-xemacs-compiler +--with-gcc Unchanged +--cflags --with-cflags +--cflags-warning --with-cflags-warning +--debug --with-debug +New --with-cflags-debug +New --with-optimization +New --with-cflags-optimization +--cpp --with-cpp +--cppflags --with-cppflags +--libs --with-libs +--ldflags --with-ldflags +--site-includes --with-site-includes +--site-libraries --with-site-libraries +--site-prefixes --with-site-prefixes +--site-runtime-libraries --with-site-runtime-libraries = +--dynamic --with-dynamic +--srcdir Unchanged + +Installation options: +--------------------- + +--prefix Unchanged +--with-prefix Unchanged +--with-netinstall Unchanged +--bindir Unchanged +--datadir Unchanged +--statedir Unchanged +--libdir Unchanged +--infodir Unchanged +--mandir Unchanged +--lispdir --with-lispdir +--sitelispdir Removed +--etcdir --with-etcdir +--lockdir Removed +--archlibdir --with-archlibdir +--docdir --with-docdir +--moduledir --with-moduledir + +Run-time path-searching options: +-------------------------------- + +--with-site-lisp Unchanged +--with-site-modules Unchanged +--package-prefix --with-package-prefix +--package-path --with-package-path +--infopath --with-infopath + +Window-system options: +---------------------- + +--with-gtk Unchanged +--with-gnome Unchanged +--with-x11 Unchanged +--x-includes Unchanged +--x-libraries Unchanged +--with-msw Unchanged +--with-toolbars Unchanged +--with-wmcommand Unchanged +--with-athena Unchanged +--with-menubars Unchanged +--with-scrollbars Unchanged +--with-dialogs Unchanged +--with-widgets Unchanged +--with-dragndrop Unchanged +--with-cde Unchanged +--with-offix Unchanged +--with-xmu Unchanged +--external-widget --with-external-widget + +TTY (character terminal) options: +--------------------------------- + +--with-tty Unchanged +--with-ncurses Unchanged +--with-gpm Unchanged + +Image options: +-------------- + +--with-xpm Unchanged +--with-png Unchanged +--with-jpeg Unchanged +--with-tiff Unchanged +--with-xface Unchanged +--with-gif Unchanged + +Sound options: +-------------- + +--with-sound Unchanged +--native-sound-lib=3DLIB --with-native-sound-lib + +Internationalization options: +----------------------------- + +--with-mule Unchanged +--with-xim Unchanged +--with-canna Unchanged +--with-wnn Unchanged +--with-wnn6 Unchanged +--with-xfs Unchanged + +File-related options: +--------------------- + +--with-default-eol-detection Unchanged +--with-clash-detection Unchanged + +Database options: +----------------- + +--with-database Unchanged +--with-ldap Unchanged +--with-postgresql Unchanged + +Mail options: +------------- + +--mail-locking=3DTYPE --with-mail-locking +--with-pop Unchanged +--with-kerberos Unchanged +--with-hesiod Unchanged + +Networking options: +------------------- + +--with-tooltalk Unchanged +--with-socks Unchanged +--with-dnet Unchanged +--with-ipv6-cname Unchanged + +Memory allocation options: +-------------------------- + +--rel-alloc --with-rel-alloc +--with-dlmalloc Unchanged +--with-system-malloc Unchanged +--with-debug-malloc Unchanged + +Emacs Lisp options: +------------------- + +--use-number-lib --with-bignum + +Debugging options: +------------------ + +--debug --with-debug +--error-checking --with-error-checking +--memory-usage-stats --with-memory-usage-stats +--quick-build --with-quick-build +--use-union-type --with-union-type +--with-quantify Unchanged +--with-purify Unchanged + +Developer options: +------------------ + +--with-workshop Unchanged +--pdump --with-pdump +--use-kkcc --with-kkcc +--with-modules Unchanged + +The output files produced by this new configure should be almost +identical to those produced by the old. This can be tested with the +provided regression test script. This script runs the two versions of +configure with the supplied list of command line arguments and reports +any differences. Please add your favorite configuration command lines +to the list before running the test. The script is run as: + +$ tests/autoconf/regressiontest.pl /absolute/path/to/2.13/configure \ + /absolute/path/to/2.59/configure >diffs.txt + +The only differences should be: +- those related to changes in the command line arguments +- the change of SYS_SIGLIST_DECLARED to HAVE_DECL_SYS_SIGLIST (because t= he old + form has been removed), and +- The removal of trailing comments in src/config.h. + = = = 1.320 +1 -1 XEmacs/xemacs/man/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.319 retrieving revision 1.320 diff -u -p -r1.319 -r1.320 --- ChangeLog 2005/10/26 15:14:05 1.319 +++ ChangeLog 2005/11/07 08:49:23 1.320 @@ -163,7 +163,7 @@ for evaluation in Lisp interaction mode, and should be documented as such. = -2005-04-18 Turnbull Stephen +2005-04-18 Stephen J. Turnbull = * internals/internals.texi (Better Rendering Support -- Modern Font Support): = = = 1.38 +4 -3 XEmacs/xemacs/netinstall/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/ChangeLog,v retrieving revision 1.37 retrieving revision 1.38 diff -u -p -r1.37 -r1.38 --- ChangeLog 2005/10/26 15:14:20 1.37 +++ ChangeLog 2005/11/07 08:49:24 1.38 @@ -1,3 +1,7 @@ +2005-11-06 Stephen J. Turnbull + + * ChangeLog: Nuke useless CVS keyword. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. @@ -523,7 +527,4 @@ 2000-11-12 Andy Piper = * all: port from cygwin setup. - -%%% $Id: ChangeLog,v 1.37 2005/10/26 15:14:20 stephent Exp $ -$Revision: 1.37 $ = = = = 1.21 +13 -2 XEmacs/xemacs/src/inline.c = Index: inline.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/inline.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -p -r1.20 -r1.21 --- inline.c 2003/03/09 02:27:44 1.20 +++ inline.c 2005/11/07 08:49:25 1.21 @@ -67,11 +67,22 @@ Boston, MA 02111-1307, USA. */ #include "syntax.h" #include "window.h" = -#if defined (HAVE_LDAP) && !defined (HAVE_SHLIB) +/* If we demand !defined (HAVE_SHLIB) the INLINE_HEADERS aren't instanti= ated. + This only shows up in --with-error-checking=3Dtypes builds AFAIK. + On Mac OS X 10.3.9 with the Apple toolchain (GCC 3.3) gives a buildti= me + link error (the lrecord error_check functions are undefined). + Debian GNU/Linux `sid' with GCC 4.0.3 prerelease & binutils 2.16.91 g= ives + a runtime link error (the lrecord error_check functions are undefined= ). + It is possible that this can be fixed trickily by appropriately defin= ing + INLINE, or that it should be done in the module itself somehow. If y= ou + can do it better or more elegantly, please feel free to consult me. + --stephen 2005-11-07 */ +#if defined (HAVE_LDAP) #include "../modules/ldap/eldap.h" #endif = -#if defined (HAVE_POSTGRESQL) && !defined (HAVE_SHLIB) +/* We can't ask for !defined (HAVE_SHLIB). See HAVE_LDAP, above. */ +#if defined (HAVE_POSTGRESQL) #include "../modules/postgresql/postgresql.h" #endif = = = = 1.882 +4 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.881 retrieving revision 1.882 diff -u -p -r1.881 -r1.882 --- ChangeLog 2005/11/02 10:01:57 1.881 +++ ChangeLog 2005/11/07 08:49:25 1.882 @@ -1,3 +1,7 @@ +2005-11-07 Stephen J. Turnbull + + * inline.c: Include modules headers regardless of HAVE_SHLIB. + 2005-11-02 Marcus Crestani = * realpath.c (readlink_or_correct_case): Move the closing paren = = =20 --===============7343148267615924530==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============2481752334840554010==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-07 21:44:08 +0000 Message-ID: <20051107214408.7973.qmail@sunsite.dk> --===============2481752334840554010== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/07 22:44:08 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.579 +4 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.578 retrieving revision 1.579 diff -u -p -r1.578 -r1.579 --- ChangeLog 2005/11/02 07:05:46 1.578 +++ ChangeLog 2005/11/07 21:44:07 1.579 @@ -1,3 +1,7 @@ +2005-11-07 Norbert Koch + + * Packages released: ediff games viper. + 2005-11-02 Norbert Koch = * Packages released: edit-utils text-modes. = = =20 --===============2481752334840554010==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============4132310066249679439==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/ediff ... Date: 2005-11-07 21:44:27 +0000 Message-ID: <20051107214427.8027.qmail@sunsite.dk> --===============4132310066249679439== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/07 22:44:27 Modified: packages/xemacs-packages/ediff ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.93 +4 -0 XEmacs/packages/xemacs-packages/ediff/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog= ,v retrieving revision 1.92 retrieving revision 1.93 diff -u -p -r1.92 -r1.93 --- ChangeLog 2005/11/04 05:43:37 1.92 +++ ChangeLog 2005/11/07 21:44:27 1.93 @@ -1,3 +1,7 @@ +2005-11-07 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.57 released. + 2005-11-04 Michael Kifer = * ediff-merge.el (ediff-merge-region-is-non-clash): return t, if not = = = 1.69 +1 -1 XEmacs/packages/xemacs-packages/ediff/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/Makefile,v retrieving revision 1.68 retrieving revision 1.69 diff -u -p -r1.68 -r1.69 --- Makefile 2005/10/06 17:37:12 1.68 +++ Makefile 2005/11/07 21:44:27 1.69 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.56 +VERSION =3D 1.57 AUTHOR_VERSION =3D 2.75 MAINTAINER =3D Michael Kifer PACKAGE =3D ediff = = =20 --===============4132310066249679439==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============1882594051981580354==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/games ... Date: 2005-11-07 21:44:41 +0000 Message-ID: <20051107214441.8064.qmail@sunsite.dk> --===============1882594051981580354== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/07 22:44:41 Modified: packages/xemacs-packages/games ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.16 +4 -0 XEmacs/packages/xemacs-packages/games/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/ChangeLog= ,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- ChangeLog 2005/11/06 20:13:16 1.15 +++ ChangeLog 2005/11/07 21:44:41 1.16 @@ -1,3 +1,7 @@ +2005-11-07 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.16 released. + 2005-11-06 Adrian Aichner = * Makefile (MAINTAINER): Update email address. = = = 1.24 +1 -1 XEmacs/packages/xemacs-packages/games/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/Makefile,v retrieving revision 1.23 retrieving revision 1.24 diff -u -p -r1.23 -r1.24 --- Makefile 2005/11/06 20:13:17 1.23 +++ Makefile 2005/11/07 21:44:41 1.24 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 1.15 +VERSION =3D 1.16 AUTHOR_VERSION =3D 1.04 MAINTAINER =3D Glynn Clements PACKAGE =3D xemacs-base = = =20 --===============1882594051981580354==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============4364977933904458401==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/viper ... Date: 2005-11-07 21:44:57 +0000 Message-ID: <20051107214457.8117.qmail@sunsite.dk> --===============4364977933904458401== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/07 22:44:56 Modified: packages/xemacs-packages/viper ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.67 +4 -0 XEmacs/packages/xemacs-packages/viper/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog= ,v retrieving revision 1.66 retrieving revision 1.67 diff -u -p -r1.66 -r1.67 --- ChangeLog 2005/11/04 05:48:13 1.66 +++ ChangeLog 2005/11/07 21:44:56 1.67 @@ -1,3 +1,7 @@ +2005-11-07 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.45 released. + 2005-11-04 Michael Kifer = * viper.el: quote the form in every occurrence of eval-after-load. = = = 1.53 +1 -1 XEmacs/packages/xemacs-packages/viper/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/Makefile,v retrieving revision 1.52 retrieving revision 1.53 diff -u -p -r1.52 -r1.53 --- Makefile 2005/10/06 17:38:04 1.52 +++ Makefile 2005/11/07 21:44:56 1.53 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.44 +VERSION =3D 1.45 AUTHOR_VERSION =3D 3.09 MAINTAINER =3D Michael Kifer PACKAGE =3D viper = = =20 --===============4364977933904458401==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============4968104643904633275==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-07 22:51:10 +0000 Message-ID: <20051107225110.18336.qmail@sunsite.dk> --===============4968104643904633275== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/07 23:51:10 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1337 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1336 retrieving revision 1.1337 diff -u -p -r1.1336 -r1.1337 --- version.sh 2005/11/06 22:51:25 1.1336 +++ version.sh 2005/11/07 22:51:09 1.1337 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051106)" +xemacs_extra_name=3D"(+CVS-20051107)" xemacs_release_date=3D"2005-10-26" = = =20 --===============4968104643904633275==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============4148156525374608233==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs-builds/viteno ... Date: 2005-11-08 06:37:17 +0000 Message-ID: <20051108063717.26578.qmail@sunsite.dk> --===============4148156525374608233== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/08 07:37:17 Modified: xemacs-builds/viteno package-index setup-packages.ini Log: Package database backup: - ediff-1.57 - games-1.16 - viper-1.45 = Revision Changes Path 1.257 +19 -19 XEmacs/xemacs-builds/viteno/package-index = Index: package-index =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/package-index,v retrieving revision 1.256 retrieving revision 1.257 diff -u -p -r1.256 -r1.257 --- package-index 2005/11/02 07:23:46 1.256 +++ package-index 2005/11/08 06:37:15 1.257 @@ -1681,19 +1681,19 @@ semantic-sas (package-get-update-base-entry (quote (viper (standards-version 1.1 - version "1.44" + version "1.45" author-version "3.09" - date "2005-10-06" - build-date "2005-10-06" + date " 1.44 rele" + build-date "2005-11-08" maintainer "Michael Kifer " distribution xemacs priority low category "standard" dump nil description "VI emulation support." - filename "viper-1.44-pkg.tar.gz" - md5sum "cbff3fd40428ef5e503240634048d28a" - size 333502 + filename "viper-1.45-pkg.tar.gz" + md5sum "425f40c2fc70c9c2912427a2ae6709e4" + size 334614 provides (viper-cmd viper-ex viper-init viper-keym viper-macs viper-m= ous viper-util viper) requires (xemacs-base) type regular @@ -2055,19 +2055,19 @@ semantic-sas (package-get-update-base-entry (quote (ediff (standards-version 1.1 - version "1.56" + version "1.57" author-version "2.75" - date "2005-10-06" - build-date "2005-10-06" + date " 1.56 rele" + build-date "2005-11-08" maintainer "Michael Kifer " distribution xemacs priority medium category "standard" dump nil description "Interface over GNU patch." - filename "ediff-1.56-pkg.tar.gz" - md5sum "3dd40c773f5dda8e09279f6074773af9" - size 312748 + filename "ediff-1.57-pkg.tar.gz" + md5sum "41f8ab87168ee5a5ec11673ee2616e94" + size 313869 provides (ediff-diff ediff-help ediff-hook ediff-init ediff-merg edif= f-mult ediff-ptch ediff-tbar ediff-util ediff-vers ediff-wind ediff) requires (pcl-cvs elib dired xemacs-base edebug prog-modes) type regular @@ -2231,19 +2231,19 @@ semantic-sas (package-get-update-base-entry (quote (games (standards-version 1.1 - version "1.15" + version "1.16" author-version "1.04" - date "2003-10-31" - build-date "2003-10-31" - maintainer "Glynn Clements " + date "2005-11-07" + build-date "2005-11-08" + maintainer "Glynn Clements " distribution xemacs priority low category "standard" dump nil description "Tetris, Sokoban, and Snake." - filename "games-1.15-pkg.tar.gz" - md5sum "e50c1cd9ae0e9d32a022f52e795119b4" - size 37242 + filename "games-1.16-pkg.tar.gz" + md5sum "a292654de7490a9e57bd7e58471ae037" + size 37304 provides (gamegrid snake tetris sokoban) requires (xemacs-base) type regular = = = 1.245 +6 -6 XEmacs/xemacs-builds/viteno/setup-packages.ini = Index: setup-packages.ini =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/setup-packages.ini,v retrieving revision 1.244 retrieving revision 1.245 diff -u -p -r1.244 -r1.245 --- setup-packages.ini 2005/11/02 07:23:46 1.244 +++ setup-packages.ini 2005/11/08 06:37:16 1.245 @@ -108,8 +108,8 @@ version: 1.15 install: packages/cookie-1.15-pkg.tar.gz 35035 = @ games -version: 1.15 -install: packages/games-1.15-pkg.tar.gz 37242 +version: 1.16 +install: packages/games-1.16-pkg.tar.gz 37304 = @ mine version: 1.16 @@ -140,8 +140,8 @@ version: 1.17 install: packages/debug-1.17-pkg.tar.gz 108073 = @ ediff -version: 1.56 -install: packages/ediff-1.56-pkg.tar.gz 312748 +version: 1.57 +install: packages/ediff-1.57-pkg.tar.gz 313869 = @ emerge version: 1.11 @@ -208,8 +208,8 @@ version: 1.14 install: packages/tpu-1.14-pkg.tar.gz 59529 = @ viper -version: 1.44 -install: packages/viper-1.44-pkg.tar.gz 333502 +version: 1.45 +install: packages/viper-1.45-pkg.tar.gz 334614 = @ eterm version: 1.17 = = =20 --===============4148156525374608233==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============5010918315296826427==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-08 22:51:39 +0000 Message-ID: <20051108225139.23858.qmail@sunsite.dk> --===============5010918315296826427== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/08 23:51:39 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1338 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1337 retrieving revision 1.1338 diff -u -p -r1.1337 -r1.1338 --- version.sh 2005/11/07 22:51:09 1.1337 +++ version.sh 2005/11/08 22:51:39 1.1338 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051107)" +xemacs_extra_name=3D"(+CVS-20051108)" xemacs_release_date=3D"2005-10-26" = = =20 --===============5010918315296826427==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============3389018258458691217==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-09 22:51:11 +0000 Message-ID: <20051109225111.11833.qmail@sunsite.dk> --===============3389018258458691217== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/09 23:51:11 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1339 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1338 retrieving revision 1.1339 diff -u -p -r1.1338 -r1.1339 --- version.sh 2005/11/08 22:51:39 1.1338 +++ version.sh 2005/11/09 22:51:10 1.1339 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051108)" +xemacs_extra_name=3D"(+CVS-20051109)" xemacs_release_date=3D"2005-10-26" = = =20 --===============3389018258458691217==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============0930846912461240220==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/nt ... Date: 2005-11-10 15:45:15 +0000 Message-ID: <20051110154515.6209.qmail@sunsite.dk> --===============0930846912461240220== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/10 16:45:15 Modified: xemacs/nt ChangeLog xemacs.mak Log: Fix build output directory structure. = Revision Changes Path 1.193 +6 -0 XEmacs/xemacs/nt/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/ChangeLog,v retrieving revision 1.192 retrieving revision 1.193 diff -u -p -r1.192 -r1.193 --- ChangeLog 2005/10/28 05:42:07 1.192 +++ ChangeLog 2005/11/10 15:45:13 1.193 @@ -1,3 +1,9 @@ +2005-11-08 Marcus Crestani + + * xemacs.mak: + * xemacs.mak ($(OUTDIR)): + * xemacs.mak (all): Fix build output directory structure. + 2005-10-28 Ben Wing = * xemacs.mak (HAVE_BIGNUM): = = = 1.118 +11 -9 XEmacs/xemacs/nt/xemacs.mak = Index: xemacs.mak =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/xemacs.mak,v retrieving revision 1.117 retrieving revision 1.118 diff -u -p -r1.117 -r1.118 --- xemacs.mak 2005/10/28 05:42:07 1.117 +++ xemacs.mak 2005/11/10 15:45:13 1.118 @@ -97,6 +97,8 @@ LWLIB_SRCDIR=3D$(SRCROOT)\lwlib = ########################### Figure out current version of VC++. = +!if [if not exist $(OUTDIR) mkdir "$(OUTDIR)"] +!endif !if [echo MSC_VER=3D_MSC_VER > $(OUTDIR)\vcversion.c] !endif !if [cl /nologo /EP $(OUTDIR)\vcversion.c > $(OUTDIR)\vcversion.tmp] @@ -936,7 +938,7 @@ TEMACS_DOC_SOURCES=3D \ # Whether to use dependency information generated by make-src-depend # !if $(DEPEND) && exist("$(SRC)\depend") -! if [if not exist $(OUTDIR)\nul mkdir "$(OUTDIR)"] +! if [if not exist $(OUTDIR) mkdir "$(OUTDIR)"] ! endif # This perl script used to be inline but that caused too many quoting pr= oblems ! if [perl $(NT)\make-nt-depend -s=3D$(SRC) -c=3D$(NT) -o=3D$(OUTDIR) < = $(SRC)\depend > $(OUTDIR)\depend.tmp] @@ -953,18 +955,18 @@ TEMACS_DOC_SOURCES=3D \ !if $(SEPARATE_BUILD) # #### `if not exist' does not like the quotes around file names. # But what if one of them has spaces? Fucking Microsoft! -! if [if not exist $(BLDROOT)\nul mkdir "$(BLDROOT)"] +! if [if not exist $(BLDROOT) mkdir "$(BLDROOT)"] ! endif -! if [if not exist $(BLDLIB_SRC)\nul mkdir "$(BLDLIB_SRC)"] +! if [if not exist $(BLDLIB_SRC) mkdir "$(BLDLIB_SRC)"] ! endif -! if [if not exist $(BLDNT)\nul mkdir "$(BLDNT)"] +! if [if not exist $(BLDNT) mkdir "$(BLDNT)"] ! endif -! if [if not exist $(OUTDIR)\nul mkdir "$(OUTDIR)"] +! if [if not exist $(OUTDIR) mkdir "$(OUTDIR)"] ! endif -! if [if not exist $(BLDSRC)\nul mkdir "$(BLDSRC)"] +! if [if not exist $(BLDSRC) mkdir "$(BLDSRC)"] ! endif # No point. -# ! if [if not exist "$(BLDROOT)\nul" mkdir "$(BLDROOT)"] +# ! if [if not exist "$(BLDROOT)" mkdir "$(BLDROOT)"] # ! endif !endif = @@ -987,7 +989,7 @@ $(OUTDIR)\eldap.obj: $(SRCROOT)\modules\ = ###################### Generated source files = -$(OUTDIR)\nul: +$(OUTDIR): -(a)mkdir $(OUTDIR) = XEMACS_INCLUDES=3D\ @@ -1310,7 +1312,7 @@ dump_temacs =3D $(TEMACS_BATCH) $(dump_tem ## and update-elc-2 due to the sideways dependency of NEEDTODUMP. See ## src/Makefile.in.in for a more detailed discussion of this. = -all: installation $(OUTDIR)\nul $(LIB_SRC_TOOLS) \ +all: installation $(OUTDIR) $(LIB_SRC_TOOLS) \ update-elc update-elc-2 \ $(LISP)/finder-inf.el load-shadows info = = = =20 --===============0930846912461240220==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============3439526445189706169==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/lwlib ... Date: 2005-11-10 15:47:36 +0000 Message-ID: <20051110154736.6696.qmail@sunsite.dk> --===============3439526445189706169== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/10 16:47:36 Modified: xemacs/lwlib ChangeLog xlwgauge.c xlwradio.c Log: Fix C++ build: new->new_. = Revision Changes Path 1.72 +7 -0 XEmacs/xemacs/lwlib/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- ChangeLog 2005/10/26 15:13:56 1.71 +++ ChangeLog 2005/11/10 15:47:33 1.72 @@ -1,3 +1,10 @@ +2005-11-08 Marcus Crestani + + * xlwgauge.c (GaugeInit): + * xlwgauge.c (GaugeSetValues): + * xlwradio.c (RadioInit): + * xlwradio.c (RadioSetValues): Rename new->new_. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.6 +11 -11 XEmacs/xemacs/lwlib/xlwgauge.c = Index: xlwgauge.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwgauge.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- xlwgauge.c 2004/09/20 19:19:17 1.5 +++ xlwgauge.c 2005/11/10 15:47:33 1.6 @@ -240,11 +240,11 @@ GaugeClassInit (void) /* ARGSUSED */ static void GaugeInit (Widget request, - Widget new, + Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - GaugeWidget gw =3D (GaugeWidget) new; + GaugeWidget gw =3D (GaugeWidget) new_; = if( gw->gauge.v0 =3D=3D 0 && gw->gauge.v1 =3D=3D 0 ) { gw->gauge.autoScaleUp =3D gw->gauge.autoScaleDown =3D TRUE ; @@ -258,10 +258,10 @@ GaugeInit (Widget request, Dimension w,h ; GaugeSize(gw, &w,&h, DEF_LEN) ; if( request->core.width =3D=3D 0 ) - new->core.width =3D w ; + new_->core.width =3D w ; if( request->core.height =3D=3D 0 ) - new->core.height =3D h ; - gw->core.widget_class->core_class.resize(new) ; + new_->core.height =3D h ; + gw->core.widget_class->core_class.resize(new_) ; } = gw->gauge.selected =3D None ; @@ -501,16 +501,16 @@ register Window win =3D XtWindow(w) ; static Boolean GaugeSetValues (Widget old, Widget UNUSED (request), - Widget new, + Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { GaugeWidget oldgw =3D (GaugeWidget) old; - GaugeWidget gw =3D (GaugeWidget) new; + GaugeWidget gw =3D (GaugeWidget) new_; Boolean was_resized =3D False; = if( gw->gauge.selected !=3D None ) { - XtDisownSelection(new, gw->gauge.selected, CurrentTime) ; + XtDisownSelection(new_, gw->gauge.selected, CurrentTime) ; gw->gauge.selected =3D None ; } = @@ -535,7 +535,7 @@ GaugeSetValues (Widget old, if( gw->label.resize ) GaugeSize(gw, &gw->core.width, &gw->core.height, DEF_LEN) ; else - GaugeResize(new) ; + GaugeResize(new_) ; } = if( gw->gauge.update !=3D oldgw->gauge.update ) @@ -548,12 +548,12 @@ GaugeSetValues (Widget old, = if( gw->core.background_pixel !=3D oldgw->core.background_pixel ) { - XtReleaseGC(new, gw->gauge.inverse_GC) ; + XtReleaseGC(new_, gw->gauge.inverse_GC) ; gw->gauge.inverse_GC =3D Get_GC(gw, gw->core.background_pixel) ; } = return was_resized || gw->gauge.value !=3D oldgw->gauge.value || - XtIsSensitive(old) !=3D XtIsSensitive(new); + XtIsSensitive(old) !=3D XtIsSensitive(new_); } = = = = = 1.6 +6 -6 XEmacs/xemacs/lwlib/xlwradio.c = Index: xlwradio.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwradio.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- xlwradio.c 2004/09/20 19:19:17 1.5 +++ xlwradio.c 2005/11/10 15:47:33 1.6 @@ -218,11 +218,11 @@ RadioClassPartInit (WidgetClass class_) /*ARGSUSED*/ static void RadioInit (Widget request, - Widget new, + Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { - RadioWidget rw =3D (RadioWidget) new; + RadioWidget rw =3D (RadioWidget) new_; RadioWidget rw_req =3D (RadioWidget) request; Dimension w,h ; = @@ -234,7 +234,7 @@ RadioInit (Widget request, rw->core.width =3D w ; if( rw_req->core.height =3D=3D 0 ) rw->core.height =3D h ; - rw->core.widget_class->core_class.resize(new) ; + rw->core.widget_class->core_class.resize(new_) ; } } = @@ -345,12 +345,12 @@ RadioExpose (Widget w, static Boolean RadioSetValues (Widget current, Widget UNUSED (request), - Widget new, + Widget new_, ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { RadioWidget oldrw =3D (RadioWidget) current; - RadioWidget newrw =3D (RadioWidget) new; + RadioWidget newrw =3D (RadioWidget) new_; = /* Need to find out if the size of the widget changed. Set new size * if it did and resize is permitted. One way to determine of the @@ -373,7 +373,7 @@ RadioSetValues (Widget current, */ if (newrw->label.label_x !=3D oldrw->label.label_x) { - RadioResize (new); + RadioResize (new_); } return FALSE ; } = = =20 --===============3439526445189706169==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============2721196804586847066==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc ... Date: 2005-11-10 16:44:52 +0000 Message-ID: <20051110164452.26509.qmail@sunsite.dk> --===============2721196804586847066== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/10 17:44:52 Modified: packages/unsupported/scop/vc ChangeLog vc-xemacs.el Log: Update FSF's address. = Revision Changes Path 1.32 +4 -0 XEmacs/packages/unsupported/scop/vc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.31 retrieving revision 1.32 diff -u -p -r1.31 -r1.32 --- ChangeLog 2005/11/02 19:03:11 1.31 +++ ChangeLog 2005/11/10 16:44:51 1.32 @@ -1,3 +1,7 @@ +2005-11-10 Ville Skytt=C3=A4 + + * vc-xemacs.el: Update FSF's address. + 2005-11-02 Ville Skytt=C3=A4 = * vc.el, vc-cvs.el, vc-sccs.el: Sync with upstream. = = = 1.2 +2 -2 XEmacs/packages/unsupported/scop/vc/vc-xemacs.el = Index: vc-xemacs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-xemacs.e= l,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- vc-xemacs.el 2004/08/15 10:58:29 1.1 +++ vc-xemacs.el 2005/11/10 16:44:51 1.2 @@ -14,8 +14,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with XEmacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Code: = = = =20 --===============2721196804586847066==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============0168513171175170957==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-10 22:51:05 +0000 Message-ID: <20051110225105.8703.qmail@sunsite.dk> --===============0168513171175170957== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/10 23:51:05 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1340 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1339 retrieving revision 1.1340 diff -u -p -r1.1339 -r1.1340 --- version.sh 2005/11/09 22:51:10 1.1339 +++ version.sh 2005/11/10 22:51:04 1.1340 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051109)" +xemacs_extra_name=3D"(+CVS-20051110)" xemacs_release_date=3D"2005-10-26" = = =20 --===============0168513171175170957==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============4175556979451298944==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc ... Date: 2005-11-11 19:25:09 +0000 Message-ID: <20051111192509.22391.qmail@sunsite.dk> --===============4175556979451298944== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/11 20:25:09 Modified: packages/unsupported/scop/vc ChangeLog vc-xemacs.el Log: Fix subst-char-in-string, thanks to Oscar Figueiredo. = Revision Changes Path 1.33 +5 -0 XEmacs/packages/unsupported/scop/vc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.32 retrieving revision 1.33 diff -u -p -r1.32 -r1.33 --- ChangeLog 2005/11/10 16:44:51 1.32 +++ ChangeLog 2005/11/11 19:25:08 1.33 @@ -1,3 +1,8 @@ +2005-11-10 Oscar Figueiredo + + * vc-xemacs.el (subst-char-in-string): Do not use `replace-in-string' + because of the regexp semantic on its second parameter. + 2005-11-10 Ville Skytt=C3=A4 = * vc-xemacs.el: Update FSF's address. = = = 1.3 +9 -3 XEmacs/packages/unsupported/scop/vc/vc-xemacs.el = Index: vc-xemacs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-xemacs.e= l,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- vc-xemacs.el 2005/11/10 16:44:51 1.2 +++ vc-xemacs.el 2005/11/11 19:25:08 1.3 @@ -56,10 +56,16 @@ (defalias 'line-number-at-pos 'line-number)) = (unless (fboundp 'subst-char-in-string) - ;; Note: inplace is ignored for now (defun subst-char-in-string (fromchar tochar string &optional inplace) - (replace-in-string - string (char-to-string fromchar) (char-to-string tochar)))) + "Replace FROMCHAR with TOCHAR in STRING each time it occurs. +Unless optional argument INPLACE is non-nil, return a new string." + (let ((i (length string)) + (newstr (if inplace string (copy-sequence string)))) + (while (> i 0) + (setq i (1- i)) + (if (eq (aref newstr i) fromchar) + (aset newstr i tochar))) + newstr))) = (unless (fboundp 'replace-regexp-in-string) ;; Note: fixedcase, subexp, start ignored for now = = =20 --===============4175556979451298944==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============3843015322029752088==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-11 22:51:43 +0000 Message-ID: <20051111225143.9339.qmail@sunsite.dk> --===============3843015322029752088== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/11 23:51:43 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1341 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1340 retrieving revision 1.1341 diff -u -p -r1.1340 -r1.1341 --- version.sh 2005/11/10 22:51:04 1.1340 +++ version.sh 2005/11/11 22:51:37 1.1341 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051110)" +xemacs_extra_name=3D"(+CVS-20051111)" xemacs_release_date=3D"2005-10-26" = = =20 --===============3843015322029752088==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============3575334235766961729==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by adrian packages/xemacs-packages/games, gamegrid.el ... Date: 2005-11-12 00:29:56 +0000 Message-ID: <20051112002956.29849.qmail@sunsite.dk> --===============3575334235766961729== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: adrian = Date: 05/11/12 01:29:56 Modified: packages/xemacs-packages/games ChangeLog Makefile gamegrid.el tetris.el Log: packages: Emergency (:-) fixes for gamegrid and tetris = -------------------- ChangeLog entries follow: -------------------- = xemacs-packages/games/ChangeLog addition: = 2005-11-12 Adrian Aichner = * Makefile (MAINTAINER): Update email address. * gamegrid.el: Ditto. * tetris.el: Ditto. * gamegrid.el (gamegrid-add-score): Fix loss of scores with non-octal digits. * tetris.el (tetris-score-file): Default to user-init-directory. = Revision Changes Path 1.17 +9 -7 XEmacs/packages/xemacs-packages/games/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/ChangeLog= ,v retrieving revision 1.16 retrieving revision 1.17 diff -u -p -r1.16 -r1.17 --- ChangeLog 2005/11/07 21:44:41 1.16 +++ ChangeLog 2005/11/12 00:29:49 1.17 @@ -1,3 +1,12 @@ +2005-11-12 Adrian Aichner + + * Makefile (MAINTAINER): Update email address. + * gamegrid.el: Ditto. + * tetris.el: Ditto. + * gamegrid.el (gamegrid-add-score): Fix loss of scores with + non-octal digits. + * tetris.el (tetris-score-file): Default to user-init-directory. + 2005-11-07 Norbert Koch = * Makefile (VERSION): XEmacs package 1.16 released. @@ -5,13 +14,6 @@ 2005-11-06 Adrian Aichner = * Makefile (MAINTAINER): Update email address. - -2005-11-06 Adrian Aichner - - * gamegrid.el (gamegrid-add-score): Fix loss of scores with - non-octal digits. - * tetris.el (tetris-score-file): Default to (temp-directory), not - "/tmp". = 2003-10-31 Norbert Koch = = = = 1.25 +1 -1 XEmacs/packages/xemacs-packages/games/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/Makefile,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- Makefile 2005/11/07 21:44:41 1.24 +++ Makefile 2005/11/12 00:29:49 1.25 @@ -21,7 +21,7 @@ = VERSION =3D 1.16 AUTHOR_VERSION =3D 1.04 -MAINTAINER =3D Glynn Clements +MAINTAINER =3D Glynn Clements PACKAGE =3D xemacs-base PACKAGE =3D games PKG_TYPE =3D regular = = = 1.6 +9 -3 XEmacs/packages/xemacs-packages/games/gamegrid.el = Index: gamegrid.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/gamegrid.= el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gamegrid.el 2003/06/14 18:48:26 1.5 +++ gamegrid.el 2005/11/12 00:29:49 1.6 @@ -2,7 +2,7 @@ = ;; Copyright (C) 1998 Free Software Foundation, Inc. = -;; Author: Glynn Clements +;; Author: Glynn Clements ;; Version: 1.03 ;; Created: 1997-08-13 ;; Keywords: games @@ -429,8 +429,14 @@ static char *noname[] =3D { ((boundp 'user-mail-address) user-mail-address) (t "")))) - (sort-numeric-fields 1 (point-min) (point-max)) - (reverse-region (point-min) (point-max)) + ;; Prefixing numbers 0's will make `sort-numeric-fields' sort with + ;; sort-numeric-base of 8. + ;; One workaround is to use `sort-regexp-fields-numerically', + ;; on the number, excluding leading 0's. + (sort-regexp-fields-numerically + nil + "^[0]*\\([1-9][0-9]+\\)\\>.+$" "\\1" (point-min) (point-max)) + (reverse-region (point-min) (point-max)) (goto-line (1+ gamegrid-score-file-length)) (delete-region (point) (point-max)) (setq buffer-read-only t) = = = 1.5 +3 -2 XEmacs/packages/xemacs-packages/games/tetris.el = Index: tetris.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/tetris.el= ,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- tetris.el 2003/06/14 18:48:27 1.4 +++ tetris.el 2005/11/12 00:29:49 1.5 @@ -2,7 +2,7 @@ = ;; Copyright (C) 1998 Free Software Foundation, Inc. = -;; Author: Glynn Clements +;; Author: Glynn Clements ;; Version: 2.03 ;; Created: 1997-08-13 ;; Keywords: games @@ -136,7 +136,8 @@ Element 0 is ignored") (defvar tetris-score-y (+ tetris-next-y 6) "Y position of score") = -(defvar tetris-score-file "/tmp/tetris-scores" +(defvar tetris-score-file + (expand-file-name "tetris-scores" user-init-directory) ;; anybody with a well-connected server want to host this? ;(defvar tetris-score-file "/anonymous(a)ftp.pgt.com:/pub/cgw/tetris-sco= res" "File for holding high scores") = = =20 --===============3575334235766961729==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============8245128562558768379==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-12 22:51:03 +0000 Message-ID: <20051112225103.25962.qmail@sunsite.dk> --===============8245128562558768379== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/12 23:51:02 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1342 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1341 retrieving revision 1.1342 diff -u -p -r1.1341 -r1.1342 --- version.sh 2005/11/11 22:51:37 1.1341 +++ version.sh 2005/11/12 22:51:02 1.1342 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051111)" +xemacs_extra_name=3D"(+CVS-20051112)" xemacs_release_date=3D"2005-10-26" = = =20 --===============8245128562558768379==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============9125057765160512120==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/man/internals ... Date: 2005-11-13 07:29:36 +0000 Message-ID: <20051113072936.27296.qmail@sunsite.dk> --===============9125057765160512120== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 08:29:36 Modified: xemacs/man/internals internals.texi Log: branch info in internals manual = internals/internals.texi: Add node on Creating a Branch. Update info con= cerning problems with rtag on symlinks. (#### Is this still valid?) = Revision Changes Path 1.321 +9 -0 XEmacs/xemacs/man/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.320 retrieving revision 1.321 diff -u -p -r1.320 -r1.321 --- ChangeLog 2005/11/07 08:49:23 1.320 +++ ChangeLog 2005/11/13 07:29:31 1.321 @@ -1,3 +1,12 @@ +2005-11-13 Ben Wing + + * internals/internals.texi (Top): + * internals/internals.texi (CVS Techniques): + * internals/internals.texi (Creating a Branch): + * internals/internals.texi (Merging a Branch into the Trunk): + Add node on Creating a Branch. Update info concerning problems + with rtag on symlinks. (#### Is this still valid?) + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.70 +119 -7 XEmacs/xemacs/man/internals/internals.texi = Index: internals.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/internals/internals.texi,v retrieving revision 1.69 retrieving revision 1.70 diff -u -p -r1.69 -r1.70 --- internals.texi 2005/10/20 12:38:04 1.69 +++ internals.texi 2005/11/13 07:29:34 1.70 @@ -393,6 +393,7 @@ Regression Testing XEmacs = CVS Techniques = +* Creating a Branch:: = * Merging a Branch into the Trunk:: = = Low-Level Allocation @@ -6532,13 +6533,121 @@ XEmacs facilities. @xref{Regression Tes @cindex CVS techniques = @menu +* Creating a Branch:: = * Merging a Branch into the Trunk:: = @end menu = -(a)node Merging a Branch into the Trunk, , CVS Techniques, CVS Techniqu= es +(a)node Creating a Branch, Merging a Branch into the Trunk, CVS Techniqu= es, CVS Techniques +(a)section Creating a Branch +(a)cindex creating a branch +(a)cindex branch, creating + +This assumes that you have an existing workspace modified off of the +main line, and you want to put it onto a branch. + +(a)enumerate +(a)item +Preliminary comment: @emph{All} commands are to be executed at the +top level of your workspace, unless otherwise indicated (which will be +rare, if ever). Don't ever forget this and screw up, or you will get a = real +mess. + +(a)item +First, make a backup copy of your entire repository using @code{cp -a} +(in the directory above your repository!) before doing anything. + +(a)item + +Now, rule #1: @strong{Never try to create a branch from a workspace +with added or deleted files.} If you are lucky, the operation will +simply fail. If you are less lucky, it will proceed, but make the +adds and deletes on the main line, which you do not want at all. +Therefore, you must undo all adds and deletes. To find out what is +added and deleted, use something like @code{cvs -n update >&! = +cvs.out}, which does a "dry run". (You did make a backup copy first, +right? What if you forgot the @samp{-n}, for example, and wasn't +prepared for the sudden onslaught of merging action?) Take a look at +the output file @file{cvs.out} and check very carefully for newly +added files (marked with an @samp{A}) and newly removed files (marked +with an @samp{R}). Double check that your newly added files are in +your backup copy, then @code{rm} and @code{crw rm} each of them to +undo the addition. For each removed file, do @code{crw add} to undo +the removal. + +(a)item +create a branch point. (This is a tag marking the point at which +your branch split from the main line. It is @strong{extremely} +important to create such a branch point! The creation of the actual +branch only creates a tag that marks the end of the branch, which will +move as you check in changes to your branch. The CVS designers, in +their infinite wisdom, didn't provide any automatic mechanism for +tracking the branching point, so you need to do it manually.) + +(a)example +crw tag ben-mule-21-5-bp +(a)end example + +(a)item +Next, create the actual branch: + +(a)example +crw tag -b ben-mule-21-5 +(a)end example + +Note that this doesn't actually do anything to your local workspace! +It basically just creates another tag in the repository, identical to +the branch point tag but internally marked as a "branch tag" rather +than a regular tag. + +(a)item +Now, move your workspace onto the branch: + +(a)example +cvs update -r ben-mule-21-5 +(a)end example + +For unknown reasons, this may generate conflicts for each file that +you have modified locally. If so, you can fix this by touching the +conflicting files (the conflicts are bogus if you followed the above +procedure). Run the following command in the top-level directory: + +(a)example +cvs-mods | xargs touch --no-create +(a)end example + +(a)item +Now, carefully redo all adds and deletes; refer to the @file{cvs.out} +file to remember what needs to be redone. + +(a)item +Now, check in the files on the branch: + +(a)example +crw commit -m "first commit of ben-mule-21-5 branch" +(a)end example +(a)end enumerate + +(a)node Merging a Branch into the Trunk, , Creating a Branch, CVS Techn= iques @section Merging a Branch into the Trunk @cindex merging a branch into the trunk +(a)cindex branch, merging into the trunk + +Preliminary comment: Beware of the symlink problem with `cvs rtag': = +(a)example +cvs [rtag aborted]: received abort signal +cvs [rtag aborted]: received abort signal +lock.c:178: failed assertion `strncmp (repository, current_parsed_root->= directory, strlen (current_parsed_root->directory)) =3D=3D 0' +lock.c:178: failed assertion `strncmp (repository, current_parsed_root->= directory, strlen (current_parsed_root->directory)) =3D=3D 0' +(a)end example + +It will fail with a message like this if the directory component of +your root (CVSROOT environment variable or `-d' option) is a symbolic +link, which is the case for the standard /pack/xemacscvs. You need to +find the real directory name; one trick is to execute a command that +attempts to write to the repository, using read-only access. This +will output an error message showing the actual repository directory. + @enumerate @item If you haven't already done a merge, you will be merging from the branch @@ -6547,12 +6656,15 @@ should be marked by a tag, e.g. @samp{la former case, create the last-sync tag, e.g. = @example -crw rtag -r ben-mule-21-5-bp last-sync-ben-mule-21-5 xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -r= ben-mule-21-5-bp last-sync-ben-mule-21-5 xemacs @end example = (You did create a branch point tag when you created the branch, didn't you?) = +Note the way this command is specified, overriding the root to avoid +the symlink problem, as described above. + @item Check everything in on your branch. = @@ -6560,7 +6672,7 @@ Check everything in on your branch. Tag your branch with a pre-sync tag, e.g. = @example -crw rtag -r ben-mule-21-5 ben-mule-21-5-pre-feb-20-2002-sync xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -r= ben-mule-21-5 ben-mule-21-5-pre-feb-20-2002-sync xemacs @end example = Note, you need to use rtag and specify a version with @samp{-r} (use @@ -6572,8 +6684,8 @@ Tag the trunk so you have a stable place are asynchronously committing to the trunk, e.g. = @example -crw rtag -r HEAD main-branch-ben-mule-21-5-syncpoint-feb-20-2002 xemacs -crw rtag -F -r main-branch-ben-mule-21-5-syncpoint-feb-20-2002 next-sync= -ben-mule-21-5 xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -r= HEAD main-branch-ben-mule-21-5-syncpoint-feb-20-2002 xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -F= -r main-branch-ben-mule-21-5-syncpoint-feb-20-2002 next-sync-ben-mule-21-5= xemacs @end example = Use -F in the second case because the name might already exist, e.g. if @@ -6605,14 +6717,14 @@ Fix all merge conflicts. Get the sucker Tag your branch with a post-sync tag, e.g. = @example -crw rtag -r ben-mule-21-5 ben-mule-21-5-post-feb-20-2002-sync xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -r= ben-mule-21-5 ben-mule-21-5-post-feb-20-2002-sync xemacs @end example = @item Update the last-sync tag, e.g. = @example -crw rtag -F -r next-sync-ben-mule-21-5 last-sync-ben-mule-21-5 xemacs +cvs -d :ext:xemacs@@cvs.xemacs.org:/mnt/home1/cvsroots/xemacscvs rtag -F= -r next-sync-ben-mule-21-5 last-sync-ben-mule-21-5 xemacs @end example @end enumerate = = = =20 --===============9125057765160512120==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============8484724447583190242==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs ... Date: 2005-11-13 07:31:57 +0000 Message-ID: <20051113073157.27408.qmail@sunsite.dk> --===============8484724447583190242== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 08:31:57 Modified: xemacs ChangeLog configure.ac Log: fix inclusion of ntplay.o = configure.ac: Dependent on operating system, not on window system. = Revision Changes Path 1.467 +5 -0 XEmacs/xemacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.466 retrieving revision 1.467 diff -u -p -r1.466 -r1.467 --- ChangeLog 2005/11/07 08:49:17 1.466 +++ ChangeLog 2005/11/13 07:31:55 1.467 @@ -1,3 +1,8 @@ +2005-11-13 Ben Wing + + * configure.ac (win32 native sound): + Dependent on operating system, not on window system. + 2005-11-07 Stephen J. Turnbull = * configure.ac (AC_INIT): Use it correctly. = = = 1.19 +4 -3 XEmacs/xemacs/configure.ac = Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.18 retrieving revision 1.19 diff -u -p -r1.18 -r1.19 --- configure.ac 2005/11/07 08:49:16 1.18 +++ configure.ac 2005/11/13 07:31:55 1.19 @@ -4821,13 +4821,14 @@ if test "$enable_sound_native" !=3D "no"; = esac fi = - dnl Win32 Native uses native sound + dnl Win32 uses native sound if test -z "$sound_found"; then - if test "$with_msw" =3D "yes"; then + case "$opsys" in cygwin* | mingw* ) sound_found=3Dyes with_native_sound_lib=3D XE_ADD_OBJS(ntplay.o) - fi + ;; + esac fi = dnl Check for Linux/BSD native sound (also on recent Cygwins) = = =20 --===============8484724447583190242==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============3902983052931833902==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/lisp, glyphs.el, files.el ... Date: 2005-11-13 07:39:31 +0000 Message-ID: <20051113073931.27835.qmail@sunsite.dk> --===============3902983052931833902== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 08:39:31 Modified: xemacs/lisp ChangeLog derived.el frame.el toolbar.el glyphs.el specifier.el hyper-apropos.el mouse.el files.el Log: fix 'foo -> `foo', `foo.' -> `foo'. = derived.el, frame.el, toolbar.el, glyphs.el, hyper-apropos.el, mouse.el, = files.el, specifier.el: Fix uses of `foo'; change 'foo -> `foo', and put pu= nctuation outside of quotes. Add comments in specifier.el about needing better and new convenience functions. = Revision Changes Path 1.692 +23 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.691 retrieving revision 1.692 diff -u -p -r1.691 -r1.692 --- ChangeLog 2005/11/02 03:26:51 1.691 +++ ChangeLog 2005/11/13 07:39:26 1.692 @@ -1,3 +1,26 @@ +2005-11-13 Ben Wing + + * derived.el: + * frame.el (get-frame-for-buffer): + * toolbar.el (press-toolbar-button): + * toolbar.el (release-and-activate-toolbar-button): + * glyphs.el: + * glyphs.el (set-glyph-property): + * glyphs.el (set-glyph-image): + * glyphs.el (set-glyph-contrib-p): + * glyphs.el (set-glyph-baseline): + * hyper-apropos.el (hyper-apropos-map): + * mouse.el (mouse-track-down-hook): + * files.el (file-name-extension): + * specifier.el: + * specifier.el (map-specifier): + * specifier.el (set-specifier): + Fix uses of `foo'; change 'foo -> `foo', and put punctuation outside + of quotes. + + Add comments in specifier.el about needing better and new convenience + functions. + 2005-11-02 Marcus Crestani = * diagnose.el: Rename `show-lrecord-stats' to = = = 1.11 +3 -3 XEmacs/xemacs/lisp/derived.el = Index: derived.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/derived.el,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- derived.el 2004/06/18 15:48:38 1.10 +++ derived.el 2005/11/13 07:39:27 1.11 @@ -59,11 +59,11 @@ ;; (define-key hypertext-mode-map [down-mouse-3] 'do-hyper-link) ;; ;; will create a function `hypertext-mode' with its own (sparse) -;; keymap `hypertext-mode-map.' The command M-x hypertext-mode will +;; keymap `hypertext-mode-map'. The command M-x hypertext-mode will ;; perform the following actions: ;; ;; - run the command (text-mode) to get its default setup -;; - replace the current keymap with 'hypertext-mode-map,' which will +;; - replace the current keymap with 'hypertext-mode-map', which will ;; inherit from 'text-mode-map'. ;; - replace the current syntax table with ;; 'hypertext-mode-syntax-table', which will borrow its defaults @@ -77,7 +77,7 @@ ;; set the local variable `case-fold-search' to nil. ;; ;; The advantages of this system are threefold. First, text mode is -;; untouched -- if you had added the new keystroke to `text-mode-map,' +;; untouched -- if you had added the new keystroke to `text-mode-map', ;; possibly using hooks, you would have added it to all text buffers ;; -- here, it appears only in hypertext buffers, where it makes ;; sense. Second, it is possible to build even further, and make = = = 1.25 +4 -4 XEmacs/xemacs/lisp/frame.el = Index: frame.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/frame.el,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- frame.el 2005/01/28 02:58:40 1.24 +++ frame.el 2005/11/13 07:39:28 1.25 @@ -1774,16 +1774,16 @@ This is a subroutine of `get-frame-for-b shrink-to-fit) "Select and return a frame in which to display BUFFER. Normally, the buffer will simply be displayed in the selected frame. -But if the symbol naming the major-mode of the buffer has a 'frame-name +But if the symbol naming the major-mode of the buffer has a `frame-name' property (which should be a symbol), then the buffer will be displayed in a frame of that name. If there is no frame of that name, then one is created. = -If the major-mode doesn't have a 'frame-name property, then the frame +If the major-mode doesn't have a `frame-name' property, then the frame named by `get-frame-for-buffer-default-frame-name' will be used. If that is nil (the default) then the currently selected frame will used. = -If the frame-name symbol has an 'instance-limit property (an integer) +If the frame-name symbol has an `instance-limit' property (an integer) then each time a buffer of the mode in question is displayed, a new frame with that name will be created, until there are `instance-limit' of them. If instance-limit is 0, then a new frame will be created each time. @@ -1791,7 +1791,7 @@ If instance-limit is 0, then a new frame If a buffer is already displayed in a frame, then `instance-limit' is ignored, and that frame is used. = -If the frame-name symbol has a 'frame-defaults property, then that is +If the frame-name symbol has a `frame-defaults' property, then that is prepended to the `default-frame-plist' when creating a frame for the first time. = = = = 1.16 +2 -2 XEmacs/xemacs/lisp/toolbar.el = Index: toolbar.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/toolbar.el,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- toolbar.el 2002/03/13 08:52:09 1.15 +++ toolbar.el 2005/11/13 07:39:28 1.16 @@ -146,7 +146,7 @@ or through the Options menu." ;; (defun press-toolbar-button (event) "Press a toolbar button. This only changes its appearance. -Call function stored in `toolbar-blank-press-function,' if any, with EVE= NT as +Call function stored in `toolbar-blank-press-function', if any, with EVE= NT as an argument if press is over a blank area of the toolbar." (interactive "_e") (setq this-command last-command) @@ -165,7 +165,7 @@ an argument if press is over a blank are = (defun release-and-activate-toolbar-button (event) "Release a toolbar button and activate its callback. -Call function stored in `toolbar-blank-release-function,' if any, with E= VENT +Call function stored in `toolbar-blank-release-function', if any, with E= VENT as an argument if release is over a blank area of the toolbar." (interactive "_e") (or (button-release-event-p event) = = = 1.9 +5 -5 XEmacs/xemacs/lisp/glyphs.el = Index: glyphs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/glyphs.el,v retrieving revision 1.8 retrieving revision 1.9 diff -u -p -r1.8 -r1.9 --- glyphs.el 2005/02/22 23:38:50 1.8 +++ glyphs.el 2005/11/13 07:39:28 1.9 @@ -584,7 +584,7 @@ If PROPERTY is a built-in property, the = = HOW-TO-ADD should be either nil or one of the symbols `prepend', `append', `remove-tag-set-prepend', `remove-tag-set-append', `remove-l= ocale', - `remove-locale-type', or `remove-all.' See `copy-specifier' and + `remove-locale-type', or `remove-all'. See `copy-specifier' and `add-spec-to-specifier' for a description of what each of these means. Most of the time, you do not need to worry about this argument; the default behavior usually is fine. @@ -695,7 +695,7 @@ If SPEC is an alist, LOCALE must be omit specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to `global.' + will be added, and defaults to `global'. = See `set-glyph-property' for more information." ; (interactive (glyph-interactive "image")) @@ -733,7 +733,7 @@ If SPEC is an alist, LOCALE must be omit specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to `global.' + will be added, and defaults to `global'. = See `set-glyph-property' for more information." ; (interactive (glyph-interactive "contrib-p")) @@ -772,7 +772,7 @@ If SPEC is an alist, LOCALE must be omit specifier object, LOCALE can be a locale, a locale type, `all', or nil; see `copy-specifier' for its semantics. Otherwise LOCALE specifies the locale under which the specified instantiator(s) - will be added, and defaults to `global.' + will be added, and defaults to `global'. = See `set-glyph-property' for more information." ; (interactive (glyph-interactive "baseline")) @@ -1133,7 +1133,7 @@ If unspecified in a particular domain, ` (set-glyph-image (symbol-value harg) value)))) = ;; It might or might not be garbage, but it's rude. Make these -;; `compatible' instead of `obsolete.' -slb +;; `compatible' instead of `obsolete'. -slb (defun define-obsolete-pointer-glyph (old new) (define-compatible-variable-alias old new) (dontusethis-set-symbol-value-handler = = = 1.15 +10 -4 XEmacs/xemacs/lisp/specifier.el = Index: specifier.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/specifier.el,v retrieving revision 1.14 retrieving revision 1.15 diff -u -p -r1.14 -r1.15 --- specifier.el 2004/09/22 02:05:51 1.14 +++ specifier.el 2005/11/13 07:39:28 1.15 @@ -1,7 +1,7 @@ ;;; specifier.el --- Lisp interface to specifiers = ;; Copyright (C) 1997 Free Software Foundation, Inc. -;; Copyright (C) 1995, 1996, 2000, 2002 Ben Wing. +;; Copyright (C) 1995, 1996, 2000, 2002, 2005 Ben Wing. = ;; Author: Ben Wing ;; Keywords: internal, dumped @@ -55,7 +55,7 @@ Optional DONT-CANONICALIZE, if non-nil, = = If optional MS-LOCALE is a locale, MS-FUNC will be called for that local= e. If MS-LOCALE is a locale type, MS-FUNC will be mapped over all locales o= f that -type. If MS-LOCALE is 'all or nil, MS-FUNC will be mapped over all loca= les in +type. If MS-LOCALE is `all' or nil, MS-FUNC will be mapped over all loc= ales in MS-SPECIFIER. = Optional MS-TAG-SET and MS-EXACT-P are as in `specifier-spec-list'. @@ -306,7 +306,7 @@ otherwise return t." VALUE may be any of the values accepted by `canonicalize-spec-list', inc= luding = -- an instantiator (either a Lisp object which will be returned when the - specifier is instanced, or a Lisp object that can be instantiated to + specifier is instantiated, or a Lisp object that can be instantiated = to produce an opaque value: eg, a font name (string) can be used for a f= ont specifier, but an instance will be a font object) -- a list of instantiators @@ -330,7 +330,7 @@ that function. Note that a VALUE of `nil' is either illegal or will be treated as a val= ue of `nil'; it does not remove existing specifications. Use `remove-specifie= r' for that. N.B. `remove-specifier' defaults to removing all specifications, = not -just the 'global one! +just the `global' one! = Warning: this function is inherently heuristic, and should not be relied= on to properly resolve ambiguities, when specifier instantiators can be lists @@ -410,6 +410,12 @@ in such a way as to avoid any such ambig (canonicalize-spec-list nval (specifier-type specifier)) how-to-add)))) value) + +;; #### Misnamed and wrong behavior. Should operate on INSTANTIATORS, n= ot +;; instances. Need to come up with clean and general functions for +;; modifying a specifier. New `specifier-instantiator' may help. +;; #### Also need `instantiator-to-instance', a convenient version of +;; `specifier-instance-from-inst-list'. = (defun modify-specifier-instances (specifier func &optional args force d= efault locale tag-set) = = = 1.16 +1 -1 XEmacs/xemacs/lisp/hyper-apropos.el = Index: hyper-apropos.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/hyper-apropos.el,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- hyper-apropos.el 2004/09/15 08:30:27 1.15 +++ hyper-apropos.el 2005/11/13 07:39:28 1.16 @@ -208,7 +208,7 @@ you can get the full output by using \\[ (define-key map "e" 'hyper-apropos-eliminate-keyword) map) "Keybindings for the *Hyper Apropos* buffer. -This map inherits from `hyper-apropos-help-map.'") +This map inherits from `hyper-apropos-help-map'.") (define-obsolete-variable-alias 'hypropos-map 'hyper-apropos-map) = = = = 1.32 +1 -1 XEmacs/xemacs/lisp/mouse.el = Index: mouse.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/mouse.el,v retrieving revision 1.31 retrieving revision 1.32 diff -u -p -r1.31 -r1.32 --- mouse.el 2005/01/26 04:47:14 1.31 +++ mouse.el 2005/11/13 07:39:28 1.32 @@ -406,7 +406,7 @@ If any function returns non-nil, the rem called. = Note that most applications should take action when the mouse is -released, not when it is pressed.'") +released, not when it is pressed.") = (defvar mouse-track-drag-hook nil "Function or functions called when the user drags the mouse. = = = 1.75 +1 -1 XEmacs/xemacs/lisp/files.el = Index: files.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/files.el,v retrieving revision 1.74 retrieving revision 1.75 diff -u -p -r1.74 -r1.75 --- files.el 2005/04/08 14:07:00 1.74 +++ files.el 2005/11/13 07:39:29 1.75 @@ -2478,7 +2478,7 @@ The extension, in a file name, is the pa "Return FILENAME's final \"extension\". The extension, in a file name, is the part that follows the last `.'. Return nil for extensionless file names such as `foo'. -Return the empty string for file names such as `foo.'. +Return the empty string for file names such as `foo'. = If PERIOD is non-nil, then the returned value includes the period that delimits the extension, and if FILENAME has no extension, = = =20 --===============3902983052931833902==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:13 2017 Content-Type: multipart/mixed; boundary="===============0002814547161336995==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/modules/common ... Date: 2005-11-13 10:39:42 +0000 Message-ID: <20051113103942.21656.qmail@sunsite.dk> --===============0002814547161336995== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:39:42 Modified: xemacs/modules/common Makefile.common Log: fix up clean targets to delete .elc's as necessary = dynodump/Makefile.in.in: Add targets distclean-noconfig, realclean-noconf= ig, extraclean-noconfig. Do some refactoring for cleanliness. = Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extra= clean-noconfig. *-noconfig targets are like the base targets they're based off of, but don't delete Makefiles and certain other files needed to rebuild the Makefiles as necessary. Refactor things to be more consistent. Top-level `elcclean' is an alias for `realclean-noconfig' and is used by target `beta'. `realclean-noconfig' (and, by extension, `realclean' and `extraclean') remove the .elc files. = Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extra= clean-noconfig. Do some refactoring for cleanliness. = Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extra= clean-noconfig. Do some refactoring for cleanliness. = Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extra= clean-noconfig. Do some refactoring for cleanliness. = Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extra= clean-noconfig. Do some refactoring for cleanliness. = Makefile: Add targets distclean-noconfig, realclean-noconfig, extraclean-= noconfig. Do some refactoring for cleanliness. = common/Makefile.common: Add targets distclean-noconfig, realclean-noconfi= g, extraclean-noconfig. Do some refactoring for cleanliness. Put in some magic cookies in comments so this file gets read as a make file by XEmacs. = Revision Changes Path 1.50 +9 -0 XEmacs/xemacs/modules/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.49 retrieving revision 1.50 diff -u -p -r1.49 -r1.50 --- ChangeLog 2005/11/02 03:33:10 1.49 +++ ChangeLog 2005/11/13 10:39:28 1.50 @@ -1,3 +1,12 @@ +2005-11-13 Ben Wing + + * common/Makefile.common: + * common/Makefile.common (.PHONY): + * common/Makefile.common (install): + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. Put in some magic cookies in + comments so this file gets read as a make file by XEmacs. + 2005-11-02 Marcus Crestani = * canna/.cvsignore: New. = = = 1.322 +6 -0 XEmacs/xemacs/man/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.321 retrieving revision 1.322 diff -u -p -r1.321 -r1.322 --- ChangeLog 2005/11/13 07:29:31 1.321 +++ ChangeLog 2005/11/13 10:39:29 1.322 @@ -1,5 +1,11 @@ 2005-11-13 Ben Wing = + * Makefile: + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + +2005-11-13 Ben Wing + * internals/internals.texi (Top): * internals/internals.texi (CVS Techniques): * internals/internals.texi (Creating a Branch): = = = 1.35 +8 -2 XEmacs/xemacs/man/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/Makefile,v retrieving revision 1.34 retrieving revision 1.35 diff -u -p -r1.34 -r1.35 --- Makefile 2005/01/31 20:08:47 1.34 +++ Makefile 2005/11/13 10:39:30 1.35 @@ -1,6 +1,7 @@ # Makefile for man subdirectory in XEmacs # Copyright (C) 1995 Board of Trustees, University of Illinois # Copyright (C) 1994, 1995 Sun Microsystems. +# Copyright (C) 2005 Ben Wing. = # This file is part of XEmacs. = @@ -335,14 +336,19 @@ new-users-guide.pdf: $(new-users-guide-s pdf: $(pdf_files) = .PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: $(RM) *.toc *.aux *.log *.op *.cp *.cps *.fn *.fns $(RM) *.ky *.kys *.pg *.pgs *.tp *.tps *.vr *.vrs clean: mostlyclean $(RM) core *.dvi *.pdf -distclean: clean +distclean-noconfig: clean +distclean: distclean-noconfig +realclean-noconfig: distclean-noconfig realclean: distclean -extraclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* */*~ */\#* +extraclean: realclean $(RM) *~ \#* */*~ */\#* = ########################################################################= #### = = = 1.39 +6 -0 XEmacs/xemacs/netinstall/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/ChangeLog,v retrieving revision 1.38 retrieving revision 1.39 diff -u -p -r1.38 -r1.39 --- ChangeLog 2005/11/07 08:49:24 1.38 +++ ChangeLog 2005/11/13 10:39:31 1.39 @@ -1,3 +1,9 @@ +2005-11-13 Ben Wing + + * Makefile.in.in: + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + 2005-11-06 Stephen J. Turnbull = * ChangeLog: Nuke useless CVS keyword. = = = 1.6 +14 -9 XEmacs/xemacs/netinstall/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/Makefile.in.in,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- Makefile.in.in 2001/12/20 05:49:40 1.5 +++ Makefile.in.in 2005/11/13 10:39:31 1.6 @@ -1,4 +1,5 @@ ## Copyright (c) 2000, Red Hat, Inc. +## Copyright (C) 2005 Ben Wing. ## ## This program is free software; you can redistribute it and/or mod= ify ## it under the terms of the GNU General Public License as published= by @@ -199,18 +200,22 @@ inilex.c : inilex.l iniparse.h mv lex.yy.c inilex.c = .PHONY: mostlyclean clean distclean realclean extraclean - +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: - $(RM) *.o *.i *.ini core $(PROGS) - + $(RM) *.o *.i *.ini core clean: mostlyclean - -distclean: clean - $(RM) GNUmakefile Makefile Makefile.in TAGS - + $(RM) $(PROGS) +distclean-noconfig: clean + $(RM) TAGS +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in +realclean-noconfig: distclean-noconfig realclean: distclean - -extraclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* +extraclean: realclean $(RM) *~ \#* = choose.o: choose.cc win32.h dialog.h resource.h state.h ini.h concat.h \ = = = 1.198 +6 -0 XEmacs/xemacs/lib-src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/ChangeLog,v retrieving revision 1.197 retrieving revision 1.198 diff -u -p -r1.197 -r1.198 --- ChangeLog 2005/10/26 15:13:33 1.197 +++ ChangeLog 2005/11/13 10:39:32 1.198 @@ -1,3 +1,9 @@ +2005-11-13 Ben Wing + + * Makefile.in.in: + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. = = = 1.48 +12 -4 XEmacs/xemacs/lib-src/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/Makefile.in.in,v retrieving revision 1.47 retrieving revision 1.48 diff -u -p -r1.47 -r1.48 --- Makefile.in.in 2005/04/08 23:10:36 1.47 +++ Makefile.in.in 2005/11/13 10:39:32 1.48 @@ -1,6 +1,7 @@ ## Makefile for lib-src subdirectory in XEmacs. ## Copyright (C) 1985, 1987, 1988, 1993, 1994 Free Software Foundation= , Inc. ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. +## Copyright (C) 2005 Ben Wing. = ## This file is part of XEmacs. = @@ -270,15 +271,22 @@ uninstall: cd ${archlibdir} && $(RM) ${PRIVATE_INSTALLABLES} = .PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: $(RM) *.o *.i core clean: mostlyclean $(RM) ${EXES} *.exe -distclean: clean - $(RM) DOC *.tab.c *.tab.h TAGS ellcc.h - $(RM) GNUmakefile Makefile Makefile.in blessmail config.values +distclean-noconfig: clean + $(RM) DOC *.tab.c *.tab.h TAGS ellcc.h blessmail config.values +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in +realclean-noconfig: distclean-noconfig realclean: distclean -extraclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* +extraclean: realclean $(RM) *~ \#* = ## Test the contents of the directory. = = = 1.73 +7 -0 XEmacs/xemacs/lwlib/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.72 retrieving revision 1.73 diff -u -p -r1.72 -r1.73 --- ChangeLog 2005/11/10 15:47:33 1.72 +++ ChangeLog 2005/11/13 10:39:34 1.73 @@ -1,3 +1,10 @@ +2005-11-13 Ben Wing + + * Makefile.in.in: + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + + 2005-11-08 Marcus Crestani = * xlwgauge.c (GaugeInit): = = = 1.19 +12 -3 XEmacs/xemacs/lwlib/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/Makefile.in.in,v retrieving revision 1.18 retrieving revision 1.19 diff -u -p -r1.18 -r1.19 --- Makefile.in.in 2004/09/20 19:19:16 1.18 +++ Makefile.in.in 2005/11/13 10:39:34 1.19 @@ -3,6 +3,7 @@ ## Copyright (C) 1995 Tinker Systems and INS Engineering Corp. ## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. +## Copyright (C) 2005 Ben Wing. = ## This file is part of the Lucid Widget Library. = @@ -82,13 +83,21 @@ liblw.a: $(objs) @-test -n "$(RANLIB)" && $(RANLIB) $@ = .PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: $(RM) liblw.a liblw_pure_*.a *.o *.i core clean: mostlyclean -distclean: clean - $(RM) GNUmakefile Makefile Makefile.in config.h TAGS +distclean-noconfig: clean + $(RM) config.h TAGS +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in +realclean-noconfig: distclean-noconfig realclean: distclean -extraclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* +extraclean: realclean $(RM) *~ \#* = CONFIG_H =3D ../src/config.h config.h = = = 1.883 +6 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.882 retrieving revision 1.883 diff -u -p -r1.882 -r1.883 --- ChangeLog 2005/11/07 08:49:25 1.882 +++ ChangeLog 2005/11/13 10:39:35 1.883 @@ -1,3 +1,9 @@ +2005-11-13 Ben Wing + + * Makefile.in.in (distclean-noconfig): + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + 2005-11-07 Stephen J. Turnbull = * inline.c: Include modules headers regardless of HAVE_SHLIB. = = = 1.120 +11 -4 XEmacs/xemacs/src/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Makefile.in.in,v retrieving revision 1.119 retrieving revision 1.120 diff -u -p -r1.119 -r1.120 --- Makefile.in.in 2005/10/21 15:48:42 1.119 +++ Makefile.in.in 2005/11/13 10:39:36 1.120 @@ -3,7 +3,7 @@ ## Copyright (C) 1994, 1995 Board of Trustees, University of Illinois ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. ## Copyright (C) 1998, 1999 J. Kean Johnston. -## Copyright (C) 2001, 2002, 2003 Ben Wing. +## Copyright (C) 2001, 2002, 2003, 2005 Ben Wing. = ## This file is part of XEmacs. = @@ -1005,6 +1005,7 @@ covmacs: $(temacs_deps) ###################### Clean = .PHONY: mostlyclean clean distclean realclean versionclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: $(RM) *.o *.i *.rtl *.ln core \ temacs puremacs quantmacs covmacs rtcmacs temacs.exe \ @@ -1020,11 +1021,17 @@ clean: mostlyclean versionclean $(SRCMODULES)/auto-autoloads.el* $(SRCMODULES)/custom-load.el* ## This is used in making a distribution. ## Do not use it on development directories! -distclean: clean +distclean-noconfig: clean $(RM) config.h paths.h Emacs.ad.h $(LISP)/finder-inf.el* \ - GNUmakefile Makefile Makefile.in TAGS $(DUMP_TARGET) $(RAW_EXE) \ - xemacs.def xemacs.def.in + TAGS xemacs.def xemacs.def.in +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in +realclean-noconfig: distclean-noconfig realclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* m/*~ m/\#* s/*~ s/\#* extraclean: realclean $(RM) *~ \#* m/*~ m/\#* s/*~ s/\#* = = = = 1.468 +27 -0 XEmacs/xemacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.467 retrieving revision 1.468 diff -u -p -r1.467 -r1.468 --- ChangeLog 2005/11/13 07:31:55 1.467 +++ ChangeLog 2005/11/13 10:39:39 1.468 @@ -1,5 +1,32 @@ 2005-11-13 Ben Wing = + * dynodump/Makefile.in.in: + * dynodump/Makefile.in.in (.PHONY): + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + Do some refactoring for cleanliness. + +2005-11-13 Ben Wing + + * Makefile.in.in: + * Makefile.in.in (beta): + * Makefile.in.in (FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean= FRC.extraclean FRC.tags): + * Makefile.in.in (.PHONY): + * Makefile.in.in (top-mostlyclean): + * Makefile.in.in (mostlyclean): + * Makefile.in.in (top-clean): + * Makefile.in.in (clean): + * Makefile.in.in (distclean): + * Makefile.in.in (realclean): + Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. + *-noconfig targets are like the base targets they're based off of, but + don't delete Makefiles and certain other files needed to rebuild the + Makefiles as necessary. Refactor things to be more consistent. + Top-level `elcclean' is an alias for `realclean-noconfig' and is used + by target `beta'. `realclean-noconfig' (and, by extension, `realclean' + and `extraclean') remove the .elc files. + +2005-11-13 Ben Wing + * configure.ac (win32 native sound): Dependent on operating system, not on window system. = = = = 1.27 +58 -24 XEmacs/xemacs/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/Makefile.in.in,v retrieving revision 1.26 retrieving revision 1.27 diff -u -p -r1.26 -r1.27 --- Makefile.in.in 2005/10/04 17:51:13 1.26 +++ Makefile.in.in 2005/11/13 10:39:39 1.27 @@ -1,4 +1,4 @@ -## Copyright (C) 2003 Ben Wing. +## Copyright (C) 2003, 2005 Ben Wing. = ## DIST: This is the distribution Makefile for XEmacs. configure can ## DIST: make most of the changes to this file you might want, so try @@ -217,9 +217,9 @@ INSTALL_DATA =3D @INSTALL_DATA@ = ## =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D Targets =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D = -## Subdirectories to make recursively. `lisp' is not included -## because the compiled lisp files are part of the distribution -## and you cannot remake them without installing XEmacs first. +## Subdirectories to make recursively. `lisp' is not included currently; +## rebuilding the compiled lisp files is done in the `src' make and requ= ires +## building XEmacs first. MAKE_SUBDIR =3D @MAKE_SUBDIR@ = ## Subdirectories that can be made recursively. @@ -252,7 +252,7 @@ all: Makefile ${GENERATED_HEADERS} ${MAK .PHONY: ${SUBDIR} all beta = ## Convenience target for XEmacs beta testers -beta: clean all +beta: elcclean all = ## Convenience target for XEmacs maintainers ## This would run `make-xemacsdist' if I were really confident that ever= ything @@ -515,21 +515,27 @@ mkdir: FRC.mkdir ## Some makes seem to remember that they've built something called FRC, ## so you can only use a given FRC once per makefile. FRC FRC.src.paths.h FRC.mkdir FRC.dump-elcs FRC.info: -FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.tags: +FRC.mostlyclean FRC.clean FRC.distclean FRC.realclean FRC.extraclean FRC= .tags: +FRC.distclean-noconfig FRC.realclean-noconfig FRC.extraclean-noconfig: = ## =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Cleaning= up and miscellanea =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D = -.PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: mostlyclean clean distclean realclean extraclean elcclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig +.PHONY: top-mostlyclean top-clean top-distclean top-realclean top-extrac= lean +.PHONY: top-distclean-noconfig top-realclean-noconfig top-extraclean-noc= onfig = ## `mostlyclean' ## Like `clean', but may refrain from deleting a few files that peo= ple ## normally don't want to recompile. For example, the `mostlyclean' ## target for GCC does not delete `libgcc.a', because recompiling it ## is rarely necessary and takes a lot of time. -mostlyclean: FRC.mostlyclean - for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done +top-mostlyclean: FRC.mostlyclean $(RM) core = +mostlyclean: top-mostlyclean + for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done + ## `clean' ## Delete all files from the current directory that are normally ## created by building the program. Don't delete the files that @@ -542,28 +548,50 @@ mostlyclean: FRC.mostlyclean ## Remove the generated load files here; they cause lots of problems ## when they don't work right. (beta can't depend on distclean, wh= ich ## removes necessary files generated by configure.) -clean: FRC.clean - for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done +top-clean: FRC.clean $(RM) core lisp/auto-autoloads.el* lisp/custom-load.el* $(RM) lisp/mule/auto-autoloads.el* lisp/mule/custom-load.el* $(RM) modules/auto-autoloads.el* modules/custom-load.el* = +clean: top-mostlyclean top-clean + for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done + +## `distclean-noconfig' +## Like `distclean' but don't delete files created by `configure'. +top-distclean-noconfig: FRC.distclean-noconfig + $(RM) TAGS .sbinit lock/* lisp/finder-inf.el* + $(RM) -r site-packages xemacs-packages mule-packages site-lisp + +distclean-noconfig: top-mostlyclean top-clean top-distclean-noconfig + for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done + ## `distclean' ## Delete all files from the current directory that are created by ## configuring or building the program. If you have unpacked the ## source and built the program without creating any other files, ## `make distclean' should leave only the files that were in the ## distribution. -top_distclean=3D\ - $(RM) config.status config.log confdefs.h config-tmp-* build-install In= stallation ; \ - $(RM) TAGS .sbinit lock/* GNUmakefile Makefile Makefile.in ; \ - $(RM) lisp/finder-inf.el* Installation.el Installation.elc ; \ - $(RM) -r site-packages xemacs-packages mule-packages site-lisp +top-distclean: FRC.distclean + $(RM) config.status config.log confdefs.h config-tmp-* build-install In= stallation + $(RM) GNUmakefile Makefile Makefile.in + $(RM) Installation.el Installation.elc = -distclean: FRC.distclean +distclean: top-mostlyclean top-clean top-distclean-noconfig top-distclean for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done - -${top_distclean} = +## `realclean-noconfig' +## Delete everything that can be reconstructed by `make'. Don't de= lete +## anything requiring reconfiguration. +top-realclean-noconfig: FRC.realclean-noconfig + $(RM) *.elc lisp/*.elc lisp/mule/*.elc lisp/term/*.elc modules/*.elc + +realclean-noconfig: top-mostlyclean top-clean top-distclean-noconfig top= -realclean-noconfig + for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done + +top-realclean: FRC.realclean + +elcclean: realclean-noconfig + ## `realclean' ## Delete everything from the current directory that can be ## reconstructed with this Makefile. This typically includes @@ -575,19 +603,25 @@ distclean: FRC.distclean ## Makefile. More generally, `make realclean' should not delete ## anything that needs to exist in order to run `configure' and then ## begin to build the program. -realclean: FRC.realclean +realclean: top-mostlyclean top-clean top-distclean-noconfig top-distclea= n top-realclean-noconfig top-realclean for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done - -${top_distclean} - $(RM) TAGS = +## `extraclean-noconfig' +## Like `extraclean' but don't delete anything requiring reconfigur= ation. +top-extraclean-noconfig: FRC.extraclean-noconfig + $(RM) *~ \#* + +extraclean-noconfig: top-mostlyclean top-clean top-distclean-noconfig to= p-realclean-noconfig top-extraclean-noconfig + for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done + ## This doesn't actually appear in the coding standards, but Karl ## says GCC supports it, and that's where the configuration part of ## the coding standards seem to come from. It's like distclean, but ## it deletes backup and autosave files too. -extraclean: +top-extraclean: FRC.extraclean + +extraclean: top-mostlyclean top-clean top-distclean-noconfig top-distcle= an top-realclean-noconfig top-realclean top-extraclean-noconfig top-extracl= ean for d in $(SUBDIR); do (cd ./$$d && $(MAKE) $(RECURSIVE_MAKE_ARGS) $@);= done - $(RM) *~ \#* - -${top_distclean} = ## Unlocking and relocking. The idea of these productions is to reduce ## hassles when installing an incremental tar of XEmacs. Do `make unloc= k' = = = 1.13 +11 -2 XEmacs/xemacs/dynodump/Makefile.in.in = Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/dynodump/Makefile.in.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- Makefile.in.in 2001/04/12 18:20:43 1.12 +++ Makefile.in.in 2005/11/13 10:39:40 1.13 @@ -1,6 +1,7 @@ ## Makefile for dynodump subdirectory in XEmacs ## Copyright (C) 1995 Board of Trustees, University of Illinois ## Copyright (C) 1996, 1997 Sun Microsystems, Inc. +## Copyright (C) 2005 Ben Wing. = ## This file is part of XEmacs. = @@ -75,12 +76,20 @@ uninit.o: ${srcdir}/$(ARCH)/uninit.c $(CC) -c $(ALL_CFLAGS) ${srcdir}/$(ARCH)/uninit.c = .PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig mostlyclean: $(RM) *.o *.i core clean: mostlyclean $(RM) *.so *.so.1 -distclean: clean - $(RM) GNUmakefile Makefile Makefile.in TAGS +distclean-noconfig: clean + $(RM) TAGS +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in +realclean-noconfig: distclean-noconfig realclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* extraclean: realclean $(RM) *~ \#* = = = 1.11 +26 -8 XEmacs/xemacs/modules/common/Makefile.common = Index: Makefile.common =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/common/Makefile.common,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- Makefile.common 2004/11/08 15:14:52 1.10 +++ Makefile.common 2005/11/13 10:39:41 1.11 @@ -1,5 +1,6 @@ ## Common Makefile section for modules in XEmacs. ## Copyright (C) 2002 Jerry James. +## Copyright (C) 2005 Ben Wing. = ## This file is part of XEmacs. = @@ -62,7 +63,7 @@ LIBSTDCPP=3D@LIBSTDCPP@ IMPORT_LIB=3D../../src/xemacs-import.a #endif = -.PHONY: clean distclean install +.PHONY: install all: $(OBJECT_TO_BUILD) = .c.o: @@ -77,13 +78,30 @@ $(MODNAME)_i.c: $(SRCS) --mod-name=3D$(MODNAME) --mod-version=3D$(MODVER) \ --mod-title=3D$(MODTITLE) $(SRC_SRCS) = -clean: - $(RM) $(MODNAME).ell $(OBJS) $(MODNAME)_i.* *~ +.PHONY: mostlyclean clean distclean realclean extraclean +.PHONY: distclean-noconfig realclean-noconfig extraclean-noconfig +mostlyclean: + $(RM) $(OBJS) $(MODNAME)_i.* core +clean: mostlyclean + $(RM) $(MODNAME).ell +distclean-noconfig: clean + $(RM) config.* TAGS +## This is used in making a distribution. +## Do not use it on development directories! +distclean: distclean-noconfig + $(RM) GNUmakefile Makefile Makefile.in configure +realclean-noconfig: distclean-noconfig +realclean: distclean +extraclean-noconfig: realclean-noconfig + $(RM) *~ \#* +extraclean: realclean + $(RM) *~ \#* = -distclean: clean - $(RM) Makefile config.* configure - -extraclean: distclean - install: $(OBJECT_TO_BUILD) $(INSTALL_PROGRAM) $< $(INSTALLPATH) + +## +## Local Variables: +## mode: makefile +## End: +## = = =20 --===============0002814547161336995==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============6527830664754828204==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/src, print.c ... Date: 2005-11-13 10:48:07 +0000 Message-ID: <20051113104807.22741.qmail@sunsite.dk> --===============6527830664754828204== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:48:06 Modified: xemacs/src ChangeLog alloc.c events.c lisp.h lrecord.h print.c text.h Log: further error-checking, etc. = alloc.c, lrecord.h: Move around the handling of setting of lheader->uid s= o it's in set_lheader_implementation() -- that way, even non-MC-ALLOC builds get useful uid's in their bare lrecords. Redo related code for strings so the non-ascii count that is stored in the uid isn't hosed. events.c: Save and restore the uid around event zeroing/deadbeefing. lisp.h: Set the correct value of MAX_STRING_ASCII_BEGIN under MC_ALLOC. lisp.h: rearrange the basic code handling ints and chars. basic int stuf= f goes first, followed by basic char stuff, followed in turn by stuff that mixes ints and chars. this is required since some basic defn's have become inline functions. XCHAR and CHARP have additional error-checking in that they check to make sure that the value in question is not just a character but a valid character (i.e. its numeric value is valid). print.c: debug_p4 now has a useful UID in all cases and uses it; but it a= lso prints the raw header address (previously, you just got one of them). text.h: some basic char defn's that belonged in lisp.h have been moved th= ere. valid_ichar_p() is moved too since the inline functions need it. = Revision Changes Path 1.884 +51 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.883 retrieving revision 1.884 diff -u -p -r1.883 -r1.884 --- ChangeLog 2005/11/13 10:39:35 1.883 +++ ChangeLog 2005/11/13 10:48:01 1.884 @@ -1,5 +1,56 @@ 2005-11-13 Ben Wing = + * alloc.c: + * alloc.c (alloc_lrecord): + * alloc.c (noseeum_alloc_lrecord): + * alloc.c (make_uninit_string): + * alloc.c (Fmake_string): + * alloc.c (make_string_nocopy): + * lrecord.h: + * lrecord.h (struct lrecord_header): + * lrecord.h (set_lheader_implementation): + Move around the handling of setting of lheader->uid so it's in + set_lheader_implementation() -- that way, even non-MC-ALLOC builds + get useful uid's in their bare lrecords. Redo related code for + strings so the non-ascii count that is stored in the uid isn't hosed. + = + * events.c: + * events.c (deinitialize_event): + * events.c (zero_event): + Save and restore the uid around event zeroing/deadbeefing. + = + * lisp.h: + Set the correct value of MAX_STRING_ASCII_BEGIN under MC_ALLOC. + = + * lisp.h (ZEROP): + * lisp.h (XINT): + * lisp.h (CHECK_INT): + * lisp.h (CONCHECK_INT): + * lisp.h (NATNUMP): + * lisp.h (CHECK_NATNUM): + * lisp.h (CONCHECK_NATNUM): + * lisp.h (XCHAR): + * lisp.h (XCHAR_OR_INT): + * lisp.h (CHAR_INTP): + rearrange the basic code handling ints and chars. basic int stuff goes + first, followed by basic char stuff, followed in turn by stuff that + mixes ints and chars. this is required since some basic defn's have + become inline functions. + + XCHAR and CHARP have additional error-checking in that they check to ma= ke + sure that the value in question is not just a character but a valid + character (i.e. its numeric value is valid). + = + * print.c: + * print.c (debug_p4): + debug_p4 now has a useful UID in all cases and uses it; but it also pri= nts + the raw header address (previously, you just got one of them). + * text.h: + some basic char defn's that belonged in lisp.h have been moved there. + valid_ichar_p() is moved too since the inline functions need it. + +2005-11-13 Ben Wing + * Makefile.in.in (distclean-noconfig): Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. = = = 1.119 +7 -13 XEmacs/xemacs/src/alloc.c = Index: alloc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/alloc.c,v retrieving revision 1.118 retrieving revision 1.119 diff -u -p -r1.118 -r1.119 --- alloc.c 2005/10/25 08:32:46 1.118 +++ alloc.c 2005/11/13 10:48:02 1.119 @@ -185,7 +185,7 @@ int garbage_collection_messages; EMACS_INT gc_generation_number[1]; = /* This is just for use by the printer, to allow things to print uniquel= y */ -static int lrecord_uid_counter; +int lrecord_uid_counter; = /* Nonzero when calling certain hooks or doing other things where a GC would be bad */ @@ -606,7 +606,6 @@ alloc_lrecord (Bytecount size, lheader =3D (struct lrecord_header *) mc_alloc (size); gc_checking_assert (LRECORD_FREE_P (lheader)); set_lheader_implementation (lheader, implementation); - lheader->uid =3D lrecord_uid_counter++; #ifdef ALLOC_TYPE_STATS inc_lrecord_stats (size, lheader); #endif /* ALLOC_TYPE_STATS */ @@ -628,7 +627,6 @@ noseeum_alloc_lrecord (Bytecount size, lheader =3D (struct lrecord_header *) mc_alloc (size); gc_checking_assert (LRECORD_FREE_P (lheader)); set_lheader_implementation (lheader, implementation); - lheader->uid =3D lrecord_uid_counter++; #ifdef ALLOC_TYPE_STATS inc_lrecord_stats (size, lheader); #endif /* ALLOC_TYPE_STATS */ @@ -2484,6 +2482,10 @@ make_uninit_string (Bytecount length) set_lheader_implementation (&s->u.lheader, &lrecord_string); #endif /* not MC_ALLOC */ = + /* The above allocations set the UID field, which overlaps with the + ascii-length field, to some non-zero value. We need to zero it. */ + XSET_STRING_ASCII_BEGIN (wrap_string (s), 0); + set_lispstringp_data (s, BIG_STRING_FULLSIZE_P (fullsize) ? allocate_big_string_chars (length + 1) : allocate_string_chars_struct (wrap_string (s), @@ -2712,16 +2714,6 @@ LENGTH must be a non-negative integer. EMACS_INT i; Ibyte *ptr =3D XSTRING_DATA (val); = -#ifdef MC_ALLOC - /* Need this for the new allocator: strings are using the uid - field for ascii_begin. The uid field is set for debugging, - but the string code assumes here that ascii_begin is always - zero, when not touched. This assumption is not true with - the new allocator, so ascii_begin has to be set to zero - here. */ - XSET_STRING_ASCII_BEGIN (val, 0); -#endif /* not MC_ALLOC */ - for (i =3D XINT (length); i; i--) { Ibyte *init_ptr =3D init_str; @@ -2872,6 +2864,8 @@ make_string_nocopy (const Ibyte *content set_lheader_implementation (&s->u.lheader, &lrecord_string); SET_C_READONLY_RECORD_HEADER (&s->u.lheader); #endif /* not MC_ALLOC */ + /* Don't need to XSET_STRING_ASCII_BEGIN() here because it happens in + init_string_ascii_begin(). */ s->plist =3D Qnil; set_lispstringp_data (s, (Ibyte *) contents); set_lispstringp_length (s, length); = = = 1.70 +9 -2 XEmacs/xemacs/src/events.c = Index: events.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/events.c,v retrieving revision 1.69 retrieving revision 1.70 diff -u -p -r1.69 -r1.70 --- events.c 2005/10/25 11:16:23 1.69 +++ events.c 2005/11/13 10:48:03 1.70 @@ -1,7 +1,7 @@ /* Events: printing them, converting them to and from characters. Copyright (C) 1991, 1992, 1993, 1994 Free Software Foundation, Inc. Copyright (C) 1994, 1995 Board of Trustees, University of Illinois. - Copyright (C) 2001, 2002 Ben Wing. + Copyright (C) 2001, 2002, 2005 Ben Wing. = This file is part of XEmacs. = @@ -86,11 +86,14 @@ static void deinitialize_event (Lisp_Object ev) { Lisp_Event *event =3D XEVENT (ev); - int i; + /* Preserve the old UID for this event, for tracking it */ + unsigned int old_uid =3D event->lheader.uid; + for (i =3D 0; i < (int) (sizeof (Lisp_Event) / sizeof (int)); i++) ((int *) event) [i] =3D 0xdeadbeef; /* -559038737 base 10 */ set_lheader_implementation (&event->lheader, &lrecord_event); + event->lheader.uid =3D old_uid; set_event_type (event, dead_event); SET_EVENT_CHANNEL (event, Qnil); XSET_EVENT_NEXT (ev, Qnil); @@ -100,8 +103,12 @@ deinitialize_event (Lisp_Object ev) void zero_event (Lisp_Event *e) { + /* Preserve the old UID for this event, for tracking it */ + unsigned int old_uid =3D e->lheader.uid; + xzero (*e); set_lheader_implementation (&e->lheader, &lrecord_event); + e->lheader.uid =3D old_uid; set_event_type (e, empty_event); SET_EVENT_CHANNEL (e, Qnil); SET_EVENT_NEXT (e, Qnil); = = = 1.133 +171 -65 XEmacs/xemacs/src/lisp.h = Index: lisp.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v retrieving revision 1.132 retrieving revision 1.133 diff -u -p -r1.132 -r1.133 --- lisp.h 2005/10/24 10:07:38 1.132 +++ lisp.h 2005/11/13 10:48:03 1.133 @@ -2314,7 +2314,11 @@ struct Lisp_String }; typedef struct Lisp_String Lisp_String; = +#ifdef MC_ALLOC +#define MAX_STRING_ASCII_BEGIN ((1 << 22) - 1) +#else #define MAX_STRING_ASCII_BEGIN ((1 << 21) - 1) +#endif = DECLARE_MODULE_API_LRECORD (string, Lisp_String); #define XSTRING(x) XRECORD (x, string, Lisp_String) @@ -2559,89 +2563,146 @@ DECLARE_MODULE_API_LRECORD (marker, Lisp #define marker_next(m) ((m)->next) #define marker_prev(m) ((m)->prev) = -/*------------------------------- char ---------------------------------= */ +/*-------------------basic int (no connection to char)------------------= */ = -#define CHARP(x) (XTYPE (x) =3D=3D Lisp_Type_Char) +#define ZEROP(x) EQ (x, Qzero) = #ifdef ERROR_CHECK_TYPES = +#define XINT(x) XINT_1 (x, __FILE__, __LINE__) = + DECLARE_INLINE_HEADER ( -Ichar -XCHAR_1 (Lisp_Object obj, const Ascbyte *file, int line) +EMACS_INT +XINT_1 (Lisp_Object obj, const Ascbyte *file, int line) ) { - assert_at_line (CHARP (obj), file, line); - return XCHARVAL (obj); + assert_at_line (INTP (obj), file, line); + return XREALINT (obj); } = -#define XCHAR(x) XCHAR_1 (x, __FILE__, __LINE__) = - #else /* no error checking */ = -#define XCHAR(x) ((Ichar) XCHARVAL (x)) +#define XINT(obj) XREALINT (obj) = #endif /* no error checking */ = -#define CHECK_CHAR(x) CHECK_NONRECORD (x, Lisp_Type_Char, Qcharacterp) -#define CONCHECK_CHAR(x) CONCHECK_NONRECORD (x, Lisp_Type_Char, Qcharact= erp) +#define CHECK_INT(x) do { \ + if (!INTP (x)) \ + dead_wrong_type_argument (Qintegerp, x); \ +} while (0) = +#define CONCHECK_INT(x) do { \ + if (!INTP (x)) \ + x =3D wrong_type_argument (Qintegerp, x); \ +} while (0) = -/*------------------------------ float ---------------------------------= */ +#define NATNUMP(x) (INTP (x) && XINT (x) >=3D 0) = -/* Note: the 'unused_next_' field exists only to ensure that the - `next' pointer fits within the structure, for the purposes of the - free list. This makes a difference in the unlikely case of - sizeof(double) being smaller than sizeof(void *). */ +#define CHECK_NATNUM(x) do { \ + if (!NATNUMP (x)) \ + dead_wrong_type_argument (Qnatnump, x); \ +} while (0) = -struct Lisp_Float -{ - struct lrecord_header lheader; - union { double d; struct Lisp_Float *unused_next_; } data; -}; -typedef struct Lisp_Float Lisp_Float; +#define CONCHECK_NATNUM(x) do { \ + if (!NATNUMP (x)) \ + x =3D wrong_type_argument (Qnatnump, x); \ +} while (0) = -DECLARE_LRECORD (float, Lisp_Float); -#define XFLOAT(x) XRECORD (x, float, Lisp_Float) -#define wrap_float(p) wrap_record (p, float) -#define FLOATP(x) RECORDP (x, float) -#define CHECK_FLOAT(x) CHECK_RECORD (x, float) -#define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) +/*------------------------------- char ---------------------------------= */ = -#define float_data(f) ((f)->data.d) -#define XFLOAT_DATA(x) float_data (XFLOAT (x)) +/* NOTE: There are basic functions for converting between a character and + the string representation of a character in text.h, as well as lots of + other character-related stuff. There are other functions/macros for + working with Ichars in charset.h, for retrieving the charset of an + Ichar, the length of an Ichar when converted to text, etc. +*/ = -#define XFLOATINT(n) extract_float (n) +#ifdef MULE = -#define CHECK_INT_OR_FLOAT(x) do { \ - if (!INT_OR_FLOATP (x)) \ - dead_wrong_type_argument (Qnumberp, x); \ -} while (0) +MODULE_API int non_ascii_valid_ichar_p (Ichar ch); = -#define CONCHECK_INT_OR_FLOAT(x) do { \ - if (!INT_OR_FLOATP (x)) \ - x =3D wrong_type_argument (Qnumberp, x); \ -} while (0) +/* Return whether the given Ichar is valid. + */ = -# define INT_OR_FLOATP(x) (INTP (x) || FLOATP (x)) +DECLARE_INLINE_HEADER ( +int +valid_ichar_p (Ichar ch) +) +{ + return (! (ch & ~0xFF)) || non_ascii_valid_ichar_p (ch); +} = -/*-------------------------------- int ---------------------------------= */ +#else /* not MULE */ = -#define ZEROP(x) EQ (x, Qzero) +/* This works when CH is negative, and correctly returns non-zero only w= hen CH + is in the range [0, 255], inclusive. */ +#define valid_ichar_p(ch) (! (ch & ~0xFF)) = +#endif /* not MULE */ + #ifdef ERROR_CHECK_TYPES = -#define XCHAR_OR_INT(x) XCHAR_OR_INT_1 (x, __FILE__, __LINE__) = -#define XINT(x) XINT_1 (x, __FILE__, __LINE__) = +DECLARE_INLINE_HEADER ( +int +CHARP_1 (Lisp_Object obj, const Ascbyte *file, int line) +) +{ + if (XTYPE (obj) !=3D Lisp_Type_Char) + return 0; + assert_at_line (valid_ichar_p (XCHARVAL (obj)), file, line); + return 1; +} + +#define CHARP(x) CHARP_1 (x, __FILE__, __LINE__) = = DECLARE_INLINE_HEADER ( -EMACS_INT -XINT_1 (Lisp_Object obj, const Ascbyte *file, int line) +Ichar +XCHAR_1 (Lisp_Object obj, const Ascbyte *file, int line) ) { - assert_at_line (INTP (obj), file, line); - return XREALINT (obj); + Ichar ch; + assert_at_line (CHARP (obj), file, line); + ch =3D XCHARVAL (obj); + assert_at_line (valid_ichar_p (ch), file, line); + return ch; } = +#define XCHAR(x) XCHAR_1 (x, __FILE__, __LINE__) = + +#else /* not ERROR_CHECK_TYPES */ + +#define CHARP(x) (XTYPE (x) =3D=3D Lisp_Type_Char) +#define XCHAR(x) ((Ichar) XCHARVAL (x)) + +#endif /* (else) not ERROR_CHECK_TYPES */ + +#define CONCHECK_CHAR(x) do { \ + if (!CHARP (x)) \ + x =3D wrong_type_argument (Qcharacterp, x); \ + } while (0) + +#define CHECK_CHAR(x) do { \ + if (!CHARP (x)) \ + dead_wrong_type_argument (Qcharacterp, x); \ + } while (0) + + +DECLARE_INLINE_HEADER ( +Lisp_Object +make_char (Ichar val) +) +{ + type_checking_assert (valid_ichar_p (val)); + /* This is defined in lisp-union.h or lisp-disunion.h */ + return make_char_1 (val); +} + +/*------------------------- int-char connection ------------------------= */ + +#ifdef ERROR_CHECK_TYPES + +#define XCHAR_OR_INT(x) XCHAR_OR_INT_1 (x, __FILE__, __LINE__) = + DECLARE_INLINE_HEADER ( EMACS_INT XCHAR_OR_INT_1 (Lisp_Object obj, const Ascbyte *file, int line) @@ -2653,31 +2714,39 @@ XCHAR_OR_INT_1 (Lisp_Object obj, const A = #else /* no error checking */ = -#define XINT(obj) XREALINT (obj) #define XCHAR_OR_INT(obj) (CHARP (obj) ? XCHAR (obj) : XINT (obj)) = #endif /* no error checking */ = -#define CHECK_INT(x) do { \ - if (!INTP (x)) \ - dead_wrong_type_argument (Qintegerp, x); \ -} while (0) +/* True of X is an integer whose value is the valid integral equivalent = of a + character. */ = -#define CONCHECK_INT(x) do { \ - if (!INTP (x)) \ - x =3D wrong_type_argument (Qintegerp, x); \ -} while (0) +#define CHAR_INTP(x) (INTP (x) && valid_ichar_p (XINT (x))) = -#define NATNUMP(x) (INTP (x) && XINT (x) >=3D 0) +/* True of X is a character or an integral value that can be converted i= nto a + character. */ +#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x)) = -#define CHECK_NATNUM(x) do { \ - if (!NATNUMP (x)) \ - dead_wrong_type_argument (Qnatnump, x); \ -} while (0) +DECLARE_INLINE_HEADER ( +Ichar +XCHAR_OR_CHAR_INT (Lisp_Object obj) +) +{ + return CHARP (obj) ? XCHAR (obj) : XINT (obj); +} = -#define CONCHECK_NATNUM(x) do { \ - if (!NATNUMP (x)) \ - x =3D wrong_type_argument (Qnatnump, x); \ +/* Signal an error if CH is not a valid character or integer Lisp_Object. + If CH is an integer Lisp_Object, convert it to a character Lisp_Objec= t, + but merely by repackaging, without performing tests for char validity. + */ + +#define CHECK_CHAR_COERCE_INT(x) do { \ + if (CHARP (x)) \ + ; \ + else if (CHAR_INTP (x)) \ + x =3D make_char (XINT (x)); \ + else \ + x =3D wrong_type_argument (Qcharacterp, x); \ } while (0) = /* next three always continuable because they coerce their arguments. */ @@ -2710,6 +2779,43 @@ XCHAR_OR_INT_1 (Lisp_Object obj, const A x =3D wrong_type_argument (Qinteger_char_or_marker_p, x); \ } while (0) = +/*------------------------------ float ---------------------------------= */ + +/* Note: the 'unused_next_' field exists only to ensure that the + `next' pointer fits within the structure, for the purposes of the + free list. This makes a difference in the unlikely case of + sizeof(double) being smaller than sizeof(void *). */ + +struct Lisp_Float +{ + struct lrecord_header lheader; + union { double d; struct Lisp_Float *unused_next_; } data; +}; +typedef struct Lisp_Float Lisp_Float; + +DECLARE_LRECORD (float, Lisp_Float); +#define XFLOAT(x) XRECORD (x, float, Lisp_Float) +#define wrap_float(p) wrap_record (p, float) +#define FLOATP(x) RECORDP (x, float) +#define CHECK_FLOAT(x) CHECK_RECORD (x, float) +#define CONCHECK_FLOAT(x) CONCHECK_RECORD (x, float) + +#define float_data(f) ((f)->data.d) +#define XFLOAT_DATA(x) float_data (XFLOAT (x)) + +#define XFLOATINT(n) extract_float (n) + +#define CHECK_INT_OR_FLOAT(x) do { \ + if (!INT_OR_FLOATP (x)) \ + dead_wrong_type_argument (Qnumberp, x); \ +} while (0) + +#define CONCHECK_INT_OR_FLOAT(x) do { \ + if (!INT_OR_FLOATP (x)) \ + x =3D wrong_type_argument (Qnumberp, x); \ +} while (0) + +# define INT_OR_FLOATP(x) (INTP (x) || FLOATP (x)) = /*--------------------------- readonly objects -------------------------= */ = = = = 1.43 +10 -4 XEmacs/xemacs/src/lrecord.h = Index: lrecord.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lrecord.h,v retrieving revision 1.42 retrieving revision 1.43 diff -u -p -r1.42 -r1.43 --- lrecord.h 2005/10/26 13:01:42 1.42 +++ lrecord.h 2005/11/13 10:48:03 1.43 @@ -120,9 +120,9 @@ struct lrecord_header debugging. */ unsigned int free :1; = - /* The `uid' field is just for debugging/printing convenience. - Having this slot doesn't hurt us much spacewise, since the - bits are unused anyway. */ + /* The `uid' field is just for debugging/printing convenience. Having + this slot doesn't hurt us spacewise, since the bits are unused + anyway. (The bits are used for strings, though.) */ unsigned int uid :22; = #else /* not MC_ALLOC */ @@ -140,13 +140,17 @@ struct lrecord_header /* 1 if the object is readonly from lisp */ unsigned int lisp_readonly :1; = - unsigned int unused :21; + /* The `uid' field is just for debugging/printing convenience. Having + this slot doesn't hurt us spacewise, since the bits are unused + anyway. (The bits are used for strings, though.) */ + unsigned int uid :21; = #endif /* not MC_ALLOC */ }; = struct lrecord_implementation; int lrecord_type_index (const struct lrecord_implementation *implementat= ion); +extern int lrecord_uid_counter; = #ifdef MC_ALLOC #define set_lheader_implementation(header,imp) do { \ @@ -154,6 +158,7 @@ int lrecord_type_index (const struct lre SLI_header->type =3D (imp)->lrecord_type_index; \ SLI_header->lisp_readonly =3D 0; \ SLI_header->free =3D 0; \ + SLI_header->uid =3D lrecord_uid_counter++; \ } while (0) #else /* not MC_ALLOC */ #define set_lheader_implementation(header,imp) do { \ @@ -162,6 +167,7 @@ int lrecord_type_index (const struct lre SLI_header->mark =3D 0; \ SLI_header->c_readonly =3D 0; \ SLI_header->lisp_readonly =3D 0; \ + SLI_header->uid =3D lrecord_uid_counter++; \ } while (0) #endif /* not MC_ALLOC */ = = = = 1.57 +6 -4 XEmacs/xemacs/src/print.c = Index: print.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/print.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -p -r1.56 -r1.57 --- print.c 2005/10/25 08:32:48 1.56 +++ print.c 2005/11/13 10:48:03 1.57 @@ -1,6 +1,6 @@ /* Lisp object printing and output streams. Copyright (C) 1985, 1986, 1988, 1992-1995 Free Software Foundation, I= nc. - Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003 Ben Wing. + Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2005 Ben Wing. = This file is part of XEmacs. = @@ -2211,14 +2211,16 @@ debug_p4 (Lisp_Object obj) (EMACS_INT) header); else #ifdef MC_ALLOC - debug_out ("#<%s 0x%lx>", + debug_out ("#<%s addr=3D0x%lx uid=3D0x%lx>", LHEADER_IMPLEMENTATION (header)->name, + (EMACS_INT) header, (EMACS_INT) ((struct lrecord_header *) header)->uid); #else /* not MC_ALLOC */ - debug_out ("#<%s 0x%lx>", + debug_out ("#<%s addr=3D0x%lx uid=3D0x%lx>", LHEADER_IMPLEMENTATION (header)->name, + (EMACS_INT) header, LHEADER_IMPLEMENTATION (header)->basic_p ? - (EMACS_INT) header : + ((struct lrecord_header *) header)->uid : ((struct old_lcrecord_header *) header)->uid); #endif /* not MC_ALLOC */ } = = = 1.29 +1 -68 XEmacs/xemacs/src/text.h = Index: text.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/text.h,v retrieving revision 1.28 retrieving revision 1.29 diff -u -p -r1.28 -r1.29 --- text.h 2005/01/28 02:36:27 1.28 +++ text.h 2005/11/13 10:48:04 1.29 @@ -1,7 +1,7 @@ /* Header file for text manipulation primitives and macros. Copyright (C) 1985-1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. - Copyright (C) 2000, 2001, 2002, 2003, 2004 Ben Wing. + Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Ben Wing. = This file is part of XEmacs. = @@ -1005,73 +1005,6 @@ itext_copy_ichar (const Ibyte *src, Ibyt = #define itext_ichar_n(ptr, offset) \ itext_ichar (itext_n_addr (ptr, offset)) - - -/* ---------------------------- */ -/* Working with Ichars */ -/* ---------------------------- */ - -/* NOTE: There are other functions/macros for working with Ichars in - charset.h, for retrieving the charset of an Ichar, the length of an - Ichar when converted to text, etc. -*/ - -#ifdef MULE - -MODULE_API int non_ascii_valid_ichar_p (Ichar ch); - -/* Return whether the given Ichar is valid. - */ - -DECLARE_INLINE_HEADER ( -int -valid_ichar_p (Ichar ch) -) -{ - return (! (ch & ~0xFF)) || non_ascii_valid_ichar_p (ch); -} - -#else /* not MULE */ - -#define valid_ichar_p(ch) (! (ch & ~0xFF)) - -#endif /* not MULE */ - -DECLARE_INLINE_HEADER ( -Lisp_Object -make_char (Ichar val) -) -{ - type_checking_assert (valid_ichar_p (val)); - return make_char_1 (val); -} - -#define CHAR_INTP(x) (INTP (x) && valid_ichar_p (XINT (x))) - -#define CHAR_OR_CHAR_INTP(x) (CHARP (x) || CHAR_INTP (x)) - -DECLARE_INLINE_HEADER ( -Ichar -XCHAR_OR_CHAR_INT (Lisp_Object obj) -) -{ - return CHARP (obj) ? XCHAR (obj) : XINT (obj); -} - -/* Signal an error if CH is not a valid character or integer Lisp_Object. - If CH is an integer Lisp_Object, convert it to a character Lisp_Objec= t, - but merely by repackaging, without performing tests for char validity. - */ - -#define CHECK_CHAR_COERCE_INT(x) do { \ - if (CHARP (x)) \ - ; \ - else if (CHAR_INTP (x)) \ - x =3D make_char (XINT (x)); \ - else \ - x =3D wrong_type_argument (Qcharacterp, x); \ -} while (0) - = =0C /***********************************************************************= */ = = =20 --===============6527830664754828204==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============1003421859439138738==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/lisp ... Date: 2005-11-13 10:51:19 +0000 Message-ID: <20051113105119.22873.qmail@sunsite.dk> --===============1003421859439138738== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:51:19 Modified: xemacs/lisp ChangeLog simple.el Log: use `princ' not `prin1' for formatted debug msgs = simple.el: `foo.' -> `foo'. simple.el: princ() a formatted debug string, not prin1(), or it just look= s stupid. = Revision Changes Path 1.693 +8 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.692 retrieving revision 1.693 diff -u -p -r1.692 -r1.693 --- ChangeLog 2005/11/13 07:39:26 1.692 +++ ChangeLog 2005/11/13 10:51:17 1.693 @@ -1,5 +1,13 @@ 2005-11-13 Ben Wing = + * simple.el (log-warning-minimum-level): + * simple.el (display-warning-minimum-level): + `foo.' -> `foo'. + * simple.el (debug-print-1): + princ() a formatted debug string, not prin1(), or it just looks stupid. + +2005-11-13 Ben Wing + * derived.el: * frame.el (get-frame-for-buffer): * toolbar.el (press-toolbar-button): = = = 1.54 +3 -3 XEmacs/xemacs/lisp/simple.el = Index: simple.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/simple.el,v retrieving revision 1.53 retrieving revision 1.54 diff -u -p -r1.53 -r1.54 --- simple.el 2005/10/18 20:49:43 1.53 +++ simple.el 2005/11/13 10:51:18 1.54 @@ -4387,7 +4387,7 @@ You can also control which warnings are = basis. See `display-warning-suppressed-classes' and `log-warning-suppressed-classes'. = -For a description of the meaning of the levels, see `display-warning.'" +For a description of the meaning of the levels, see `display-warning'." :type '(choice (const emergency) (const critical) (const error) (const warning) (const alert) (const notice) (const info) (const debug)) @@ -4410,7 +4410,7 @@ You can also control which warnings are = basis. See `display-warning-suppressed-classes' and `log-warning-suppressed-classes'. = -For a description of the meaning of the levels, see `display-warning.'" +For a description of the meaning of the levels, see `display-warning'." :type '(choice (const emergency) (const critical) (const error) (const warning) (const alert) (const notice) (const info) (const debug)) @@ -4676,7 +4676,7 @@ individually in a numbered list." (error nil)))) (if fmt (progn - (prin1 (apply #'format args)) + (princ (apply #'format args)) (terpri)) (princ "--> ") (let ((i 1)) = = =20 --===============1003421859439138738==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============4827718785687309739==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/lisp ... Date: 2005-11-13 10:52:49 +0000 Message-ID: <20051113105249.22926.qmail@sunsite.dk> --===============4827718785687309739== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:52:49 Modified: xemacs/lisp ChangeLog help.el Log: don't bomb out when fun has no documentation = help.el: Don't bomb out when fun has no documentation. = Revision Changes Path 1.694 +5 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.693 retrieving revision 1.694 diff -u -p -r1.693 -r1.694 --- ChangeLog 2005/11/13 10:51:17 1.693 +++ ChangeLog 2005/11/13 10:52:47 1.694 @@ -1,5 +1,10 @@ 2005-11-13 Ben Wing = + * help.el (function-arglist): + Don't bomb out when fun has no documentation. + +2005-11-13 Ben Wing + * simple.el (log-warning-minimum-level): * simple.el (display-warning-minimum-level): `foo.' -> `foo'. = = = 1.46 +2 -1 XEmacs/xemacs/lisp/help.el = Index: help.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/help.el,v retrieving revision 1.45 retrieving revision 1.46 diff -u -p -r1.45 -r1.46 --- help.el 2005/10/10 02:45:32 1.45 +++ help.el 2005/11/13 10:52:48 1.46 @@ -1186,7 +1186,8 @@ arguments in the standard Lisp style." (nth 1 fndef)) ((subrp fndef) (let* ((doc (documentation function)) - (args (and (string-match + (args (and doc + (string-match "[\n\t ]*\narguments: ?(\\(.*\\))\n?\\'" doc) (match-string 1 doc)))) = = =20 --===============4827718785687309739==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============8609567707186334549==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/lisp ... Date: 2005-11-13 10:56:10 +0000 Message-ID: <20051113105610.23764.qmail@sunsite.dk> --===============8609567707186334549== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:56:10 Modified: xemacs/lisp ChangeLog diagnose.el Log: fix compile warnings = diagnose.el: Conditionalize `sort-numeric-fields' on when-fboundp. = Revision Changes Path 1.695 +5 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.694 retrieving revision 1.695 diff -u -p -r1.694 -r1.695 --- ChangeLog 2005/11/13 10:52:47 1.694 +++ ChangeLog 2005/11/13 10:56:09 1.695 @@ -1,5 +1,10 @@ 2005-11-13 Ben Wing = + * diagnose.el (show-memory-usage): + Conditionalize `sort-numeric-fields' on when-fboundp. + +2005-11-13 Ben Wing + * help.el (function-arglist): Don't bomb out when fun has no documentation. = = = = 1.6 +16 -14 XEmacs/xemacs/lisp/diagnose.el = Index: diagnose.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/diagnose.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- diagnose.el 2005/11/02 03:26:52 1.5 +++ diagnose.el 2005/11/13 10:56:09 1.6 @@ -96,26 +96,28 @@ (incf grandtotal (show-foo-stats 'charset (charset-list) #'charset-memory-usage)) + (when-fboundp 'sort-numeric-fields + (sort-numeric-fields -1 + (save-excursion + (goto-char begin) + (forward-line 2) + (point)) + (save-excursion + (forward-line -2) + (point)))) + (princ "\n")) + (setq begin (point)) + (incf grandtotal + (show-foo-stats 'buffer (buffer-list) #'buffer-memory-usage)) + (when-fboundp 'sort-numeric-fields (sort-numeric-fields -1 (save-excursion (goto-char begin) - (forward-line 2) + (forward-line 3) (point)) (save-excursion (forward-line -2) - (point))) - (princ "\n")) - (setq begin (point)) - (incf grandtotal - (show-foo-stats 'buffer (buffer-list) #'buffer-memory-usage)) - (sort-numeric-fields -1 - (save-excursion - (goto-char begin) - (forward-line 3) - (point)) - (save-excursion - (forward-line -2) - (point))) + (point)))) (princ "\n") (setq begin (point)) (incf grandtotal = = =20 --===============8609567707186334549==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============8547343276470628411==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by ben xemacs/lisp ... Date: 2005-11-13 10:58:01 +0000 Message-ID: <20051113105801.24703.qmail@sunsite.dk> --===============8547343276470628411== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: ben = Date: 05/11/13 11:58:01 Modified: xemacs/lisp ChangeLog syntax.el Log: create describe-char-table = syntax.el: Convert describe-syntax-table to more general describe-char-ta= ble. (Will also be used by display tables.) Create new describe-syntax-table, compatible with old function, that uses describe-char-table. = diagnose.el: Conditionalize `sort-numeric-fields' on when-fboundp. = Revision Changes Path 1.696 +9 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.695 retrieving revision 1.696 diff -u -p -r1.695 -r1.696 --- ChangeLog 2005/11/13 10:56:09 1.695 +++ ChangeLog 2005/11/13 10:57:59 1.696 @@ -1,5 +1,14 @@ 2005-11-13 Ben Wing = + * syntax.el: + * syntax.el (describe-syntax-table): Removed. + * syntax.el (describe-char-table): New. + Convert describe-syntax-table to more general describe-char-table. + (Will also be used by display tables.) Create new describe-syntax-table, + compatible with old function, that uses describe-char-table. + +2005-11-13 Ben Wing + * diagnose.el (show-memory-usage): Conditionalize `sort-numeric-fields' on when-fboundp. = = = = 1.5 +13 -4 XEmacs/xemacs/lisp/syntax.el = Index: syntax.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/syntax.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- syntax.el 2001/05/04 22:42:15 1.4 +++ syntax.el 2005/11/13 10:58:00 1.5 @@ -2,6 +2,7 @@ = ;; Copyright (C) 1993, 1997 Free Software Foundation, Inc. ;; Copyright (C) 1995 Sun Microsystems. +;; Copyright (C) 2005 Ben Wing. = ;; This file is part of XEmacs. = @@ -238,7 +239,11 @@ This is similar to `map-char-table', but ; spec (aref o ?a) (aref n ?a)))))))) =0C = -(defun describe-syntax-table (table stream) +(defun describe-char-table (table mapper describe-value stream) +"Describe char-table TABLE, outputting to STREAM. +MAPPER maps over the table and should be `map-char-table' or +`map-syntax-table'. DESCRIBE-VALUE is a function of two arguments, +VALUE and STREAM, and should output a description of VALUE." (let (first-char last-char prev-val @@ -272,7 +277,7 @@ This is similar to `map-char-table', but (text-char-description first) (text-char-description last)) stream)))) - (describe-syntax-code value stream)) + (funcall describe-value value stream)) #'(lambda (first last value stream) (let* ((tem (text-char-description first)) (pos (length tem)) @@ -290,8 +295,8 @@ This is similar to `map-char-table', but (while (progn (write-char ?\ stream) (setq pos (1+ pos)) (< pos 16)))) - (describe-syntax-code value stream))))) - (map-syntax-table + (funcall describe-value value stream))))) + (funcall mapper #'(lambda (range value) (cond ((not first-char) @@ -320,6 +325,10 @@ This is similar to `map-char-table', but table) (if first-char (funcall describe-one first-char last-char prev-val stream)))) + +(defun describe-syntax-table (table stream) + "Output a description of TABLE (a syntax table) to STREAM." + (describe-char-table table 'map-syntax-table 'describe-syntax-code str= eam)) = (defun describe-syntax-code (code stream) (let ((match (and (consp code) (cdr code))) = = =20 --===============8547343276470628411==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============4862679286103322356==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-13 22:51:07 +0000 Message-ID: <20051113225107.28529.qmail@sunsite.dk> --===============4862679286103322356== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/13 23:51:07 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1343 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1342 retrieving revision 1.1343 diff -u -p -r1.1342 -r1.1343 --- version.sh 2005/11/12 22:51:02 1.1342 +++ version.sh 2005/11/13 22:51:06 1.1343 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051112)" +xemacs_extra_name=3D"(+CVS-20051113)" xemacs_release_date=3D"2005-10-26" = = =20 --===============4862679286103322356==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============5184764710608069741==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-14 06:58:33 +0000 Message-ID: <20051114065833.104.qmail@sunsite.dk> --===============5184764710608069741== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 07:58:33 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.580 +4 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.579 retrieving revision 1.580 diff -u -p -r1.579 -r1.580 --- ChangeLog 2005/11/07 21:44:07 1.579 +++ ChangeLog 2005/11/14 06:58:33 1.580 @@ -1,3 +1,7 @@ +2005-11-14 Norbert Koch + + * Packages released: edit-utils games. + 2005-11-07 Norbert Koch = * Packages released: ediff games viper. = = =20 --===============5184764710608069741==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============0305419900533881244==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/edit-utils ... Date: 2005-11-14 06:59:00 +0000 Message-ID: <20051114065900.143.qmail@sunsite.dk> --===============0305419900533881244== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 07:59:00 Modified: packages/xemacs-packages/edit-utils ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.208 +4 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Chan= geLog,v retrieving revision 1.207 retrieving revision 1.208 diff -u -p -r1.207 -r1.208 --- ChangeLog 2005/11/02 07:06:45 1.207 +++ ChangeLog 2005/11/14 06:58:59 1.208 @@ -1,3 +1,7 @@ +2005-11-14 Norbert Koch + + * Makefile (VERSION): XEmacs package 2.28 released. + 2005-11-02 Norbert Koch = * Makefile (VERSION): XEmacs package 2.27 released. = = = 1.140 +1 -1 XEmacs/packages/xemacs-packages/edit-utils/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Make= file,v retrieving revision 1.139 retrieving revision 1.140 diff -u -p -r1.139 -r1.140 --- Makefile 2005/11/02 07:06:45 1.139 +++ Makefile 2005/11/14 06:59:00 1.140 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 2.27 +VERSION =3D 2.28 AUTHOR_VERSION =3D MAINTAINER =3D XEmacs Development Team PACKAGE =3D edit-utils = = =20 --===============0305419900533881244==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============4134717741053994218==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/games ... Date: 2005-11-14 06:59:23 +0000 Message-ID: <20051114065923.1100.qmail@sunsite.dk> --===============4134717741053994218== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 07:59:23 Modified: packages/xemacs-packages/games ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.18 +4 -0 XEmacs/packages/xemacs-packages/games/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/ChangeLog= ,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- ChangeLog 2005/11/12 00:29:49 1.17 +++ ChangeLog 2005/11/14 06:59:22 1.18 @@ -1,3 +1,7 @@ +2005-11-14 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.17 released. + 2005-11-12 Adrian Aichner = * Makefile (MAINTAINER): Update email address. = = = 1.26 +1 -1 XEmacs/packages/xemacs-packages/games/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/games/Makefile,v retrieving revision 1.25 retrieving revision 1.26 diff -u -p -r1.25 -r1.26 --- Makefile 2005/11/12 00:29:49 1.25 +++ Makefile 2005/11/14 06:59:22 1.26 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 1.16 +VERSION =3D 1.17 AUTHOR_VERSION =3D 1.04 MAINTAINER =3D Glynn Clements PACKAGE =3D xemacs-base = = =20 --===============4134717741053994218==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============0172723713623475250==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/edit-utils ... Date: 2005-11-14 07:05:55 +0000 Message-ID: <20051114070555.3154.qmail@sunsite.dk> --===============0172723713623475250== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 08:05:55 Modified: packages/xemacs-packages/edit-utils ChangeLog savehist.el Log: Sync savehist with upstream. = Revision Changes Path 1.209 +2 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Chan= geLog,v retrieving revision 1.208 retrieving revision 1.209 diff -u -p -r1.208 -r1.209 --- ChangeLog 2005/11/14 06:58:59 1.208 +++ ChangeLog 2005/11/14 07:05:54 1.209 @@ -1,5 +1,7 @@ 2005-11-14 Norbert Koch = + * savehist.el: Sync with upstream version 23. + * Makefile (VERSION): XEmacs package 2.28 released. = 2005-11-02 Norbert Koch = = = 1.4 +8 -4 XEmacs/packages/xemacs-packages/edit-utils/savehist.= el = Index: savehist.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/save= hist.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- savehist.el 2005/11/02 07:02:14 1.3 +++ savehist.el 2005/11/14 07:05:54 1.4 @@ -4,7 +4,7 @@ = ;; Author: Hrvoje Niksic ;; Keywords: minibuffer -;; Version: 22 +;; Version: 23 = ;; This file is part of GNU Emacs. = @@ -138,7 +138,8 @@ save." ;; Mule. XEmacs prir to 21.5 had UTF-8 provided by an external ;; package which may not be loaded, which is why we check for version. (defvar savehist-coding-system (if (and (featurep 'xemacs) - (< emacs-major-version 21) (< emacs-minor-version 5)) + (<=3D emacs-major-version 21) + (< emacs-minor-version 5)) 'iso-2022-8 'utf-8) "The coding system savehist uses for saving the minibuffer history. Changing this value while Emacs is running is supported, but considered @@ -361,8 +362,11 @@ Does nothing if savehist-mode is off." (error nil)))))) = (defun savehist-minibuffer-hook () - (add-to-list 'savehist-minibuffer-history-variables - minibuffer-history-variable)) + ;; XEmacs sets minibuffer-history-variable to t to mean "no history + ;; is being recorded". + (unless (eq minibuffer-history-variable t) + (add-to-list 'savehist-minibuffer-history-variables + minibuffer-history-variable))) = (provide 'savehist) =0C = = =20 --===============0172723713623475250==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============9148580214809467229==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-14 07:25:24 +0000 Message-ID: <20051114072524.5846.qmail@sunsite.dk> --===============9148580214809467229== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 08:25:24 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.581 +2 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.580 retrieving revision 1.581 diff -u -p -r1.580 -r1.581 --- ChangeLog 2005/11/14 06:58:33 1.580 +++ ChangeLog 2005/11/14 07:25:24 1.581 @@ -1,5 +1,7 @@ 2005-11-14 Norbert Koch = + * Packages released: edit-utils. + * Packages released: edit-utils games. = 2005-11-07 Norbert Koch = = =20 --===============9148580214809467229==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============4811121627546616709==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/edit-utils ... Date: 2005-11-14 07:25:52 +0000 Message-ID: <20051114072552.5899.qmail@sunsite.dk> --===============4811121627546616709== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 08:25:52 Modified: packages/xemacs-packages/edit-utils ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.210 +2 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Chan= geLog,v retrieving revision 1.209 retrieving revision 1.210 diff -u -p -r1.209 -r1.210 --- ChangeLog 2005/11/14 07:05:54 1.209 +++ ChangeLog 2005/11/14 07:25:51 1.210 @@ -1,5 +1,7 @@ 2005-11-14 Norbert Koch = + * Makefile (VERSION): XEmacs package 2.29 released. + * savehist.el: Sync with upstream version 23. = * Makefile (VERSION): XEmacs package 2.28 released. = = = 1.141 +1 -1 XEmacs/packages/xemacs-packages/edit-utils/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Make= file,v retrieving revision 1.140 retrieving revision 1.141 diff -u -p -r1.140 -r1.141 --- Makefile 2005/11/14 06:59:00 1.140 +++ Makefile 2005/11/14 07:25:51 1.141 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 2.28 +VERSION =3D 2.29 AUTHOR_VERSION =3D MAINTAINER =3D XEmacs Development Team PACKAGE =3D edit-utils = = =20 --===============4811121627546616709==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============0820955413364697034==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs-builds/viteno ... Date: 2005-11-14 07:45:19 +0000 Message-ID: <20051114074519.9194.qmail@sunsite.dk> --===============0820955413364697034== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 08:45:18 Modified: xemacs-builds/viteno package-index setup-packages.ini Log: Package database backup: - edit-utils-2.29 - games-1.17 = Revision Changes Path 1.258 +13 -13 XEmacs/xemacs-builds/viteno/package-index = Index: package-index =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/package-index,v retrieving revision 1.257 retrieving revision 1.258 diff -u -p -r1.257 -r1.258 --- package-index 2005/11/08 06:37:15 1.257 +++ package-index 2005/11/14 07:45:18 1.258 @@ -889,19 +889,19 @@ semantic-sas (package-get-update-base-entry (quote (edit-utils (standards-version 1.1 - version "2.27" + version "2.29" author-version "No-Upstream-Ver" - date "2005-11-02" - build-date "2005-11-02" + date "2005-11-14" + build-date "2005-11-14" maintainer "XEmacs Development Team " distribution xemacs priority high category "standard" dump nil description "Miscellaneous editor extensions, you probably need this." - filename "edit-utils-2.27-pkg.tar.gz" - md5sum "e711a2bd205f757e030f59e662465c5c" - size 934559 + filename "edit-utils-2.29-pkg.tar.gz" + md5sum "72482ee2b31c49871d6ba00a3230de8f" + size 934572 provides (abbrevlist after-save-commands atomic-extents avoid backup-= dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w co= mpletion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part = floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select= info-look iswitchb lazy-lock lazy-shot live-icon makesum man mic-paren par= en mode-motion+ outl-mouse outln-18 page-ext blink-paren paren permanent-bu= ffers popper power-macros recent-files redo reportmail resume rsz-minibuf s= aveconf savehist saveplace scroll-in-place setnu shell-font tempo toolbar-u= tils tree-menu uniquify vertical-mode where-was-i-db winring autorevert ali= gn allout outline narrow-stack highline) requires (xemacs-base xemacs-devel fsf-compat dired mail-lib) type single @@ -2231,19 +2231,19 @@ semantic-sas (package-get-update-base-entry (quote (games (standards-version 1.1 - version "1.16" + version "1.17" author-version "1.04" - date "2005-11-07" - build-date "2005-11-08" - maintainer "Glynn Clements " + date "2005-11-14" + build-date "2005-11-14" + maintainer "Glynn Clements " distribution xemacs priority low category "standard" dump nil description "Tetris, Sokoban, and Snake." - filename "games-1.16-pkg.tar.gz" - md5sum "a292654de7490a9e57bd7e58471ae037" - size 37304 + filename "games-1.17-pkg.tar.gz" + md5sum "42032b4568b5b46e588a6ffc63efd487" + size 37489 provides (gamegrid snake tetris sokoban) requires (xemacs-base) type regular = = = 1.246 +4 -4 XEmacs/xemacs-builds/viteno/setup-packages.ini = Index: setup-packages.ini =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/setup-packages.ini,v retrieving revision 1.245 retrieving revision 1.246 diff -u -p -r1.245 -r1.246 --- setup-packages.ini 2005/11/08 06:37:16 1.245 +++ setup-packages.ini 2005/11/14 07:45:18 1.246 @@ -108,8 +108,8 @@ version: 1.15 install: packages/cookie-1.15-pkg.tar.gz 35035 = @ games -version: 1.16 -install: packages/games-1.16-pkg.tar.gz 37304 +version: 1.17 +install: packages/games-1.17-pkg.tar.gz 37489 = @ mine version: 1.16 @@ -320,8 +320,8 @@ version: 1.11 install: packages/ps-print-1.11-pkg.tar.gz 156222 = @ edit-utils -version: 2.27 -install: packages/edit-utils-2.27-pkg.tar.gz 934559 +version: 2.29 +install: packages/edit-utils-2.29-pkg.tar.gz 934572 = @ fsf-compat version: 1.15 = = =20 --===============0820955413364697034==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============0758203342019080511==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc ... Date: 2005-11-14 22:32:27 +0000 Message-ID: <20051114223227.28921.qmail@sunsite.dk> --===============0758203342019080511== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/14 23:32:27 Modified: packages/unsupported/scop/vc ChangeLog vc-svn.el Log: Sync vc with upstream, convert ChangeLog to iso-8859-1. = Revision Changes Path 1.49 +1 -1 XEmacs/packages/unsupported/scop/STATUS = Index: STATUS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/STATUS,v retrieving revision 1.48 retrieving revision 1.49 diff -u -p -r1.48 -r1.49 --- STATUS 2005/11/02 19:03:08 1.48 +++ STATUS 2005/11/14 22:32:24 1.49 @@ -17,5 +17,5 @@ generic-modes: generic.el and generic-x. - Compiles, seems to work, auto-mode-alist and autoloads may need spanki= ng. = vc: vc*.el and a few other related files from GNU Emacs -- Up to date with GNU Emacs CVS HEAD as of 2005-11-02. +- Up to date with GNU Emacs CVS HEAD as of 2005-11-15. - Compiles, something even works. = = = 1.34 +35 -31 XEmacs/packages/unsupported/scop/vc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.33 retrieving revision 1.34 diff -u -p -r1.33 -r1.34 --- ChangeLog 2005/11/11 19:25:08 1.33 +++ ChangeLog 2005/11/14 22:32:26 1.34 @@ -1,138 +1,142 @@ +2005-11-15 Ville Skytt=C3=A4 + + * vc-svn.el: Sync with upstream. + 2005-11-10 Oscar Figueiredo = * vc-xemacs.el (subst-char-in-string): Do not use `replace-in-string' because of the regexp semantic on its second parameter. = -2005-11-10 Ville Skytt=C3=83=E2=82=AC +2005-11-10 Ville Skytt=C3=A4 = * vc-xemacs.el: Update FSF's address. = -2005-11-02 Ville Skytt=C3=83=E2=82=AC +2005-11-02 Ville Skytt=C3=A4 = * vc.el, vc-cvs.el, vc-sccs.el: Sync with upstream. = -2005-10-08 Ville Skytt=C3=83=E2=82=AC +2005-10-08 Ville Skytt=C3=A4 = * log-edit.el, vc.el, vc-mcvs.el: Sync with upstream. = -2005-09-11 Ville Skytt=C3=83=E2=82=AC +2005-09-11 Ville Skytt=C3=A4 = * vc.el: Sync with upstream. = -2005-08-16 Ville Skytt=C3=83=E2=82=AC +2005-08-16 Ville Skytt=C3=A4 = * *.el: Sync with upstream. = -2005-07-24 Ville Skytt=C3=83=E2=82=AC +2005-07-24 Ville Skytt=C3=A4 = * *.el: Sync with upstream. = -2005-06-21 Ville Skytt=C3=83=E2=82=AC +2005-06-21 Ville Skytt=C3=A4 = * log-edit.el, vc-arch.el, vc-cvs.el, vc.el: Sync with upstream. = -2005-04-30 Ville Skytt=C3=83=E2=82=AC +2005-04-30 Ville Skytt=C3=A4 = * vc.el: Sync with upstream. = -2005-04-09 Ville Skytt=C3=83=E2=82=AC +2005-04-09 Ville Skytt=C3=A4 = * pcvs-util.el, vc.el, vc-cvs.el, vc-hooks.el: Sync with upstream. = -2005-03-06 Ville Skytt=C3=83=E2=82=AC +2005-03-06 Ville Skytt=C3=A4 = * vc.el: Sync with upstream. = -2005-02-11 Ville Skytt=C3=83=E2=82=AC +2005-02-11 Ville Skytt=C3=A4 = * vc*.el: Sync with upstream. = -2005-01-19 Ville Skytt=C3=83=E2=82=AC +2005-01-19 Ville Skytt=C3=A4 = * vc*.el: Sync with upstream. = -2005-01-06 Ville Skytt=C3=83=E2=82=AC +2005-01-06 Ville Skytt=C3=A4 = * vc-arch.el, vc-rcs.el, vc-svn.el: Sync with upstream. = -2004-12-19 Ville Skytt=C3=83=E2=82=AC +2004-12-19 Ville Skytt=C3=A4 = * vc-cvs.el: Port the `vc-cvs-program' defcustom from the old XEmacs vc package, and use it. Originally by Christian Schmitt. = -2004-12-18 Ville Skytt=C3=83=E2=82=AC +2004-12-18 Ville Skytt=C3=A4 = * vc.el: Sync with upstream. = -2004-12-15 Ville Skytt=C3=83=E2=82=AC +2004-12-15 Ville Skytt=C3=A4 = * vc-svn.el: Sync with upstream. Adds svn annotate support, and includes my repository-hostname fix. = -2004-12-13 Ville Skytt=C3=83=E2=82=AC +2004-12-13 Ville Skytt=C3=A4 = * log-edit.el: New, from upstream CVS; temporarily (?) here so that editing commit messages could actually work. * pcvs-util.el: Ditto. = -2004-12-12 Ville Skytt=C3=83=E2=82=AC +2004-12-12 Ville Skytt=C3=A4 = * vc-cvs.el (vc-cvs-parse-root): XEmacs wants 2+ args to `setq'. = * vc-svn.el (vc-svn-repository-hostname): Make it work also with Subversion >=3D 0.33.0, simplify regexp. = -2004-12-06 Ville Skytt=C3=83=E2=82=AC +2004-12-06 Ville Skytt=C3=A4 = * vc.el, vc-cvs.el, vc-hooks.el, vc-rcs.el: Sync with upstream. = -2004-11-10 Ville Skytt=C3=83=E2=82=AC +2004-11-10 Ville Skytt=C3=A4 = * vc.el, vc-cvs.el, vc-mcvs.el: Sync with upstream. = -2004-11-01 Ville Skytt=C3=83=E2=82=AC +2004-11-01 Ville Skytt=C3=A4 = * vc.el, vc-arch.el, vc-hooks.el: Sync with upstream. = -2004-10-13 Ville Skytt=C3=83=E2=82=AC +2004-10-13 Ville Skytt=C3=A4 = * vc.el: Sync with upstream. = -2004-09-15 Ville Skytt=C3=83=E2=82=AC +2004-09-15 Ville Skytt=C3=A4 = * vc*.el: Sync with upstream. = -2004-08-25 Ville Skytt=C3=83=E2=82=AC +2004-08-25 Ville Skytt=C3=A4 = * vc-svn.el: Sync with upstream. = -2004-08-15 Ville Skytt=C3=83=E2=82=AC +2004-08-15 Ville Skytt=C3=A4 = * *: Move most of the XEmacs compatibility stuff into vc-xemacs.el, add some TODOs and fix a few incompatibilities. = -2004-07-30 Ville Skytt=C3=83=E2=82=AC +2004-07-30 Ville Skytt=C3=A4 = * vc-arch.el: Use replace-in-string instead of subst-char-in-string and replace-regexp-in-string. = -2004-07-03 Ville Skytt=C3=83=E2=82=AC +2004-07-03 Ville Skytt=C3=A4 = * vc-arch.el, vc-rcs.el: Sync with upstream. = -2004-06-05 Ville Skytt=C3=83=E2=82=AC +2004-06-05 Ville Skytt=C3=A4 = * vc-svn.el: Sync with upstream. = -2004-06-01 Ville Skytt=C3=83=E2=82=AC +2004-06-01 Ville Skytt=C3=A4 = * vc-arch.el: Sync with upstream. = -2004-05-29 Ville Skytt=C3=83=E2=82=AC +2004-05-29 Ville Skytt=C3=A4 = * vc-arch.el, vc-mcvs.el: Sync with upstream. = -2004-05-24 Ville Skytt=C3=83=E2=82=AC +2004-05-24 Ville Skytt=C3=A4 = * Initial revision of vc port from GNU Emacs. = = = = 1.12 +5 -2 XEmacs/packages/unsupported/scop/vc/vc-svn.el = Index: vc-svn.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-svn.el,v retrieving revision 1.11 retrieving revision 1.12 diff -u -p -r1.11 -r1.12 --- vc-svn.el 2005/08/16 18:38:13 1.11 +++ vc-svn.el 2005/11/14 22:32:27 1.12 @@ -117,8 +117,11 @@ This is only meaningful if you don't use (cd (file-name-directory file)) (condition-case nil (vc-svn-command t 0 file "status" "-v") - ;; We can't find an `svn' executable. We could also deregister SVN. - (file-error nil)) + ;; Some problem happened. E.g. We can't find an `svn' executable. + ;; We used to only catch `file-error' but when the process is ru= n on + ;; a remote host via Tramp, the error is only reported via the + ;; exit status which is turned into an `error' by vc-do-command. + (error nil)) (vc-svn-parse-status t) (eq 'SVN (vc-file-getprop file 'vc-backend))))) = = = =20 --===============0758203342019080511==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============1827395420970370414==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc ... Date: 2005-11-14 22:52:33 +0000 Message-ID: <20051114225233.2880.qmail@sunsite.dk> --===============1827395420970370414== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/14 23:52:33 Modified: packages/unsupported/scop/vc ChangeLog vc-xemacs.el Log: Borrow compare-strings for pcvs-util from ECB. = Revision Changes Path 1.35 +2 -0 XEmacs/packages/unsupported/scop/vc/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.34 retrieving revision 1.35 diff -u -p -r1.34 -r1.35 --- ChangeLog 2005/11/14 22:32:26 1.34 +++ ChangeLog 2005/11/14 22:52:32 1.35 @@ -2,6 +2,8 @@ = * vc-svn.el: Sync with upstream. = + * vc-xemacs.el (compare-strings): New, borrowed from ECB. + 2005-11-10 Oscar Figueiredo = * vc-xemacs.el (subst-char-in-string): Do not use `replace-in-string' = = = 1.4 +42 -0 XEmacs/packages/unsupported/scop/vc/vc-xemacs.el = Index: vc-xemacs.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/vc-xemacs.e= l,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- vc-xemacs.el 2005/11/11 19:25:08 1.3 +++ vc-xemacs.el 2005/11/14 22:52:33 1.4 @@ -84,4 +84,46 @@ Unless optional argument INPLACE is non- (unless (boundp 'find-file-hook) (defvaralias 'find-file-hook 'find-file-hooks)) = +;; From ecb/ecb-util.el +(unless (fboundp 'compare-strings) + (defun compare-strings (str1 start1 end1 str2 start2 end2 &optional ig= nore-case) + "Compare the contents of two strings. +In string STR1, skip the first START1 characters and stop at END1. +In string STR2, skip the first START2 characters and stop at END2. +END1 and END2 default to the full lengths of the respective strings. + +Case is significant in this comparison if IGNORE-CASE is nil. + +The value is t if the strings (or specified portions) match. +If string STR1 is less, the value is a negative number N; + - 1 - N is the number of characters that match at the beginning. +If string STR1 is greater, the value is a positive number N; + N - 1 is the number of characters that match at the beginning." + (or start1 (setq start1 0)) + (or start2 (setq start2 0)) + (setq end1 (if end1 + (min end1 (length str1)) + (length str1))) + (setq end2 (if end2 + (min end2 (length str2)) + (length str2))) + (let ((i1 start1) + (i2 start2) + result c1 c2) + (while (and (not result) (< i1 end1) (< i2 end2)) + (setq c1 (aref str1 i1) + c2 (aref str2 i2) + i1 (1+ i1) + i2 (1+ i2)) + (if ignore-case + (setq c1 (upcase c1) + c2 (upcase c2))) + (setq result (cond ((< c1 c2) (- i1)) + ((> c1 c2) i1)))) + (or result + (cond ((< i1 end1) (1+ (- i1 start1))) + ((< i2 end2) (1- (- start1 i1))) + (t))) + ))) + (provide 'vc-xemacs) = = =20 --===============1827395420970370414==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============3894083459443710377==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-14 22:51:21 +0000 Message-ID: <20051114225121.2799.qmail@sunsite.dk> --===============3894083459443710377== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/14 23:51:21 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1344 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1343 retrieving revision 1.1344 diff -u -p -r1.1343 -r1.1344 --- version.sh 2005/11/13 22:51:06 1.1343 +++ version.sh 2005/11/14 22:51:20 1.1344 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051113)" +xemacs_extra_name=3D"(+CVS-20051114)" xemacs_release_date=3D"2005-10-26" = = =20 --===============3894083459443710377==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============8186656938814499949==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-15 06:33:21 +0000 Message-ID: <20051115063321.13260.qmail@sunsite.dk> --===============8186656938814499949== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/15 07:33:21 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.582 +4 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.581 retrieving revision 1.582 diff -u -p -r1.581 -r1.582 --- ChangeLog 2005/11/14 07:25:24 1.581 +++ ChangeLog 2005/11/15 06:33:20 1.582 @@ -1,3 +1,7 @@ +2005-11-15 Norbert Koch + + * Packages released: gnus. + 2005-11-14 Norbert Koch = * Packages released: edit-utils. = = =20 --===============8186656938814499949==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============7914921412362884204==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/gnus ... Date: 2005-11-15 06:35:51 +0000 Message-ID: <20051115063551.14889.qmail@sunsite.dk> --===============7914921412362884204== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/15 07:35:51 Modified: packages/xemacs-packages/gnus ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.95 +4 -0 XEmacs/packages/xemacs-packages/gnus/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/ChangeLog,v retrieving revision 1.94 retrieving revision 1.95 diff -u -p -r1.94 -r1.95 --- ChangeLog 2005/11/15 03:45:37 1.94 +++ ChangeLog 2005/11/15 06:35:47 1.95 @@ -1,3 +1,7 @@ +2005-11-15 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.87 released. + 2005-11-15 Steve Youngs = * Sync with upstream stable branch. = = = 1.109 +1 -1 XEmacs/packages/xemacs-packages/gnus/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/Makefile,v retrieving revision 1.108 retrieving revision 1.109 diff -u -p -r1.108 -r1.109 --- Makefile 2005/10/12 08:11:15 1.108 +++ Makefile 2005/11/15 06:35:47 1.109 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.86 +VERSION =3D 1.87 AUTHOR_VERSION =3D 5.10.7 MAINTAINER =3D Steve Youngs PACKAGE =3D gnus = = =20 --===============7914921412362884204==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============5275240218330817308==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs-builds/viteno ... Date: 2005-11-15 07:29:13 +0000 Message-ID: <20051115072913.24291.qmail@sunsite.dk> --===============5275240218330817308== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/15 08:29:13 Modified: xemacs-builds/viteno package-index setup-packages.ini Log: Package database backup: - gnus-1.87 = Revision Changes Path 1.259 +6 -6 XEmacs/xemacs-builds/viteno/package-index = Index: package-index =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/package-index,v retrieving revision 1.258 retrieving revision 1.259 diff -u -p -r1.258 -r1.259 --- package-index 2005/11/14 07:45:18 1.258 +++ package-index 2005/11/15 07:29:12 1.259 @@ -2363,19 +2363,19 @@ semantic-sas (package-get-update-base-entry (quote (gnus (standards-version 1.1 - version "1.86" + version "1.87" author-version "5.10.7" - date "2005-10-12" - build-date "2005-10-12" + date "2005-11-15" + build-date "2005-11-15" maintainer "Steve Youngs " distribution xemacs priority medium category "standard" dump nil description "The Gnus Newsreader and Mailreader." - filename "gnus-1.86-pkg.tar.gz" - md5sum "b4bcc03487fd45a55589385e8536e618" - size 3390583 + filename "gnus-1.87-pkg.tar.gz" + md5sum "77d4711e6b56a8f8cb81333b8215605c" + size 3444860 provides (binhex canlock compface deuglify earcon flow-fill format-sp= ec gnus-agent gnus-art gnus-async gnus-audio gnus-bcklg gnus-cache gnus-cit= e gnus-cus gnus-delay gnus-demon gnus-diary gnus-dired gnus-draft gnus-dup = gnus-eform gnus-ems gnus-fun gnus-gl gnus-group gnus-int gnus-kill gnus-log= ic gnus-mh gnus-ml gnus-mlspl gnus-move gnus-msg gnus-nocem gnus-picon gnus= -range gnus-registry gnus-salt gnus-score gnus-setup gnus-sieve gnus-soup g= nus-spec gnus-srvr gnus-start gnus-sum gnus-topic gnus-undo gnus-util gnus-= uu gnus-vm gnus-win gnus-xmas gnus ietf-drums imap mail-parse mail-prsvr ma= il-source mailcap message messagexmas messcompat mm-bodies mm-decode mm-enc= ode mm-extern mm-partial mm-url mm-util mm-uu mm-view mml-sec mml-smime mml= mml1991 mml2015 nnagent nnbabyl nndb nndiary nndir nndoc nndraft nneething= nnfolder nngateway nnheader nnheaderxm nnimap nnkiboze nnlistserv nnmail n= nmaildir nnmbox nnmh nnml nnnil nnoo nnrss nnslashdot nnsoup nnspool nntp n= nultimate nnvi! rtual nnwarchive nnweb nnwfm parse-time qp rfc1843 rfc2045 rfc2047 rfc2231= score-mode smiley smime spam-report spam-stat spam time-date utf7 uudecode= webmail yenc gnus-idna gpg-ring gpg hashcash vcard) requires (gnus mail-lib xemacs-base eterm sh-script net-utils os-util= s dired mh-e sieve ps-print w3 pgg mailcrypt ecrypto sasl) type regular = = = 1.247 +2 -2 XEmacs/xemacs-builds/viteno/setup-packages.ini = Index: setup-packages.ini =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/setup-packages.ini,v retrieving revision 1.246 retrieving revision 1.247 diff -u -p -r1.246 -r1.247 --- setup-packages.ini 2005/11/14 07:45:18 1.246 +++ setup-packages.ini 2005/11/15 07:29:12 1.247 @@ -84,8 +84,8 @@ version: 1.14 install: packages/rmail-1.14-pkg.tar.gz 96995 = @ gnus -version: 1.86 -install: packages/gnus-1.86-pkg.tar.gz 3390583 +version: 1.87 +install: packages/gnus-1.87-pkg.tar.gz 3444860 = @ tm version: 1.38 = = =20 --===============5275240218330817308==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============1163723182519531620==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/ediff ... Date: 2005-11-15 18:51:36 +0000 Message-ID: <20051115185136.23009.qmail@sunsite.dk> --===============1163723182519531620== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/15 19:51:36 Modified: packages/xemacs-packages/ediff ediff-util.el ChangeLog Log: * ediff-util (ediff-make-temp-file): use proper file-name-handler operation = Revision Changes Path 1.31 +1 -1 XEmacs/packages/xemacs-packages/ediff/ediff-util.el = Index: ediff-util.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff-uti= l.el,v retrieving revision 1.30 retrieving revision 1.31 diff -u -p -r1.30 -r1.31 --- ediff-util.el 2005/11/04 05:43:37 1.30 +++ ediff-util.el 2005/11/15 18:51:35 1.31 @@ -3173,7 +3173,7 @@ Hit \\[ediff-recenter] to reset the wind (setq f (concat ediff-temp-file-prefix p) short-f (concat ediff-temp-file-prefix short-p) f (cond (given-file) - ((find-file-name-handler f 'find-file-noselect) + ((find-file-name-handler f 'insert-file-contents) ;; to thwart file handlers in write-region, e.g., if file ;; name ends with .Z or .gz ;; This is needed so that patches produced by ediff will = = = 1.94 +5 -0 XEmacs/packages/xemacs-packages/ediff/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog= ,v retrieving revision 1.93 retrieving revision 1.94 diff -u -p -r1.93 -r1.94 --- ChangeLog 2005/11/07 21:44:27 1.93 +++ ChangeLog 2005/11/15 18:51:36 1.94 @@ -1,3 +1,8 @@ +2005-11-15 Michael Kifer + = + * ediff-util (ediff-make-temp-file): use proper file-name-handler + operation + 2005-11-07 Norbert Koch = * Makefile (VERSION): XEmacs package 1.57 released. = = =20 --===============1163723182519531620==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============5440120784006270651==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/viper, ChangeLog ... Date: 2005-11-15 18:53:50 +0000 Message-ID: <20051115185350.23961.qmail@sunsite.dk> --===============5440120784006270651== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/15 19:53:50 Modified: packages/xemacs-packages/viper viper.el viper-util.el ChangeLog Log: * viper-utils (viper-non-word-characters-reformed-vi): quote `-' in string. = * viper.el (viper-emacs-state-mode-list): Ensure that rcirc-mode buffers come up in Emacs state. = Revision Changes Path 1.35 +2 -0 XEmacs/packages/xemacs-packages/viper/viper.el = Index: viper.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/viper.el,v retrieving revision 1.34 retrieving revision 1.35 diff -u -p -r1.34 -r1.35 --- viper.el 2005/11/04 05:48:13 1.34 +++ viper.el 2005/11/15 18:53:49 1.35 @@ -440,6 +440,8 @@ widget." Buffer-menu-mode compilation-mode = + rcirc-mode + view-mode vm-mode vm-summary-mode) = = = 1.25 +5 -1 XEmacs/packages/xemacs-packages/viper/viper-util.el = Index: viper-util.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/viper-uti= l.el,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- viper-util.el 2005/09/20 17:58:30 1.24 +++ viper-util.el 2005/11/15 18:53:49 1.25 @@ -1242,8 +1242,12 @@ the `Local variables' section of a file. = ;; Characters that should not be considered as part of the word, in refo= rmed-vi ;; syntax mode. +;; Note: \\ (quoted \) must appear before `-' because this string is lis= tified +;; into characters at some point and then put back to string. The result= is +;; used in skip-chars-forward, which treats - specially. Here we achieve= the +;; effect of quoting - and preventing it from being special. (defconst viper-non-word-characters-reformed-vi - "!@#$%^&*()-+=3D|\\~`{}[];:'\",<.>/?") + "!@#$%^&*()\\-+=3D|\\~`{}[];:'\",<.>/?") ;; These are characters that are not to be considered as parts of a word= in ;; Viper. ;; Set each time state changes and at loading time = = = 1.68 +8 -0 XEmacs/packages/xemacs-packages/viper/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog= ,v retrieving revision 1.67 retrieving revision 1.68 diff -u -p -r1.67 -r1.68 --- ChangeLog 2005/11/07 21:44:56 1.67 +++ ChangeLog 2005/11/15 18:53:49 1.68 @@ -1,3 +1,11 @@ +2005-11-15 Michael Kifer + = + * viper-utils (viper-non-word-characters-reformed-vi): quote `-' in + string. + = + * viper.el (viper-emacs-state-mode-list): Ensure that + rcirc-mode buffers come up in Emacs state. + = 2005-11-07 Norbert Koch = * Makefile (VERSION): XEmacs package 1.45 released. = = =20 --===============5440120784006270651==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============2188162769588871069==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-15 22:50:51 +0000 Message-ID: <20051115225051.23723.qmail@sunsite.dk> --===============2188162769588871069== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/15 23:50:51 Modified: xemacs version.sh Log: Update xemacs_extra_name. = Revision Changes Path 1.1345 +1 -1 XEmacs/xemacs/version.sh = Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1344 retrieving revision 1.1345 diff -u -p -r1.1344 -r1.1345 --- version.sh 2005/11/14 22:51:20 1.1344 +++ version.sh 2005/11/15 22:50:50 1.1345 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051114)" +xemacs_extra_name=3D"(+CVS-20051115)" xemacs_release_date=3D"2005-10-26" = = =20 --===============2188162769588871069==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============8136129927888105078==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/modules/canna ... Date: 2005-11-16 07:14:16 +0000 Message-ID: <20051116071416.12211.qmail@sunsite.dk> --===============8136129927888105078== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/16 08:14:16 Modified: xemacs/modules/canna canna_api.c Log: Mule-ize Canna: <87mzk5yu35.fsf(a)tleepslib.sk.tsukuba.ac.jp> = Revision Changes Path 1.51 +8 -0 XEmacs/xemacs/modules/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.50 retrieving revision 1.51 diff -u -p -r1.50 -r1.51 --- ChangeLog 2005/11/13 10:39:28 1.50 +++ ChangeLog 2005/11/16 07:14:13 1.51 @@ -1,3 +1,11 @@ +2005-11-16 Stephen J. Turnbull + + * canna/canna_api.c: Small fixes to Mule-ization patch. + +2005-11-01 Ben Wing + + * canna/canna_api.c: Mule-ization. + 2005-11-13 Ben Wing = * common/Makefile.common: = = = 1.3 +90 -189 XEmacs/xemacs/modules/canna/canna_api.c = Index: canna_api.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/canna/canna_api.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- canna_api.c 2005/10/21 15:48:35 1.2 +++ canna_api.c 2005/11/16 07:14:16 1.3 @@ -2,6 +2,7 @@ = Copyright (C) 1995 Free Software Foundation, Inc. Copyright (C) 1995 Sun Microsystems, Inc. + Copyright (C) 2005 Ben Wing. = This file is part of XEmacs. = @@ -175,8 +176,7 @@ extern int (*jrBeepFunc) (void); = /* #### is this global really necessary? */ #define KEYTOSTRSIZE 2048 -static char key_buffer[KEYTOSTRSIZE]; -static char **warning; +static Extbyte key_buffer[KEYTOSTRSIZE]; = static int canna_empty_info, canna_through_info; static int canna_underline; @@ -200,13 +200,15 @@ static int IRCP_context; static Lisp_Object storeResults (char *, int, jrKanjiStatus *); static Lisp_Object kanjiYomiList (int, int); static Lisp_Object CANNA_mode_keys (void); +static Lisp_Object Qeuc_jp; = +#define make_euc_string(p, len) make_ext_string ((Extbyte *) p, len, Qeu= c_jp) +#define build_euc_string(p) build_ext_string ((Extbyte *) p, Qeuc_jp) + #ifdef CANNA_MULE -static void m2c (unsigned char *, int, unsigned char *); -static Lisp_Object mule_make_string (unsigned char *, int); -static int mule_strlen (unsigned char *, int); -static void count_char (unsigned char *,int, int, int, Fixnum *, Fixnum = *, Fixnum *); -#define make_string mule_make_string +static int euc_jp_num_chars (unsigned char *, int); +static void count_char (unsigned char *,int, int, int, Fixnum *, Fixnum = *, + Fixnum *); #endif = /* Lisp functions definition */ @@ -234,12 +236,12 @@ storeResults (char *buf, int len, jrKanj = if (len < 0) { /* Error detected */ - val =3D make_string ((unsigned char*) jrKanjiError, strlen (jrKanj= iError)); + val =3D build_euc_string (jrKanjiError); } else { /* =C2=B3=C3=8E=C3=84=C3=AA=E2=82=AC=C2=B7=E2=82=AC=C2=BF=C3=8A=C5= =BE=C2=BB=C3=BA=C3=8E=C3=B3 (the confirmed string) */ - Vcanna_kakutei_string =3D make_string ((unsigned char *) buf, len); + Vcanna_kakutei_string =3D make_euc_string (buf, len); val =3D make_int (len); /* =C2=B3=C3=8E=C3=84=C3=AA=E2=82=AC=C2=B7=E2=82=AC=C2=BF=C3=8A=C5= =BE=C2=BB=C3=BA=C3=8E=C3=B3=E2=82=AC=C3=8E=C3=86=C3=89=E2=82=AC=C3=9F=E2=82= =AC=C3=8E=C5=B8=C3=B0=C3=8A=C3=B3... (info about the reading of the confirmed string) */ @@ -254,13 +256,13 @@ storeResults (char *buf, int len, jrKanj int yomilen2; = Vcanna_kakutei_yomi =3D - make_string ((unsigned char *) p, yomilen); /* =C3=86=C3=89=E2=82=AC= =C3=9F (reading) */ + make_euc_string (p, yomilen); /* =C3=86=C3=89=E2=82=AC=C3=9F (reading)= */ p +=3D yomilen + 1; yomilen2 =3D strlen (p); if (len + yomilen + yomilen2 + 2 < KEYTOSTRSIZE) { Vcanna_kakutei_romaji =3D - make_string ((unsigned char *) p, yomilen2); + make_euc_string (p, yomilen2); /* =C2=A5=C3=AD=C2=A1=C5=92=C2=A5=C3=9E=C2=BB=C3=BA (romanization) */ } } @@ -272,7 +274,7 @@ storeResults (char *buf, int len, jrKanj Vcanna_henkan_string =3D Qnil; if (ks->length >=3D 0) { - Vcanna_henkan_string =3D make_string (ks->echoStr, ks->length); + Vcanna_henkan_string =3D make_euc_string (ks->echoStr, ks->length); #ifndef CANNA_MULE canna_henkan_length =3D ks->length; canna_henkan_revPos =3D ks->revPos; @@ -280,10 +282,10 @@ storeResults (char *buf, int len, jrKanj #else /* CANNA_MULE */ if (canna_underline) { - canna_henkan_length =3D mule_strlen (ks->echoStr,ks->length); - canna_henkan_revPos =3D mule_strlen (ks->echoStr,ks->revPos); - canna_henkan_revLen =3D mule_strlen (ks->echoStr+ks->revPos, - ks->revLen); + canna_henkan_length =3D euc_jp_num_chars (ks->echoStr,ks->length); + canna_henkan_revPos =3D euc_jp_num_chars (ks->echoStr,ks->revPos); + canna_henkan_revLen =3D euc_jp_num_chars (ks->echoStr+ks->revPos, + ks->revLen); } else { @@ -298,8 +300,8 @@ storeResults (char *buf, int len, jrKanj Vcanna_ichiran_string =3D Qnil; if (ks->info & KanjiGLineInfo && ks->gline.length >=3D 0) { - Vcanna_ichiran_string =3D make_string (ks->gline.line, - ks->gline.length); + Vcanna_ichiran_string =3D make_euc_string (ks->gline.line, + ks->gline.length); #ifndef CANNA_MULE canna_ichiran_length =3D ks->gline.length; canna_ichiran_revPos =3D ks->gline.revPos; @@ -316,8 +318,7 @@ storeResults (char *buf, int len, jrKanj Vcanna_mode_string =3D Qnil; if (ks->info & KanjiModeInfo) { - Vcanna_mode_string =3D - make_string (ks->mode, strlen ((const char *) ks->mode)); + Vcanna_mode_string =3D build_euc_string ((Extbyte *) ks->mode); } = /* =E2=82=AC=C5=93=E2=82=AC=C3=8E=C3=82=C5=B8=E2=82=AC=C3=8E=C5=B8= =C3=B0=C3=8A=C3=B3 (other information) */ @@ -365,7 +366,7 @@ If nil is specified for each arg, the de { Lisp_Object val; int res; - unsigned char **p, **q; + char **p, **q; = int kugiri; /* =C3=8A=C5=BE=C3=80=C3=A1=C2=B6=C3=A8=C3=80=C3=9A=E2=82= =AC=C3=AA=E2=82=AC=C3=B2=E2=82=AC=C2=B9=E2=82=AC=C3=AB=E2=82=AC=C2=AB=C2=A1= =C2=A9 (display clause separator?) */ = @@ -388,13 +389,10 @@ If nil is specified for each arg, the de } else { - char servername[256]; - CHECK_STRING (server); - strncpy (servername, (const char *) XSTRING_DATA (server), - XSTRING_LENGTH (server)); - servername[XSTRING_LENGTH (server)] =3D '\0'; - jrKanjiControl (0, KC_SETSERVERNAME, servername); + jrKanjiControl (0, KC_SETSERVERNAME, + /* !!#### Check encoding */ + NEW_LISP_STRING_TO_EXTERNAL (server, Qnative)); } = if (NILP (rcfile)) @@ -403,40 +401,37 @@ If nil is specified for each arg, the de } else { - char rcname[256]; - CHECK_STRING (rcfile); - strncpy (rcname, (const char *) XSTRING_DATA (rcfile), - XSTRING_LENGTH (rcfile)); - rcname[XSTRING_LENGTH (rcfile)] =3D '\0'; - jrKanjiControl (0, KC_SETINITFILENAME, rcname); + jrKanjiControl (0, KC_SETINITFILENAME, + NEW_LISP_STRING_TO_EXTERNAL (rcfile, Qfile_name)); } = - warning =3D (char **) 0; + { + char **warning =3D (char **) 0; #ifdef nec_ews_svr4 - stop_polling (); + stop_polling (); #endif /* nec_ews_svr4 */ - res =3D jrKanjiControl (0, KC_INITIALIZE, (char *)&warning); + res =3D jrKanjiControl (0, KC_INITIALIZE, (char *) &warning); #ifdef nec_ews_svr4 - start_polling (); + start_polling (); #endif /* nec_ews_svr4 */ - val =3D Qnil; - if (warning) - { - for (p =3D q =3D (unsigned char **) warning ; *q ; q++) - ; - while (p < q) - { - q--; - val =3D Fcons (make_string (*q, strlen ((const char *) *q)), val); - } - } - val =3D Fcons (val, Qnil); + val =3D Qnil; + if (warning) + { + for (p =3D q =3D warning ; *q ; q++) + ; + while (p < q) + { + q--; + val =3D Fcons (build_euc_string (*q), val); + } + } + val =3D Fcons (val, Qnil); + } = if (res =3D=3D -1) { - val =3D Fcons (make_string ((unsigned char *) jrKanjiError, - strlen (jrKanjiError)), val); + val =3D Fcons (build_euc_string (jrKanjiError), val); /* =C2=A5=E2=82=AC=C2=A5=C3=8B=C2=A5=C2=B7=C2=A5=C3=A3=C2=A5=C3=A9= =C2=A5=E2=82=AC=C2=A5=C2=BA=E2=82=AC=C3=87=C5=92=C2=BA=C3=87=C3=94=E2=82=AC= =C2=B7=E2=82=AC=C2=BF=C5=B8=C3=AC=C2=B9=C3=A7=C2=A1=C2=A3 (on initializatio= n failure) */ return Fcons (Qnil, val); } @@ -477,16 +472,20 @@ This cause to write miscellaneous inform ()) { Lisp_Object val; - unsigned char **p; + char **p; + char **warning =3D (char **) 0; = - jrKanjiControl (0, KC_FINALIZE, (char *)&warning); + jrKanjiControl (0, KC_FINALIZE, (char *) &warning); = val =3D Qnil; if (warning) { - for (p =3D (unsigned char**) warning ; *p ; p++) + for (p =3D warning ; *p; p++) { - val =3D Fcons (make_string (*p, strlen ((const char *) *p)), val); + /* !!#### This is almost certainly wrong; `canna-initialize + starts at the end of the warnings so the resulting list is + in the correct order. We should do the same. */ + val =3D Fcons (build_euc_string (*p), val); } } val =3D Fcons (val, Qnil); @@ -501,21 +500,11 @@ Register Kanji words into kana-to-kanji = { jrKanjiStatusWithValue ksv; jrKanjiStatus ks; -#ifdef CANNA_MULE - unsigned char cbuf[4096]; -#endif = CHECK_STRING (str); ksv.buffer =3D (unsigned char *) key_buffer; ksv.bytes_buffer =3D KEYTOSTRSIZE; -#ifndef CANNA_MULE - ks.echoStr =3D XSTRING_DATA (str); - ks.length =3D XSTRING_LENGTH (str); -#else /* CANNA_MULE */ - m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), cbuf); - ks.echoStr =3D cbuf; - ks.length =3D strlen ((const char *) cbuf); -#endif /* CANNA_MULE */ + LISP_STRING_TO_SIZED_EXTERNAL (str, ks.echoStr, ks.length, Qeuc_jp); ksv.ks =3D &ks; jrKanjiControl (0, KC_DEFINEKANJI, (char *)&ksv); return storeResults (key_buffer, ksv.val, ksv.ks); @@ -577,17 +566,13 @@ Store yomi characters as a YOMI of kana- { jrKanjiStatusWithValue ksv; jrKanjiStatus ks; + Extbyte *ext; = CHECK_STRING (yomi); -#ifndef CANNA_MULE - strncpy (key_buffer, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); - ks.length =3D XSTRING_LENGTH (yomi); - key_buffer[ks.length] =3D '\0'; -#else /* CANNA_MULE */ - m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), - (unsigned char *) key_buffer); + LISP_STRING_TO_EXTERNAL (yomi, ext, Qeuc_jp); + strncpy (key_buffer, ext, sizeof (key_buffer)); + key_buffer[sizeof (key_buffer) - 1] =3D '\0'; ks.length =3D strlen (key_buffer); -#endif /* CANNA_MULE */ = if (NILP (roma)) { @@ -596,17 +581,11 @@ Store yomi characters as a YOMI of kana- else { CHECK_STRING (roma); - -#ifndef CANNA_MULE - strncpy (key_buffer + XSTRING_LENGTH (yomi) + 1, XSTRING_DATA (rom= a), - XSTRING_LENGTH (roma)); - key_buffer[XSTRING_LENGTH (yomi) + 1 + XSTRING_LENGTH (roma)] =3D = '\0'; - ks.mode =3D (unsigned char *)(key_buffer + XSTRING_LENGTH (yomi) += 1); -#else /* CANNA_MULE */ - ks.mode =3D (unsigned char *)(key_buffer + ks.length + 1); - m2c (XSTRING_DATA (roma), XSTRING_LENGTH (roma), - (unsigned char *) ks.mode); -#endif /* CANNA_MULE */ + LISP_STRING_TO_EXTERNAL (roma, ext, Qeuc_jp); + ks.mode =3D (unsigned char *) (key_buffer + ks.length + 1); + strncpy (key_buffer + ks.length + 1, ext, + sizeof (key_buffer) - ks.length - 1); + key_buffer[sizeof (key_buffer) - 1] =3D '\0'; } = ks.echoStr =3D (unsigned char *) key_buffer; @@ -653,24 +632,21 @@ Parse customize string. (str)) { Lisp_Object val; - unsigned char **p; + Extbyte **p; int n; + Extbyte *ext; = CHECK_STRING (str); - -#ifndef CANNA_MULE - strncpy (key_buffer, XSTRING_DATA (str), XSTRING_LENGTH (str)); - key_buffer[XSTRING_LENGTH (str)] =3D '\0'; -#else /* CANNA_MULE */ - m2c (XSTRING_DATA (str), XSTRING_LENGTH (str), (unsigned char *) key_b= uffer); -#endif /* CANNA_MULE */ - p =3D (unsigned char**) key_buffer; + LISP_STRING_TO_EXTERNAL (str, ext, Qeuc_jp); + strncpy (key_buffer, ext, sizeof (key_buffer)); + key_buffer[sizeof (key_buffer) - 1] =3D '\0'; + p =3D (Extbyte **) key_buffer; n =3D jrKanjiControl (0, KC_PARSE, (char *) &p); val =3D Qnil; while (n > 0) { n--; - val =3D Fcons (make_string (p[n], strlen ((const char *) p[n])), v= al); + val =3D Fcons (build_euc_string (p[n]), val); } return val; } @@ -683,7 +659,7 @@ Get current mode string. char buf[256]; = jrKanjiControl (0, KC_QUERYMODE, buf); - return make_string ((unsigned char *) buf, strlen (buf)); + return build_euc_string (buf); } = /* @@ -740,23 +716,20 @@ Clause separator is set. (yomi)) { int nbun; + Extbyte *ext; = CHECK_STRING (yomi); if (confirmContext () =3D=3D 0) { return Qnil; } -#ifndef CANNA_MULE - strncpy (yomibuf, XSTRING_DATA (yomi), XSTRING_LENGTH (yomi)); - yomibuf[XSTRING_LENGTH (yomi)] =3D '\0'; - nbun =3D RkBgnBun (IRCP_context, XSTRING_DATA (yomi), XSTRING_LENGTH (= yomi), - (RK_XFER << RK_XFERBITS) | RK_KFER); -#else /* CANNA_MULE */ - m2c (XSTRING_DATA (yomi), XSTRING_LENGTH (yomi), yomibuf); - nbun =3D RkBgnBun (IRCP_context, (char *) yomibuf, - strlen ((const char *) yomibuf), + + LISP_STRING_TO_EXTERNAL (yomi, ext, Qeuc_jp); + strncpy ((char *) yomibuf, ext, sizeof (yomibuf)); + yomibuf[sizeof (yomibuf) - 1] =3D '\0'; + + nbun =3D RkBgnBun (IRCP_context, yomibuf, strlen ((char *) yomibuf), (RK_XFER << RK_XFERBITS) | RK_KFER); -#endif /* CANNA_MULE */ = return kanjiYomiList (IRCP_context, nbun); } @@ -765,7 +738,7 @@ static Lisp_Object kanjiYomiList (int context, int nbun) { Lisp_Object val, res =3D Qnil; - unsigned char RkBuf[RKBUFSIZE]; + UExtbyte RkBuf[RKBUFSIZE]; int len, i, total; = for (i =3D nbun ; i > 0 ; ) @@ -773,9 +746,9 @@ kanjiYomiList (int context, int nbun) i--; RkGoTo (context, i); len =3D RkGetKanji (context, RkBuf, RKBUFSIZE); - val =3D make_string (RkBuf, len); + val =3D make_euc_string (RkBuf, len); len =3D RkGetYomi (context, RkBuf, RKBUFSIZE); - res =3D Fcons (Fcons (val, make_string (RkBuf, len)), res); + res =3D Fcons (Fcons (val, make_euc_string (RkBuf, len)), res); if (i < RKBUFSIZE / 2) { kugiri[i] =3D len; @@ -796,7 +769,7 @@ Return the list of candidates. (bunsetsu)) { int i, slen, len; - unsigned char *p, RkBuf[RKBUFSIZE]; + UExtbyte *p, RkBuf[RKBUFSIZE]; Lisp_Object res =3D Qnil; = CHECK_INT (bunsetsu); @@ -809,14 +782,14 @@ Return the list of candidates. p =3D RkBuf; for (i =3D 0 ; i < len ; i++) { - slen =3D strlen ((const char *) p); + slen =3D strlen ((char *) p); if (NILP(res)) { - res =3D Fcons (make_string (p, slen), Qnil); + res =3D Fcons (make_euc_string (p, slen), Qnil); } else { - XCDR (res) =3D Fcons (make_string (p, slen), Qnil); + XCDR (res) =3D Fcons (make_euc_string (p, slen), Qnil); } p +=3D slen + 1; } @@ -1104,6 +1077,8 @@ syms_of_canna_api (void) DEFSUBR (Fcanna_henkan_kakutei); DEFSUBR (Fcanna_henkan_end); DEFSUBR (Fcanna_henkan_quit); + + DEFSYMBOL (Qeuc_jp); } = void @@ -1850,84 +1825,10 @@ unload_canna_api (void) #endif = #ifdef CANNA_MULE -/* To handle MULE internal code and EUC. - I assume CANNA can handle only Japanese EUC. */ - -/* EUC multibyte string to MULE internal string */ - -static void -c2mu (unsigned char *cp, int l, unsigned char *mp) -{ - unsigned char ch, *ep =3D cp+l; - - while ((cp < ep) && (ch =3D *cp)) - { - if ((unsigned char) ch =3D=3D ISO_CODE_SS2) - { - *mp++ =3D LEADING_BYTE_KATAKANA_JISX0201; - cp++; - } - else if ((unsigned char) ch =3D=3D ISO_CODE_SS3) - { - *mp++ =3D LEADING_BYTE_JAPANESE_JISX0212; - cp++; - *mp++ =3D *cp++; - } - else if (ch & 0x80) - { - *mp++ =3D LEADING_BYTE_JAPANESE_JISX0208; - *mp++ =3D *cp++; - } - *mp++ =3D *cp++; - } - *mp =3D 0; -} - -/* MULE internal string to EUC multibyte string */ - -static void -m2c (unsigned char *mp, int l, unsigned char *cp) -{ - unsigned char ch, *ep =3D mp + l; - - while ((mp < ep) && (ch =3D *mp++)) - { - switch (ch) - { - case LEADING_BYTE_KATAKANA_JISX0201: - *cp++ =3D ISO_CODE_SS2; - *cp++ =3D *mp++; - break; - case LEADING_BYTE_JAPANESE_JISX0212: - *cp++ =3D ISO_CODE_SS3; - case LEADING_BYTE_JAPANESE_JISX0208: - *cp++ =3D *mp++; - *cp++ =3D *mp++; - break; - default: - *cp++ =3D ch; - break; - } - } - *cp =3D 0; -} - -#undef make_string - -/* make_string after converting EUC string to MULE internal string */ -static Lisp_Object -mule_make_string (unsigned char *p, int l) -{ - unsigned char cbuf[4096]; - - c2mu (p,l,cbuf); - return (make_string (cbuf, strlen ((const char *) cbuf))); -} = -/* return the MULE internal string length of EUC string */ -/* Modified by sb to return a character count not byte count. */ +/* Return the number of characters in an EUC-JP string. */ static int -mule_strlen (unsigned char *p, int l) +euc_jp_num_chars (unsigned char *p, int l) { unsigned char ch, *cp =3D p; int len =3D 0; = = =20 --===============8136129927888105078==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============0952331500807838969==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-16 07:22:49 +0000 Message-ID: <20051116072249.14635.qmail@sunsite.dk> --===============0952331500807838969== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/16 08:22:49 Modified: xemacs/src ChangeLog database.c event-Xt.c sound.c Log: Assorted minor fixes. TODO comment in configure.ac: <87irutytzq.fsf(a)tleepslib.sk.tsukuba.ac.jp> Avoid warning, don't redefine integer types on Mac OS X: <87ek5hytvq.fsf(a)tleepslib.sk.tsukuba.ac.jp> Fix uninitialized variable: <87acg5yttp.fsf(a)tleepslib.sk.tsukuba.ac.jp> Eliminate warnings for unused parameters and functions: <8764qtytrp.fsf(a)tleepslib.sk.tsukuba.ac.jp> Quiet byte-compiler in select.el: <871x1hytow.fsf(a)tleepslib.sk.tsukuba.ac.jp> Quiet compiler about unused parameters in sound.el: <87wtj9xf16.fsf(a)tleepslib.sk.tsukuba.ac.jp> = Revision Changes Path 1.469 +4 -0 XEmacs/xemacs/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.468 retrieving revision 1.469 diff -u -p -r1.468 -r1.469 --- ChangeLog 2005/11/13 10:39:39 1.468 +++ ChangeLog 2005/11/16 07:22:37 1.469 @@ -1,3 +1,7 @@ +2005-11-16 Stephen J. Turnbull + + * configure.ac (checks for typedefs): TODO comment. + 2005-11-13 Ben Wing = * dynodump/Makefile.in.in: = = = 1.20 +1 -0 XEmacs/xemacs/configure.ac = Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.19 retrieving revision 1.20 diff -u -p -r1.19 -r1.20 --- configure.ac 2005/11/13 07:31:55 1.19 +++ configure.ac 2005/11/16 07:22:37 1.20 @@ -2763,6 +2763,7 @@ AC_TYPE_PID_T AC_TYPE_UID_T AC_TYPE_MODE_T AC_TYPE_OFF_T +dnl #### deprecated 2.13-ism AC_CHECK_TYPE(ssize_t, int) = dnl not AC_CHECK_TYPE; lisp.h does hairy conditional typedef = = = 1.697 +5 -0 XEmacs/xemacs/lisp/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.696 retrieving revision 1.697 diff -u -p -r1.696 -r1.697 --- ChangeLog 2005/11/13 10:57:59 1.696 +++ ChangeLog 2005/11/16 07:22:40 1.697 @@ -1,3 +1,8 @@ +2005-11-16 Stephen J. Turnbull + + * select.el (get-selection): + Quiet bytecompiler (unused condition-case variable). + 2005-11-13 Ben Wing = * syntax.el: = = = 1.16 +1 -1 XEmacs/xemacs/lisp/select.el = Index: select.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/select.el,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- select.el 2005/03/12 20:57:42 1.15 +++ select.el 2005/11/16 07:22:40 1.16 @@ -131,7 +131,7 @@ there is no selection an error is signal (catch 'converted (if targets (dolist (current-preference data-type) - (condition-case err + (condition-case nil (if (and (memq current-preference targets) (setq res (get-selection-internal type current-preference))) = = = 1.74 +8 -1 XEmacs/xemacs/lwlib/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.73 retrieving revision 1.74 diff -u -p -r1.73 -r1.74 --- ChangeLog 2005/11/13 10:39:34 1.73 +++ ChangeLog 2005/11/16 07:22:42 1.74 @@ -1,9 +1,16 @@ +2005-11-16 Stephen J. Turnbull + + * xlwcheckbox.c (CheckboxInit): Mark unused parameters. C++ + correctness. + (CheckboxRealize): Don't compile at all if unused. + + * xlwradio.c (RadioDestroy): #if 0 dead code for later removal. + 2005-11-13 Ben Wing = * Makefile.in.in: Add targets distclean-noconfig, realclean-noconfig, extraclean-noconfig. Do some refactoring for cleanliness. - = 2005-11-08 Marcus Crestani = = = = 1.7 +9 -2 XEmacs/xemacs/lwlib/xlwradio.c = Index: xlwradio.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwradio.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- xlwradio.c 2005/11/10 15:47:33 1.6 +++ xlwradio.c 2005/11/16 07:22:43 1.7 @@ -89,13 +89,17 @@ Boston, MA 02111-1307, USA. */ static void RadioInit (Widget, Widget, ArgList, Cardinal *); static void RadioExpose (Widget, XEvent *, Region); static void RadioResize (Widget); -static void RadioDestroy (Widget, XtPointer, XtPointer); static void RadioClassInit (void); static void RadioClassPartInit (WidgetClass); static Boolean RadioSetValues (Widget, Widget, Widget, ArgList, Cardinal= *); static void DrawDiamond (Widget); static XtGeometryResult RadioQueryGeometry (Widget, XtWidgetGeometry *, XtWidgetGeometry *); +#if 0 +/* #### This function isn't used and is slated for destruction. + Can we just nuke it? */ +static void RadioDestroy (Widget, XtPointer, XtPointer); +#endif = /* Action procs */ = @@ -245,6 +249,9 @@ RadioInit (Widget request, * Returns: none. */ = +#if 0 +/* #### This function isn't used and is slated for destruction. + Can we just nuke it? */ /* ARGSUSED */ static void RadioDestroy (Widget UNUSED (w), @@ -253,7 +260,7 @@ RadioDestroy (Widget UNUSED (w), { /* TODO: get rid of this */ } - +#endif = /* React to size change from manager. Label widget will compute some in= ternal * stuff, but we need to override. This code requires knowledge of the = = = 1.4 +4 -8 XEmacs/xemacs/lwlib/xlwcheckbox.c = Index: xlwcheckbox.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwcheckbox.c,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- xlwcheckbox.c 2004/09/20 19:19:17 1.3 +++ xlwcheckbox.c 2005/11/16 07:22:43 1.4 @@ -225,13 +225,13 @@ CheckboxInit (Widget UNUSED (request), #if DRAW_CHECK Widget new, #else - Widget UNUSED (new), + Widget UNUSED (new_), #endif ArgList UNUSED (args), Cardinal *UNUSED (num_args)) { #if DRAW_CHECK - CheckboxWidget cw =3D (CheckboxWidget) new; + CheckboxWidget cw =3D (CheckboxWidget) new_; cw->checkbox.checkmark =3D None ; cw->checkbox.checkmark_GC =3D None ; #endif @@ -280,17 +280,13 @@ CheckboxRealize(Widget w, */ = /* ARGSUSED */ +#if DRAW_CHECK static void CheckboxDestroy ( -#if DRAW_CHECK Widget w, -#else - Widget UNUSED (w), -#endif XtPointer UNUSED (junk), XtPointer UNUSED (garbage)) { -#if DRAW_CHECK CheckboxWidget cw =3D (CheckboxWidget) w; = /* TODO: cache this via xmu */ @@ -298,8 +294,8 @@ CheckboxDestroy ( XFreePixmap( XtDisplay(w), cw->checkbox.checkmark ) ; if( cw->checkbox.checkmark_GC !=3D None ) XtReleaseGC(w, cw->checkbox.checkmark_GC) ; -#endif } +#endif /* DRAW_CHECK */ = =0C = = = = 1.885 +15 -0 XEmacs/xemacs/src/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.884 retrieving revision 1.885 diff -u -p -r1.884 -r1.885 --- ChangeLog 2005/11/13 10:48:01 1.884 +++ ChangeLog 2005/11/16 07:22:44 1.885 @@ -1,3 +1,18 @@ +2005-11-16 Stephen J. Turnbull + + * sound.c (USED_IF_HAVE_NATIVE_OR_NAS, USED_IF_HAVE_ANY): + New conditional UNUSED macros. + (Fplay_sound_file, Fdevice_sound_enabled_p, init_device_sound): + Use them. + +2005-11-16 Stephen J. Turnbull + + * event-Xt.c (x_to_emacs_keysym): Initialize len. + +2005-11-16 Stephen J. Turnbull + + * database.c: Don't redefine integer types for Mac OS X, either. + 2005-11-13 Ben Wing = * alloc.c: = = = 1.38 +1 -1 XEmacs/xemacs/src/database.c = Index: database.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/database.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -p -r1.37 -r1.38 --- database.c 2005/10/25 11:16:22 1.37 +++ database.c 2005/11/16 07:22:46 1.38 @@ -47,7 +47,7 @@ Boston, MA 02111-1307, USA. */ #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include -#if !defined(__FreeBSD__) && !defined(__NetBSD__) +#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__APPLE__) typedef uint8_t u_int8_t; typedef uint16_t u_int16_t; typedef uint32_t u_int32_t; = = = 1.88 +2 -2 XEmacs/xemacs/src/event-Xt.c = Index: event-Xt.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/event-Xt.c,v retrieving revision 1.87 retrieving revision 1.88 diff -u -p -r1.87 -r1.88 --- event-Xt.c 2005/09/27 05:29:44 1.87 +++ event-Xt.c 2005/11/16 07:22:46 1.88 @@ -836,7 +836,7 @@ x_to_emacs_keysym (XKeyPressedEvent *eve KeySym keysym =3D 0; = #ifdef HAVE_XIM - int len; + int len =3D 0; /* Some implementations of XmbLookupString don't return XBufferOverflow correctly, so increase the size of the xim input buffer from 64 to the more reasonable size 513, as Emacs has done. @@ -893,7 +893,7 @@ x_to_emacs_keysym (XKeyPressedEvent *eve stderr_out (" keysym=3D%s", XKeysymToString (keysym)); if (status =3D=3D XLookupChars || status =3D=3D XLookupBoth) { - if (len !=3D 1) + if (len > 1) { int j; stderr_out (" chars=3D\""); = = = 1.25 +22 -9 XEmacs/xemacs/src/sound.c = Index: sound.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sound.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- sound.c 2005/05/05 17:10:54 1.24 +++ sound.c 2005/11/16 07:22:46 1.25 @@ -51,6 +51,25 @@ Boston, MA 02111-1307, USA. */ #include "syswindows.h" #endif = +#ifdef HAVE_NAS_SOUND +#define USED_IF_HAVE_NAS(decl) decl +#else +#define USED_IF_HAVE_NAS(decl) UNUSED (decl) +#endif + +#if defined(HAVE_NATIVE_SOUND) || defined(HAVE_NAS_SOUND) +#define USED_IF_HAVE_NATIVE_OR_NAS(decl) decl +#else +#define USED_IF_HAVE_NATIVE_OR_NAS(decl) UNUSED (decl) +#endif + +#if defined(HAVE_NATIVE_SOUND) || defined(HAVE_NAS_SOUND) \ + || defined(HAVE_ESD_SOUND) +#define USED_IF_HAVE_ANY(decl) decl +#else +#define USED_IF_HAVE_ANY(decl) UNUSED (decl) +#endif + #ifdef HAVE_ESD_SOUND extern int esd_play_sound_file (Extbyte *file, int vol); extern int esd_play_sound_data (Binbyte *data, size_t length, int vol); @@ -87,7 +106,7 @@ except under Linux where WAV files are a Windows the sound file must be in WAV format. DEVICE defaults to the selected device. */ - (file, volume, device)) + (file, volume, USED_IF_HAVE_ANY (device))) { /* This function can call lisp */ int vol; @@ -402,7 +421,7 @@ If the sound cannot be played in any oth DEFUN ("device-sound-enabled-p", Fdevice_sound_enabled_p, 0, 1, 0, /* Return t if DEVICE is able to play sound. Defaults to selected device. */ - (device)) + (USED_IF_HAVE_NATIVE_OR_NAS (device))) { #ifdef HAVE_NAS_SOUND if (DEVICE_CONNECTED_TO_NAS_P (decode_device (device))) @@ -487,12 +506,6 @@ the C kernel of Emacs uses. return Qnil; = } = -#ifdef HAVE_NAS_SOUND -#define USED_IF_HAVE_NAS(decl) decl -#else -#define USED_IF_HAVE_NAS(decl) UNUSED (decl) -#endif - DEFUN ("wait-for-sounds", Fwait_for_sounds, 0, 1, 0, /* Wait for all sounds to finish playing on DEVICE. */ @@ -608,7 +621,7 @@ init_native_sound (struct device *d) #endif /* HAVE_NATIVE_SOUND */ = void -init_device_sound (struct device *d) +init_device_sound (struct device * USED_IF_HAVE_NATIVE_OR_NAS (d)) { #ifdef HAVE_NAS_SOUND init_nas_sound (d); = = =20 --===============0952331500807838969==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============1966064520368993572==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-16 07:52:35 +0000 Message-ID: <20051116075235.18650.qmail@sunsite.dk> --===============1966064520368993572== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/16 08:52:34 Modified: packages ChangeLog Log: Package release = Revision Changes Path 1.583 +4 -0 XEmacs/packages/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.582 retrieving revision 1.583 diff -u -p -r1.582 -r1.583 --- ChangeLog 2005/11/15 06:33:20 1.582 +++ ChangeLog 2005/11/16 07:52:34 1.583 @@ -1,3 +1,7 @@ +2005-11-16 Norbert Koch + + * Packages released: ediff viper. + 2005-11-15 Norbert Koch = * Packages released: gnus. = = =20 --===============1966064520368993572==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============6421170158982923857==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/ediff ... Date: 2005-11-16 07:52:57 +0000 Message-ID: <20051116075257.18685.qmail@sunsite.dk> --===============6421170158982923857== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/16 08:52:57 Modified: packages/xemacs-packages/ediff ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.95 +4 -0 XEmacs/packages/xemacs-packages/ediff/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog= ,v retrieving revision 1.94 retrieving revision 1.95 diff -u -p -r1.94 -r1.95 --- ChangeLog 2005/11/15 18:51:36 1.94 +++ ChangeLog 2005/11/16 07:52:56 1.95 @@ -1,3 +1,7 @@ +2005-11-16 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.58 released. + 2005-11-15 Michael Kifer = * ediff-util (ediff-make-temp-file): use proper file-name-handler = = = 1.70 +1 -1 XEmacs/packages/xemacs-packages/ediff/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/Makefile,v retrieving revision 1.69 retrieving revision 1.70 diff -u -p -r1.69 -r1.70 --- Makefile 2005/11/07 21:44:27 1.69 +++ Makefile 2005/11/16 07:52:56 1.70 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.57 +VERSION =3D 1.58 AUTHOR_VERSION =3D 2.75 MAINTAINER =3D Michael Kifer PACKAGE =3D ediff = = =20 --===============6421170158982923857==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:14 2017 Content-Type: multipart/mixed; boundary="===============4916006009822469762==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/viper ... Date: 2005-11-16 07:53:20 +0000 Message-ID: <20051116075320.18727.qmail@sunsite.dk> --===============4916006009822469762== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/16 08:53:20 Modified: packages/xemacs-packages/viper ChangeLog Makefile Log: Increment VERSION in Makefile = Revision Changes Path 1.69 +4 -0 XEmacs/packages/xemacs-packages/viper/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog= ,v retrieving revision 1.68 retrieving revision 1.69 diff -u -p -r1.68 -r1.69 --- ChangeLog 2005/11/15 18:53:49 1.68 +++ ChangeLog 2005/11/16 07:53:18 1.69 @@ -1,3 +1,7 @@ +2005-11-16 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.46 released. + 2005-11-15 Michael Kifer = * viper-utils (viper-non-word-characters-reformed-vi): quote `-' in = = = 1.54 +1 -1 XEmacs/packages/xemacs-packages/viper/Makefile = Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/Makefile,v retrieving revision 1.53 retrieving revision 1.54 diff -u -p -r1.53 -r1.54 --- Makefile 2005/11/07 21:44:56 1.53 +++ Makefile 2005/11/16 07:53:18 1.54 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.45 +VERSION =3D 1.46 AUTHOR_VERSION =3D 3.09 MAINTAINER =3D Michael Kifer PACKAGE =3D viper = = =20 --===============4916006009822469762==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:15 2017 Content-Type: multipart/mixed; boundary="===============4181373147472973489==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by youngs packages/xemacs-packages/gnus/texi, doclicense.texi, gnus.texi ... Date: 2005-11-15 03:46:40 +0000 Message-ID: <20051115034640.23899.qmail@sunsite.dk> --===============4181373147472973489== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: youngs = Date: 05/11/15 04:46:40 Modified: packages/xemacs-packages/gnus/texi ChangeLog.upstream doclicense.texi emacs-mime.texi gnus-faq.texi gnus.texi infohack.el message.texi Added: packages/xemacs-packages/gnus/texi gnus-logo.eps gnus-refcard.tex xml2texi.scm xml2texi.sh Removed: packages/xemacs-packages/gnus/lisp gnus-util.el.upstream packages/xemacs-packages/gnus/texi bk-a4.tex bk-lt.tex booklet.tex gnuslogo-booklet.eps gnuslogo-refcard.eps gnusref.tex refcard.tex Log: 2005-11-15 Steve Youngs = * Sync with upstream stable branch. Please see the ChangeLog.upstream files for details. = Revision Changes Path 1.94 +5 -0 XEmacs/packages/xemacs-packages/gnus/ChangeLog = Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/ChangeLog,v retrieving revision 1.93 retrieving revision 1.94 diff -u -p -r1.93 -r1.94 --- ChangeLog 2005/10/12 08:11:15 1.93 +++ ChangeLog 2005/11/15 03:45:37 1.94 @@ -1,3 +1,8 @@ +2005-11-15 Steve Youngs + + * Sync with upstream stable branch. + Please see the ChangeLog.upstream files for details. + 2005-10-12 Norbert Koch = * Makefile (VERSION): XEmacs package 1.86 released. = = = 1.4 +3 -3 XEmacs/packages/xemacs-packages/gnus/etc/gnus-tut.txt = Index: gnus-tut.txt =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/etc/gnus-t= ut.txt,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-tut.txt 2004/01/04 22:49:21 1.3 +++ gnus-tut.txt 2005/11/15 03:45:40 1.4 @@ -25,7 +25,7 @@ Ingebrigtsen. If you have a WWW browser heart's delight at and . = -;; Copyright (C) 1995 Free Software Foundation, Inc. +;; Copyright (C) 1995, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -44,8 +44,8 @@ heart's delight at + + * gnus-start.el (gnus-dribble-read-file): Use make-local-variable + rather than make-variable-buffer-local for file-precious-flag. + +2005-11-13 Katsumi Yamaoka + + * gnus-start.el (gnus-dribble-read-file): Quote file-precious-flag. + +2005-11-11 Jan Nieuwenhuizen + + * gnus-start.el (gnus-dribble-read-file): Set file-precious-flag, + as a buffer-local variable. This avoids creating truncated + dribble files as a result of a hang up, eg. + +2005-11-04 Ken Manheimer + + * pgg-pgp.el (pgg-pgp-encrypt-region, pgg-pgp-decrypt-region) + (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) + (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) + (pgg-pgp-sign-region, pgg-pgp-sign): Add optional 'passphrase' + argument to all these routines, so the passphrase can be managed + externally and passed in to the system. + (pgg-pgp-decrypt-region, pgg-pgp-sign-region): Use new name for + pgg-add-passphrase-to-cache function. + + * pgg-pgp5.el (pgg-pgp5-encrypt-region, pgg-pgp5-decrypt-region) + (pgg-pgp5-encrypt-symmetric-region, pgg-pgp5-encrypt-symmetric) + (pgg-pgp5-encrypt, pgg-pgp5-decrypt-region, pgg-pgp5-decrypt) + (pgg-pgp5-sign-region, pgg-pgp5-sign): Add optional 'passphrase' + argument to all these routines, so the passphrase can be managed + externally and passed in to the system. + (pgg-pgp5-sign-region): Use new name of pgg-add-passphrase-to-cache + function. + +2005-10-30 Chong Yidong + + * imap.el (imap-open): Handle case where buffer is a buffer + object. + +2005-10-29 Ken Manheimer + + * pgg-gpg.el (pgg-gpg-select-matching-key): Fix: look at the right + part of the decoded armor to find the key-identifier. + (pgg-gpg-lookup-key-owner): New function to return the + human-readable identifier of a key owner. + (pgg-gpg-lookup-id-from-key-owner): Make it easy to identify the + key itself. + (pgg-gpg-decrypt-region): Prompt with the key owner (rather than + the key value) if we have a key and can match it against a secret + key. Also, added a note pointing out fact that the prompt only + indicates the first matching key. + + * pgg.el (pgg-decrypt): Passing along 'passphrase' in call to + pgg-decrypt-region. + (pgg-pending-timers): A new hash for tracking the passphrase cache + timers, so that new ones supercede old ones. + (pgg-add-passphrase-to-cache): Rename from + `pgg-add-passphrase-cache' to reduce confusion (all callers + changed). Modified to cancel old timers when new ones are added. + (pgg-remove-passphrase-from-cache): Rename from + `pgg-remove-passphrase-cache' to reduce confusion (all callers + changed). Modified to cancel old timers when their keys are + removed from the cache. + (pgg-cancel-timer): In Emacs, an alias for cancel-timer; in + XEmacs, an indirection to delete-itimer. + (pgg-read-passphrase-from-cache, pgg-read-passphrase): + Extract pgg-read-passphrase-from-cache from pgg-read-passphrase so + users can only check cache without risk of prompting. Correct bug in + notruncate behavior. + (pgg-read-passphrase-from-cache, pgg-read-passphrase) + (pgg-add-passphrase-cache, pgg-remove-passphrase-cache): + Add informative docstrings. + (pgg-decrypt): Convey provided passphrase in subordinate call to + pgg-decrypt-region. + +2005-10-20 Ken Manheimer + + * pgg.el (pgg-encrypt-region, pgg-encrypt-symmetric-region) + (pgg-encrypt-symmetric, pgg-encrypt, pgg-decrypt-region) + (pgg-decrypt, pgg-sign-region, pgg-sign): Add optional + 'passphrase' argument, so the passphrase can be managed externally + and then passed in to the system. + + * pgg.el (pgg-read-passphrase, pgg-add-passphrase-cache) + (pgg-remove-passphrase-cache): Add optional 'notruncate' argument, + so the passphrase cache can be used reliably with identifiers + besides a pgp packet's key id. + + * pgg-gpg.el (pgg-pgp-encrypt-region) + (pgg-pgp-encrypt-symmetric-region, pgg-pgp-encrypt-symmetric) + (pgg-pgp-encrypt, pgg-pgp-decrypt-region, pgg-pgp-decrypt) + (pgg-pgp-sign-region, pgg-pgp-sign): Add optional 'passphrase' + argument to all these routines, so the passphrase can be managed + externally and passed in to the system. + + * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Add optional + 'notruncate' argument, so the passphrase cache can be used + reliably with identifiers besides a pgp packet's key id. + +2005-10-29 Sascha Wilde + + * pgg-gpg.el (pgg-gpg-encrypt-symmetric-region): New function for + symmetric encryption. + (pgg-gpg-symmetric-key-p): New function to check for an symmetric + encrypted session key. + (pgg-gpg-decrypt-region): When decrypting a symmetric encrypted + message ask for the passphrase in a proper way. + + * pgg.el (pgg-encrypt-symmetric, pgg-encrypt-symmetric-region): + New user commands for symmetric encryption. + +2005-11-10 Katsumi Yamaoka + + * messagexmas.el (message-use-toolbar): Change the valid values + into default, top, bottom, left, and right. + (message-toolbar-thickness): New variable. + (message-xmas-setup-toolbar): Locate gnus-xmas-glyph-directory as + well. + (message-setup-toolbar): Make it work. + + * gnus-xmas.el (gnus-xmas-update-toolbars): New function. + (gnus-use-toolbar): Change the valid values into default, top, + bottom, left, and right. + (gnus-toolbar-thickness): New variable. + (gnus-xmas-setup-toolbar): New function. + (gnus-xmas-setup-group-toolbar): Use it. + (gnus-xmas-setup-summary-toolbar): Use it. + +2005-11-09 Katsumi Yamaoka + + * message.el (message-generate-headers): Downcase the argument + given to message-check-element. + +2005-11-01 Katsumi Yamaoka + + * gnus.el (gnus-parameters-case-fold-search): New variable. + (gnus-parameters-get-parameter): Use it. + + * gnus-score.el (gnus-home-score-file): Doc fix. + +2005-11-01 Xavier Maillard (tiny change) + + * gnus-score.el (gnus-update-score-entry-dates): Doc fix. + +2005-10-31 Katsumi Yamaoka + + * mml.el (mml-preview): Doc fix. + +2005-10-27 Reiner Steib + + * flow-fill.el (fill-flowed-encode-tests): Restore trailing + whitespace removed in revision 7.8. Use concatenated string to + protect trailing whitespace. + +2005-10-27 Jouni K Seppanen (tiny change) + + * nnimap.el (nnimap-search-uids-not-since-is-evil): Add variable. + (nnimap-request-expire-articles): Use it to avoid sending 'UID + SEARCH UID ... NOT SINCE' queries, for inefficient servers like + Courier IMAP ("some version from 2004"). Mostly based on similar + code in the same function. + +2005-10-26 Katsumi Yamaoka + + * message.el (message-display-completion-list): New function. + (message-expand-group): Use it; make sure the Completions buffer + is modifiable. + +2005-10-23 Chong Yidong + + * gnus-sum.el (gnus-ignored-from-addresses): Handle case where + user-mail-name is an empty string. + +2005-10-25 Reiner Steib + + * gnus-score.el (gnus-default-adaptive-score-alist): Set defaults + depending on gnus-score-decay-constant. + +2005-10-25 Lars Magne Ingebrigtsen + + * nnslashdot.el (nnslashdot-request-article) + (nnslashdot-retrieve-headers-1): Update to new HTML. + +2005-10-23 Simon Josefsson + + * imap.el (imap-gssapi-program): Align command line parameters + with latest GNU SASL. + (imap-gssapi-open): Ignore 'Trying ...' messages from GNU SASL. + +2005-10-20 Hiroshi Fujishima (tiny ch= ange) + + * mail-source.el (mail-source-fetch-pop): Require pop3. + (mail-source-check-pop): Ditto. + +2005-10-20 Katsumi Yamaoka + + * rfc2047.el (rfc2047-decode-encoded-words): Fix the handling of + errors. + +2005-10-19 Reiner Steib + + * gnus-art.el (gnus-treat-strip-trailing-blank-lines) + (gnus-treat-strip-leading-blank-lines): Improve doc string. + + * message.el (message-tool-bar-local-item-from-menu): Fix comment. + +2005-10-19 Katsumi Yamaoka + + * rfc2047.el (rfc2047-allow-incomplete-encoded-text): New variable. + (rfc2047-charset-to-coding-system): New function. + (rfc2047-decode-encoded-words): New function. + (rfc2047-decode-region): Use them. + (rfc2047-decode-cte): Remove. + (rfc2047-parse-and-decode): Remove. + (rfc2047-decode): Remove. + +2005-10-15 Kenichi Handa + + * rfc2047.el (rfc2047-decode-cte): New function. + (rfc2047-decode-region): Change the way to decode successive + encoded-words: decode B- or Q-encoding in each encoded-word, + concatenate them, and decode it as charset. + +2005-10-17 Chong Yidong + + * gnus-cus.el (gnus-custom-map): New variable. Bind mouse-1 to + widget-move-and-invoke. + (gnus-custom-mode): Use gnus-custom-map. + +2005-10-15 Bill Wohler + + * message.el (message-tool-bar-map): Renamed image file from + mail_send to mail/send. + +2005-10-16 Masatake YAMATO + + * message.el (message-expand-group): Pass the common + prefix substring of completion to `display-completion-list'. + +2005-10-09 Daniel Brockman + + * format-spec.el (format-spec): Propagate text properties of % spec. + +2005-01-21 Derek Atkins (tiny change) + + * pgg-pgp.el (pgg-pgp-decrypt-region): Use passphrase cache. + +2005-10-08 Simon Josefsson + + * pgg-parse.el (top-level): Don't require custom, it is + autoloaded. (To sync with No Gnus.) + +2005-05-09 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching, + tiny patch from "Georg C. F. Greve" . + +2005-10-08 Simon Josefsson + + * pgg-def.el (top-level): Don't require custom, it is + autoloaded. (To sync with No Gnus.) + +2005-10-07 Katsumi Yamaoka + + * Makefile.in (list-installed-shadows): New entry. + (install): Use it. + (remove-installed-shadows): New entry. + + * dgnushack.el (dgnushack-default-load-path): New variable. + (dgnushack-find-lisp-shadows): New function. + (dgnushack-remove-lisp-shadows): New function. + +2005-10-04 David Hansen + + * nnrss.el (nnrss-request-article): Add support for the comments tag. + (nnrss-check-group): Ditto. + +2005-10-04 Reiner Steib + + * mm-url.el (mm-url-predefined-programs): Add switches for curl. + + * gnus-util.el (gnus-remove-duplicates): Remove. + + * nnmail.el (nnmail-article-group): Use mm-delete-duplicates + instead of gnus-remove-duplicates. + + * message.el (message-remove-duplicates): Remove. + (message-idna-to-ascii-rhs-1): Use mm-delete-duplicates instead of + message-remove-duplicates. + + * mm-util.el (mm-delete-duplicates): Use `delete-dups' if + available, else use implementation from `delete-dups'. + +2005-10-02 Katsumi Yamaoka + + * Makefile.in (install-el-elc): New entry. + (install): Use it so that .el files are necessarily installed. + +2005-09-30 Katsumi Yamaoka + + * time-date.el: Autoload parse-time-string, XEmacs needs it. + +2005-09-30 Stefan Monnier + + * mm-decode.el (mm-inline-media-tests): Check presence of the diff-mode + function rather than the diff-mode.el package. + (mm-display-external): Use with-current-buffer. + (mm-viewer-completion-map, mm-viewer-completion-map): + Move initialization inside declaration. + +2005-09-28 Reiner Steib + + * message.el: Remove useless autoloads. + +2005-09-28 Simon Josefsson + + * message.el (message-use-idna): Default to t. + (message-use-idna): Test whether encoding works too. Doc fix. + +2005-09-28 Katsumi Yamaoka + + * nntp.el (nntp-warn-about-losing-connection): Remove. + +2005-09-27 Reiner Steib + + * mm-uu.el (mm-uu-emacs-sources-regexp): Make variable + customizable. Change default value. + (mm-uu-diff-groups-regexp): Change default value. + (mm-uu-type-alist): Add doc string. + (mm-uu-configure): Add doc string. Make it interactive. + (mm-uu-diff-groups-regexp): Fix missing quotes from previous commit. + +2005-09-27 Simon Josefsson + + * message.el (message-idna-to-ascii-rhs-1): Reformat. + +2005-09-27 Arne J=1B,Ax=1B(Brgensen + + * message.el (message-remove-duplicates): New function. + Implementation borrowed from `gnus-remove-duplicates'. + (message-idna-to-ascii-rhs): Also encode idna addresses in + Reply-To:, Mail-Reply-To: and Mail-Followup-To:. + (message-idna-to-ascii-rhs-1): When `message-use-idna' is 'ask + only ask about the same idna domain once per header and also tell + in what header to replace the idna domain. + + * gnus-art.el (article-decode-idna-rhs): Also decode idna + addresses in Reply-To:, Mail-Reply-To: and Mail-Followup-To:. + (article-decode-idna-rhs): Fix regexp so that all idna-address in + a header is decoded and not just the last one. + +2005-09-27 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-display-single): Don't modify text if it + has been decoded. + + * mm-decode.el (mm-insert-part): Don't modify text if it has been + decoded. + + * mm-view.el (mm-inline-text): Don't strip text props unless + decoding enriched or richtext parts. + +2005-09-25 Romain Francoise + + * gnus-agent.el (gnus-agent-expire-group, gnus-agent-expire): + * gnus-start.el (gnus-subscribe-interactively): + * gnus-uu.el (gnus-uu-grab-articles): + End `yes-or-no-p' and `y-or-n-p' prompts with question mark and + space. + +2005-09-24 Emilio C. Lopes + + * smime.el (smime-sign-buffer, smime-decrypt-buffer): + * mm-view.el (mm-view-pkcs7-decrypt): + * gnus-sum.el (gnus-summary-limit-to-extra) + (gnus-summary-respool-article, gnus-read-move-group-name): + * gnus-score.el (gnus-summary-increase-score): + * gnus-util.el (gnus-completing-read-with-default): + * gnus-art.el (gnus-read-save-file-name) + (gnus-summary-save-in-rmail, gnus-summary-save-in-mail) + (gnus-summary-save-in-file, gnus-summary-save-body-in-file): + * message.el (message-check-news-header-syntax): + Follow convention for reading with the minibuffer. + +2005-09-22 Reiner Steib + + * spam-report.el (spam-report-url-ping-plain): + Use gnus-extended-version as User-Agent. + + * gnus-agent.el (gnus-agent-synchronize-flags): Explain why the + default value is nil. + +2005-09-20 Lars Magne Ingebrigtsen + + * gnus-agent.el (gnus-agent-synchronize-flags): Switch the + default to nil, to be able to use Gnus at all. If the default + switches to something else, then the function should be fixed not + be exceedingly slow. + +2005-09-19 Reiner Steib + + * mm-url.el (mm-url-decode-entities): Fix regexp. + +2005-09-18 Deepak Goel + + * sieve.el (sieve-help): Fix `message' call: first arg should be a + format spec. + +2005-09-16 Katsumi Yamaoka + + * gnus.el (gnus-group-startup-message): Bind image-load-path. + +2005-09-14 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-display-part): Protect against broken + MIME messages. + +2005-09-13 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-edit-article-done): Remove text props + before parsing header. + +2005-09-10 Reiner Steib + + * spam-report.el (spam-report-gmane): Fix generation of spam + report URL. + +2005-09-10 Simon Josefsson + + * gnus-agent.el (gnus-agent-synchronize-flags): Make the default + t, based on discussion on the ding list with Robert Epprecht + . + +2005-09-07 Reiner Steib + + * spam-report.el (spam-report-gmane): Make it work without + X-Report-Spam header. Gmane now only provides Archived-At. + This is only used if `spam-report-gmane-use-article-number' is nil. + (spam-report-gmane-spam-header): Remove. Not used anymore. + + * nnweb.el (nnweb-google-wash-article): Print a message if article + is not available. + +2005-09-07 TSUCHIYA Masatoshi + + * gnus-art.el (gnus-mime-display-single): Decode text/* parts + content before displaying. + +2005-09-06 Reiner Steib + + * mml-smime.el: Remove defvar of gnus-extract-address-components. + +2005-09-06 Katsumi Yamaoka + + * mm-view.el (mm-display-inline-fontify): Disable support modes. + + * lpath.el: Don't bind mc-pgp-always-sign, url-current-object, + url-package-name, url-package-version, + w3m-cid-retrieve-function-alist, w3m-current-buffer, + w3m-display-inline-images, and w3m-minor-mode-map. + +2005-09-05 Reiner Steib + + * message.el (message-tab-body-function): Fixed mismatched custom + type. + + * gnus.el (gnus-group-change-level-function): Ditto. + + * gnus-msg.el (gnus-outgoing-message-group): Ditto. + + * gnus-art.el (gnus-signature-limit) + (gnus-article-mime-part-function): Ditto. + +2005-09-04 Reiner Steib + + * nnweb.el (nnweb-type-definition, nnweb-google-wash-article): + Make fetching article by MID work again for Google Groups. Added + FIXME concerning gnus-group-make-web-group. + + * mml-smime.el (mml-smime-sign-query, mml-smime-get-dns-cert): + Don't depend on Gnus by using mail-extract-address-components if + gnus-extract-address-components is not bound. + + * gnus.el (gnus-user-agent): Use list of symbols instead of + symbols. Display full version number for (S)XEmacs. Optionally + display (S)XEmacs codename. + + * gnus-util.el (gnus-emacs-version): Update for new + `gnus-user-agent'. + + * gnus-msg.el (gnus-extended-version): Make it possible to omit + Gnus version. + +2005-09-02 Hrvoje Niksic + + * mm-encode.el (mm-encode-content-transfer-encoding): Likewise + when encoding. + + * mm-bodies.el (mm-decode-content-transfer-encoding): + De-canonicalize CRLF for all text content types, not just + text/plain. + +2005-09-02 Katsumi Yamaoka + + * gnus-sum.el (gnus-thread-hide-subtree): Doc fix. + + * gnus-msg.el (gnus-inews-insert-gcc): Fix the mistake of using + list, not listp. + +2005-08-29 Romain Francoise + + * gnus-fun.el (gnus-convert-image-to-face-command): Fix typo in + docstring. + (gnus-face-from-file): Likewise. + +2005-08-31 Juanma Barranquero + + * gnus-art.el (w3m-minor-mode-map): + * gnus-spec.el (gnus-newsrc-file-version): + * gnus-util.el (nnmail-active-file-coding-system) + (gnus-original-article-buffer, gnus-user-agent): + * gnus.el (gnus-ham-process-destinations) + (gnus-parameter-ham-marks-alist) + (gnus-parameter-spam-marks-alist, gnus-spam-autodetect) + (gnus-spam-autodetect-methods, gnus-spam-newsgroup-contents) + (gnus-spam-process-destinations, gnus-spam-process-newsgroups): + * mm-decode.el (gnus-current-window-configuration): + * mm-extern.el (gnus-article-mime-handles): + * mm-url.el (url-current-object, url-package-name) + (url-package-version): + * mm-view.el (gnus-article-mime-handles, gnus-newsgroup-charset) + (smime-keys, w3m-cid-retrieve-function-alist) + (w3m-current-buffer, w3m-display-inline-images) + (w3m-minor-mode-map): + * mml-smime.el (gnus-extract-address-components): + * mml.el (gnus-article-mime-handles, gnus-mouse-2) + (gnus-newsrc-hashtb, message-default-charset) + (message-deletable-headers, message-options) + (message-posting-charset, message-required-mail-headers) + (message-required-news-headers): + * mml1991.el (mc-pgp-always-sign): + * mml2015.el (mc-pgp-always-sign): + * nnheader.el (nnmail-extra-headers): + * rfc1843.el (gnus-decode-encoded-word-function) + (gnus-decode-header-function, gnus-newsgroup-name): + * spam-stat.el (gnus-original-article-buffer): Add defvars. + +2005-08-22 Karl Chen (tiny change) + + * gnus-art.el (gnus-treatment-function-alist): Move date-lapsed to + the end of the date treatments. + +2005-08-15 Simon Josefsson + + * pgg.el (url-insert-file-contents): Don't autoload it, Emacs has + it in url-handlers.el and XEmacs in url.el. Reported by Luca + Capello and Romain Francoise. + (pgg-fetch-key-function): Removed, not used? + (pgg-insert-url-with-w3): Require url, to get + url-insert-file-contents regardless of where it is defined. + +2005-08-08 Simon Josefsson + + * pgg.el: Autoload url-insert-file-contents instead of loading + w3/url. + (pgg-insert-url-with-w3): Don't load url here. + +2005-08-05 Daiki Ueno + + * mml2015.el (mml2015-pgg-sign): Make sure micalg is correct. + + * pgg-parse.el (pgg-parse-hash-algorithm-alist): Add SHA-2. + +2005-08-06 Romain Francoise + + * message.el: Fix typo in docstring. + +2005-08-05 Katsumi Yamaoka + + * mm-bodies.el (mm-encode-body): Use coding system rather than + charset to encode text. + + * mm-util.el (mm-find-mime-charset-region): Attempt to reduce the + number of charsets if utf-8 is available (XEmacs). + +2005-08-04 Lars Magne Ingebrigtsen + + * gnus-art.el (article-unsplit-urls): Don't anchor urls to the + start of the lines. + (gnus-picon-databases): Add /usr/share/picons. + +2005-08-04 Reiner Steib + + * gnus-art.el (gnus-button-valid-localpart-regexp): New variable + taken from `gnus-button-mid-or-mail-regexp'. + (gnus-button-mid-or-mail-regexp, gnus-button-alist): Use it. + (gnus-button-alist): Improve regexp for domain part of the MIDs + for news:localpart(a)domain buttons. + (gnus-button-ctan-directory-regexp): Update. + + * message.el (message-kill-buffer): Raise the current frame. + (message-bury): Use `window-dedicated-p'. + +2005-08-02 Katsumi Yamaoka + + * sieve-manage.el (sieve-manage-interactive-login): Use + make-local-variable rather than make-variable-buffer-local. + (sieve-manage-open): Ditto. + (sieve-manage-authenticate): Ditto. + + * mml.el (mml-generate-mime-1): Make the content type default to + text/plain if the filename is not specified. + +2005-08-01 Katsumi Yamaoka + + * gnus-uu.el (gnus-uu-save-article): Use insert-buffer-substring + instead of insert-buffer. + + * message.el (message-yank-original): Ditto; set the mark at the + end of the yanked message. + +2005-07-29 Katsumi Yamaoka + + * gnus-art.el (gnus-article-next-page-1): Reduce the number of + lines to scroll rather than to stop it. + + * mml.el (mml-generate-default-type): Add doc string. + (mml-generate-mime-1): Use mm-default-file-encoding or make it + default to application/octet-stream when determining the content + type if it is not specified for the part or the mml contents; add + a comment about mml-generate-default-type. + +2005-07-29 Reiner Steib + + * mml.el (mml-generate-mime-1): Use mm-default-file-encoding or + make it default to application/octet-stream when determining the + content type if it is not specified for the external contents. + +2005-07-28 Katsumi Yamaoka + + * rfc2231.el (rfc2231-parse-string): Take care that not only a + segmented parameter but also other parameters might be there. + +2005-07-27 Katsumi Yamaoka + + * mm-decode.el (mm-display-external): Delete temp file, directory + and buffer immediately if the external process is exited. + +2005-07-26 Katsumi Yamaoka + + * gnus-art.el (gnus-article-next-page-1): Don't scroll if there're + fewer lines than that of scroll-margin. + (gnus-article-prev-page): Narrow the range to bind scroll-in-place. + +2005-07-25 Katsumi Yamaoka + + * gnus-art.el (gnus-article-next-page): Revert. + (gnus-article-beginning-of-window): New macro. + (gnus-article-next-page-1): Use it. + (gnus-article-prev-page): Ditto. + (gnus-mime-save-part-and-strip): Use insert-buffer-substring + instead of insert-buffer. + (gnus-mime-delete-part): Ditto. + (gnus-article-edit-exit): Ditto. + + * gnus-util.el (gnus-beginning-of-window): Remove. + (gnus-end-of-window): Remove. + + * lpath.el: Don't bind scroll-margin. + +2005-07-25 Simon Josefsson + + * pgg.el (pgg-insert-url-with-w3): Don't load w3, it is possible + to have the url package without w3. Reported by Daiki Ueno + and Luigi Panzeri . + +2005-07-21 Stefan Monnier + + * mml.el (mml-minibuffer-read-disposition): Don't use inline by default + for text/rtf. Display default in prompt. Pass default for M-n. + + * mm-uu.el (mm-uu-copy-to-buffer): Use with-current-buffer. + +2005-07-16 Romain Francoise + + * gnus-uu.el (gnus-uu-save-article): Use `message-make-date' + instead of `current-time-string' as the latter creates a time + string that is not RFC 2822 compliant (it lacks the zone). + +2005-07-16 Lars Magne Ingebrigtsen + + * gnus-msg.el (gnus-button-mailto): Remove + save-selected-window-window hackery because it relies on + save-selected-window internals. + +2005-07-15 Katsumi Yamaoka + + * gnus-art.el (gnus-article-next-page): Use gnus-end-of-window. + (gnus-article-next-page-1): Use gnus-beginning-of-window. + (gnus-article-prev-page): Ditto. + + * gnus-util.el (gnus-beginning-of-window): New function. + (gnus-end-of-window): New function. + + * lpath.el: Bind scroll-margin for XEmacs. + +2005-07-13 Katsumi Yamaoka + + * gnus-salt.el (gnus-pick-mode): Remove the 5th arg of + gnus-add-minor-mode. + (gnus-binary-mode): Ditto. + + * gnus-topic.el (gnus-topic-mode): Ditto. + +2005-07-08 Ralf Angeli (tiny change) + + * gnus-art.el (gnus-article-next-page, gnus-article-next-page-1) + (gnus-article-prev-page): Take scroll-margin into consideration. + +2005-07-04 Lute Kamstra + + Update FSF's address in GPL notices. + +2005-07-04 Juanma Barranquero + + * gnus.el (gnus-exit): + * gnus-group.el (gnus-group-icons): + * nnmail.el (nnmail-prepare): Fix typos in docstrings. + + * gnus-nocem.el (gnus-nocem): + * message.el (message-various, message-buffers, message-sending) + (message-interface, message-forwarding, message-insertion) + (message-headers, message-news, message-mail): + * pgg-gpg.el (pgg-gpg): + * pgg-parse.el (pgg-parse): + * pgg-pgp.el (pgg-pgp): + * pgg-pgp5.el (pgg-pgp5): + * pop3.el (pop3): Finish `defgroup' description with period. + +2005-07-01 Katsumi Yamaoka + + * gnus-art.el (article-display-face): Improve the efficiency. + (article-display-x-face): Ditto; remove grey x-face stuff. + +2005-06-30 Katsumi Yamaoka + + * gnus-art.el (article-display-face): Correct the position in + which Faces are inserted; use dolist. + +2005-06-29 Didier Verna + + * gnus-art.el (article-display-face): Display faces in correct + order. + +2005-06-29 Katsumi Yamaoka + + * gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify. + (gnus-nocem-check-article): Fetch the Type header. + (gnus-nocem-message-wanted-p): Fix the way to examine types. + (gnus-nocem-verify-issuer): Use functionp instead of fboundp. + (gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized. + + * pgg.el (pgg-verify): Return the verification result. + +2005-06-24 Juanma Barranquero + + * gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not + `show-nonbreak-escape'. + +2005-06-23 Lute Kamstra + + * gnus-art.el (gnus-article-mode): Use kill-all-local-variables. + + * dig.el (dig-mode): + * smime.el (smime-mode): Use gnus-run-mode-hooks. + +2005-06-21 Juanma Barranquero + + * nnimap.el (nnimap-split-download-body): Fix spellings. + +2005-06-16 Juanma Barranquero + + * gnus-art.el (gnus-article-encrypt-body): + * gnus-cus.el (gnus-score-customize): + * mm-extern.el (mm-extern-local-file, mm-inline-external-body): + * pop3.el (pop3-user): Don't use `format' on `error' arguments. + +2005-06-16 Miles Bader + + * spam.el (spam): Remove "-face" suffix from face name. + (spam-face): New backward-compatibility alias for renamed face. + (spam-face, spam-initialize): Use renamed spam face. + + * message.el (message-header-to, message-header-cc) + (message-header-subject, message-header-newsgroups) + (message-header-other, message-header-name) + (message-header-xheader, message-separator, message-cited-text) + (message-mml): Remove "-face" suffix from face names. + (message-header-to-face, message-header-cc-face) + (message-header-subject-face, message-header-newsgroups-face) + (message-header-other-face, message-header-name-face) + (message-header-xheader-face, message-separator-face) + (message-cited-text-face, message-mml-face): + New backward-compatibility aliases for renamed faces. + (message-font-lock-keywords): Use renamed message faces. + + * sieve-mode.el (sieve-control-commands, sieve-action-commands) + (sieve-test-commands, sieve-tagged-arguments): + Remove "-face" suffix from face names. + (sieve-control-commands-face, sieve-action-commands-face) + (sieve-test-commands-face, sieve-tagged-arguments-face): + New backward-compatibility aliases for renamed faces. + (sieve-control-commands-face, sieve-action-commands-face) + (sieve-test-commands-face, sieve-tagged-arguments-face): + Use renamed sieve faces. + + * gnus.el (gnus-group-news-1, gnus-group-news-1-empty) + (gnus-group-news-2, gnus-group-news-2-empty, gnus-group-news-3) + (gnus-group-news-3-empty, gnus-group-news-4) + (gnus-group-news-4-empty, gnus-group-news-5) + (gnus-group-news-5-empty, gnus-group-news-6) + (gnus-group-news-6-empty, gnus-group-news-low) + (gnus-group-news-low-empty, gnus-group-mail-1) + (gnus-group-mail-1-empty, gnus-group-mail-2) + (gnus-group-mail-2-empty, gnus-group-mail-3) + (gnus-group-mail-3-empty, gnus-group-mail-low) + (gnus-group-mail-low-empty, gnus-summary-selected) + (gnus-summary-cancelled, gnus-summary-high-ticked) + (gnus-summary-low-ticked, gnus-summary-normal-ticked) + (gnus-summary-high-ancient, gnus-summary-low-ancient) + (gnus-summary-normal-ancient, gnus-summary-high-undownloaded) + (gnus-summary-low-undownloaded) + (gnus-summary-normal-undownloaded, gnus-summary-high-unread) + (gnus-summary-low-unread, gnus-summary-normal-unread) + (gnus-summary-high-read, gnus-summary-low-read) + (gnus-summary-normal-read, gnus-splash): + Remove "-face" suffix from face names. + (gnus-group-news-1-face, gnus-group-news-1-empty-face) + (gnus-group-news-2-face, gnus-group-news-2-empty-face) + (gnus-group-news-3-face, gnus-group-news-3-empty-face) + (gnus-group-news-4-face, gnus-group-news-4-empty-face) + (gnus-group-news-5-face, gnus-group-news-5-empty-face) + (gnus-group-news-6-face, gnus-group-news-6-empty-face) + (gnus-group-news-low-face, gnus-group-news-low-empty-face) + (gnus-group-mail-1-face, gnus-group-mail-1-empty-face) + (gnus-group-mail-2-face, gnus-group-mail-2-empty-face) + (gnus-group-mail-3-face, gnus-group-mail-3-empty-face) + (gnus-group-mail-low-face, gnus-group-mail-low-empty-face) + (gnus-summary-selected-face, gnus-summary-cancelled-face) + (gnus-summary-high-ticked-face, gnus-summary-low-ticked-face) + (gnus-summary-normal-ticked-face) + (gnus-summary-high-ancient-face, gnus-summary-low-ancient-face) + (gnus-summary-normal-ancient-face) + (gnus-summary-high-undownloaded-face) + (gnus-summary-low-undownloaded-face) + (gnus-summary-normal-undownloaded-face) + (gnus-summary-high-unread-face, gnus-summary-low-unread-face) + (gnus-summary-normal-unread-face, gnus-summary-high-read-face) + (gnus-summary-low-read-face, gnus-summary-normal-read-face) + (gnus-splash-face): + New backward-compatibility aliases for renamed faces. + (gnus-group-startup-message): Use renamed gnus faces. + + * gnus-srvr.el (gnus-server-agent, gnus-server-opened) + (gnus-server-closed, gnus-server-denied, gnus-server-offline) + (gnus-server-agent): Remove "-face" suffix from face names. + (gnus-server-agent-face, gnus-server-opened-face) + (gnus-server-closed-face, gnus-server-denied-face) + (gnus-server-offline-face): + New backward-compatibility aliases for renamed faces. + (gnus-server-agent-face, gnus-server-opened-face) + (gnus-server-closed-face, gnus-server-denied-face) + (gnus-server-offline-face): Use renamed gnus faces. + + * gnus-picon.el (gnus-picon-xbm, gnus-picon): + Remove "-face" suffix from face names. + (gnus-picon-xbm-face, gnus-picon-face): + New backward-compatibility aliases for renamed faces. + + * gnus-cite.el (gnus-cite-attribution, gnus-cite-1, gnus-cite-2) + (gnus-cite-3, gnus-cite-4, gnus-cite-5, gnus-cite-6) + (gnus-cite-7, gnus-cite-8, gnus-cite-9, gnus-cite-10) + (gnus-cite-11): Remove "-face" suffix from face names. + (gnus-cite-attribution-face, gnus-cite-face-1, gnus-cite-face-2) + (gnus-cite-face-3, gnus-cite-face-4, gnus-cite-face-5) + (gnus-cite-face-6, gnus-cite-face-7, gnus-cite-face-8) + (gnus-cite-face-9, gnus-cite-face-10, gnus-cite-face-11): + New backward-compatibility aliases for renamed faces. + (gnus-cite-attribution-face, gnus-cite-face-list) + (gnus-article-boring-faces): Use renamed gnus faces. + + * gnus-art.el (gnus-signature, gnus-header-from) + (gnus-header-subject, gnus-header-newsgroups, gnus-header-name) + (gnus-header-content): Remove "-face" suffix from face names. + (gnus-signature-face, gnus-header-from-face) + (gnus-header-subject-face, gnus-header-newsgroups-face) + (gnus-header-name-face, gnus-header-content-face): + New backward-compatibility aliases for renamed faces. + (gnus-signature-face, gnus-header-face-alist): Use renamed gnus faces. + + * gnus-sum.el (gnus-summary-selected-face) + (gnus-summary-highlight): Use renamed gnus faces. + * gnus-group.el (gnus-group-highlight): Likewise. + +2005-06-14 Juanma Barranquero + + * gnus-sieve.el (gnus-sieve-article-add-rule): + * legacy-gnus-agent.el (gnus-agent-unlist-expire-days): + * spam-stat.el (spam-stat-buffer-change-to-spam) + (spam-stat-buffer-change-to-non-spam): Follow error conventions. + + * message.el (message-is-yours-p): + * gnus-sum.el (gnus-auto-select-subject): Fix quoting in docstring. + +2005-06-14 Katsumi Yamaoka + + * mm-view.el (mm-inline-text): Withdraw the last change. + +2005-06-09 Katsumi Yamaoka + + * mm-view.el (mm-inline-text): Turn off adaptive-fill-mode while + executing enriched-decode. + +2005-06-04 Luc Teirlinck + + * gnus-art.el (article-update-date-lapsed): Use `save-match-data'. + +2005-06-04 Lute Kamstra + + * nnfolder.el (nnfolder-read-folder): Make sure that undo + information is never recorded. + +2005-06-03 Stefan Monnier + + * gnus-art.el (gnus-emphasis-alist): Disable the strikethru thingy. + +2005-06-02 Katsumi Yamaoka + + * pop3.el (pop3-md5): Run md5 in the binary mode. + (pop3-md5-program-args): New variable. + + * starttls.el (starttls-set-process-query-on-exit-flag): + Use eval-and-compile. + +2005-05-31 Katsumi Yamaoka + + * gnus-art.el (article-display-x-face): Replace + process-kill-without-query by gnus-set-process-query-on-exit-flag. + + * gnus-group.el: Bind gnus-cache-active-hashtb when compiling. + + * gnus-util.el (gnus-set-process-query-on-exit-flag): Alias to + set-process-query-on-exit-flag or process-kill-without-query. + + * html2text.el (html2text-fix-paragraphs): Use `while - re-search' + loop instead of replace-regexp. + + * imap.el (imap-ssl-open): Use set-process-query-on-exit-flag + instead of process-kill-without-query if it is available. + + * mm-util.el (mm-insert-file-contents): Bind find-file-hook + instead of find-file-hooks if it is available. + + * mml1991.el: Bind pgg-default-user-id when compiling. + + * mml2015.el: Bind pgg-default-user-id when compiling. + + * nndraft.el (nndraft-request-associate-buffer): + Use write-contents-functions instead of write-contents-hooks if it is + available. + + * nnheader.el (nnheader-find-file-noselect): Bind find-file-hook + instead of find-file-hooks if it is available. + + * nntp.el (nntp-open-connection): Replace + process-kill-without-query by gnus-set-process-query-on-exit-flag. + (nntp-open-ssl-stream): Ditto. + (nntp-open-tls-stream): Ditto. + + * pgg.el: Don't bind itimer vars; don't autoload itimer functions. + (pgg-run-at-time-1): New macro. + (pgg-run-at-time): Use it. + + * starttls.el (starttls-set-process-query-on-exit-flag): Alias to + set-process-query-on-exit-flag or process-kill-without-query. + (starttls-open-stream-gnutls): Use it instead of + process-kill-without-query. + (starttls-open-stream): Ditto. + +2005-05-31 Simon Josefsson + + * imap.el (imap-ssl-open): Use imap-process-connection-type, + instead of hard coding to nil. + +2005-05-31 Kevin Greiner + + * gnus-group.el: Require gnus-sum and autoload functions to + resolve warnings when gnus-group.el compiled alone. + +2005-05-30 Reiner Steib + + * gnus-agent.el (gnus-agent-regenerate-group) + (gnus-agent-fetch-articles): Replace `string-to-int' by + `string-to-number'. + * gnus-art.el (gnus-button-fetch-group): Ditto. + * gnus-cache.el (gnus-cache-generate-active) + (gnus-cache-articles-in-group): Ditto. + * gnus-group.el (gnus-group-set-current-level) + (gnus-group-insert-group-line): Ditto. + * gnus-score.el (gnus-score-set-expunge-below) + (gnus-score-set-mark-below, gnus-summary-score-effect) + (gnus-summary-score-entry): Ditto. + * gnus-soup.el (gnus-soup-send-packet, gnus-soup-parse-areas) + (gnus-soup-pack): Ditto. + * gnus-spec.el (gnus-xmas-format): Ditto. + * gnus-start.el (gnus-newsrc-to-gnus-format): Ditto. + * gnus-sum.el (gnus-create-xref-hashtb): Ditto. + * gnus-uu.el (gnus-uu-expand-numbers): Ditto. + * nnbabyl.el (nnbabyl-article-group-number): Ditto. + * nndb.el (nndb-get-remote-expire-response): Ditto. + * nndiary.el (nndiary-parse-schedule-value) + (nndiary-string-to-number, nndiary-request-replace-article) + (nndiary-request-article): Ditto. + * nndoc.el (nndoc-rnews-body-end, nndoc-mbox-body-end): Ditto. + * nndraft.el (nndraft-articles, nndraft-request-group): Ditto. + * nneething.el (nneething-make-head): Ditto. + * nnfolder.el (nnfolder-request-article) + (nnfolder-retrieve-headers): Ditto. + * nnheader.el (nnheader-file-to-number): Ditto. + * nnkiboze.el (nnkiboze-request-article): Ditto. + * nnmail.el (nnmail-process-unix-mail-format) + (nnmail-process-babyl-mail-format): Ditto. + * nnmbox.el (nnmbox-read-mbox, nnmbox-article-group-number): Ditto. + * nnmh.el (nnmh-update-gnus-unreads, nnmh-active-number) + (nnmh-request-create-group, nnmh-request-list-1) + (nnmh-request-group, nnmh-request-article): Ditto. + * nnml.el (nnml-request-replace-article, nnml-request-article): Ditto. + * nnrss.el (nnrss-find-rss-via-syndic8): Ditto. + * nnsoup.el (nnsoup-make-active): Ditto. + * nnspool.el (nnspool-find-id, nnspool-request-group): Ditto. + * nntp.el (nntp-find-group-and-number) + (nntp-retrieve-headers-with-xover): Ditto. + * pgg-gpg.el (pgg-gpg-snarf-keys-region): Ditto. + * pgg-parse.el (pgg-read-body, pgg-read-bytes) + (pgg-format-key-identifier): Ditto. + * pop3.el (pop3-last, pop3-stat): Ditto. + * qp.el (quoted-printable-decode-region): Ditto. + + * spam-report.el (spam-report-url-ping-mm-url): Use format instead + of concat. + +2005-05-30 Katsumi Yamaoka + + * gnus-agent.el (gnus-category-mode): Use gnus-run-mode-hooks. + + * gnus-art.el (gnus-article-mode): Use gnus-run-mode-hooks. + + * gnus-cus.el (gnus-custom-mode): Use gnus-run-mode-hooks. + + * gnus-eform.el (gnus-edit-form-mode): Use gnus-run-mode-hooks. + + * gnus-group.el (gnus-group-mode): Use gnus-run-mode-hooks. + + * gnus-kill.el (gnus-kill-file-mode): Use gnus-run-mode-hooks. + + * gnus-salt.el (gnus-tree-mode): Use gnus-run-mode-hooks. + (gnus-carpal-mode): Ditto. + + * gnus-srvr.el (gnus-server-mode): Use gnus-run-mode-hooks. + (gnus-browse-mode): Ditto. + + * gnus-sum.el (gnus-summary-mode): Use gnus-run-mode-hooks. + + * gnus-util.el (gnus-run-mode-hooks): Save current buffer. + +2005-05-29 Richard M. Stallman + + * gnus-cite.el (gnus-cite-add-face): Set overlay's evaporate property. + +2005-05-27 Katsumi Yamaoka + + * gnus-util.el (gnus-run-mode-hooks): New function. + + * score-mode.el (gnus-score-mode): Use gnus-run-mode-hooks. + + * dgnushack.el: Advise byte-optimize-form-code-walker to avoid the + ``...called for effect'' warnings for Emacs 21.4 as well as 21.3. + +2005-05-26 Luc Teirlinck + + * gnus-agent.el (gnus-agent-make-mode-line-string): + Use mode-line-highlight as mouse-face. + +2005-05-17 Katsumi Yamaoka + + * canlock.el (canlock): Change the parent group to news. + + * deuglify.el (gnus-outlook-deuglify): Add :group. + + * dig.el (dig): Add :group. + + * gnus-art.el (gnus-inhibit-mime-unbuttonizing): Add :group. + + * gnus-cite.el (gnus-cite-attribution-face): Add :group. + (gnus-cite-face-1, gnus-cite-face-2, gnus-cite-face-3): Ditto. + (gnus-cite-face-4, gnus-cite-face-5, gnus-cite-face-6): Ditto. + (gnus-cite-face-7, gnus-cite-face-8, gnus-cite-face-9): Ditto. + (gnus-cite-face-10, gnus-cite-face-11): Ditto. + + * gnus-diary.el (gnus-diary): Add :group. + + * gnus.el (gnus-group-news-1-face): Add :group. + (gnus-group-news-1-empty-face): Ditto. + (gnus-group-news-2-face, gnus-group-news-2-empty-face): Ditto. + (gnus-group-news-3-face, gnus-group-news-3-empty-face): Ditto. + (gnus-group-news-4-face, gnus-group-news-4-empty-face): Ditto. + (gnus-group-news-5-face, gnus-group-news-5-empty-face): Ditto. + (gnus-group-news-6-face, gnus-group-news-6-empty-face): Ditto. + (gnus-group-news-low-face, gnus-group-news-low-empty-face): Ditto. + (gnus-group-mail-1-face, gnus-group-mail-1-empty-face): Ditto. + (gnus-group-mail-2-face, gnus-group-mail-2-empty-face): Ditto. + (gnus-group-mail-3-face, gnus-group-mail-3-empty-face): Ditto. + (gnus-group-mail-low-face, gnus-group-mail-low-empty-face): Ditto. + (gnus-summary-selected-face, gnus-summary-cancelled-face): Ditto. + (gnus-summary-high-ticked-face): Ditto. + (gnus-summary-low-ticked-face): Ditto. + (gnus-summary-normal-ticked-face): Ditto. + (gnus-summary-high-ancient-face): Ditto. + (gnus-summary-low-ancient-face): Ditto. + (gnus-summary-normal-ancient-face): Ditto. + (gnus-summary-high-undownloaded-face): Ditto. + (gnus-summary-low-undownloaded-face): Ditto. + (gnus-summary-normal-undownloaded-face): Ditto. + (gnus-summary-high-unread-face): Ditto. + (gnus-summary-low-unread-face): Ditto. + (gnus-summary-normal-unread-face): Ditto. + (gnus-summary-high-read-face, gnus-summary-low-read-face): Ditto. + (gnus-summary-normal-read-face, gnus-splash-face): Ditto. + + * message.el (message-minibuffer-local-map): Add :group. + + * sieve-manage.el (sieve-manage-log): Add :group. + (sieve-manage-default-user): Diito. + (sieve-manage-server-eol, sieve-manage-client-eol): Ditto. + (sieve-manage-streams, sieve-manage-stream-alist): Ditto. + (sieve-manage-authenticators): Ditto. + (sieve-manage-authenticator-alist): Ditto. + (sieve-manage-default-port): Ditto. + + * sieve-mode.el (sieve-control-commands-face): Add :group. + (sieve-action-commands-face): Ditto. + (sieve-test-commands-face): Ditto. + (sieve-tagged-arguments-face): Ditto. + + * smime.el (smime): Add :group. + + * spam-report.el (spam-report): Add :group. + + * spam.el (spam, spam-face): Add :group. + +2005-05-26 Lute Kamstra + + * score-mode.el (gnus-score-mode): Use run-mode-hooks. + +2005-05-16 Katsumi Yamaoka + + * dgnushack.el: Autoload mail-extract-address-components for XEmacs. + + * gnus-art.el: Don't autoload mail-extract-address-components. + + * gnus.el: Use eval-and-compile to autoload message-y-or-n-p. + + * nndb.el: Don't declare the nndb back end two or more times; don't + autoload news-reply-mode, news-setup, cancel-timer and telnet. + + * nntp.el: Autoload format-spec instead of format; use + eval-and-compile to evaluate autoload forms. + + * spam-report.el (spam-report-process-queue): Use gnus-point-at-eol. + +2005-04-28 Katsumi Yamaoka + + * gnus-art.el (article-date-ut): Support converting date in + forwarded parts as well. + (gnus-article-save-original-date): New macro. + (gnus-display-mime): Use it. + +2005-04-28 David Hansen + + * nnrss.el (nnrss-check-group, nnrss-request-article): Support the + enclosure element of . + +2005-04-24 Teodor Zlatanov + + * spam-report.el (spam-report-unplug-agent) + (spam-report-plug-agent, spam-report-deagentize) + (spam-report-agentize, spam-report-url-ping-temp-agent-function): + support for the Agent in spam-report: when unplugged, report to a + file; when plugged, submit all the requests. + [Added missing offline functionality from trunk.] + +2005-04-24 Reiner Steib + + * spam-report.el (spam-report-url-to-file) + (spam-report-requests-file): New function and variable for offline + reporting. + (spam-report-url-ping-function): Add `spam-report-url-to-file' + and user defined function. + (spam-report-process-queue): New function. + Process requests from `spam-report-requests-file'. + (spam-report-url-ping-mm-url): Autoload. + [Added missing offline functionality from trunk.] + +2005-04-18 Katsumi Yamaoka + + * qp.el (quoted-printable-encode-region): Save excursion. + +2005-04-13 Katsumi Yamaoka + + * gnus-art.el (gnus-mime-inline-part): Use mm-string-to-multibyte. + + * lpath.el: Fbind display-time-event-handler; don't fbind + string-to-multibyte. + + * qp.el (quoted-printable-encode-region): Use mm-string-to-multibyte. + +2005-04-13 Miles Bader + + * mm-util.el (mm-string-to-multibyte): Use Gnus trunk definition. + +2005-04-12 Katsumi Yamaoka + + * nnrss.el (nnrss-node-text): Replace CRLFs (which might be + contained in text because xml.el decodes entities) with LFs. + +2005-04-11 Lute Kamstra + + * message.el (message-make-date): Handle byte-compiler warnings + differently. + * nnimap.el (nnimap-date-days-ago): Ditto. + +2005-04-10 Stefan Monnier + + * mm-util.el (mm-string-to-multibyte): New function. + (mm-detect-coding-region): Typo. + +2005-04-11 Katsumi Yamaoka + + * gnus-art.el (gnus-article-read-summary-keys): Fix misplaced parens. + +2005-04-06 Katsumi Yamaoka + + * mm-util.el (mm-coding-system-p): Don't return binary for the nil + argument in XEmacs. + + * nnrss.el (nnrss-compatible-encoding-alist): New variable. + (nnrss-request-group): Decode group name first. + (nnrss-request-article): Make a text/plain article if mml-to-mime + failed. + (nnrss-get-encoding): Return a compatible encoding according to + nnrss-compatible-encoding-alist. + (nnrss-opml-export): Use dolist. + (nnrss-find-el): Use consp instead of listp. + (nnrss-order-hrefs): Use dolist. + +2005-04-06 Arne J=1B,Ax=1B(Brgensen + + * nnrss.el (nnrss-verbose): Remove. + (nnrss-request-group): Use `nnheader-message' instead. + +2005-04-06 Mark Plaksin (tiny change) + + * nnrss.el (nnrss-verbose): New variable. + (nnrss-request-group): Make it say nnrss is requesting a group. + +2005-04-06 Katsumi Yamaoka + + * dgnushack.el: Autoload sgml-mode for XEmacs. + + * gnus-agent.el (gnus-agent-group-path): Decode group name. + (gnus-agent-group-pathname): Ditto. + + * gnus-cache.el (gnus-cache-file-name): Decode group name. + + * gnus-group.el (gnus-group-line-format-alist): Use decoded group + name for only %g and %c. + (gnus-group-insert-group-line): Bind gnus-tmp-decoded-group + instead of gnus-tmp-group to decoded group name. + (gnus-group-make-group): Decode group name. + (gnus-group-delete-group): Ditto. + (gnus-group-make-rss-group): Exclude `/'s from group names; + register the group data after opening the nnrss group; unify + non-ASCII group names; encode group name. + (gnus-group-catchup-current): Decode group name. + (gnus-group-expire-articles-1): Ditto. + (gnus-group-set-current-level): Ditto. + (gnus-group-kill-group): Ditto. + + * gnus-spec.el (gnus-update-format-specifications): Flush the + group format spec cache if it doesn't support decoded group names. + + * lpath.el: Fbind detect-coding-string. + + * mm-url.el (mm-url-predefined-programs): Add --silent arg to curl. + + * nnrss.el: Require rfc2047 and mml. + (nnrss-file-coding-system): New variable. + (nnrss-format-string): Redefine it as an inline function. + (nnrss-decode-group-name): New function. + (nnrss-string-as-multibyte): Remove. + (nnrss-retrieve-headers): Decode group name; don't use + nnrss-format-string. + (nnrss-request-group): Decode group name. + (nnrss-request-article): Decode group name; allow a Message-ID as + well as an article number; don't use nnrss-format-string; encode a + Message-ID string which may contain non-ASCII characters; use + mml-to-mime to compose a MIME article; use search-forward instead + of re-search-forward. + (nnrss-request-expire-articles): Decode group name. + (nnrss-request-delete-group): Delete entries in nnrss-group-alist + as well; decode group name. + (nnrss-get-encoding): Fix regexp. + (nnrss-fetch): Clarify error message. + (nnrss-read-server-data): Use insert-file-contents instead of load; + bind file-name-coding-system; use multibyte buffer. + (nnrss-save-server-data): Insert newline; bind + coding-system-for-write to the value of nnrss-file-coding-system; + bind file-name-coding-system; add coding cookie. + (nnrss-read-group-data): Use insert-file-contents instead of load; + bind file-name-coding-system; use multibyte buffer. + (nnrss-save-group-data): Bind coding-system-for-write to the + value of nnrss-file-coding-system; bind file-name-coding-system. + (nnrss-decode-entities-string): Rename from n-d-e-unibyte-string; + make it work with non-ASCII text. + (nnrss-opml-export): Use mm-set-buffer-file-coding-system instead + of set-buffer-file-coding-system. + (nnrss-find-el): Check carefully whether there's a list of string + which old xml.el may return rather than a string; make it work + with old xml.el as well. + + * time-date.el (time-to-seconds): Don't use the #xhhhh syntax + which Emacs 20 doesn't support. + (seconds-to-time, days-to-time, time-subtract, time-add): Ditto. + +2005-04-06 Tsuyoshi AKIHO + + * gnus-sum.el (gnus-summary-walk-group-buffer): Decode group name. + + * nnrss.el (nnrss-get-encoding): New function. + (nnrss-fetch): Use unibyte buffer initially; bind + coding-system-for-read while performing mm-url-insert; remove ^Ms; + decode contents according to the encoding attribute. + (nnrss-save-group-data): Add coding cookie. + (nnrss-mime-encode-string): New function. + (nnrss-check-group): Use it to encode subject and author. + +2005-04-06 Maciek Pasternacki (tiny chang= e) + + * nnrss.el (nnrss-fetch): Signal an error if w3-parse-buffer also + failed. + +2005-04-06 Jesper Harder + + * mm-util.el (mm-subst-char-in-string): Support inplace. + + * nnrss.el: Pedantic docstring and whitespace fixes (courtesy of + checkdoc.el). + (nnrss-request-article): Cleanup. + (nnrss-request-delete-group): Use nnrss-make-filename. + (nnrss-read-server-data): Use nnrss-make-filename; use load. + (nnrss-save-server-data): Use nnrss-make-filename; use gnus-prin1. + (nnrss-read-group-data): Fix off-by-one error. From Joakim Verona + ; hash on description if link is missing; use + nnrss-make-filename; use load. + (nnrss-save-group-data): Use nnrss-make-filename; use gnus-prin1. + (nnrss-make-filename): New function. + (nnrss-close): New function. + (nnrss-check-group): Hash on description if link is missing. + (nnrss-get-namespace-prefix): Use string=3D to compare strings! + Reported by David D. Smith . + (nnrss-opml-export): Turn on sgml-mode. + +2005-04-06 Mark A. Hershberger + + * nnrss.el (nnrss-opml-import, nnrss-opml-export): New functions. + +2005-04-04 Reiner Steib + + * message.el (message-make-date): Add defvars in order to silence + the byte compiler inside the defun. + + * nnimap.el (nnimap-date-days-ago): Ditto. + + * gnus-demon.el (parse-time-string): Add autoload. + + * gnus-delay.el (parse-time-string): Add autoload. + + * gnus-art.el (parse-time-string): Add autoload. + + * nnultimate.el (parse-time): Require for `parse-time-string'. + +2005-04-03 Katsumi Yamaoka + + * gnus-sum.el (gnus-summary-make-menu-bar): Avoid the + "Unrecognized menu descriptor" error in XEmacs. + +2005-03-25 Katsumi Yamaoka + + * message.el (message-resend): Bind rfc2047-encode-encoded-words. + + * mm-util.el (mm-replace-in-string): New function. + (mm-xemacs-find-mime-charset-1): Ignore errors while loading + latin-unity, which cannot be used with XEmacs 21.1. + + * rfc2047.el (rfc2047-encode-function-alist): Rename from + rfc2047-encoding-function-alist in order to avoid conflicting with + the old version. + (rfc2047-encode-message-header): Remove useless goto-char. + (rfc2047-encodable-p): Don't move point. + (rfc2047-syntax-table): Treat `(' and `)' as is. + (rfc2047-encode-region): Concatenate words containing non-ASCII + characters in structured fields; don't encode space-delimited + ASCII words even in unstructured fields; don't break words at + char-category boundaries; encode encoded words in structured + fields; treat text within parentheses as special; show the + original text when error has occurred; move point to the end of + the region after encoding, suggested by IRIE Tetsuya + ; treat backslash-quoted characters as + non-special; check carefully whether to encode special characters; + fix some kind of misconfigured headers; signal a real error if + debug-on-quit or debug-on-error is non-nil; don't infloop, + suggested by Hiroshi Fujishima ; assume + the close parenthesis may be included in the encoded word; encode + bogus delimiters. + (rfc2047-encode-string): Use mm-with-multibyte-buffer. + (rfc2047-encode-max-chars): New variable. + (rfc2047-encode-1): New function. + (rfc2047-encode): Use it; encode text so that it occupies the + maximum width within 76-column; work correctly on Q encoding for + iso-2022-* charsets; fold the line before encoding; don't append a + space if the encoded word includes close parenthesis. + (rfc2047-fold-region): Use existing whitespace for LWSP; make it + sure not to break a line just after the header name. + (rfc2047-b-encode-region): Remove. + (rfc2047-b-encode-string): New function. + (rfc2047-q-encode-region): Remove. + (rfc2047-q-encode-string): New function. + (rfc2047-encode-parameter): New function. + (rfc2047-encoded-word-regexp): Don't use shy group. + (rfc2047-decode-region): Follow rfc2047-encoded-word-regexp change. + (rfc2047-parse-and-decode): Ditto. + (rfc2047-decode): Treat the ascii coding-system as raw-text by default. + +2005-03-25 Lars Magne Ingebrigtsen + + * rfc2047.el (rfc2047-encode-encoded-words): New variable. + (rfc2047-field-value): Strip props. + (rfc2047-encode-message-header): Disable header folding -- not + all headers can be folded, and this should be done by the message + composition mode. Probably. I think. + (rfc2047-encodable-p): Say that =3D? needs encoding. + (rfc2047-encode-region): Encode =3D? strings. + +2005-03-25 Jesper Harder + + * rfc2047.el (rfc2047-encoded-word-regexp): Support RFC 2231 + language tags; remove unnecessary '+'. Reported by Stefan Wiens + . + (rfc2047-decode-string): Don't cons a string unnecessarily. + (rfc2047-parse-and-decode, rfc2047-decode): Use a character for + the encoding to avoid consing a string. + (rfc2047-decode): Use mm-subst-char-in-string instead of + mm-replace-chars-in-string. + +2005-03-25 TSUCHIYA Masatoshi + + * rfc2047.el (rfc2047-encode): Use uppercase letters to specify + encodings of MIME-encoded words, in order to improve + interoperability with several broken MUAs. + +2005-03-21 Reiner Steib + + * gnus-srvr.el (gnus-browse-select-group): Add NUMBER argument and + pass it to `gnus-browse-read-group'. + (gnus-browse-read-group): Add NUMBER argument and pass it to + `gnus-group-read-ephemeral-group'. + + * gnus-group.el (gnus-group-read-ephemeral-group): Add NUMBER + argument and pass it to `gnus-group-read-group'. + +2005-03-19 Aidan Kehoe + + * mm-util.el (mm-xemacs-find-mime-charset): Only call + mm-xemacs-find-mime-charset-1 if we have the mule feature + available at runtime. + +2005-03-25 Werner Lemberg + + * nnmaildir.el: Replace `illegal' with `invalid'. + +2005-03-23 Lute Kamstra + + * time-date.el: Add comment on time value formats. + Don't require parse-time. + (with-decoded-time-value): New macro. + (encode-time-value): New function. + (time-to-seconds, time-less-p, time-subtract, time-add): Use them. + (days-to-time): Return a valid time value when arg is huge. + (time-since): Use time-subtract. + (time-to-number-of-days): Use time-to-seconds. + +2005-03-22 Stefan Monnier + + * gnus-start.el (gnus-display-time-event-handler): + Check display-time-timer at runtime rather than only at load time + in case display-time-mode is turned off in the mean time. + +2005-03-16 Reiner Steib + + * nnimap.el (nnimap-open-connection): Print which authinfo file is + used. + + * nneething.el (nneething-map-file-directory): Derive from + `gnus-directory'. + + * gnus-art.el (gnus-header-button-alist): Use `gnus-msg-mail' for + the To/Cc button. + +2005-03-15 Reiner Steib + + * nnmaildir.el (nnmaildir-request-accept-article): + Use `nnheader-cancel-timer' for compatibility with current XEmacs. + +2005-03-13 Steve Youngs + + * gnus.el: Don't try and mark `gnus-agent-save-groups' as an + autoloaded function. + From: Andrey Slusar . + 2005-03-13 Steve Youngs = * mm-url.el: Require timer-funcs at compile time when in XEmacs for `with-timeout'. = * mail-source.el: Require timer-funcs at compile time when in - XEmacs for `run-with-idle-timer'. = + XEmacs for `run-with-idle-timer'. = * gnus-async.el: Ditto. = * dgnushack.el: No need to ignore `run-with-idle-timer', XEmacs - has this function now. = + has this function now. + +2005-03-16 Lute Kamstra + + * message.el (message-make-date): Require parse-time. = 2005-03-10 Stefan Monnier = @@ -17,8 +1561,7 @@ = 2005-03-10 Arne J=1B,Ax=1B(Brgensen (tiny change) = - * nnimap.el (nnimap-retrieve-headers-from-server): Fix off-by-one - flaw. + * nnimap.el (nnimap-retrieve-headers-from-server): Fix off-by-one flaw. = 2005-03-08 Bjorn Solberg (tiny change) = @@ -359,7 +1902,7 @@ = 2004-11-04 Katsumi Yamaoka = - * gnus-art. (gnus-article-edit-article): Don't associate the + * gnus-art.el (gnus-article-edit-article): Don't associate the article buffer with a draft file. This is a temporary measure against the 2004-08-22 change to gnus-article-edit-mode. = @@ -585,7 +2128,7 @@ unless plugged. Disable the agent so that an open failure causes an error. = -2004-10-18 Kevin Greiner for Reiner Steib= +2004-10-18 Reiner Steib = * gnus-agent.el (gnus-agent-fetched-hook): Add :version. (gnus-agent-go-online): Change :version. @@ -627,21 +2170,21 @@ (gnus-convert-mark-converter-prompt) (gnus-convert-converter-needs-prompt): Fix use of property list. = -2004-10-18 Kevin Greiner for Katsumi Yama= oka +2004-10-18 Katsumi Yamaoka = * gnus-agent.el (gnus-agent-restore-gcc): Use ^ and regexp-quote. = -2004-10-18 Kevin Greiner for Lars Magne I= ngebrigtsen +2004-10-18 Lars Magne Ingebrigtsen = * gnus-start.el (gnus-get-unread-articles-in-group): Don't do stuff for non-living groups. = -2004-10-18 Kevin Greiner for Lars Magne I= ngebrigtsen +2004-10-18 Lars Magne Ingebrigtsen = * gnus-agent.el (gnus-agent-synchronize-flags): Default to nil. (gnus-agent-regenerate-group): Using nil messages aren't valid. = -2004-10-18 Kevin Greiner for Lars Magne I= ngebrigtsen +2004-10-18 Lars Magne Ingebrigtsen = * gnus-agent.el (gnus-agent-read-agentview): Inline gnus-uncompress-range. @@ -658,7 +2201,7 @@ message-send-mail-function. The change makes the agent real-time responsive to user changes to message-send-mail-function. = -2004-10-18 Kevin Greiner for Reiner Steib= +2004-10-18 Reiner Steib = * gnus-start.el (gnus-get-unread-articles): Fix last commit. = @@ -699,12 +2242,12 @@ = * gnus-util.el (gnus-rename-file): New function. = -2004-10-18 Kevin Greiner for Katsumi Yama= oka +2004-10-18 Katsumi Yamaoka = * gnus-agent.el (gnus-agent-regenerate-group): Activate the group when the group's active is not available. = -2004-10-18 Kevin Greiner for Katsumi Yama= oka +2004-10-18 Katsumi Yamaoka = * gnus-agent.el (gnus-agent-read-agentview): Add a missing arg to error. = = = 1.6 +24 -13 XEmacs/packages/xemacs-packages/gnus/lisp/GNUS-NEWS = Index: GNUS-NEWS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/GNUS-= NEWS,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- GNUS-NEWS 2004/06/07 02:39:30 1.5 +++ GNUS-NEWS 2005/11/15 03:45:41 1.6 @@ -1,11 +1,21 @@ GNUS NEWS -- history of user-visible changes. -Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundatio= n, Inc. +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, + 2005 Free Software Foundation, Inc. See the end for copying conditions. = Please send Gnus bug reports to bugs(a)gnus.org. For older news, see Gnus info node "New Features". = =0C +* Installation Changes + +** Lisp files are now installed in .../site-lisp/gnus/ by default. +It defaulted to .../site-lisp/ formerly. In addition to this, the new +installer issues a warning if the other Gnus installations which will +shadow the latest one are detected. You can then remove those shadows +manually or remove them using `make remove-installed-shadows'. + +=0C * Changes in Oort Gnus = ** `F' (`gnus-article-followup-with-original') and `R' @@ -62,7 +72,7 @@ picons, install the picons database from = and point `gnus-picon-databases' to that location. = -** If the new option `gnus-treat-body-boundary' is `head', a boundary = +** If the new option `gnus-treat-body-boundary' is `head', a boundary line is drawn at the end of the headers. = ** Retrieval of charters and control messages @@ -77,7 +87,7 @@ for sending yourself reminders. Setup w ** If `auto-compression-mode' is enabled, attachments are automatically decompressed when activated. = -** If the new option `nnml-use-compressed-files' is non-nil, = +** If the new option `nnml-use-compressed-files' is non-nil, the nnml back end allows compressed message files. = ** Signed article headers (X-PGP-Sig) can be verified with `W p'. @@ -91,24 +101,24 @@ Do you often find yourself replying to n the new option `gnus-confirm-mail-reply-to-news' is just the thing for you. = -** If the new option `gnus-summary-display-while-building' is non-nil, = +** If the new option `gnus-summary-display-while-building' is non-nil, the summary buffer is shown and updated as it's being built. = ** The new `recent' mark "." indicates newly arrived messages (as opposed to old but unread messages). = -** The new option `gnus-gcc-mark-as-read' automatically marks = +** The new option `gnus-gcc-mark-as-read' automatically marks Gcc articles as read. = ** The nndoc back end now supports mailman digests and exim bounces. = -** Gnus supports RFC 2369 mailing list headers, and adds a number of = +** Gnus supports RFC 2369 mailing list headers, and adds a number of related commands in mailing list groups. = ** The Date header can be displayed in a format that can be read aloud in English, see `gnus-treat-date-english'. = -** The envelope sender address can be customized when using Sendmail, se= e = +** The envelope sender address can be customized when using Sendmail, see `message-sendmail-envelope-from'. = ** diffs are automatically highlighted in groups matching @@ -141,10 +151,10 @@ The new make.bat makes make-x.bat superf ** Support for non-ASCII domain names = Message supports non-ASCII domain names in From:, To: and Cc: and will -query you whether to perform encoding when you try to send a message. -The variable `message-use-idna' controls this. Gnus will also decode -non-ASCII domain names in From:, To: and Cc: when you view a message. -The variable `gnus-use-idna' controls this. +encode them when you try to send a message. The variable +`message-use-idna' controls this. Gnus will also decode non-ASCII +domain names in From:, To: and Cc: when you view a message. The +variable `gnus-use-idna' controls this. = ** Better handling of Microsoft citation styles = @@ -488,7 +498,7 @@ If you used procmail like in (setq nnmail-procmail-directory "~/mail/incoming/") (setq nnmail-procmail-suffix "\\.in") = -this now has changed to = +this now has changed to = (setq mail-sources '((directory :path "~/mail/incoming/" @@ -527,7 +537,8 @@ ever-changing layouts. ---------------------------------------------------------------------- Copyright information: = -Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, + 2005 Free Software Foundation, Inc. = Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the = = = 1.4 +6 -4 XEmacs/packages/xemacs-packages/gnus/lisp/binhex.el = Index: binhex.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/binhe= x.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- binhex.el 2004/09/28 02:21:02 1.3 +++ binhex.el 2005/11/15 03:45:41 1.4 @@ -1,6 +1,8 @@ ;;; binhex.el --- elisp native binhex decode -;; Copyright (c) 1998, 1999, 2000, 2001, 2002 Free Software Foundation, = Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Shenghuo Zhu ;; Keywords: binhex news = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -50,7 +52,7 @@ input and write the converted data to it (defcustom binhex-use-external (executable-find binhex-decoder-program) "*Use external binhex program." - :version "21.4" + :version "22.1" :group 'gnus-extract :type 'boolean) = = = = 1.5 +5 -5 XEmacs/packages/xemacs-packages/gnus/lisp/canlock.el = Index: canlock.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/canlo= ck.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- canlock.el 2005/03/13 00:23:22 1.4 +++ canlock.el 2005/11/15 03:45:42 1.5 @@ -1,7 +1,7 @@ ;;; canlock.el --- functions for Cancel-Lock feature = -;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Katsumi Yamaoka ;; Keywords: news, cancel-lock, hmac, sha1, rfc2104 @@ -18,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with this program; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -50,7 +50,7 @@ = (defgroup canlock nil "The Cancel-Lock feature." - :group 'applications) + :group 'news) = (defcustom canlock-password nil "Password to use when signing a Cancel-Lock or a Cancel-Key header." = = = 1.3 +4 -3 XEmacs/packages/xemacs-packages/gnus/lisp/compface.el = Index: compface.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/compf= ace.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- compface.el 2004/09/28 02:21:02 1.2 +++ compface.el 2005/11/15 03:45:42 1.3 @@ -1,6 +1,7 @@ ;;; compface.el --- functions for converting X-Face headers -;; Copyright (C) 2002 Free Software Foundation, Inc. = +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.5 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/deuglify.el = Index: deuglify.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/deugl= ify.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- deuglify.el 2005/03/13 00:23:22 1.4 +++ deuglify.el 2005/11/15 03:45:42 1.5 @@ -1,6 +1,6 @@ ;;; deuglify.el --- deuglify broken Outlook (Express) articles = -;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Copyright (C) 2001, 2002 Raymond Scholz = ;; Author: Raymond Scholz @@ -22,8 +22,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -231,7 +231,8 @@ = (defgroup gnus-outlook-deuglify nil "Deuglify articles generated by broken user agents like MS Outlook (Ex= press)." - :version "22.1") + :version "22.1" + :group 'gnus) = ;;;###autoload (defcustom gnus-outlook-deuglify-unwrap-min 45 = = = 1.7 +86 -4 XEmacs/packages/xemacs-packages/gnus/lisp/dgnushack.= el = Index: dgnushack.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/dgnus= hack.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- dgnushack.el 2005/03/13 00:23:22 1.6 +++ dgnushack.el 2005/11/15 03:45:42 1.7 @@ -1,5 +1,6 @@ ;;; dgnushack.el --- a hack to set the load path for byte-compiling -;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 +;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, +;; 2004, 2005 ;; Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen @@ -20,13 +21,15 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = ;;; Code: = +(defvar dgnushack-default-load-path (copy-sequence load-path)) + (defalias 'facep 'ignore) = (require 'cl) @@ -127,7 +130,7 @@ = (when (and (not (featurep 'xemacs)) (=3D emacs-major-version 21) - (=3D emacs-minor-version 3) + (>=3D emacs-minor-version 3) (condition-case code (let ((byte-compile-error-on-warn t)) (byte-optimize-form (quote (pop x)) t) @@ -202,6 +205,7 @@ than subr.el." (autoload 'dolist "cl-macs" nil nil 'macro) (autoload 'enriched-decode "enriched") (autoload 'info "info" nil t) + (autoload 'mail-extract-address-components "mail-extr") (autoload 'mail-fetch-field "mail-utils") (autoload 'make-annotation "annotations") (autoload 'make-display-table "disp-table") @@ -215,6 +219,7 @@ than subr.el." (if (emacs-version>=3D 21 5) (autoload 'setenv "process" nil t) (autoload 'setenv "env" nil t)) + (autoload 'sgml-mode "psgml" nil t) (autoload 'smtpmail-send-it "smtpmail") (autoload 'sort-numeric-fields "sort" nil t) (autoload 'sort-subr "sort") @@ -421,6 +426,83 @@ Modify to suit your needs.")) ;;; no-update-autoloads: t ;;; End: ;;; gnus-load.el ends here")))) + +(defun dgnushack-find-lisp-shadows (&optional lispdir) + "Return a list of directories in which other Gnus installations exist. +This function looks for the other Gnus installations which will shadow +the new Gnus Lisp modules which have been installed in LISPDIR, using +the default `load-path'. The return value will make sense only when +LISPDIR is existent and is listed in the default `load-path'. Assume +LISPDIR will be prepended to `load-path' by a user if the default +`load-path' does not contain it." + (unless lispdir + (setq lispdir (getenv "lispdir"))) + (when (and lispdir (file-directory-p lispdir)) + (setq lispdir (file-truename (directory-file-name lispdir))) + (let ((indices '("gnus.elc" "gnus.el" "gnus.el.bz2" "gnus.el.gz" + "message.elc" "message.el" "message.el.bz2" + "message.el.gz")) + (path (delq nil (mapcar + (lambda (p) + (condition-case nil + (when (and p (file-directory-p p)) + (file-truename (directory-file-name p))) + (error nil))) + dgnushack-default-load-path))) + rest elcs) + (while path + (setq rest (cons (car path) rest) + path (delete (car rest) (cdr path)))) + (setq path (nreverse (cdr (member lispdir rest))) + rest nil) + (while path + (setq elcs indices) + (while elcs + (when (file-exists-p (expand-file-name (pop elcs) (car path))) + (setq rest (cons (car path) rest) + elcs nil))) + (setq path (cdr path))) + (prog1 + (setq path (nreverse rest)) + (when path + (let (print-level print-length) + (princ (concat "\n\ +WARNING: The other Gnus installation" (if (cdr path) "s have" " has") "\ + been detected in:\n\n " (mapconcat 'identity path "\n ") "\n\n\ +You will need to modify the run-time `load-path', remove them manually, +or remove them using `make remove-installed-shadows'.\n\n")))))))) + +(defun dgnushack-remove-lisp-shadows (&optional lispdir) + "Remove the other Gnus installations which shadow the recent one." + (let ((path (with-temp-buffer + (let ((standard-output (current-buffer))) + (dgnushack-find-lisp-shadows lispdir)))) + elcs files shadows file) + (when path + (unless (setq elcs (directory-files srcdir nil "\\.elc\\'")) + (error "You should build .elc files first.")) + (setq files + (apply + 'append + (mapcar + (lambda (el) + (list (concat el "c") el (concat el ".bz2") (concat el ".gz"))) + (append + (list (file-name-nondirectory dgnushack-gnus-load-file) + (file-name-nondirectory dgnushack-cus-load-file)) + (mapcar (lambda (elc) (substring elc 0 -1)) elcs))))) + (while path + (setq shadows files) + (while shadows + (setq file (expand-file-name (pop shadows) (car path))) + (when (file-exists-p file) + (princ (concat " Removing " file "...")) + (condition-case nil + (progn + (delete-file file) + (princ "done\n")) + (error (princ "failed\n"))))) + (setq path (cdr path)))))) = ;;; dgnushack.el ends here = = = = 1.4 +4 -3 XEmacs/packages/xemacs-packages/gnus/lisp/earcon.el = Index: earcon.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/earco= n.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- earcon.el 2004/09/28 02:21:02 1.3 +++ earcon.el 2005/11/15 03:45:42 1.4 @@ -1,6 +1,7 @@ ;;; earcon.el --- Sound effects for messages = -;; Copyright (C) 1996, 2000, 2001, 2003 Free Software Foundation +;; Copyright (C) 1996, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Steven L. Baur = @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: ;; This file provides access to sound effects in Gnus. = = = 1.6 +39 -33 XEmacs/packages/xemacs-packages/gnus/lisp/flow-fill.= el = Index: flow-fill.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/flow-= fill.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- flow-fill.el 2005/03/13 00:23:22 1.5 +++ flow-fill.el 2005/11/15 03:45:42 1.6 @@ -1,6 +1,7 @@ ;;; flow-fill.el --- interpret RFC2646 "flowed" text = -;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Simon Josefsson ;; Keywords: mail @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -160,38 +161,43 @@ RFC 2646 suggests 66 characters for read (defvar show-trailing-whitespace)) = (defvar fill-flowed-encode-tests - '( + `( ;; The syntax of each list element is: ;; (INPUT . EXPECTED-OUTPUT) - ("> Thou villainous ill-breeding spongy dizzy-eyed -> reeky elf-skinned pigeon-egg! ->> Thou artless swag-bellied milk-livered ->> dismal-dreaming idle-headed scut! ->>> Thou errant folly-fallen spleeny reeling-ripe ->>> unmuzzled ratsbane! ->>>> Henceforth, the coding style is to be strictly ->>>> enforced, including the use of only upper case. ->>>>> I've noticed a lack of adherence to the coding ->>>>> styles, of late. ->>>>>> Any complaints? -" . "> Thou villainous ill-breeding spongy dizzy-eyed reeky elf-skinned -> pigeon-egg! ->> Thou artless swag-bellied milk-livered dismal-dreaming idle-headed ->> scut! ->>> Thou errant folly-fallen spleeny reeling-ripe unmuzzled ratsbane! ->>>> Henceforth, the coding style is to be strictly enforced, ->>>> including the use of only upper case. ->>>>> I've noticed a lack of adherence to the coding styles, of late. ->>>>>> Any complaints? -") -; (" -;> foo -;> -;> -;> bar -;" . " -;> foo bar -;") + (,(concat + "> Thou villainous ill-breeding spongy dizzy-eyed \n" + "> reeky elf-skinned pigeon-egg! \n" + ">> Thou artless swag-bellied milk-livered \n" + ">> dismal-dreaming idle-headed scut!\n" + ">>> Thou errant folly-fallen spleeny reeling-ripe \n" + ">>> unmuzzled ratsbane!\n" + ">>>> Henceforth, the coding style is to be strictly \n" + ">>>> enforced, including the use of only upper case.\n" + ">>>>> I've noticed a lack of adherence to the coding \n" + ">>>>> styles, of late.\n" + ">>>>>> Any complaints?") + . + ,(concat + "> Thou villainous ill-breeding spongy dizzy-eyed reeky elf-skinn= ed\n" + "> pigeon-egg! \n" + ">> Thou artless swag-bellied milk-livered dismal-dreaming idle-h= eaded\n" + ">> scut!\n" + ">>> Thou errant folly-fallen spleeny reeling-ripe unmuzzled rats= bane!\n" + ">>>> Henceforth, the coding style is to be strictly enforced,\n" + ">>>> including the use of only upper case.\n" + ">>>>> I've noticed a lack of adherence to the coding styles, of = late.\n" + ">>>>>> Any complaints?\n" + )) + ;; (,(concat + ;; "\n" + ;; "> foo\n" + ;; "> \n" + ;; "> \n" + ;; "> bar\n") + ;; . + ;; ,(concat + ;; "\n" + ;; "> foo bar\n")) )) = (defun fill-flowed-test () = = = 1.4 +16 -6 XEmacs/packages/xemacs-packages/gnus/lisp/format-spe= c.el = Index: format-spec.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/forma= t-spec.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- format-spec.el 2004/09/28 02:21:03 1.3 +++ format-spec.el 2005/11/15 03:45:43 1.4 @@ -1,6 +1,8 @@ ;;; format-spec.el --- functions for formatting arbitrary formatting str= ings -;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. = +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: tools = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -31,7 +33,8 @@ "Return a string based on FORMAT and SPECIFICATION. FORMAT is a string containing `format'-like specs like \"bash %u %k\", while SPECIFICATION is an alist mapping from format spec characters -to values." +to values. Any text properties on a %-spec itself are propagated to +the text that it generates." (with-temp-buffer (insert format) (goto-char (point-min)) @@ -45,10 +48,17 @@ to values." (let* ((num (match-string 1)) (spec (string-to-char (match-string 2))) (val (cdr (assq spec specification)))) - (delete-region (1- (match-beginning 0)) (match-end 0)) (unless val (error "Invalid format character: %s" spec)) - (insert (format (concat "%" num "s") val)))) + ;; Pad result to desired length. + (let ((text (format (concat "%" num "s") val))) + ;; Insert first, to preserve text properties. + (insert-and-inherit text) + ;; Delete the specifier body. + (delete-region (+ (match-beginning 0) (length text)) + (+ (match-end 0) (length text))) + ;; Delete the percent sign. + (delete-region (1- (match-beginning 0)) (match-beginning 0))= ))) ;; Signal an error on bogus format strings. (t (error "Invalid format string")))) = = = 1.8 +20 -14 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-agent= .el = Index: gnus-agent.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= agent.el,v retrieving revision 1.7 retrieving revision 1.8 diff -u -p -r1.7 -r1.8 --- gnus-agent.el 2005/03/13 00:23:22 1.7 +++ gnus-agent.el 2005/11/15 03:45:43 1.8 @@ -1,7 +1,8 @@ ;;; gnus-agent.el --- unplugged support for Gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -114,9 +115,11 @@ If nil, only read articles will be expir :group 'gnus-agent :type 'function) = -(defcustom gnus-agent-synchronize-flags nil +(defcustom gnus-agent-synchronize-flags t "Indicate if flags are synchronized when you plug in. If this is `ask' the hook will query the user." + ;; If the default switches to something else than nil, then the functi= on + ;; should be fixed not be exceedingly slow. See 2005-09-20 ChangeLog = entry. :version "21.1" :type '(choice (const :tag "Always" t) (const :tag "Never" nil) @@ -561,7 +564,8 @@ manipulated as follows: (if (and (fboundp 'propertize) (fboundp 'make-mode-line-mouse-map)) (propertize string 'local-map - (make-mode-line-mouse-map mouse-button mouse-func)) + (make-mode-line-mouse-map mouse-button mouse-func) + 'mouse-face 'mode-line-highlight) string)) = (defun gnus-agent-toggle-plugged (set-to) @@ -1371,7 +1375,7 @@ downloaded into the agent." (nnheader-translate-file-chars (nnheader-replace-duplicate-chars-in-string (nnheader-replace-chars-in-string - (gnus-group-real-name group) + (gnus-group-real-name (gnus-group-decoded-name group)) ?/ ?_) ?. ?_))) (if (or nnmail-use-long-file-names @@ -1387,8 +1391,10 @@ downloaded into the agent." ;; unplugged. The agent must, therefore, use the same directory ;; while plugged. (let ((gnus-command-method (or gnus-command-method - (gnus-find-method-for-group group)))) - (nnmail-group-pathname (gnus-group-real-name group) (gnus-agent-dire= ctory)))) + (gnus-find-method-for-group group)))) + (nnmail-group-pathname (gnus-group-real-name + (gnus-group-decoded-name group)) + (gnus-agent-directory)))) = (defun gnus-agent-get-function (method) (if (gnus-online method) @@ -1537,7 +1543,7 @@ downloaded into the agent." (while (looking-at "\\([^: \n]+\\):\\([0-9]+\\= ) *") (push (cons (buffer-substring (match-beginni= ng 1) (match-end 1)) - (string-to-int + (string-to-number (buffer-substring (match-beginning 2) (match-end 2)))) crosses) @@ -2549,7 +2555,7 @@ The following commands are available: (buffer-disable-undo) (setq truncate-lines t) (setq buffer-read-only t) - (gnus-run-hooks 'gnus-category-mode-hook)) + (gnus-run-mode-hooks 'gnus-category-mode-hook)) = (defalias 'gnus-category-position-point 'gnus-goto-colon) = @@ -2930,7 +2936,7 @@ FORCE is equivalent to setting the expir (if (or (not (eq articles t)) (yes-or-no-p (concat "Are you sure that you want to " - "expire all articles in " group "."))) + "expire all articles in " group "? "))) (let ((gnus-command-method (gnus-find-method-for-group group)) (overview (gnus-get-buffer-create " *expire overview*")) orig) @@ -3304,7 +3310,7 @@ FORCE is equivalent to setting the expir (gnus-agent-expire-group group articles force) (if (or (not (eq articles t)) (yes-or-no-p "Are you sure that you want to expire all \ -articles in every agentized group.")) +articles in every agentized group? ")) (let ((methods (gnus-agent-covered-methods)) ;; Bind gnus-agent-expire-current-dirs to enable tracking ;; of agent directories. @@ -3700,7 +3706,7 @@ If REREAD is not nil, downloaded article (dir (file-name-directory file)) point (downloaded (if (file-exists-p dir) - (sort (mapcar (lambda (name) (string-to-int= name)) + (sort (mapcar (lambda (name) (string-to-num= ber name)) (directory-files dir nil "^[0= -9]+$" t)) '>) (progn (gnus-make-directory dir) nil))) = = = 1.7 +306 -214 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-art.el = Index: gnus-art.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= art.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-art.el 2005/03/13 00:23:22 1.6 +++ gnus-art.el 2005/11/15 03:45:43 1.7 @@ -1,7 +1,8 @@ ;;; gnus-art.el --- article mode commands for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2= 005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -28,7 +29,8 @@ = (eval-when-compile (require 'cl) - (defvar tool-bar-map)) + (defvar tool-bar-map) + (defvar w3m-minor-mode-map)) = (require 'gnus) (require 'gnus-sum) @@ -46,6 +48,7 @@ (autoload 'gnus-msg-mail "gnus-msg" nil t) (autoload 'gnus-button-mailto "gnus-msg") (autoload 'gnus-button-reply "gnus-msg" nil t) +(autoload 'parse-time-string "parse-time" nil nil) = (defgroup gnus-article nil "Article display." @@ -233,7 +236,8 @@ longer (in lines) than that number. If = will be called without any parameters, and if it returns nil, there is no signature in the buffer. If it is a string, it will be used as a regexp. If it matches, the text in question is not a signature." - :type '(choice (integer :value 200) + :type '(choice (const nil) + (integer :value 200) (number :value 4.0) (function :value fun) (regexp :value ".*")) @@ -366,8 +370,12 @@ advertisements. For example: (or (nth 4 spec) 3) (intern (format "gnus-emphasis-%s" (nth 2 spec))))) types)) - '(("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.,;]= \\)" - 2 3 gnus-emphasis-strikethru) + '(;; I've never seen anyone use this strikethru convention whereas = I've + ;; several times seen it triggered by normal text. --Stef + ;; Miles suggests that this form is sometimes used but for italic= s, + ;; so maybe we should map it to `italic'. + ;; ("\\(\\s-\\|^\\)\\(-\\(\\(\\w\\|-[^-]\\)+\\)-\\)\\(\\s-\\|[?!.= ,;]\\)" + ;; 2 3 gnus-emphasis-strikethru) ("\\(\\s-\\|^\\)\\(_\\(\\(\\w\\|_[^_]\\)+\\)_\\)\\(\\s-\\|[?!.,;]= \\)" 2 3 gnus-emphasis-underline)))) "*Alist that says how to fontify certain phrases. @@ -480,9 +488,6 @@ be fed to `format-time-string'." :link '(custom-manual "(gnus)Article Date") :group 'gnus-article-washing) = -(eval-and-compile - (autoload 'mail-extract-address-components "mail-extr")) - (defcustom gnus-save-all-headers t "*If non-nil, don't remove any headers before saving." :group 'gnus-article-saving @@ -643,21 +648,23 @@ above them." :type 'face :group 'gnus-article-buttons) = -(defcustom gnus-signature-face 'gnus-signature-face +(defcustom gnus-signature-face 'gnus-signature "Face used for highlighting a signature in the article buffer. -Obsolete; use the face `gnus-signature-face' for customizations instead." +Obsolete; use the face `gnus-signature' for customizations instead." :type 'face :group 'gnus-article-highlight :group 'gnus-article-signature) = -(defface gnus-signature-face +(defface gnus-signature '((t (:italic t))) "Face used for highlighting a signature in the article buffer." :group 'gnus-article-highlight :group 'gnus-article-signature) +;; backward-compatibility alias +(put 'gnus-signature-face 'face-alias 'gnus-signature) = -(defface gnus-header-from-face +(defface gnus-header-from '((((class color) (background dark)) (:foreground "spring green")) @@ -669,8 +676,10 @@ Obsolete; use the face `gnus-signature-f "Face used for displaying from headers." :group 'gnus-article-headers :group 'gnus-article-highlight) +;; backward-compatibility alias +(put 'gnus-header-from-face 'face-alias 'gnus-header-from) = -(defface gnus-header-subject-face +(defface gnus-header-subject '((((class color) (background dark)) (:foreground "SeaGreen3")) @@ -682,8 +691,10 @@ Obsolete; use the face `gnus-signature-f "Face used for displaying subject headers." :group 'gnus-article-headers :group 'gnus-article-highlight) +;; backward-compatibility alias +(put 'gnus-header-subject-face 'face-alias 'gnus-header-subject) = -(defface gnus-header-newsgroups-face +(defface gnus-header-newsgroups '((((class color) (background dark)) (:foreground "yellow" :italic t)) @@ -697,8 +708,10 @@ In the default setup this face is only u articles." :group 'gnus-article-headers :group 'gnus-article-highlight) +;; backward-compatibility alias +(put 'gnus-header-newsgroups-face 'face-alias 'gnus-header-newsgroups) = -(defface gnus-header-name-face +(defface gnus-header-name '((((class color) (background dark)) (:foreground "SeaGreen")) @@ -710,8 +723,10 @@ articles." "Face used for displaying header names." :group 'gnus-article-headers :group 'gnus-article-highlight) +;; backward-compatibility alias +(put 'gnus-header-name-face 'face-alias 'gnus-header-name) = -(defface gnus-header-content-face +(defface gnus-header-content '((((class color) (background dark)) (:foreground "forest green" :italic t)) @@ -722,12 +737,14 @@ articles." (:italic t))) "Face used for displaying header content." :group 'gnus-article-headers :group 'gnus-article-highlight) +;; backward-compatibility alias +(put 'gnus-header-content-face 'face-alias 'gnus-header-content) = (defcustom gnus-header-face-alist - '(("From" nil gnus-header-from-face) - ("Subject" nil gnus-header-subject-face) - ("Newsgroups:.*," nil gnus-header-newsgroups-face) - ("" gnus-header-name-face gnus-header-content-face)) + '(("From" nil gnus-header-from) + ("Subject" nil gnus-header-subject) + ("Newsgroups:.*," nil gnus-header-newsgroups) + ("" gnus-header-name gnus-header-content)) "*Controls highlighting of article headers. = An alist of the form (HEADER NAME CONTENT). @@ -816,6 +833,7 @@ When nil (the default value), then some = as described by the variables `gnus-buttonized-mime-types' and `gnus-unbuttonized-mime-types'." :version "22.1" + :group 'gnus-article-mime :type 'boolean) = (defcustom gnus-body-boundary-delimiter "_" @@ -827,7 +845,8 @@ be controlled by `gnus-treat-body-bounda :type '(choice (item :tag "None" :value nil) string)) = -(defcustom gnus-picon-databases '("/usr/lib/picon" "/usr/local/faces") +(defcustom gnus-picon-databases '("/usr/lib/picon" "/usr/local/faces" + "/usr/share/picons") "Defines the location of the faces database. For information on obtaining this database of pretty pictures, please see http://www.cs.indiana.edu/picons/ftp/index.html" @@ -851,7 +870,8 @@ see http://www.cs.indiana.edu/picons/ftp This is meant for people who want to do something automatic based on parts -- for instance, adding Vcard info to a database." :group 'gnus-article-mime - :type 'function) + :type '(choice (const nil) + function)) = (defcustom gnus-mime-multipart-functions nil "An alist of MIME types to functions to display them." @@ -1161,7 +1181,10 @@ See Info node `(gnus)Customizing Article (defcustom gnus-treat-strip-trailing-blank-lines nil "Strip trailing blank lines. Valid values are nil, t, `head', `last', an integer or a predicate. -See Info node `(gnus)Customizing Articles' for details." +See Info node `(gnus)Customizing Articles' for details. + +When set to t, it also strips trailing blanks in all MIME parts. +Consider to use `last' instead." :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1169,7 +1192,9 @@ See Info node `(gnus)Customizing Article (defcustom gnus-treat-strip-leading-blank-lines nil "Strip leading blank lines. Valid values are nil, t, `head', `last', an integer or a predicate. -See Info node `(gnus)Customizing Articles' for details." +See Info node `(gnus)Customizing Articles' for details. + +When set to t, it also strips trailing blanks in all MIME parts." :group 'gnus-article-treat :link '(custom-manual "(gnus)Customizing Articles") :type gnus-article-treat-custom) @@ -1464,10 +1489,10 @@ This requires GNU Libidn, and by default (gnus-treat-date-ut gnus-article-date-ut) (gnus-treat-date-local gnus-article-date-local) (gnus-treat-date-english gnus-article-date-english) - (gnus-treat-date-lapsed gnus-article-date-lapsed) (gnus-treat-date-original gnus-article-date-original) (gnus-treat-date-user-defined gnus-article-date-user) (gnus-treat-date-iso8601 gnus-article-date-iso8601) + (gnus-treat-date-lapsed gnus-article-date-lapsed) (gnus-treat-display-x-face gnus-article-display-x-face) (gnus-treat-display-face gnus-article-display-face) (gnus-treat-hide-headers gnus-article-maybe-hide-headers) @@ -2108,31 +2133,31 @@ unfolded." ;; read-only. (if (and wash-face-p (memq 'face gnus-article-wash-types)) (gnus-delete-images 'face) - (let (face faces) - (save-excursion + (let (face faces from) + (save-current-buffer (when (and wash-face-p - (progn - (goto-char (point-min)) - (not (re-search-forward "^Face:[\t ]*" nil t))) - (gnus-buffer-live-p gnus-original-article-buffer)) + (gnus-buffer-live-p gnus-original-article-buffer) + (not (re-search-forward "^Face:[\t ]*" nil t))) (set-buffer gnus-original-article-buffer)) (save-restriction (mail-narrow-to-head) (while (gnus-article-goto-header "Face") (push (mail-header-field-value) faces)))) - (while (setq face (pop faces)) - (let ((png (gnus-convert-face-to-png face)) - image) - (when png - (setq image (gnus-create-image png 'png t)) - (gnus-article-goto-header "from") - (when (bobp) - (insert "From: [no `from' set]\n") - (forward-char -17)) - (gnus-add-wash-type 'face) - (gnus-add-image 'face image) - (gnus-put-image image nil 'face)))))) - ))) + (when faces + (goto-char (point-min)) + (let ((from (gnus-article-goto-header "from")) + png image) + (unless from + (insert "From:") + (setq from (point)) + (insert "[no `from' set]\n")) + (while faces + (when (setq png (gnus-convert-face-to-png (pop faces))) + (setq image (gnus-create-image png 'png t)) + (goto-char from) + (gnus-add-wash-type 'face) + (gnus-add-image 'face image) + (gnus-put-image image nil 'face)))))))))) = (defun article-display-x-face (&optional force) "Look for an X-Face header and display it if present." @@ -2149,13 +2174,10 @@ unfolded." (gnus-delete-images 'xface) ;; Display X-Faces. (let (x-faces from face) - (save-excursion + (save-current-buffer (when (and wash-face-p - (progn - (goto-char (point-min)) - (not (re-search-forward - "^X-Face\\(-[0-9]+\\)?:[\t ]*" nil t))) - (gnus-buffer-live-p gnus-original-article-buffer)) + (gnus-buffer-live-p gnus-original-article-buffer) + (not (re-search-forward "^X-Face:[\t ]*" nil t))) ;; If type `W f', use gnus-original-article-buffer, ;; otherwise use the current buffer because displaying ;; RFC822 parts calls this function too. @@ -2169,34 +2191,36 @@ unfolded." ;; single external face. (when (stringp gnus-article-x-face-command) (setq x-faces (list (car x-faces)))) - (while (and (setq face (pop x-faces)) - gnus-article-x-face-command - (or force - ;; Check whether this face is censored. - (not gnus-article-x-face-too-ugly) - (and gnus-article-x-face-too-ugly from - (not (string-match gnus-article-x-face-too-ugly - from))))) - ;; We display the face. - (cond ((stringp gnus-article-x-face-command) - ;; The command is a string, so we interpret the command - ;; as a, well, command, and fork it off. - (let ((process-connection-type nil)) - (process-kill-without-query - (start-process - "article-x-face" nil shell-file-name - shell-command-switch gnus-article-x-face-command)) - (with-temp-buffer - (insert face) - (process-send-region "article-x-face" - (point-min) (point-max))) - (process-send-eof "article-x-face"))) - ((functionp gnus-article-x-face-command) - ;; The command is a lisp function, so we call it. - (funcall gnus-article-x-face-command face)) - (t - (error "%s is not a function" - gnus-article-x-face-command))))))))) + (when (and x-faces + gnus-article-x-face-command + (or force + ;; Check whether this face is censored. + (not gnus-article-x-face-too-ugly) + (and from + (not (string-match gnus-article-x-face-too-ugly + from))))) + (while (setq face (pop x-faces)) + ;; We display the face. + (cond ((stringp gnus-article-x-face-command) + ;; The command is a string, so we interpret the command + ;; as a, well, command, and fork it off. + (let ((process-connection-type nil)) + (gnus-set-process-query-on-exit-flag + (start-process + "article-x-face" nil shell-file-name + shell-command-switch gnus-article-x-face-command) + nil) + (with-temp-buffer + (insert face) + (process-send-region "article-x-face" + (point-min) (point-max))) + (process-send-eof "article-x-face"))) + ((functionp gnus-article-x-face-command) + ;; The command is a lisp function, so we call it. + (funcall gnus-article-x-face-command face)) + (t + (error "%s is not a function" + gnus-article-x-face-command)))))))))) = (defun article-decode-mime-words () "Decode all MIME-encoded words in the article." @@ -2314,20 +2338,22 @@ If PROMPT (the prefix), prompt for a cod (autoload 'idna-to-unicode "idna") = (defun article-decode-idna-rhs () - "Decode IDNA strings in RHS in From:, To: and Cc: headers in current b= uffer." + "Decode IDNA strings in RHS in various headers in current buffer. +The following headers are decoded: From:, To:, Cc:, Reply-To:, +Mail-Reply-To: and Mail-Followup-To:." (when gnus-use-idna (save-restriction (let ((inhibit-point-motion-hooks t) (inhibit-read-only t)) (article-narrow-to-head) (goto-char (point-min)) - (while (re-search-forward "@.*\\(xn--[-A-Za-z0-9.]*\\)[ \t\n\r,>]" nil = t) + (while (re-search-forward "@[^ \t\n\r,>]*\\(xn--[-A-Za-z0-9.]*\\)[ \t\n= \r,>]" nil t) (let (ace unicode) (when (save-match-data (and (setq ace (match-string 1)) (save-excursion (and (re-search-backward "^[^ \t]" nil t) - (looking-at "From\\|To\\|Cc"))) + (looking-at "From\\|To\\|Cc\\|Reply-To\\|Mail-Reply-To\\|Mail-Follow= up-To"))) (setq unicode (idna-to-unicode ace)))) (unless (string=3D ace unicode) (replace-match unicode nil nil nil 1))))))))) @@ -2414,7 +2440,7 @@ If READ-CHARSET, ask for a coding system (let ((inhibit-read-only t)) (goto-char (point-min)) (while (re-search-forward - "^\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t) + "\\(\\(https?\\|ftp\\)://\\S-+\\) *\n\\(\\S-+\\)" nil t) (replace-match "\\1\\3" t))) (when (interactive-p) (gnus-treat-article nil)))) @@ -2823,72 +2849,76 @@ lines forward." (forward-line 1) (setq ended t))))) = -(defun article-date-ut (&optional type highlight header) +(defun article-date-ut (&optional type highlight) "Convert DATE date to universal time in the current article. If TYPE is `local', convert to local time; if it is `lapsed', output how much time has lapsed since DATE. For `lapsed', the value of `gnus-article-date-lapsed-new-header' says whether the \"X-Sent:\" header should replace the \"Date:\" one, or should be added below it." (interactive (list 'ut t)) - (let* ((header (or header - (message-fetch-field "date") - "")) - (tdate-regexp "^Date:[ \t]\\|^X-Sent:[ \t]") - (date-regexp - (cond - ((not gnus-article-date-lapsed-new-header) - tdate-regexp) - ((eq type 'lapsed) - "^X-Sent:[ \t]") - (t - "^Date:[ \t]"))) - (date (if (vectorp header) (mail-header-date header) - header)) + (let* ((tdate-regexp "^Date:[ \t]\\|^X-Sent:[ \t]") + (date-regexp (cond ((not gnus-article-date-lapsed-new-header) + tdate-regexp) + ((eq type 'lapsed) + "^X-Sent:[ \t]") + (article-lapsed-timer + "^Date:[ \t]") + (t + tdate-regexp))) + (case-fold-search t) + (inhibit-read-only t) (inhibit-point-motion-hooks t) - pos - bface eface) + pos date bface eface) (save-excursion (save-restriction - (article-narrow-to-head) - (when (re-search-forward tdate-regexp nil t) - (setq bface (get-text-property (gnus-point-at-bol) 'face) - date (or (get-text-property (gnus-point-at-bol) - 'original-date) - date) - eface (get-text-property (1- (gnus-point-at-eol)) 'face)) - (forward-line 1)) - (when (and date (not (string=3D date ""))) + (widen) + (goto-char (point-min)) + (while (or (setq date (get-text-property (setq pos (point)) + 'original-date)) + (when (setq pos (next-single-property-change + (point) 'original-date)) + (setq date (get-text-property pos 'original-date)) + t)) + (narrow-to-region pos (or (text-property-any pos (point-max) + 'original-date nil) + (point-max))) (goto-char (point-min)) - (let ((inhibit-read-only t)) - ;; Delete any old Date headers. - (while (re-search-forward date-regexp nil t) - (if pos - (delete-region (progn (beginning-of-line) (point)) - (progn (gnus-article-forward-header) - (point))) - (delete-region (progn (beginning-of-line) (point)) - (progn (gnus-article-forward-header) - (forward-char -1) - (point))) - (setq pos (point)))) - (when (and (not pos) - (re-search-forward tdate-regexp nil t)) - (forward-line 1)) - (when pos - (goto-char pos)) - (insert (article-make-date-line date (or type 'ut))) - (unless pos - (insert "\n") - (forward-line -1)) - ;; Do highlighting. - (beginning-of-line) - (when (looking-at "\\([^:]+\\): *\\(.*\\)$") - (put-text-property (match-beginning 1) (1+ (match-end 1)) - 'original-date date) - (put-text-property (match-beginning 1) (1+ (match-end 1)) - 'face bface) - (put-text-property (match-beginning 2) (match-end 2) - 'face eface)))))))) + (when (re-search-forward tdate-regexp nil t) + (setq bface (get-text-property (gnus-point-at-bol) 'face) + eface (get-text-property (1- (gnus-point-at-eol)) 'face))) + (goto-char (point-min)) + (setq pos nil) + ;; Delete any old Date headers. + (while (re-search-forward date-regexp nil t) + (if pos + (delete-region (gnus-point-at-bol) + (progn + (gnus-article-forward-header) + (point))) + (delete-region (gnus-point-at-bol) + (progn + (gnus-article-forward-header) + (forward-char -1) + (point))) + (setq pos (point)))) + (when (and (not pos) + (re-search-forward tdate-regexp nil t)) + (forward-line 1)) + (gnus-goto-char pos) + (insert (article-make-date-line date (or type 'ut))) + (unless pos + (insert "\n") + (forward-line -1)) + ;; Do highlighting. + (beginning-of-line) + (when (looking-at "\\([^:]+\\): *\\(.*\\)$") + (put-text-property (match-beginning 1) (1+ (match-end 1)) + 'face bface) + (put-text-property (match-beginning 2) (match-end 2) + 'face eface)) + (put-text-property (point-min) (1- (point-max)) 'original-date date) + (goto-char (point-max)) + (widen)))))) = (defun article-make-date-line (date type) "Return a DATE line of TYPE." @@ -3030,20 +3060,21 @@ function and want to see what the date w = (defun article-update-date-lapsed () "Function to be run from a timer to update the lapsed time line." - (let (deactivate-mark) - (save-excursion - (ignore-errors - (walk-windows - (lambda (w) - (set-buffer (window-buffer w)) - (when (eq major-mode 'gnus-article-mode) - (let ((mark (point-marker))) - (goto-char (point-min)) - (when (re-search-forward "^X-Sent:" nil t) - (article-date-lapsed t)) - (goto-char (marker-position mark)) - (move-marker mark nil)))) - nil 'visible))))) + (save-match-data + (let (deactivate-mark) + (save-excursion + (ignore-errors + (walk-windows + (lambda (w) + (set-buffer (window-buffer w)) + (when (eq major-mode 'gnus-article-mode) + (let ((mark (point-marker))) + (goto-char (point-min)) + (when (re-search-forward "^X-Sent:" nil t) + (article-date-lapsed t)) + (goto-char (marker-position mark)) + (move-marker mark nil)))) + nil 'visible)))))) = (defun gnus-start-date-timer (&optional n) "Start a timer to update the X-Sent header in the article buffers. @@ -3074,6 +3105,27 @@ This format is defined by the `gnus-arti (interactive (list t)) (article-date-ut 'iso8601 highlight)) = +(defmacro gnus-article-save-original-date (&rest forms) + "Save the original date as a text property and evaluate FORMS." + `(let* ((case-fold-search t) + (start (progn + (goto-char (point-min)) + (when (and (re-search-forward "^date:[\t\n ]+" nil t) + (not (bolp))) + (match-end 0)))) + (date (when (and start + (re-search-forward "[\t ]*\n\\([^\t ]\\|\\'\\)" + nil t)) + (buffer-substring-no-properties start + (match-beginning 0))))) + (goto-char (point-max)) + (skip-chars-backward "\n") + (put-text-property (point-min) (point) 'original-date date) + ,@forms + (goto-char (point-max)) + (skip-chars-backward "\n") + (put-text-property (point-min) (point) 'original-date date))) + ;; (defun article-show-all () ;; "Show all hidden text in the article buffer." ;; (interactive) @@ -3210,7 +3262,7 @@ This format is defined by the `gnus-arti ((null split-name) (read-file-name (concat prompt " (default " - (file-name-nondirectory default-name) ") ") + (file-name-nondirectory default-name) "): ") (file-name-directory default-name) default-name)) ;; A single group name is returned. @@ -3220,7 +3272,7 @@ This format is defined by the `gnus-arti (symbol-value variable))) (read-file-name (concat prompt " (default " - (file-name-nondirectory default-name) ") ") + (file-name-nondirectory default-name) "): ") (file-name-directory default-name) default-name)) ;; A single split name was found @@ -3233,7 +3285,7 @@ This format is defined by the `gnus-arti ((file-exists-p name) name) (t gnus-article-save-directory)))) (read-file-name - (concat prompt " (default " name ") ") + (concat prompt " (default " name "): ") dir name))) ;; A list of splits was found. (t @@ -3244,7 +3296,7 @@ This format is defined by the `gnus-arti (setq result (expand-file-name (read-file-name - (concat prompt " (`M-p' for defaults) ") + (concat prompt " (`M-p' for defaults): ") gnus-article-save-directory (car split-name)) gnus-article-save-directory))) @@ -3278,7 +3330,7 @@ This format is defined by the `gnus-arti Optional argument FILENAME specifies file name. Directory to save to is default to `gnus-article-save-directory'." (setq filename (gnus-read-save-file-name - "Save %s in rmail file:" filename + "Save %s in rmail file" filename gnus-rmail-save-name gnus-newsgroup-name gnus-current-headers 'gnus-newsgroup-last-rmail)) (gnus-eval-in-buffer-window gnus-save-article-buffer @@ -3293,7 +3345,7 @@ Directory to save to is default to `gnus Optional argument FILENAME specifies file name. Directory to save to is default to `gnus-article-save-directory'." (setq filename (gnus-read-save-file-name - "Save %s in Unix mail file:" filename + "Save %s in Unix mail file" filename gnus-mail-save-name gnus-newsgroup-name gnus-current-headers 'gnus-newsgroup-last-mail)) (gnus-eval-in-buffer-window gnus-save-article-buffer @@ -3312,7 +3364,7 @@ Directory to save to is default to `gnus Optional argument FILENAME specifies file name. Directory to save to is default to `gnus-article-save-directory'." (setq filename (gnus-read-save-file-name - "Save %s in file:" filename + "Save %s in file" filename gnus-file-save-name gnus-newsgroup-name gnus-current-headers 'gnus-newsgroup-last-file)) (gnus-eval-in-buffer-window gnus-save-article-buffer @@ -3336,7 +3388,7 @@ The directory to save in defaults to `gn Optional argument FILENAME specifies file name. The directory to save in defaults to `gnus-article-save-directory'." (setq filename (gnus-read-save-file-name - "Save %s body in file:" filename + "Save %s body in file" filename gnus-file-save-name gnus-newsgroup-name gnus-current-headers 'gnus-newsgroup-last-file)) (gnus-eval-in-buffer-window gnus-save-article-buffer @@ -3690,6 +3742,7 @@ commands: \\[gnus-article-describe-briefly]\t Describe the current mode briefly \\[gnus-info-find-node]\t Go to the Gnus info node" (interactive) + (kill-all-local-variables) (gnus-simplify-mode-line) (setq mode-name "Article") (setq major-mode 'gnus-article-mode) @@ -3712,13 +3765,13 @@ commands: (make-local-variable 'gnus-article-charset) (make-local-variable 'gnus-article-ignored-charsets) ;; Prevent recent Emacsen from displaying non-break space as "\ ". - (set (make-local-variable 'show-nonbreak-escape) nil) + (set (make-local-variable 'nobreak-char-display) nil) (gnus-set-default-directory) (buffer-disable-undo) (setq buffer-read-only t) (set-syntax-table gnus-article-mode-syntax-table) (mm-enable-multibyte) - (gnus-run-hooks 'gnus-article-mode-hook)) + (gnus-run-mode-hooks 'gnus-article-mode-hook)) = (defun gnus-article-setup-buffer () "Initialize the article buffer." @@ -4076,7 +4129,7 @@ Deleting parts may malfunction or destro ',gnus-newsgroup-ignored-charsets)) (mbl mml-buffer-list)) (setq mml-buffer-list nil) - (insert-buffer gnus-original-article-buffer) + (insert-buffer-substring gnus-original-article-buffer) (mime-to-mml ',handles) (setq gnus-article-mime-handles nil) (let ((mbl1 mml-buffer-list)) @@ -4158,7 +4211,7 @@ Deleting parts may malfunction or destro ',gnus-newsgroup-ignored-charsets)) (mbl mml-buffer-list)) (setq mml-buffer-list nil) - (insert-buffer gnus-original-article-buffer) + (insert-buffer-substring gnus-original-article-buffer) (mime-to-mml ',handles) (setq gnus-article-mime-handles nil) (let ((mbl1 mml-buffer-list)) @@ -4357,21 +4410,16 @@ are decompressed." (mm-read-coding-system "Charset: ")))) (t (if (mm-handle-undisplayer handle) - (mm-remove-part handle)) - (setq contents - (if (fboundp 'string-to-multibyte) - (string-to-multibyte contents) - (mapconcat - (lambda (ch) (mm-string-as-multibyte (char-to-string ch))) - contents ""))))) + (mm-remove-part handle)))) (forward-line 2) - (mm-insert-inline handle - (if (and charset - (setq charset (mm-charset-to-coding-system - charset)) - (not (eq charset 'ascii))) - (mm-decode-coding-string contents charset) - contents)) + (mm-insert-inline + handle + (if (and charset + (setq charset (mm-charset-to-coding-system + charset)) + (not (eq charset 'ascii))) + (mm-decode-coding-string contents charset) + (mm-string-to-multibyte contents))) (goto-char b))))) = (defun gnus-mime-view-part-as-charset (&optional handle arg) @@ -4690,7 +4738,8 @@ N is the numerical prefix." (save-restriction (article-goto-body) (narrow-to-region (point-min) (point)) - (gnus-treat-article 'head)))))))) + (gnus-article-save-original-date + (gnus-treat-article 'head))))))))) = (defcustom gnus-mime-display-multipart-as-mixed nil "Display \"multipart\" parts as \"multipart/mixed\". @@ -4719,6 +4768,8 @@ If displaying \"text/html\" is discourag = (defun gnus-mime-display-part (handle) (cond + ;; Maybe a broken MIME message. + ((null handle)) ;; Single part. ((not (stringp (car handle))) (gnus-mime-display-single handle)) @@ -4820,7 +4871,17 @@ If displaying \"text/html\" is discourag (forward-line -1) (setq beg (point))) (gnus-article-insert-newline) - (mm-insert-inline handle (mm-get-part handle)) + (mm-insert-inline + handle + (let ((charset (mail-content-type-get (mm-handle-type handle) + 'charset))) + (cond ((not charset) + (mm-string-as-multibyte (mm-get-part handle))) + ((eq charset 'gnus-decoded) + (with-current-buffer (mm-handle-buffer handle) + (buffer-string))) + (t + (mm-decode-string (mm-get-part handle) charset))))) (goto-char (point-max)))) ;; Do highlighting. (save-excursion @@ -5145,14 +5206,38 @@ Argument LINES specifies lines to be scr (gnus-article-next-page-1 lines) nil)) = +(defmacro gnus-article-beginning-of-window () + "Move point to the beginning of the window. +In Emacs, the point is placed at the line number which `scroll-margin' +specifies." + (if (featurep 'xemacs) + '(move-to-window-line 0) + '(move-to-window-line + (min (max 0 scroll-margin) + (max 1 (- (window-height) + (if mode-line-format 1 0) + (if (and (boundp 'header-line-format) + (symbol-value 'header-line-format)) + 1 0))))))) + (defun gnus-article-next-page-1 (lines) - (let ((scroll-in-place nil)) - (condition-case () - (scroll-up lines) - (end-of-buffer - ;; Long lines may cause an end-of-buffer error. - (goto-char (point-max))))) - (move-to-window-line 0)) + (when (and (not (featurep 'xemacs)) + (numberp lines) + (> lines 0) + (numberp (symbol-value 'scroll-margin)) + (> (symbol-value 'scroll-margin) 0)) + ;; Protect against the bug that Emacs 21.x hangs up when scrolling u= p for + ;; too many number of lines if `scroll-margin' is set as two or grea= ter. + (setq lines (min lines + (max 0 (- (count-lines (window-start) (point-max)) + (symbol-value 'scroll-margin)))))) + (condition-case () + (let ((scroll-in-place nil)) + (scroll-up lines)) + (end-of-buffer + ;; Long lines may cause an end-of-buffer error. + (goto-char (point-max)))) + (gnus-article-beginning-of-window)) = (defun gnus-article-prev-page (&optional lines) "Show previous page of current article. @@ -5166,13 +5251,13 @@ Argument LINES specifies lines to be scr (gnus-narrow-to-page -1) ;Go to previous page. (goto-char (point-max)) (recenter -1)) - (let ((scroll-in-place nil)) - (prog1 - (condition-case () - (scroll-down lines) - (beginning-of-buffer - (goto-char (point-min)))) - (move-to-window-line 0))))) + (prog1 + (condition-case () + (let ((scroll-in-place nil)) + (scroll-down lines)) + (beginning-of-buffer + (goto-char (point-min)))) + (gnus-article-beginning-of-window)))) = (defun gnus-article-only-boring-p () "Decide whether there is only boring text remaining in the article. @@ -5308,7 +5393,7 @@ not have a face in `gnus-article-boring- (when (eq win (selected-window)) (setq new-sum-point (point) new-sum-start (window-start win) - new-sum-hscroll (window-hscroll win)) + new-sum-hscroll (window-hscroll win))) (when (eq in-buffer (current-buffer)) (setq selected (gnus-summary-select-article)) (set-buffer obuf) @@ -5324,7 +5409,7 @@ not have a face in `gnus-article-boring- new-sum-point) (set-window-point win new-sum-point) (set-window-start win new-sum-start) - (set-window-hscroll win new-sum-hscroll))))) + (set-window-hscroll win new-sum-hscroll)))) (set-window-configuration owin) (ding)))))) = @@ -5781,7 +5866,7 @@ groups." (window-start (window-start))) (erase-buffer) (if (gnus-buffer-live-p gnus-original-article-buffer) - (insert-buffer gnus-original-article-buffer)) + (insert-buffer-substring gnus-original-article-buffer)) (let ((winconf gnus-prev-winconf)) (kill-all-local-variables) (gnus-article-mode) @@ -5825,6 +5910,14 @@ groups." :group 'gnus-article-buttons :type 'regexp) = +;; Regexp suggested by Felix Wiemann in <87oeuomcz9.fsf(a)news2.ososo.de> +(defcustom gnus-button-valid-localpart-regexp + "[a-z0-9$%(*-=3D?[_][^<>\")!;:,{}\n\t ]*" + "Regular expression that matches a localpart of mail addresses or MIDs= ." + :version "22.1" + :group 'gnus-article-buttons + :type 'regexp) + (defcustom gnus-button-man-handler 'manual-entry "Function to use for displaying man pages. The function must take at least one argument with a string naming the @@ -5864,12 +5957,11 @@ The function must take one argument, the (regexp :tag "Other"))) = (defcustom gnus-button-ctan-directory-regexp - (concat - "\\("; Cannot use `\(?: ... \)' (compatibility with Emacs 20). - "biblio\\|digests\\|dviware\\|fonts\\|graphics\\|help\\|" - "indexing\\|info\\|language\\|macros\\|support\\|systems\\|" - "tds\\|tools\\|usergrps\\|web\\|nonfree\\|obsolete" - "\\)") + (regexp-opt + (list "archive-tools" "biblio" "bibliography" "digests" "documentatio= n" + "dviware" "fonts" "graphics" "help" "indexing" "info" "language" + "languages" "macros" "nonfree" "obsolete" "support" "systems" + "tds" "tools" "usergrps" "web") t) "Regular expression for ctan directories. It should match all directories in the top level of `gnus-ctan-url'." :version "22.1" @@ -5877,8 +5969,7 @@ It should match all directories in the t :type 'regexp) = (defcustom gnus-button-mid-or-mail-regexp - (concat "\\b\\(\")!;:,{}\n\t ]*@" - ;; Felix Wiemann in <87oeuomcz9.fsf(a)news2.ososo.de> + (concat "\\b\\(?\\)\\b") "Regular expression that matches a message ID or a mail address." @@ -6193,8 +6284,9 @@ positives are possible." (defcustom gnus-button-alist '(("<\\(url:[>\n\t ]*?\\)?\\(nntp\\|news\\):[>\n\t ]*\\([^>\n\t ]*@[^>= \n\t ]*\\)>" 0 (>=3D gnus-button-message-level 0) gnus-button-handle-news 3) - ("\\b\\(nntp\\|news\\):\\([^>\n\t ]*@[^>)!;:,\n\t ]*\\)" 0 t - gnus-button-handle-news 2) + ((concat "\\b\\(nntp\\|news\\):\\(" + gnus-button-valid-localpart-regexp "@[a-z0-9.-]+[a-z]\\)") + 0 t gnus-button-handle-news 2) ("\\(\\b<\\(url:[>\n\t ]*\\)?\\(nntp\\|news\\):[>\n\t ]*\\(//\\)?\\(= [^>\n\t ]*\\)>\\)" 1 (>=3D gnus-button-message-level 0) gnus-button-fetch-group 5) ("\\b\\(nntp\\|news\\):\\(//\\)?\\([^'\">\n\t ]+\\)" @@ -6336,7 +6428,7 @@ variable it the real callback function." ("^\\(From\\|Reply-To\\):" ": *\\(.+\\)$" 1 (>=3D gnus-button-message-level 0) gnus-button-reply 1) ("^\\(Cc\\|To\\):" "[^ \t\n<>,()\"]+@[^ \t\n<>,()\"]+" - 0 (>=3D gnus-button-message-level 0) gnus-button-mailto 0) + 0 (>=3D gnus-button-message-level 0) gnus-msg-mail 0) ("^X-[Uu][Rr][Ll]:" gnus-button-url-regexp 0 (>=3D gnus-button-browse-level 0) browse-url 0) ("^Subject:" gnus-button-url-regexp @@ -6464,7 +6556,7 @@ do the highlighting. See the documentat (defun gnus-article-highlight-signature () "Highlight the signature in an article. It does this by highlighting everything after -`gnus-signature-separator' using `gnus-signature-face'." +`gnus-signature-separator' using the face `gnus-signature'." (interactive) (save-excursion (set-buffer gnus-article-buffer) @@ -6767,7 +6859,7 @@ specified by `gnus-button-alist'." (match-string 3 address) "nntp"))) nil nil nil - (and (match-end 6) (list (string-to-int (match-string 6 address))= )))))) + (and (match-end 6) (list (string-to-number (match-string 6 addres= s)))))))) = (defun gnus-url-parse-query-string (query &optional downcase) (let (retval pairs cur key val) @@ -7031,7 +7123,7 @@ For example: current-prefix-arg)) (let ((func (cdr (assoc protocol gnus-article-encrypt-protocol-alist))= )) (unless func - (error (format "Can't find the encrypt protocol %s" protocol))) + (error "Can't find the encrypt protocol %s" protocol)) (if (member gnus-newsgroup-name '("nndraft:delayed" "nndraft:drafts" "nndraft:queue")) = = = 1.5 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-async= .el = Index: gnus-async.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= async.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-async.el 2005/03/13 00:23:23 1.4 +++ gnus-async.el 2005/11/15 03:45:43 1.5 @@ -1,7 +1,8 @@ ;;; gnus-async.el --- asynchronous support for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +5 -3 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-audio= .el = Index: gnus-audio.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= audio.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-audio.el 2004/09/28 02:21:04 1.3 +++ gnus-audio.el 2005/11/15 03:45:43 1.4 @@ -1,6 +1,8 @@ ;;; gnus-audio.el --- Sound effects for Gnus -;; Copyright (C) 1996, 2000, 2003 Free Software Foundation = +;; Copyright (C) 1996, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Steven L. Baur ;; Keywords: news, mail, multimedia = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-bcklg= .el = Index: gnus-bcklg.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= bcklg.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-bcklg.el 2004/09/28 02:21:04 1.3 +++ gnus-bcklg.el 2005/11/15 03:45:44 1.4 @@ -1,7 +1,8 @@ ;;; gnus-bcklg.el --- backlog functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +9 -7 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-cache= .el = Index: gnus-cache.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= cache.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-cache.el 2005/03/13 00:23:23 1.5 +++ gnus-cache.el 2005/11/15 03:45:44 1.6 @@ -1,7 +1,8 @@ ;;; gnus-cache.el --- cache interface for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -357,7 +358,7 @@ Returns the list of articles removed." (let ((alist (gnus-agent-load-alist gnus-newsgroup-name))) (unless (cdr (assoc article alist)) (setq gnus-newsgroup-undownloaded - (gnus-add-to-sorted-list = + (gnus-add-to-sorted-list gnus-newsgroup-undownloaded article))))) (push article out)) (gnus-summary-update-download-mark article) @@ -421,6 +422,7 @@ Returns the list of articles removed." (and (not unread) (not ticked) (not dormant) (memq 'read class)))) = (defun gnus-cache-file-name (group article) + (setq group (gnus-group-decoded-name group)) (expand-file-name (if (stringp article) article (int-to-string article)) (file-name-as-directory @@ -486,7 +488,7 @@ Returns the list of articles removed." articles) (when (file-exists-p dir) (setq articles - (sort (mapcar (lambda (name) (string-to-int name)) + (sort (mapcar (lambda (name) (string-to-number name)) (directory-files dir nil "^[0-9]+$" t)) '<)) ;; Update the cache active file, just to synch more. @@ -680,7 +682,7 @@ If LOW, update the lower bound instead." ;; Separate articles from all other files and directories. (while files (if (string-match "^[0-9]+$" (file-name-nondirectory (car files))) - (push (string-to-int (file-name-nondirectory (pop files))) nums) + (push (string-to-number (file-name-nondirectory (pop files))) nums) (push (pop files) alphs))) ;; If we have nums, then this is probably a valid group. (when (setq nums (sort nums '<)) = = = 1.6 +157 -123 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-cite.= el = Index: gnus-cite.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= cite.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-cite.el 2005/03/13 00:23:23 1.5 +++ gnus-cite.el 2005/11/15 03:45:44 1.6 @@ -1,7 +1,7 @@ ;;; gnus-cite.el --- parse citations in articles for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Per Abhiddenware = @@ -19,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -136,131 +136,165 @@ the envelope From line." :group 'gnus-cite :type 'boolean) = -(defface gnus-cite-attribution-face '((t - (:italic t))) - "Face used for attribution lines.") +(defface gnus-cite-attribution '((t (:italic t))) + "Face used for attribution lines." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-attribution-face 'face-alias 'gnus-cite-attribution) = -(defcustom gnus-cite-attribution-face 'gnus-cite-attribution-face +(defcustom gnus-cite-attribution-face 'gnus-cite-attribution "Face used for attribution lines. It is merged with the face for the cited text belonging to the attributi= on." :version "22.1" :group 'gnus-cite :type 'face) = -(defface gnus-cite-face-1 '((((class color) - (background dark)) - (:foreground "light blue")) - (((class color) - (background light)) - (:foreground "MidnightBlue")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-2 '((((class color) - (background dark)) - (:foreground "light cyan")) - (((class color) - (background light)) - (:foreground "firebrick")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-3 '((((class color) - (background dark)) - (:foreground "light yellow")) - (((class color) - (background light)) - (:foreground "dark green")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-4 '((((class color) - (background dark)) - (:foreground "light pink")) - (((class color) - (background light)) - (:foreground "OrangeRed")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-5 '((((class color) - (background dark)) - (:foreground "pale green")) - (((class color) - (background light)) - (:foreground "dark khaki")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-6 '((((class color) - (background dark)) - (:foreground "beige")) - (((class color) - (background light)) - (:foreground "dark violet")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-7 '((((class color) - (background dark)) - (:foreground "orange")) - (((class color) - (background light)) - (:foreground "SteelBlue4")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-8 '((((class color) - (background dark)) - (:foreground "magenta")) - (((class color) - (background light)) - (:foreground "magenta")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-9 '((((class color) - (background dark)) - (:foreground "violet")) - (((class color) - (background light)) - (:foreground "violet")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-10 '((((class color) - (background dark)) - (:foreground "medium purple")) - (((class color) - (background light)) - (:foreground "medium purple")) - (t - (:italic t))) - "Citation face.") - -(defface gnus-cite-face-11 '((((class color) - (background dark)) - (:foreground "turquoise")) - (((class color) - (background light)) - (:foreground "turquoise")) - (t - (:italic t))) - "Citation face.") +(defface gnus-cite-1 '((((class color) + (background dark)) + (:foreground "light blue")) + (((class color) + (background light)) + (:foreground "MidnightBlue")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-1 'face-alias 'gnus-cite-1) + +(defface gnus-cite-2 '((((class color) + (background dark)) + (:foreground "light cyan")) + (((class color) + (background light)) + (:foreground "firebrick")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-2 'face-alias 'gnus-cite-2) + +(defface gnus-cite-3 '((((class color) + (background dark)) + (:foreground "light yellow")) + (((class color) + (background light)) + (:foreground "dark green")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-3 'face-alias 'gnus-cite-3) + +(defface gnus-cite-4 '((((class color) + (background dark)) + (:foreground "light pink")) + (((class color) + (background light)) + (:foreground "OrangeRed")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-4 'face-alias 'gnus-cite-4) + +(defface gnus-cite-5 '((((class color) + (background dark)) + (:foreground "pale green")) + (((class color) + (background light)) + (:foreground "dark khaki")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-5 'face-alias 'gnus-cite-5) + +(defface gnus-cite-6 '((((class color) + (background dark)) + (:foreground "beige")) + (((class color) + (background light)) + (:foreground "dark violet")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-6 'face-alias 'gnus-cite-6) + +(defface gnus-cite-7 '((((class color) + (background dark)) + (:foreground "orange")) + (((class color) + (background light)) + (:foreground "SteelBlue4")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-7 'face-alias 'gnus-cite-7) + +(defface gnus-cite-8 '((((class color) + (background dark)) + (:foreground "magenta")) + (((class color) + (background light)) + (:foreground "magenta")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-8 'face-alias 'gnus-cite-8) + +(defface gnus-cite-9 '((((class color) + (background dark)) + (:foreground "violet")) + (((class color) + (background light)) + (:foreground "violet")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-9 'face-alias 'gnus-cite-9) + +(defface gnus-cite-10 '((((class color) + (background dark)) + (:foreground "medium purple")) + (((class color) + (background light)) + (:foreground "medium purple")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-10 'face-alias 'gnus-cite-10) + +(defface gnus-cite-11 '((((class color) + (background dark)) + (:foreground "turquoise")) + (((class color) + (background light)) + (:foreground "turquoise")) + (t + (:italic t))) + "Citation face." + :group 'gnus-cite) +;; backward-compatibility alias +(put 'gnus-cite-face-11 'face-alias 'gnus-cite-11) = (defcustom gnus-cite-face-list - '(gnus-cite-face-1 gnus-cite-face-2 gnus-cite-face-3 gnus-cite-face-4 - gnus-cite-face-5 gnus-cite-face-6 gnus-cite-face-7 gnus-cite-face= -8 - gnus-cite-face-9 gnus-cite-face-10 gnus-cite-face-11) + '(gnus-cite-1 gnus-cite-2 gnus-cite-3 gnus-cite-4 gnus-cite-5 gnus-cit= e-6 + gnus-cite-7 gnus-cite-8 gnus-cite-9 gnus-cite-10 gnus-cite-11) "*List of faces used for highlighting citations. = When there are citations from multiple articles in the same message, @@ -286,8 +320,7 @@ This should make it easier to see who wr = ;; This has to go here because its default value depends on ;; gnus-cite-face-list. -(defcustom gnus-article-boring-faces (cons 'gnus-signature-face - gnus-cite-face-list) +(defcustom gnus-article-boring-faces (cons 'gnus-signature gnus-cite-fac= e-list) "List of faces that are not worth reading. If an article has more pages below the one you are looking at, but nothing on those pages is a word of at least three letters that is not @@ -339,7 +372,7 @@ in a boring face, then the pages will be Each citation in the article will be highlighted with a different face. The faces are taken from `gnus-cite-face-list'. Attribution lines are highlighted with the same face as the -corresponding citation merged with `gnus-cite-attribution-face'. +corresponding citation merged with the face `gnus-cite-attribution'. = Text is considered cited if at least `gnus-cite-minimum-match-count' lines matches `message-cite-prefix-regexp' with the same prefix. @@ -1004,6 +1037,7 @@ See also the documentation for `gnus-art (when (< from to) (push (setq overlay (gnus-make-overlay from to)) gnus-cite-overlay-list) + (gnus-overlay-put overlay 'evaporate t) (gnus-overlay-put overlay 'face face)))))) = (defun gnus-cite-toggle (prefix) = = = 1.7 +23 -15 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-cus.el = Index: gnus-cus.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= cus.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-cus.el 2004/09/28 02:21:05 1.6 +++ gnus-cus.el 2005/11/15 03:45:44 1.7 @@ -1,8 +1,8 @@ ;;; gnus-cus.el --- customization commands for Gnus -;; -;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Per Abrahamsen ;; Keywords: news = @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -36,6 +36,14 @@ = ;;; Widgets: = +(defvar gnus-custom-map + (let ((map (make-keymap))) + (set-keymap-parent map widget-keymap) + (suppress-keymap map) + (define-key map [mouse-1] 'widget-move-and-invoke) + map) + "Keymap for editing Gnus customization buffers.") + (defun gnus-custom-mode () "Major mode for editing Gnus customization buffers. = @@ -51,7 +59,7 @@ if that value is non-nil." (kill-all-local-variables) (setq major-mode 'gnus-custom-mode mode-name "Gnus Customize") - (use-local-map widget-keymap) + (use-local-map gnus-custom-map) ;; Emacs 21 stuff: (when (and (facep 'custom-button-face) (facep 'custom-button-pressed-face)) @@ -67,7 +75,7 @@ if that value is non-nil." (set (make-local-variable 'widget-push-button-suffix) "") (set (make-local-variable 'widget-link-prefix) "") (set (make-local-variable 'widget-link-suffix) "")) - (gnus-run-hooks 'gnus-custom-mode-hook)) + (gnus-run-mode-hooks 'gnus-custom-mode-hook)) = ;;; Group Customization: = @@ -479,7 +487,7 @@ form, but who cares?" (widget-create 'sexp :tag "Method" :value (gnus-info-method info)))) - (use-local-map widget-keymap) + (use-local-map gnus-custom-map) (widget-setup) (buffer-enable-undo) (goto-char (point-min)))) @@ -772,8 +780,8 @@ When called interactively, FILE defaults This can be changed using the `\\[gnus-score-change-score-file]' command= ." (interactive (list gnus-current-score-file)) (unless file - (error (format "No score file for %s" - (gnus-group-decoded-name gnus-newsgroup-name)))) + (error "No score file for %s" + (gnus-group-decoded-name gnus-newsgroup-name))) (let ((scores (gnus-score-load file)) (types (mapcar (lambda (entry) `(group :format "%v%h\n" @@ -873,7 +881,7 @@ articles in the thread. '(repeat :inline t :tag "Unknown entries" sexp))) - (use-local-map widget-keymap) + (use-local-map gnus-custom-map) (widget-setup))) = (defun gnus-score-customize-done (&rest ignore) @@ -1014,9 +1022,9 @@ articles in the thread. ;; gnus-agent-cat-prepare-category-field as I don't want the ;; group list to appear when customizing a topic. (widget-insert "\n") - = - (let ((symb = - (set = + + (let ((symb + (set (make-local-variable 'gnus-agent-cat-groups) (widget-create `(choice @@ -1050,7 +1058,7 @@ articles in the thread. = (gnus-agent-cat-prepare-category-field agent-enable-undownloaded-f= aces) = - (use-local-map widget-keymap) + (use-local-map gnus-custom-map) (widget-setup) (buffer-enable-undo)))) = = = = 1.4 +4 -3 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-delay= .el = Index: gnus-delay.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= delay.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-delay.el 2005/03/13 00:23:24 1.3 +++ gnus-delay.el 2005/11/15 03:45:44 1.4 @@ -1,6 +1,6 @@ ;;; gnus-delay.el --- Delayed posting of articles = -;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. = ;; Author: Kai Gro=C3=9Fjohann ;; Keywords: mail, news, extensions @@ -19,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -37,6 +37,7 @@ = (require 'nndraft) (require 'gnus-draft) +(autoload 'parse-time-string "parse-time" nil nil) = ;;;###autoload (defgroup gnus-delay nil = = = 1.4 +6 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-demon= .el = Index: gnus-demon.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= demon.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-demon.el 2004/09/28 02:21:05 1.3 +++ gnus-demon.el 2005/11/15 03:45:44 1.4 @@ -1,7 +1,7 @@ ;;; gnus-demon.el --- daemonic Gnus behaviour = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -39,6 +39,8 @@ (if (featurep 'xemacs) (require 'itimer) (require 'timer))) + +(autoload 'parse-time-string "parse-time" nil nil) = (defgroup gnus-demon nil "Demonic behaviour." = = = 1.4 +5 -3 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-diary= .el = Index: gnus-diary.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= diary.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-diary.el 2005/03/13 00:23:24 1.3 +++ gnus-diary.el 2005/11/15 03:45:45 1.4 @@ -1,6 +1,6 @@ ;;; gnus-diary.el --- Wrapper around the NNDiary Gnus backend = -;; Copyright (c) 2001, 2002, 2003 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. ;; Copyright (C) 1999, 2000, 2001 Didier Verna. = ;; Author: Didier Verna @@ -22,7 +22,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +;; MA 02110-1301, USA. = = ;;; Commentary: @@ -103,7 +104,8 @@ = (defgroup gnus-diary nil "Utilities on top of the nndiary backend for Gnus." - :version "22.1") + :version "22.1" + :group 'gnus) = (defcustom gnus-diary-summary-line-format "%U%R%z %uD: %(%s%) (%ud)\n" "*Summary line format for nndiary groups." = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-dired= .el = Index: gnus-dired.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= dired.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-dired.el 2004/09/28 02:21:05 1.3 +++ gnus-dired.el 2005/11/15 03:45:45 1.4 @@ -1,7 +1,7 @@ ;;; gnus-dired.el --- utility functions where gnus and dired meet = -;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Authors: Benjamin Rutt , ;; Shenghuo Zhu @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-draft= .el = Index: gnus-draft.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= draft.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-draft.el 2005/03/13 00:23:24 1.5 +++ gnus-draft.el 2005/11/15 03:45:45 1.6 @@ -1,7 +1,8 @@ ;;; gnus-draft.el --- draft message support for Gnus -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-dup.el = Index: gnus-dup.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= dup.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-dup.el 2004/09/28 02:21:05 1.3 +++ gnus-dup.el 2005/11/15 03:45:45 1.4 @@ -1,7 +1,8 @@ ;;; gnus-dup.el --- suppression of duplicate articles in Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +6 -5 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-eform= .el = Index: gnus-eform.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= eform.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-eform.el 2004/09/28 02:21:05 1.3 +++ gnus-eform.el 2005/11/15 03:45:45 1.4 @@ -1,7 +1,8 @@ ;;; gnus-eform.el --- a mode for editing forms for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -83,7 +84,7 @@ It is a slightly enhanced emacs-lisp-mod (use-local-map gnus-edit-form-mode-map) (make-local-variable 'gnus-edit-form-done-function) (make-local-variable 'gnus-prev-winconf) - (gnus-run-hooks 'gnus-edit-form-mode-hook)) + (gnus-run-mode-hooks 'gnus-edit-form-mode-hook)) = (defun gnus-edit-form (form documentation exit-func) "Edit FORM in a new buffer. = = = 1.6 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-ems.el = Index: gnus-ems.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= ems.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-ems.el 2004/09/28 02:21:05 1.5 +++ gnus-ems.el 2005/11/15 03:45:45 1.6 @@ -1,7 +1,8 @@ ;;; gnus-ems.el --- functions for making Gnus work under different Emacs= en -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +6 -5 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-fun.el = Index: gnus-fun.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= fun.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-fun.el 2005/03/13 00:23:24 1.5 +++ gnus-fun.el 2005/11/15 03:45:45 1.6 @@ -1,6 +1,7 @@ ;;; gnus-fun.el --- various frivolous extension functions to Gnus -;; Copyright (C) 2002, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -53,7 +54,7 @@ on stdout." :type 'string) = (defcustom gnus-convert-image-to-face-command "djpeg %s | ppmnorm | pnms= cale -width 48 -height 48 | ppmquant %d | pnmtopng" - "Command for converting an image to an Face. + "Command for converting an image to a Face. By default it takes a JPEG filename and output the Face header data on stdout." :version "22.1" @@ -109,7 +110,7 @@ Output to the current buffer, replace te = ;;;###autoload (defun gnus-face-from-file (file) - "Return an Face header based on an image file." + "Return a Face header based on an image file." (interactive "fImage file name (by default JPEG): ") (when (file-exists-p file) (let ((done nil) = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-gl.el = Index: gnus-gl.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= gl.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-gl.el 2004/09/28 02:21:06 1.3 +++ gnus-gl.el 2005/11/15 03:45:46 1.4 @@ -1,7 +1,7 @@ ;;; gnus-gl.el --- an interface to GroupLens for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Brad Miller ;; Keywords: news, score @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +91 -64 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-group= .el = Index: gnus-group.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= group.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-group.el 2005/03/13 00:23:24 1.5 +++ gnus-group.el 2005/11/15 03:45:46 1.6 @@ -1,7 +1,8 @@ ;;; gnus-group.el --- group mode commands for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -41,7 +42,11 @@ (require 'time-date) (require 'gnus-ems) = -(eval-when-compile (require 'mm-url)) +(eval-when-compile + (require 'mm-url) + (let ((features (cons 'gnus-group features))) + (require 'gnus-sum)) + (defvar gnus-cache-active-hashtb)) = (defcustom gnus-group-archive-directory "/ftp(a)ftp.hpc.uh.edu:/pub/emacs/ding-list/" @@ -305,50 +310,50 @@ variable." (defcustom gnus-group-highlight '(;; Mail. ((and mailp (=3D unread 0) (eq level 1)) . - gnus-group-mail-1-empty-face) + gnus-group-mail-1-empty) ((and mailp (eq level 1)) . - gnus-group-mail-1-face) + gnus-group-mail-1) ((and mailp (=3D unread 0) (eq level 2)) . - gnus-group-mail-2-empty-face) + gnus-group-mail-2-empty) ((and mailp (eq level 2)) . - gnus-group-mail-2-face) + gnus-group-mail-2) ((and mailp (=3D unread 0) (eq level 3)) . - gnus-group-mail-3-empty-face) + gnus-group-mail-3-empty) ((and mailp (eq level 3)) . - gnus-group-mail-3-face) + gnus-group-mail-3) ((and mailp (=3D unread 0)) . - gnus-group-mail-low-empty-face) + gnus-group-mail-low-empty) ((and mailp) . - gnus-group-mail-low-face) + gnus-group-mail-low) ;; News. ((and (=3D unread 0) (eq level 1)) . - gnus-group-news-1-empty-face) + gnus-group-news-1-empty) ((and (eq level 1)) . - gnus-group-news-1-face) + gnus-group-news-1) ((and (=3D unread 0) (eq level 2)) . - gnus-group-news-2-empty-face) + gnus-group-news-2-empty) ((and (eq level 2)) . - gnus-group-news-2-face) + gnus-group-news-2) ((and (=3D unread 0) (eq level 3)) . - gnus-group-news-3-empty-face) + gnus-group-news-3-empty) ((and (eq level 3)) . - gnus-group-news-3-face) + gnus-group-news-3) ((and (=3D unread 0) (eq level 4)) . - gnus-group-news-4-empty-face) + gnus-group-news-4-empty) ((and (eq level 4)) . - gnus-group-news-4-face) + gnus-group-news-4) ((and (=3D unread 0) (eq level 5)) . - gnus-group-news-5-empty-face) + gnus-group-news-5-empty) ((and (eq level 5)) . - gnus-group-news-5-face) + gnus-group-news-5) ((and (=3D unread 0) (eq level 6)) . - gnus-group-news-6-empty-face) + gnus-group-news-6-empty) ((and (eq level 6)) . - gnus-group-news-6-face) + gnus-group-news-6) ((and (=3D unread 0)) . - gnus-group-news-low-empty-face) + gnus-group-news-low-empty) (t . - gnus-group-news-low-face)) + gnus-group-news-low)) "*Controls the highlighting of group buffer lines. = Below is a list of `Form'/`Face' pairs. When deciding how a a @@ -378,7 +383,7 @@ ticked: The number of ticked articles." :type 'character) = (defgroup gnus-group-icons nil - "Add Icons to your group buffer. " + "Add Icons to your group buffer." :group 'gnus-group-visual) = (defcustom gnus-group-icon-list @@ -482,9 +487,15 @@ simple manner.") (?T (gnus-range-length (cdr (assq 'tick gnus-tmp-marked))) ?d) (?i (+ (gnus-range-length (cdr (assq 'dormant gnus-tmp-marked))) (gnus-range-length (cdr (assq 'tick gnus-tmp-marked)))) ?d) - (?g gnus-tmp-group ?s) + (?g (if (boundp 'gnus-tmp-decoded-group) + gnus-tmp-decoded-group + gnus-tmp-group) + ?s) (?G gnus-tmp-qualified-group ?s) - (?c (gnus-short-group-name gnus-tmp-group) ?s) + (?c (gnus-short-group-name (if (boundp 'gnus-tmp-decoded-group) + gnus-tmp-decoded-group + gnus-tmp-group)) + ?s) (?C gnus-tmp-comment ?s) (?D gnus-tmp-newsgroup-description ?s) (?o gnus-tmp-moderated ?c) @@ -1036,7 +1047,7 @@ The following commands are available: (gnus-undo-mode 1)) (when gnus-slave (gnus-slave-mode)) - (gnus-run-hooks 'gnus-group-mode-hook)) + (gnus-run-mode-hooks 'gnus-group-mode-hook)) = (defun gnus-update-group-mark-positions () (save-excursion @@ -1441,12 +1452,12 @@ if it is a string, only list groups matc (point) (prog1 (1+ (point)) ;; Insert the text. - (let ((gnus-tmp-group (gnus-group-name-decode - gnus-tmp-group group-name-charset))) + (let ((gnus-tmp-decoded-group (gnus-group-name-decode + gnus-tmp-group group-name-charset))) (eval gnus-group-line-format-spec))) `(gnus-group ,(gnus-intern-safe gnus-tmp-group gnus-active-hashtb) gnus-unread ,(if (numberp number) - (string-to-int gnus-tmp-number-of-unread) + (string-to-number gnus-tmp-number-of-unread) t) gnus-marked ,gnus-tmp-marked-mark gnus-indentation ,gnus-group-indentation @@ -1984,7 +1995,8 @@ confirmation is required." (defun gnus-group-read-ephemeral-group (group method &optional activate quit-config request-only select-articles - parameters) + parameters + number) "Read GROUP from METHOD as an ephemeral group. If ACTIVATE, request the group first. If QUIT-CONFIG, use that window configuration when exiting from the @@ -1992,6 +2004,7 @@ ephemeral group. If REQUEST-ONLY, don't actually read the group; just request it. If SELECT-ARTICLES, only select those articles. If PARAMETERS, use those as the group parameters. +If NUMBER, fetch this number of articles. = Return the name of the group if selection was successful." (interactive @@ -2039,7 +2052,7 @@ Return the name of the group if selectio (when (let ((gnus-large-newsgroup gnus-large-ephemeral-newsgroup) (gnus-fetch-old-headers gnus-fetch-old-ephemeral-headers)) - (gnus-group-read-group t t group select-articles)) + (gnus-group-read-group (or number t) t group select-articles)) group) ;;(error nil) (quit @@ -2242,7 +2255,7 @@ ADDRESS." (nname (if method (gnus-group-prefixed-name name meth) name)) backend info) (when (gnus-gethash nname gnus-newsrc-hashtb) - (error "Group %s already exists" nname)) + (error "Group %s already exists" (gnus-group-decoded-name nname))) ;; Subscribe to the new group. (gnus-group-change-level (setq info (list t nname gnus-level-default-subscribed nil nil meth= )) @@ -2303,20 +2316,21 @@ be removed from the server, even when it (unless (gnus-check-backend-function 'request-delete-group group) (error "This back end does not support group deletion")) (prog1 - (if (and (not no-prompt) - (not (gnus-yes-or-no-p - (format - "Do you really want to delete %s%s? " - group (if force " and all its contents" ""))))) - () ; Whew! - (gnus-message 6 "Deleting group %s..." group) - (if (not (gnus-request-delete-group group force)) - (gnus-error 3 "Couldn't delete group %s" group) - (gnus-message 6 "Deleting group %s...done" group) - (gnus-group-goto-group group) - (gnus-group-kill-group 1 t) - (gnus-sethash group nil gnus-active-hashtb) - t)) + (let ((group-decoded (gnus-group-decoded-name group))) + (if (and (not no-prompt) + (not (gnus-yes-or-no-p + (format + "Do you really want to delete %s%s? " + group-decoded (if force " and all its contents" ""))))) + () ; Whew! + (gnus-message 6 "Deleting group %s..." group-decoded) + (if (not (gnus-request-delete-group group force)) + (gnus-error 3 "Couldn't delete group %s" group-decoded) + (gnus-message 6 "Deleting group %s...done" group-decoded) + (gnus-group-goto-group group) + (gnus-group-kill-group 1 t) + (gnus-sethash group nil gnus-active-hashtb) + t))) (gnus-group-position-point))) = (defun gnus-group-rename-group (group new-name) @@ -2586,16 +2600,26 @@ If there is, use Gnus to create an nnrss (setq url (read-from-minibuffer "URL to Search for RSS: "))) (let ((feedinfo (nnrss-discover-feed url))) (if feedinfo - (let ((title (read-from-minibuffer "Title: " - (cdr (assoc 'title - feedinfo)))) + (let ((title (gnus-newsgroup-savable-name + (read-from-minibuffer "Title: " + (gnus-newsgroup-savable-name + (or (cdr (assoc 'title + feedinfo)) + ""))))) (desc (read-from-minibuffer "Description: " (cdr (assoc 'description feedinfo)))) - (href (cdr (assoc 'href feedinfo)))) - (push (list title href desc) - nnrss-group-alist) - (gnus-group-make-group title '(nnrss "")) + (href (cdr (assoc 'href feedinfo))) + (encodable (mm-coding-system-p 'utf-8))) + (when encodable + ;; Unify non-ASCII text. + (setq title (mm-decode-coding-string + (mm-encode-coding-string title 'utf-8) 'utf-8))) + (gnus-group-make-group (if encodable + (mm-encode-coding-string title 'utf-8) + title) + '(nnrss "")) + (push (list title href desc) nnrss-group-alist) (nnrss-save-server-data nil)) (error "No feeds found for %s" url)))) = @@ -3099,7 +3123,7 @@ up is returned." "Do you really want to mark all articles in %s as read? " "Mark all unread articles in %s as read? ") (if (=3D (length groups) 1) - (car groups) + (gnus-group-decoded-name (car groups)) (format "these %d groups" (length groups))))))) n (while (setq group (pop groups)) @@ -3177,7 +3201,8 @@ Uses the process/prefix convention." = (defun gnus-group-expire-articles-1 (group) (when (gnus-check-backend-function 'request-expire-articles group) - (gnus-message 6 "Expiring articles in %s..." group) + (gnus-message 6 "Expiring articles in %s..." + (gnus-group-decoded-name group)) (let* ((info (gnus-get-info group)) (expirable (if (gnus-group-total-expirable-p group) (cons nil (gnus-list-of-read-articles group)) @@ -3202,7 +3227,8 @@ Uses the process/prefix convention." (gnus-request-expire-articles (gnus-uncompress-sequence (cdr expirable)) group)))) (gnus-close-group group)) - (gnus-message 6 "Expiring articles in %s...done" group) + (gnus-message 6 "Expiring articles in %s...done" + (gnus-group-decoded-name group)) ;; Return the list of un-expired articles. (cdr expirable)))) = @@ -3225,7 +3251,7 @@ Uses the process/prefix convention." (progn (unless (gnus-group-process-prefix current-prefix-arg) (error "No group on the current line")) - (string-to-int + (string-to-number (let ((s (read-string (format "Level (default %s): " (or (gnus-group-group-level) @@ -3241,7 +3267,8 @@ Uses the process/prefix convention." (while (setq group (pop groups)) (gnus-group-remove-mark group) (gnus-message 6 "Changed level of %s from %d to %d" - group (or (gnus-group-group-level) gnus-level-killed) + (gnus-group-decoded-name group) + (or (gnus-group-group-level) gnus-level-killed) level) (gnus-group-change-level group level (or (gnus-group-group-level) gnus-level-killed)) @@ -3390,7 +3417,7 @@ of groups killed." gnus-list-of-killed-groups)) (gnus-group-change-level (if entry entry group) gnus-level-killed (if entry nil level)) - (message "Killed group %s" group)) + (message "Killed group %s" (gnus-group-decoded-name group))) ;; If there are lots and lots of groups to be killed, we use ;; this thing instead. (dolist (group (nreverse groups)) = = = 1.7 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-int.el = Index: gnus-int.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= int.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-int.el 2005/03/13 00:23:25 1.6 +++ gnus-int.el 2005/11/15 03:45:46 1.7 @@ -1,7 +1,8 @@ ;;; gnus-int.el --- backend interface functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +6 -5 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-kill.= el = Index: gnus-kill.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= kill.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-kill.el 2004/09/28 02:21:06 1.3 +++ gnus-kill.el 2005/11/15 03:45:46 1.4 @@ -1,7 +1,8 @@ ;;; gnus-kill.el --- kill commands for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -161,7 +162,7 @@ gnus-kill-file-mode-hook with no argumen (setq major-mode 'gnus-kill-file-mode) (setq mode-name "Kill") (lisp-mode-variables nil) - (gnus-run-hooks 'emacs-lisp-mode-hook 'gnus-kill-file-mode-hook)) + (gnus-run-mode-hooks 'emacs-lisp-mode-hook 'gnus-kill-file-mode-hook)) = (defun gnus-kill-file-edit-file (newsgroup) "Begin editing a kill file for NEWSGROUP. = = = 1.5 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-logic= .el = Index: gnus-logic.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= logic.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-logic.el 2004/09/28 02:21:06 1.4 +++ gnus-logic.el 2005/11/15 03:45:46 1.5 @@ -1,7 +1,8 @@ ;;; gnus-logic.el --- advanced scoring code for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.3 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-mh.el = Index: gnus-mh.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= mh.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- gnus-mh.el 2004/09/28 02:21:07 1.2 +++ gnus-mh.el 2005/11/15 03:45:47 1.3 @@ -1,7 +1,8 @@ ;;; gnus-mh.el --- mh-e interface for Gnus -;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +4 -3 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-ml.el = Index: gnus-ml.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= ml.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-ml.el 2004/09/28 02:21:07 1.3 +++ gnus-ml.el 2005/11/15 03:45:47 1.4 @@ -1,6 +1,7 @@ ;;; gnus-ml.el --- Mailing list minor mode for Gnus = -;; Copyright (C) 2000, 2001 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Julien Gilles ;; Keywords: news @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-mlspl= .el = Index: gnus-mlspl.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= mlspl.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-mlspl.el 2004/09/28 02:21:07 1.3 +++ gnus-mlspl.el 2005/11/15 03:45:47 1.4 @@ -1,7 +1,7 @@ ;;; gnus-mlspl.el --- a group params-based mail splitting mechanism = -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Alexandre Oliva ;; Keywords: news, mail @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.3 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-move.= el = Index: gnus-move.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= move.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- gnus-move.el 2004/09/28 02:21:07 1.2 +++ gnus-move.el 2005/11/15 03:45:47 1.3 @@ -1,7 +1,8 @@ ;;; gnus-move.el --- commands for moving Gnus from one server to another -;; Copyright (C) 1996, 1997, 1998, 1999, 2000 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +24 -28 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-msg.el = Index: gnus-msg.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= msg.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-msg.el 2005/03/13 00:23:25 1.6 +++ gnus-msg.el 2005/11/15 03:45:47 1.7 @@ -1,7 +1,8 @@ ;;; gnus-msg.el --- mail and post interface for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -66,8 +67,10 @@ message in, you can set this variable to current newsgroup name and then returns a suitable group name (or list of names)." :group 'gnus-message - :type '(choice (string :tag "Group") - (function))) + :type '(choice (const nil) + (function) + (string :tag "Group") + (repeat :tag "List of groups" (string :tag "Group")))) = (defcustom gnus-mailing-list-groups nil "*If non-nil a regexp matching groups that are really mailing lists. @@ -466,27 +469,19 @@ Gcc: header for archiving purposes." ;; COMPOSEFUNC should return t if succeed. Undocumented ??? t) = -(defvar save-selected-window-window) - ;;;###autoload (defun gnus-button-mailto (address) "Mail to ADDRESS." (set-buffer (gnus-copy-article-buffer)) (gnus-setup-message 'message - (message-reply address)) - (and (boundp 'save-selected-window-window) - (not (window-live-p save-selected-window-window)) - (setq save-selected-window-window (selected-window)))) + (message-reply address))) = ;;;###autoload (defun gnus-button-reply (&optional to-address wide) "Like `message-reply'." (interactive) (gnus-setup-message 'message - (message-reply to-address wide)) - (and (boundp 'save-selected-window-window) - (not (window-live-p save-selected-window-window)) - (setq save-selected-window-window (selected-window)))) + (message-reply to-address wide))) = ;;;###autoload (define-mail-user-agent 'gnus-user-agent @@ -1038,17 +1033,18 @@ If SILENT, don't prompt the user." "Stringified Gnus version and Emacs version. See the variable `gnus-user-agent'." (interactive) - (let* ((float-output-format nil) - (gnus-v - (concat "Gnus/" - (prin1-to-string (gnus-continuum-version gnus-version) t) - " (" gnus-version ")")) - (emacs-v (gnus-emacs-version))) - (if (stringp gnus-user-agent) - gnus-user-agent - (concat gnus-v - (when emacs-v - (concat " " emacs-v)))))) + (if (stringp gnus-user-agent) + gnus-user-agent + ;; `gnus-user-agent' is a list: + (let* ((float-output-format nil) + (gnus-v + (when (memq 'gnus gnus-user-agent) + (concat "Gnus/" + (prin1-to-string (gnus-continuum-version gnus-version) t) + " (" gnus-version ")"))) + (emacs-v (gnus-emacs-version))) + (concat gnus-v (when (and gnus-v emacs-v) " ") + emacs-v)))) = =0C ;;; @@ -1668,7 +1664,7 @@ this is a reply." (gcc (cond ((functionp group) (funcall group)) - ((or (stringp group) (list group)) + ((or (stringp group) (listp group)) group)))) (when gcc (insert "Gcc: " = = = 1.5 +19 -14 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-nocem= .el = Index: gnus-nocem.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= nocem.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-nocem.el 2004/09/28 02:21:07 1.4 +++ gnus-nocem.el 2005/11/15 03:45:47 1.5 @@ -1,9 +1,8 @@ ;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = - ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -21,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -37,7 +36,7 @@ (require 'gnus-range) = (defgroup gnus-nocem nil - "NoCeM pseudo-cancellation treatment" + "NoCeM pseudo-cancellation treatment." :group 'gnus-score) = (defcustom gnus-nocem-groups @@ -74,12 +73,13 @@ issuer registry." :group 'gnus-nocem :type 'integer) = -(defcustom gnus-nocem-verifyer 'mc-verify +(defcustom gnus-nocem-verifyer 'pgg-verify "*Function called to verify that the NoCeM message is valid. -One likely value is `mc-verify'. If the function in this variable +One likely value is `pgg-verify'. If the function in this variable isn't bound, the message will be used unconditionally." :group 'gnus-nocem - :type '(radio (function-item mc-verify) + :type '(radio (function-item pgg-verify) + (function-item mc-verify) (function :tag "other"))) = (defcustom gnus-nocem-liberal-fetch nil @@ -246,7 +246,7 @@ valid issuer, which is much faster if yo ;; We get the name of the issuer. (narrow-to-region b e) (setq issuer (mail-fetch-field "issuer") - type (mail-fetch-field "issuer")) + type (mail-fetch-field "type")) (widen) (if (not (gnus-nocem-message-wanted-p issuer type)) (message "invalid NoCeM issuer: %s" issuer) @@ -267,18 +267,20 @@ valid issuer, which is much faster if yo (while (setq condition (pop conditions)) (cond ((stringp condition) - (setq wanted (string-match condition type))) + (when (string-match condition type) + (setq wanted t))) ((and (consp condition) (eq (car condition) 'not) (stringp (cadr condition))) - (setq wanted (not (string-match (cadr condition) type)))) + (when (string-match (cadr condition) type) + (setq wanted nil))) (t (error "Invalid NoCeM condition: %S" condition)))) wanted)))) = (defun gnus-nocem-verify-issuer (person) "Verify using PGP that the canceler is who she says she is." - (if (fboundp gnus-nocem-verifyer) + (if (functionp gnus-nocem-verifyer) (ignore-errors (funcall gnus-nocem-verifyer)) ;; If we don't have Mailcrypt, then we use the message anyway. @@ -315,7 +317,10 @@ valid issuer, which is much faster if yo (while (eq (char-after) ?\t) (forward-line -1)) (setq id (buffer-substring (point) (1- (search-forward "\t")))) - (unless (gnus-gethash id gnus-nocem-hashtb) + (unless (if gnus-nocem-hashtb + (gnus-gethash id gnus-nocem-hashtb) + (setq gnus-nocem-hashtb (gnus-make-hashtable)) + nil) ;; only store if not already present (gnus-sethash id t gnus-nocem-hashtb) (push id ncm)) = = = 1.7 +10 -6 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-picon= .el = Index: gnus-picon.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= picon.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-picon.el 2005/03/13 00:23:25 1.6 +++ gnus-picon.el 2005/11/15 03:45:47 1.7 @@ -1,7 +1,7 @@ ;;; gnus-picon.el --- displaying pretty icons in Gnus = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news xpm annotation glyph faces @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -74,13 +74,17 @@ Some people may want to add \"unknown\" = :type '(repeat string) :group 'gnus-picon) = -(defface gnus-picon-xbm-face '((t (:foreground "black" :background "whit= e"))) +(defface gnus-picon-xbm '((t (:foreground "black" :background "white"))) "Face to show xbm picon in." :group 'gnus-picon) +;; backward-compatibility alias +(put 'gnus-picon-xbm-face 'face-alias 'gnus-picon-xbm) = -(defface gnus-picon-face '((t (:foreground "black" :background "white"))) +(defface gnus-picon '((t (:foreground "black" :background "white"))) "Face to show picon in." :group 'gnus-picon) +;; backward-compatibility alias +(put 'gnus-picon-face 'face-alias 'gnus-picon) = ;;; Internal variables: = = = = 1.5 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-range= .el = Index: gnus-range.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= range.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-range.el 2005/03/13 00:23:26 1.4 +++ gnus-range.el 2005/11/15 03:45:47 1.5 @@ -1,7 +1,7 @@ ;;; gnus-range.el --- range and sequence functions for Gnus = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-regis= try.el = Index: gnus-registry.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= registry.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-registry.el 2005/03/13 00:23:26 1.5 +++ gnus-registry.el 2005/11/15 03:45:48 1.6 @@ -1,7 +1,8 @@ ;;; gnus-registry.el --- article registry for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Ted Zlatanov ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +8 -10 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-salt.= el = Index: gnus-salt.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= salt.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-salt.el 2004/09/28 02:21:08 1.3 +++ gnus-salt.el 2005/11/15 03:45:48 1.4 @@ -1,7 +1,7 @@ ;;; gnus-salt.el --- alternate summary mode interfaces for Gnus = -;; Copyright (C) 1996, 1997, 1998, 1999, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -128,8 +128,7 @@ It accepts the same format specs that `g ;; Set up the menu. (when (gnus-visual-p 'pick-menu 'menu) (gnus-pick-make-menu-bar)) - (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map - nil 'gnus-pick-mode) + (gnus-add-minor-mode 'gnus-pick-mode " Pick" gnus-pick-mode-map) (gnus-run-hooks 'gnus-pick-mode-hook)))) = (defun gnus-pick-setup-message () @@ -362,8 +361,7 @@ This must be bound to a button-down mous ;; Set up the menu. (when (gnus-visual-p 'binary-menu 'menu) (gnus-binary-make-menu-bar)) - (gnus-add-minor-mode 'gnus-binary-mode " Binary" - gnus-binary-mode-map nil 'gnus-binary-mode) + (gnus-add-minor-mode 'gnus-binary-mode " Binary" gnus-binary-mode-= map) (gnus-run-hooks 'gnus-binary-mode-hook)))) = (defun gnus-binary-display-article (article &optional all-header) @@ -496,7 +494,7 @@ Two predefined functions are available: (gnus-set-work-buffer) (gnus-tree-node-insert (make-mail-header "") nil) (setq gnus-tree-node-length (1- (point)))) - (gnus-run-hooks 'gnus-tree-mode-hook)) + (gnus-run-mode-hooks 'gnus-tree-mode-hook)) = (defun gnus-tree-read-summary-keys (&optional arg) "Read a summary buffer key sequence and execute it." @@ -1009,7 +1007,7 @@ The following commands are available: (buffer-disable-undo) (setq buffer-read-only t) (make-local-variable 'gnus-carpal-attached-buffer) - (gnus-run-hooks 'gnus-carpal-mode-hook)) + (gnus-run-mode-hooks 'gnus-carpal-mode-hook)) = (defun gnus-carpal-setup-buffer (type) (let ((buffer (symbol-value (intern (format "gnus-carpal-%s-buffer" ty= pe))))) = = = 1.6 +28 -18 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-score= .el = Index: gnus-score.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= score.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-score.el 2005/03/13 00:23:26 1.5 +++ gnus-score.el 2005/11/15 03:45:48 1.6 @@ -1,7 +1,8 @@ ;;; gnus-score.el --- scoring code for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -141,7 +142,7 @@ If this variable is nil, no score file e number)) = (defcustom gnus-update-score-entry-dates t - "*In non-nil, update matching score entry dates. + "*If non-nil, update matching score entry dates. If this variable is nil, then score entries that provide matches will be expired along with non-matching score entries." :group 'gnus-score-expire @@ -174,7 +175,7 @@ It is called with one parameter -- the s It can be: = * A string - This file file will be used as the home score file. + This file will be used as the home score file. = * A function The result of this function will be used as the home score file. @@ -185,7 +186,7 @@ It can be: The elements in this list can be: = * `(regexp file-name ...)' - If the `regexp' matches the group name, the first `file-name' will + If the `regexp' matches the group name, the first `file-name' will be used as the home score file. (Multiple filenames are allowed so that one may use gnus-score-file-single-match-alist to set this variable.) @@ -220,13 +221,22 @@ This variable allows the same syntax as = (function :value fun))) = (defcustom gnus-default-adaptive-score-alist - '((gnus-kill-file-mark) + `((gnus-kill-file-mark) (gnus-unread-mark) - (gnus-read-mark (from 3) (subject 30)) - (gnus-catchup-mark (subject -10)) - (gnus-killed-mark (from -1) (subject -20)) - (gnus-del-mark (from -2) (subject -15))) - "*Alist of marks and scores." + (gnus-read-mark + (from , (+ 2 gnus-score-decay-constant)) + (subject , (+ 27 gnus-score-decay-constant))) + (gnus-catchup-mark + (subject , (+ -7 (* -1 gnus-score-decay-constant)))) + (gnus-killed-mark + (from , (- -1 gnus-score-decay-constant)) + (subject , (+ -17 (* -1 gnus-score-decay-constant)))) + (gnus-del-mark + (from , (- -1 gnus-score-decay-constant)) + (subject , (+ -12 (* -1 gnus-score-decay-constant))))) + "Alist of marks and scores. +If you use score decays, you might want to set values higher than +`gnus-score-decay-constant'." :group 'gnus-score-adapt :type '(repeat (cons (symbol :tag "Mark") (repeat (list (choice :tag "Header" @@ -651,7 +661,7 @@ file for the command instead of the curr (intern ; need symbol (gnus-completing-read-with-default (symbol-name (car gnus-extra-headers)) ; default response - "Score extra header:" ; prompt + "Score extra header" ; prompt (mapcar (lambda (x) ; completion list (cons (symbol-name x) x)) gnus-extra-headers) @@ -826,7 +836,7 @@ If optional argument `EXTRA' is non-nil, ;; If this is an integer comparison, we transform from string to int. (if (eq (nth 2 (assoc header gnus-header-index)) 'gnus-score-integer) (if (stringp match) - (setq match (string-to-int match))) + (setq match (string-to-number match))) (set-text-properties 0 (length match) nil match)) = (unless (eq date 'now) @@ -891,7 +901,7 @@ EXTRA is the possible non-standard heade t) (read-string "Match: ") (if (y-or-n-p "Use regexp match? ") 'r 's) - (string-to-int (read-string "Score: ")))) + (string-to-number (read-string "Score: ")))) (save-excursion (unless (and (stringp match) (> (length match) 0)) (error "No match")) @@ -945,7 +955,7 @@ EXTRA is the possible non-standard heade "Automatically mark articles with score below SCORE as read." (interactive (list (or (and current-prefix-arg (prefix-numeric-value current-prefi= x-arg)) - (string-to-int (read-string "Mark below: "))))) + (string-to-number (read-string "Mark below: "))))) (setq score (or score gnus-summary-default-score 0)) (gnus-score-set 'mark (list score)) (gnus-score-set 'touched '(t)) @@ -979,7 +989,7 @@ EXTRA is the possible non-standard heade "Automatically expunge articles with score below SCORE." (interactive (list (or (and current-prefix-arg (prefix-numeric-value current-prefi= x-arg)) - (string-to-int (read-string "Set expunge below: "))))) + (string-to-number (read-string "Set expunge below: "))))) (setq score (or score gnus-summary-default-score 0)) (gnus-score-set 'expunge (list score)) (gnus-score-set 'touched '(t))) = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-setup= .el = Index: gnus-setup.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= setup.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-setup.el 2004/09/28 02:21:08 1.3 +++ gnus-setup.el 2005/11/15 03:45:48 1.4 @@ -1,7 +1,7 @@ ;;; gnus-setup.el --- Initialization & Setup for Gnus 5 = -;; Copyright (C) 1995, 1996, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Steven L. Baur ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: ;; My head is starting to spin with all the different mail/news packages. = = = 1.4 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-sieve= .el = Index: gnus-sieve.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= sieve.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-sieve.el 2004/09/28 02:21:08 1.3 +++ gnus-sieve.el 2005/11/15 03:45:48 1.4 @@ -1,6 +1,7 @@ ;;; gnus-sieve.el --- Utilities to manage sieve scripts for Gnus -;; Copyright (C) 2001, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. + ;; Author: NAGY Andras , ;; Simon Josefsson = @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -129,7 +130,7 @@ Return nil if no rule could be guessed." (let ((rule (gnus-sieve-guess-rule-for-article)) (info (gnus-get-info gnus-newsgroup-name))) (if (null rule) - (error "Could not guess rule for article.") + (error "Could not guess rule for article") (gnus-info-set-params info (cons rule (gnus-info-params info))) (message "Added rule in group %s for article: %s" gnus-newsgroup-name rule))))) = = = 1.5 +8 -8 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-soup.= el = Index: gnus-soup.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= soup.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-soup.el 2004/09/28 02:21:09 1.4 +++ gnus-soup.el 2005/11/15 03:45:48 1.5 @@ -1,7 +1,7 @@ ;;; gnus-soup.el --- SOUP packet writing support for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Per Abrahamsen ;; Lars Magne Ingebrigtsen @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -349,9 +349,9 @@ If NOT-ALL, don't pack ticked articles." (packer (if (< (string-match "%s" packer) (string-match "%d" packer)) (format packer files - (string-to-int (gnus-soup-unique-prefix dir))) + (string-to-number (gnus-soup-unique-prefix dir))) (format packer - (string-to-int (gnus-soup-unique-prefix dir)) + (string-to-number (gnus-soup-unique-prefix dir)) files))) (dir (expand-file-name dir))) (gnus-make-directory dir) @@ -385,7 +385,7 @@ though the two last may be nil if they a (and (eq (preceding-char) ?\t) (gnus-soup-field)) (and (eq (preceding-char) ?\t) - (string-to-int (gnus-soup-field)))) + (string-to-number (gnus-soup-field)))) areas) (when (eq (preceding-char) ?\t) (beginning-of-line 2))) @@ -535,7 +535,7 @@ Return whether the unpacking was success (error "Bad header")) (forward-line 1) (setq beg (point) - end (+ (point) (string-to-int + end (+ (point) (string-to-number (buffer-substring (match-beginning 1) (match-end 1))))) (switch-to-buffer tmp-buf) = = = 1.6 +14 -5 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-spec.= el = Index: gnus-spec.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= spec.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-spec.el 2005/03/13 00:23:27 1.5 +++ gnus-spec.el 2005/11/15 03:45:48 1.6 @@ -1,7 +1,8 @@ ;;; gnus-spec.el --- format spec functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,14 +20,15 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = ;;; Code: = (eval-when-compile (require 'cl)) +(defvar gnus-newsrc-file-version) = (require 'gnus) = @@ -196,6 +198,13 @@ Return a list of updated types." (not (equal emacs-version (cdr (assq 'version gnus-format-specs))))) (setq gnus-format-specs nil)) + ;; Flush the group format spec cache if it doesn't support decoded + ;; group names. + (when (memq 'group types) + (let ((spec (assq 'group gnus-format-specs))) + (unless (string-match " gnus-tmp-decoded-group[ )]" + (gnus-prin1-to-string (nth 2 spec))) + (setq gnus-format-specs (delq spec gnus-format-specs))))) = ;; Go through all the formats and see whether they need updating. (let (new-format entry type val updated) @@ -502,7 +511,7 @@ are supported for %s." (t (if (null args) (error 'wrong-number-of-arguments #'my-format n fstring)) - (let* ((minlen (string-to-int (or (match-string 2) ""))) + (let* ((minlen (string-to-number (or (match-string 2) ""))) (arg (car args)) (str (if (stringp arg) arg (format "%s" arg))) (lpad (null (match-string 1))) = = = 1.6 +38 -24 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-srvr.= el = Index: gnus-srvr.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= srvr.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- gnus-srvr.el 2005/03/13 00:23:27 1.5 +++ gnus-srvr.el 2005/11/15 03:45:49 1.6 @@ -1,7 +1,8 @@ ;;; gnus-srvr.el --- virtual server support for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -167,67 +168,77 @@ If nil, a faster, but more primitive, bu "\C-c\C-i" gnus-info-find-node "\C-c\C-b" gnus-bug)) = -(defface gnus-server-agent-face +(defface gnus-server-agent '((((class color) (background light)) (:foreground "PaleTurquoise" :bo= ld t)) (((class color) (background dark)) (:foreground "PaleTurquoise" :bol= d t)) (t (:bold t))) "Face used for displaying AGENTIZED servers" :group 'gnus-server-visual) +;; backward-compatibility alias +(put 'gnus-server-agent-face 'face-alias 'gnus-server-agent) = -(defface gnus-server-opened-face +(defface gnus-server-opened '((((class color) (background light)) (:foreground "Green3" :bold t)) (((class color) (background dark)) (:foreground "Green1" :bold t)) (t (:bold t))) "Face used for displaying OPENED servers" :group 'gnus-server-visual) +;; backward-compatibility alias +(put 'gnus-server-opened-face 'face-alias 'gnus-server-opened) = -(defface gnus-server-closed-face +(defface gnus-server-closed '((((class color) (background light)) (:foreground "Steel Blue" :itali= c t)) (((class color) (background dark)) (:foreground "Light Steel Blue" :italic t)) (t (:italic t))) "Face used for displaying CLOSED servers" :group 'gnus-server-visual) +;; backward-compatibility alias +(put 'gnus-server-closed-face 'face-alias 'gnus-server-closed) = -(defface gnus-server-denied-face +(defface gnus-server-denied '((((class color) (background light)) (:foreground "Red" :bold t)) (((class color) (background dark)) (:foreground "Pink" :bold t)) (t (:inverse-video t :bold t))) "Face used for displaying DENIED servers" :group 'gnus-server-visual) +;; backward-compatibility alias +(put 'gnus-server-denied-face 'face-alias 'gnus-server-denied) = -(defface gnus-server-offline-face +(defface gnus-server-offline '((((class color) (background light)) (:foreground "Orange" :bold t)) (((class color) (background dark)) (:foreground "Yellow" :bold t)) (t (:inverse-video t :bold t))) "Face used for displaying OFFLINE servers" :group 'gnus-server-visual) +;; backward-compatibility alias +(put 'gnus-server-offline-face 'face-alias 'gnus-server-offline) = -(defcustom gnus-server-agent-face 'gnus-server-agent-face +(defcustom gnus-server-agent-face 'gnus-server-agent "Face name to use on AGENTIZED servers." :version "22.1" :group 'gnus-server-visual :type 'face) = -(defcustom gnus-server-opened-face 'gnus-server-opened-face +(defcustom gnus-server-opened-face 'gnus-server-opened "Face name to use on OPENED servers." :version "22.1" :group 'gnus-server-visual :type 'face) = -(defcustom gnus-server-closed-face 'gnus-server-closed-face +(defcustom gnus-server-closed-face 'gnus-server-closed "Face name to use on CLOSED servers." :version "22.1" :group 'gnus-server-visual :type 'face) = -(defcustom gnus-server-denied-face 'gnus-server-denied-face +(defcustom gnus-server-denied-face 'gnus-server-denied "Face name to use on DENIED servers." :version "22.1" :group 'gnus-server-visual :type 'face) = -(defcustom gnus-server-offline-face 'gnus-server-offline-face +(defcustom gnus-server-offline-face 'gnus-server-offline "Face name to use on OFFLINE servers." :version "22.1" :group 'gnus-server-visual @@ -269,7 +280,7 @@ The following commands are available: (put 'gnus-server-mode 'font-lock-defaults '(gnus-server-font-lock= -keywords t)) (set (make-local-variable 'font-lock-defaults) '(gnus-server-font-lock-keywords t))) - (gnus-run-hooks 'gnus-server-mode-hook)) + (gnus-run-mode-hooks 'gnus-server-mode-hook)) = (defun gnus-server-insert-server-line (gnus-tmp-name method) (let* ((gnus-tmp-how (car method)) @@ -849,25 +860,28 @@ buffer. (setq truncate-lines t) (gnus-set-default-directory) (setq buffer-read-only t) - (gnus-run-hooks 'gnus-browse-mode-hook)) + (gnus-run-mode-hooks 'gnus-browse-mode-hook)) = -(defun gnus-browse-read-group (&optional no-article) - "Enter the group at the current line." - (interactive) +(defun gnus-browse-read-group (&optional no-article number) + "Enter the group at the current line. +If NUMBER, fetch this number of articles." + (interactive "P") (let ((group (gnus-browse-group-name))) (if (or (not (gnus-get-info group)) (gnus-ephemeral-group-p group)) (unless (gnus-group-read-ephemeral-group group gnus-browse-current-method nil - (cons (current-buffer) 'browse)) + (cons (current-buffer) 'browse) + nil nil nil number) (error "Couldn't enter %s" group)) (unless (gnus-group-read-group nil no-article group) (error "Couldn't enter %s" group))))) = -(defun gnus-browse-select-group () - "Select the current group." - (interactive) - (gnus-browse-read-group 'no)) +(defun gnus-browse-select-group (&optional number) + "Select the current group. +If NUMBER, fetch this number of articles." + (interactive "P") + (gnus-browse-read-group 'no number)) = (defun gnus-browse-next-group (n) "Go to the next group." = = = 1.7 +13 -13 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-start= .el = Index: gnus-start.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= start.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-start.el 2005/03/13 00:23:27 1.6 +++ gnus-start.el 2005/11/15 03:45:49 1.7 @@ -1,7 +1,8 @@ ;;; gnus-start.el --- startup functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -605,7 +606,7 @@ Can be used to turn version control on o "Subscribe the new GROUP interactively. It is inserted in hierarchical newsgroup order if subscribed. If not, it is killed." - (if (gnus-y-or-n-p (format "Subscribe new newsgroup: %s " group)) + (if (gnus-y-or-n-p (format "Subscribe new newsgroup %s? " group)) (gnus-subscribe-hierarchically group) (push group gnus-killed-list))) = @@ -857,6 +858,7 @@ prompt the user for the name of an NNTP = (set-buffer (setq gnus-dribble-buffer (gnus-get-buffer-create (file-name-nondirectory dribble-file)))) + (set (make-local-variable 'file-precious-flag) t) (erase-buffer) (setq buffer-file-name dribble-file) (auto-save-mode t) @@ -2517,7 +2519,7 @@ If FORCE is non-nil, the .newsrc file is (cond ((looking-at "[0-9]+") ;; We narrow and read a number instead of buffer-substring/ - ;; string-to-int because it's faster. narrow/widen is + ;; string-to-number because it's faster. narrow/widen is ;; faster than save-restriction/narrow, and save-restriction ;; produces a garbage object. (setq num1 (progn @@ -3083,12 +3085,10 @@ If this variable is nil, don't do anythi (file-name-as-directory (expand-file-name gnus-default-directory)) default-directory))) = -(eval-and-compile -(defalias 'gnus-display-time-event-handler - (if (gnus-boundp 'display-time-timer) - 'display-time-event-handler - (lambda () "Does nothing as `display-time-timer' is not bound. -Would otherwise be an alias for `display-time-event-handler'." nil)))) +(defun gnus-display-time-event-handler () + (if (and (fboundp 'display-time-event-handler) + (gnus-boundp 'display-time-timer)) + (display-time-event-handler))) = ;;;###autoload (defun gnus-fixup-nnimap-unread-after-getting-new-news () @@ -3107,7 +3107,7 @@ Would otherwise be an alias for `display = (provide 'gnus-start) = -;;; arch-tag: f4584a22-b7b7-4853-abfc-a637329af5d2 +;; arch-tag: f4584a22-b7b7-4853-abfc-a637329af5d2 ;;; gnus-start.el ends here = = = = = 1.8 +38 -34 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-sum.el = Index: gnus-sum.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= sum.el,v retrieving revision 1.7 retrieving revision 1.8 diff -u -p -r1.7 -r1.8 --- gnus-sum.el 2005/04/03 01:50:15 1.7 +++ gnus-sum.el 2005/11/15 03:45:49 1.8 @@ -1,7 +1,8 @@ ;;; gnus-sum.el --- summary mode commands for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2= 005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -256,8 +257,7 @@ simplification is selected." "*If non-nil, hide all threads initially. This can be a predicate specifier which says which threads to hide. If threads are hidden, you have to run the command -`gnus-summary-show-thread' by hand or use `gnus-select-article-hook' -to expose hidden threads." +`gnus-summary-show-thread' by hand or select an article." :group 'gnus-thread :type '(radio (sexp :format "Non-nil\n" :match (lambda (widget value) @@ -320,7 +320,7 @@ This variable can either be the symbols = first subject), `unread' (place point on the subject line of the first unread article), `best' (place point on the subject line of the higest-scored article), `unseen' (place point on the subject line of -the first unseen article), 'unseen-or-unread' (place point on the subject +the first unseen article), `unseen-or-unread' (place point on the subject line of the first unseen article or, if all article have been seen, on t= he subject line of the first unread article), or a function to be called to place point on some subject line." @@ -917,7 +917,7 @@ automatically when it is selected." :group 'gnus-summary :type 'boolean) = -(defcustom gnus-summary-selected-face 'gnus-summary-selected-face +(defcustom gnus-summary-selected-face 'gnus-summary-selected "Face used for highlighting the current article in the summary buffer." :group 'gnus-summary-visual :type 'face) @@ -926,42 +926,42 @@ automatically when it is selected." = (defcustom gnus-summary-highlight '(((eq mark gnus-canceled-mark) - . gnus-summary-cancelled-face) + . gnus-summary-cancelled) ((and uncached (> score default-high)) - . gnus-summary-high-undownloaded-face) + . gnus-summary-high-undownloaded) ((and uncached (< score default-low)) - . gnus-summary-low-undownloaded-face) + . gnus-summary-low-undownloaded) (uncached - . gnus-summary-normal-undownloaded-face) + . gnus-summary-normal-undownloaded) ((and (> score default-high) (or (eq mark gnus-dormant-mark) (eq mark gnus-ticked-mark))) - . gnus-summary-high-ticked-face) + . gnus-summary-high-ticked) ((and (< score default-low) (or (eq mark gnus-dormant-mark) (eq mark gnus-ticked-mark))) - . gnus-summary-low-ticked-face) + . gnus-summary-low-ticked) ((or (eq mark gnus-dormant-mark) (eq mark gnus-ticked-mark)) - . gnus-summary-normal-ticked-face) + . gnus-summary-normal-ticked) ((and (> score default-high) (eq mark gnus-ancient-mark)) - . gnus-summary-high-ancient-face) + . gnus-summary-high-ancient) ((and (< score default-low) (eq mark gnus-ancient-mark)) - . gnus-summary-low-ancient-face) + . gnus-summary-low-ancient) ((eq mark gnus-ancient-mark) - . gnus-summary-normal-ancient-face) + . gnus-summary-normal-ancient) ((and (> score default-high) (eq mark gnus-unread-mark)) - . gnus-summary-high-unread-face) + . gnus-summary-high-unread) ((and (< score default-low) (eq mark gnus-unread-mark)) - . gnus-summary-low-unread-face) + . gnus-summary-low-unread) ((eq mark gnus-unread-mark) - . gnus-summary-normal-unread-face) + . gnus-summary-normal-unread) ((> score default-high) - . gnus-summary-high-read-face) + . gnus-summary-high-read) ((< score default-low) - . gnus-summary-low-read-face) + . gnus-summary-low-read) (t - . gnus-summary-normal-read-face)) + . gnus-summary-normal-read)) "*Controls the highlighting of summary buffer lines. = A list of (FORM . FACE) pairs. When deciding how a a particular @@ -1000,7 +1000,9 @@ which it may alter in any way." :type '(repeat symbol)) = (defcustom gnus-ignored-from-addresses - (and user-mail-address (regexp-quote user-mail-address)) + (and user-mail-address = + (not (string=3D user-mail-address "")) + (regexp-quote user-mail-address)) "*Regexp of From headers that may be suppressed in favor of To headers= ." :version "21.1" :group 'gnus-summary @@ -2722,7 +2724,7 @@ The following commands are available: (make-local-variable 'gnus-summary-mark-positions) (gnus-make-local-hook 'pre-command-hook) (add-hook 'pre-command-hook 'gnus-set-global-variables nil t) - (gnus-run-hooks 'gnus-summary-mode-hook) + (gnus-run-mode-hooks 'gnus-summary-mode-hook) (turn-on-gnus-mailing-list-mode) (mm-enable-multibyte) (gnus-update-format-specifications nil 'summary 'summary-mode 'summary= -dummy) @@ -5660,7 +5662,7 @@ The resulting hash table is returned, or (match-end 1))) (substring xrefs (match-beginning 1) (match-end 1)))) (setq number - (string-to-int (substring xrefs (match-beginning 2) + (string-to-number (substring xrefs (match-beginning 2) (match-end 2)))) (if (setq entry (gnus-gethash group xref-hashtb)) (setcdr entry (cons number (cdr entry))) @@ -7254,11 +7256,12 @@ If BACKWARD, the previous article is sel (if (and group (not (gnus-ephemeral-group-p gnus-newsgroup-name))) (format " (Type %s for %s [%s])" - (single-key-description cmd) group + (single-key-description cmd) + (gnus-group-decoded-name group) (car (gnus-gethash group gnus-newsrc-hashtb))) (format " (Type %s to exit %s)" (single-key-description cmd) - gnus-newsgroup-name)))) + (gnus-group-decoded-name gnus-newsgroup-name))))) ;; Confirm auto selection. (setq key (car (setq keve (gnus-read-event-char prompt))) ended t) @@ -7695,8 +7698,8 @@ articles that are younger than AGE days. (gnus-completing-read-with-default (symbol-name (car gnus-extra-headers)) (if current-prefix-arg - "Exclude extra header:" - "Limit extra header:") + "Exclude extra header" + "Limit extra header") (mapcar (lambda (x) (cons (symbol-name x) x)) gnus-extra-headers) @@ -9217,7 +9220,7 @@ latter case, they will be copied into th gnus-newsgroup-name))))) (method (gnus-completing-read-with-default - methname "What backend do you want to use when respooling?" + methname "Backend to use when respooling" methods nil t nil 'gnus-mail-method-history)) ms) (cond @@ -9560,7 +9563,8 @@ groups." (save-excursion (save-restriction (message-narrow-to-head) - (let ((head (buffer-string)) + (let ((head (buffer-substring-no-properties + (point-min) (point-max))) header) (with-temp-buffer (insert (format "211 %d Article retrieved.\n" @@ -11042,7 +11046,7 @@ save those articles instead." (let* ((split-name (gnus-get-split-value gnus-move-split-methods)) (minibuffer-confirm-incomplete nil) ; XEmacs (prom - (format "%s %s to:" + (format "%s %s to" prompt (if (> (length articles) 1) (format "these %d articles" (length articles)) = = = 1.5 +7 -9 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-topic= .el = Index: gnus-topic.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= topic.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-topic.el 2004/09/28 02:21:09 1.4 +++ gnus-topic.el 2005/11/15 03:45:49 1.5 @@ -1,7 +1,8 @@ ;;; gnus-topic.el --- a folding minor mode for Gnus group buffers -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Ilja Weis ;; Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -436,7 +437,7 @@ If LOWEST is non-nil, list all newsgroup (copy-sequence gnus-group-listed-groups)))) = (gnus-update-format-specifications nil 'topic) - = + (when (or (not gnus-topic-alist) (not gnus-topology-checked-p)) (gnus-topic-check-topology)) @@ -1136,10 +1137,7 @@ articles in the topic and its subtopics. (when (gnus-visual-p 'topic-menu 'menu) (gnus-topic-make-menu-bar)) (gnus-set-format 'topic t) - (gnus-add-minor-mode 'gnus-topic-mode " Topic" - gnus-topic-mode-map nil (lambda (&rest junk) - (interactive) - (gnus-topic-mode nil t))) + (gnus-add-minor-mode 'gnus-topic-mode " Topic" gnus-topic-mode-map) (add-hook 'gnus-group-catchup-group-hook 'gnus-topic-update-topic) (set (make-local-variable 'gnus-group-prepare-function) 'gnus-group-prepare-topics) = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-undo.= el = Index: gnus-undo.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= undo.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-undo.el 2004/09/28 02:21:10 1.3 +++ gnus-undo.el 2005/11/15 03:45:49 1.4 @@ -1,7 +1,7 @@ ;;; gnus-undo.el --- minor mode for undoing in Gnus = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.11 +52 -36 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-util.= el = Index: gnus-util.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= util.el,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- gnus-util.el 2005/03/13 22:19:28 1.10 +++ gnus-util.el 2005/11/15 03:45:50 1.11 @@ -1,5 +1,6 @@ ;;; gnus-util.el --- utility functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 + +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2= 005 ;; Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -39,9 +40,12 @@ (require 'cl) ;; Fixme: this should be a gnus variable, not nnmail-. (defvar nnmail-pathname-coding-system) + (defvar nnmail-active-file-coding-system) = ;; Inappropriate references to other parts of Gnus. (defvar gnus-emphasize-whitespace-regexp) + (defvar gnus-original-article-buffer) + (defvar gnus-user-agent) ) (require 'time-date) (require 'netrc) @@ -331,8 +335,8 @@ is slower." (defun gnus-completing-read-with-default (default prompt &rest args) ;; Like `completing-read', except that DEFAULT is the default argument. (let* ((prompt (if default - (concat prompt " (default " default ") ") - (concat prompt " "))) + (concat prompt " (default " default "): ") + (concat prompt ": "))) (answer (apply 'completing-read prompt args))) (if (or (null answer) (zerop (length answer))) default @@ -1015,6 +1019,13 @@ ARG is passed to the first function." (save-current-buffer (apply 'run-hooks funcs))) = +(defun gnus-run-mode-hooks (&rest funcs) + "Run `run-mode-hooks' if it is available, otherwise `run-hooks'. +This function saves the current buffer." + (if (fboundp 'run-mode-hooks) + (save-current-buffer (apply 'run-mode-hooks funcs)) + (save-current-buffer (apply 'run-hooks funcs)))) + ;;; Various = (defvar gnus-group-buffer) ; Compiler directive @@ -1026,14 +1037,6 @@ ARG is passed to the first function." (set-buffer gnus-group-buffer) (eq major-mode 'gnus-group-mode)))) = -(defun gnus-remove-duplicates (list) - (let (new) - (while list - (or (member (car list) new) - (setq new (cons (car list) new))) - (setq list (cdr list))) - (nreverse new))) - (defun gnus-remove-if (predicate list) "Return a copy of LIST with all items satisfying PREDICATE removed." (let (out) @@ -1507,39 +1510,47 @@ predicate on the elements." = (eval-when-compile (defvar xemacs-codename) - (defvar sxemacs-codename)) + (defvar sxemacs-codename) + (defvar emacs-program-version)) = (defun gnus-emacs-version () "Stringified Emacs version." - (let ((system-v - (cond - ((eq gnus-user-agent 'emacs-gnus-config) - system-configuration) - ((eq gnus-user-agent 'emacs-gnus-type) - (symbol-name system-type)) - (t nil)))) + (let* ((lst (if (listp gnus-user-agent) + gnus-user-agent + '(gnus emacs type))) + (system-v (cond ((memq 'config lst) + system-configuration) + ((memq 'type lst) + (symbol-name system-type)) + (t nil))) + codename emacsname) + (cond ((featurep 'sxemacs) + (setq emacsname "SXEmacs" + codename sxemacs-codename)) + ((featurep 'xemacs) + (setq emacsname "XEmacs" + codename xemacs-codename)) + (t + (setq emacsname "Emacs"))) (cond - ((eq gnus-user-agent 'gnus) + ((not (memq 'emacs lst)) nil) ((string-match "^\\(\\([.0-9]+\\)*\\)\\.[0-9]+$" emacs-version) + ;; Emacs: (concat "Emacs/" (match-string 1 emacs-version) (if system-v (concat " (" system-v ")") ""))) - ((featurep 'sxemacs) - (concat "SXEmacs/" emacs-program-version - (when system-v - (concat " (" - (when sxemacs-codename - (concat sxemacs-codename ", ")) - system-v ")")))) - ((featurep 'xemacs) - (concat "XEmacs/" emacs-program-version - (when system-v - (concat " (" - (when xemacs-codename - (concat xemacs-codename ", ")) - system-v ")")))) + ((or (featurep 'sxemacs) (featurep 'xemacs)) + ;; XEmacs or SXEmacs: + (concat emacsname "/" emacs-program-version + " (" + (when (and (memq 'codename lst) + codename) + (concat codename + (when system-v ", "))) + (when system-v system-v) + ")")) (t emacs-version)))) = (defun gnus-rename-file (old-path new-path &optional trim) @@ -1563,6 +1574,11 @@ empty directories from OLD-PATH." (file-truename (concat old-dir ".."))))))))) = +(if (fboundp 'set-process-query-on-exit-flag) + (defalias 'gnus-set-process-query-on-exit-flag + 'set-process-query-on-exit-flag) + (defalias 'gnus-set-process-query-on-exit-flag + 'process-kill-without-query)) = (provide 'gnus-util) = = = = 1.5 +14 -13 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-uu.el = Index: gnus-uu.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= uu.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-uu.el 2004/09/28 02:21:10 1.4 +++ gnus-uu.el 2005/11/15 03:45:50 1.5 @@ -1,7 +1,8 @@ ;;; gnus-uu.el --- extract (uu)encoded files in Gnus -;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, 2= 000, -;; 2001, 2002, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 1985, 1986, 1987, 1993, 1994, 1995, 1996, 1997, 1998, +;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Created: 2 Oct 1993 ;; Keyword: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -836,7 +837,7 @@ When called interactively, prompt for RE (erase-buffer) (insert (format "Date: %s\nFrom: %s\nSubject: %s Digest\n\n" - (current-time-string) name name)) + (message-make-date) name name)) (when (and message-forward-as-mime gnus-uu-digest-buffer) (insert "<#part type=3Dmessage/rfc822>\nSubject: Topics\n\n")) (insert "Topics:\n"))) @@ -917,16 +918,16 @@ When called interactively, prompt for RE (if (and message-forward-as-mime gnus-uu-digest-buffer) (with-current-buffer gnus-uu-digest-buffer (erase-buffer) - (insert-buffer "*gnus-uu-pre*") + (insert-buffer-substring "*gnus-uu-pre*") (goto-char (point-max)) - (insert-buffer "*gnus-uu-body*")) + (insert-buffer-substring "*gnus-uu-body*")) (save-excursion (set-buffer "*gnus-uu-pre*") (insert (format "\n\n%s\n\n" (make-string 70 ?-))) (if gnus-uu-digest-buffer (with-current-buffer gnus-uu-digest-buffer (erase-buffer) - (insert-buffer "*gnus-uu-pre*")) + (insert-buffer-substring "*gnus-uu-pre*")) (let ((coding-system-for-write mm-text-coding-system)) (gnus-write-buffer gnus-uu-saved-article-name)))) (save-excursion @@ -939,7 +940,7 @@ When called interactively, prompt for RE (if gnus-uu-digest-buffer (with-current-buffer gnus-uu-digest-buffer (goto-char (point-max)) - (insert-buffer "*gnus-uu-body*")) + (insert-buffer-substring "*gnus-uu-body*")) (let ((coding-system-for-write mm-text-coding-system) (file-name-coding-system nnmail-pathname-coding-system)) (write-region @@ -1185,7 +1186,7 @@ When called interactively, prompt for RE (ignore-errors (replace-match (format "%06d" - (string-to-int (buffer-substring + (string-to-number (buffer-substring (match-beginning 0) (match-end 0))))))) (setq string (buffer-substring 1 (point-max))) (setcar (car string-list) string) @@ -1293,7 +1294,7 @@ When called interactively, prompt for RE (not gnus-uu-be-dangerous) (or (eq gnus-uu-be-dangerous t) (gnus-y-or-n-p - (format "Delete unsuccessfully decoded file %s" + (format "Delete unsuccessfully decoded file %s? " result-file)))) (delete-file result-file))) (when (memq 'begin process-state) @@ -1353,7 +1354,7 @@ When called interactively, prompt for RE (gnus-message 2 "No begin part at the beginning") (sleep-for 2)) (setq state 'middle)))) - = + ;; When there are no result-files, then something must be wrong. (if result-files (message "") @@ -1439,7 +1440,7 @@ When called interactively, prompt for RE ;; We replace certain characters that could make things messy. (setq gnus-uu-file-name (gnus-map-function - mm-file-name-rewrite-functions = + mm-file-name-rewrite-functions (file-name-nondirectory (match-string 1)))) (replace-match (concat "begin 644 " gnus-uu-file-name) t t) = = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-vm.el = Index: gnus-vm.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= vm.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- gnus-vm.el 2004/09/28 02:21:10 1.3 +++ gnus-vm.el 2005/11/15 03:45:50 1.4 @@ -1,7 +1,7 @@ ;;; gnus-vm.el --- vm interface for Gnus = -;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, +;; 2003, 2004, 2005 Free Software Foundation, Inc. = ;; Author: Per Persson ;; Keywords: news, mail @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.5 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-win.el = Index: gnus-win.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= win.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gnus-win.el 2005/03/13 00:23:31 1.4 +++ gnus-win.el 2005/11/15 03:45:50 1.5 @@ -1,7 +1,8 @@ ;;; gnus-win.el --- window configuration functions for Gnus -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +89 -22 XEmacs/packages/xemacs-packages/gnus/lisp/gnus-xmas.= el = Index: gnus-xmas.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus-= xmas.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gnus-xmas.el 2004/09/28 02:21:10 1.6 +++ gnus-xmas.el 2005/11/15 03:45:51 1.7 @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -549,19 +549,55 @@ call it with the value of the `gnus-data = ;;; The toolbar. = -(defcustom gnus-use-toolbar (if (featurep 'toolbar) - 'default-toolbar - nil) - "*If nil, do not use a toolbar. -If it is non-nil, it must be a toolbar. The five valid values are -`default-toolbar', `top-toolbar', `bottom-toolbar', -`right-toolbar', and `left-toolbar'." - :type '(choice (const default-toolbar) - (const top-toolbar) (const bottom-toolbar) - (const left-toolbar) (const right-toolbar) +(defun gnus-xmas-update-toolbars () + "Update the toolbars' appearance." + (when (and (not noninteractive) + (featurep 'gnus-xmas)) + (save-excursion + (dolist (buffer (buffer-list)) + (set-buffer buffer) + (cond ((eq major-mode 'gnus-group-mode) + (gnus-xmas-setup-group-toolbar)) + ((eq major-mode 'gnus-summary-mode) + (gnus-xmas-setup-summary-toolbar))))))) + +(defcustom gnus-use-toolbar (if (featurep 'toolbar) 'default) + "*Position to display the toolbar. Nil means do not use a toolbar. +If it is non-nil, it should be one of the symbols `default', `top', +`bottom', `right', and `left'. `default' means to use the default +toolbar, the rest mean to display the toolbar on the place which those +names show." + :type '(choice (const default) + (const top) (const bottom) (const left) (const right) (const :tag "no toolbar" nil)) + :set (lambda (symbol value) + (set-default + symbol + (if (or (not value) + (memq value (list 'default 'top 'bottom 'right 'left))) + value + 'default)) + (gnus-xmas-update-toolbars)) :group 'gnus-xmas) = +(defcustom gnus-toolbar-thickness + (if (featurep 'toolbar) + (cons (specifier-instance default-toolbar-height) + (specifier-instance default-toolbar-width))) + "*Cons of the height and the width specifying the thickness of a toolb= ar. +The height is used for the toolbar displayed on the top or the bottom, +the width is used for the toolbar displayed on the right or the left." + :type '(cons :tag "height & width" + (integer :tag "height") (integer :tag "width")) + :set (lambda (symbol value) + (set-default + symbol + (if (and (consp value) (natnump (car value)) (natnump (cdr value))) + value + '(37 . 40))) + (gnus-xmas-update-toolbars)) + :group 'gnus-xmas) + (defvar gnus-group-toolbar '([gnus-group-get-new-news gnus-group-get-new-news t "Get new news"] [gnus-group-get-new-news-this-group @@ -641,19 +677,50 @@ If it is non-nil, it must be a toolbar. = [gnus-summary-exit gnus-summary-exit t "Exit this summary"]) "The summary buffer mail toolbar.") = +(defun gnus-xmas-setup-toolbar (toolbar) + (when (featurep 'toolbar) + (if (and gnus-use-toolbar + (message-xmas-setup-toolbar toolbar nil "gnus")) + (let* ((bar (or (intern-soft (format "%s-toolbar" gnus-use-toolbar)) + 'default-toolbar)) + (bars (delq bar (list 'top-toolbar 'bottom-toolbar + 'right-toolbar 'left-toolbar))) + hw) + (while bars + (remove-specifier (symbol-value (pop bars)) (current-buffer))) + (unless (eq bar 'default-toolbar) + (set-specifier default-toolbar nil (current-buffer))) + (set-specifier (symbol-value bar) toolbar (current-buffer)) + (when (setq hw (cdr (assq gnus-use-toolbar + '((default . default-toolbar-height) + (top . top-toolbar-height) + (bottom . bottom-toolbar-height))))) + (set-specifier (symbol-value hw) (car gnus-toolbar-thickness) + (current-buffer))) + (when (setq hw (cdr (assq gnus-use-toolbar + '((default . default-toolbar-width) + (right . right-toolbar-width) + (left . left-toolbar-width))))) + (set-specifier (symbol-value hw) (cdr gnus-toolbar-thickness) + (current-buffer)))) + (set-specifier default-toolbar nil (current-buffer)) + (remove-specifier top-toolbar (current-buffer)) + (remove-specifier bottom-toolbar (current-buffer)) + (remove-specifier right-toolbar (current-buffer)) + (remove-specifier left-toolbar (current-buffer))) + (set-specifier default-toolbar-visible-p t (current-buffer)) + (set-specifier top-toolbar-visible-p t (current-buffer)) + (set-specifier bottom-toolbar-visible-p t (current-buffer)) + (set-specifier right-toolbar-visible-p t (current-buffer)) + (set-specifier left-toolbar-visible-p t (current-buffer)))) + (defun gnus-xmas-setup-group-toolbar () - (and gnus-use-toolbar - (message-xmas-setup-toolbar gnus-group-toolbar nil "gnus") - (set-specifier (symbol-value gnus-use-toolbar) - (cons (current-buffer) gnus-group-toolbar)))) + (gnus-xmas-setup-toolbar gnus-group-toolbar)) = (defun gnus-xmas-setup-summary-toolbar () - (let ((bar (if (gnus-news-group-p gnus-newsgroup-name) - gnus-summary-toolbar gnus-summary-mail-toolbar))) - (and gnus-use-toolbar - (message-xmas-setup-toolbar bar nil "gnus") - (set-specifier (symbol-value gnus-use-toolbar) - (cons (current-buffer) bar))))) + (gnus-xmas-setup-toolbar (if (gnus-news-group-p gnus-newsgroup-name) + gnus-summary-toolbar + gnus-summary-mail-toolbar))) = (defun gnus-xmas-mail-strip-quoted-names (address) "Protect mail-strip-quoted-names from nil input. = = = 1.9 +279 -106 XEmacs/packages/xemacs-packages/gnus/lisp/gnus.el = Index: gnus.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gnus.= el,v retrieving revision 1.8 retrieving revision 1.9 diff -u -p -r1.8 -r1.9 --- gnus.el 2005/03/13 01:39:27 1.8 +++ gnus.el 2005/11/15 03:45:51 1.9 @@ -1,7 +1,7 @@ ;;; gnus.el --- a newsreader for GNU Emacs = -;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, -;; 1998, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, 1997, 1= 998, +;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. = ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -34,8 +34,18 @@ (require 'wid-edit) (require 'mm-util) (require 'nnheader) -(autoload 'message-y-or-n-p "message" nil nil 'macro) = +;; These are defined afterwards with gnus-define-group-parameter +(defvar gnus-ham-process-destinations) +(defvar gnus-parameter-ham-marks-alist) +(defvar gnus-parameter-spam-marks-alist) +(defvar gnus-spam-autodetect) +(defvar gnus-spam-autodetect-methods) +(defvar gnus-spam-newsgroup-contents) +(defvar gnus-spam-process-destinations) +(defvar gnus-spam-process-newsgroups) + + (defgroup gnus nil "The coffee-brewing, all singing, all dancing, kitchen sink newsreader= ." :group 'news @@ -274,7 +284,7 @@ is restarted, and sometimes reloaded." :group 'gnus) = (defgroup gnus-exit nil - "Exiting gnus." + "Exiting Gnus." :link '(custom-manual "(gnus)Exiting Gnus") :group 'gnus) = @@ -358,7 +368,7 @@ be set in `.emacs' instead." ;; We define these group faces here to avoid the display ;; update forced when creating new faces. = -(defface gnus-group-news-1-face +(defface gnus-group-news-1 '((((class color) (background dark)) (:foreground "PaleTurquoise" :bold t)) @@ -367,9 +377,12 @@ be set in `.emacs' instead." (:foreground "ForestGreen" :bold t)) (t ())) - "Level 1 newsgroup face.") + "Level 1 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-1-face 'face-alias 'gnus-group-news-1) = -(defface gnus-group-news-1-empty-face +(defface gnus-group-news-1-empty '((((class color) (background dark)) (:foreground "PaleTurquoise")) @@ -378,9 +391,12 @@ be set in `.emacs' instead." (:foreground "ForestGreen")) (t ())) - "Level 1 empty newsgroup face.") + "Level 1 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-1-empty-face 'face-alias 'gnus-group-news-1-empty) = -(defface gnus-group-news-2-face +(defface gnus-group-news-2 '((((class color) (background dark)) (:foreground "turquoise" :bold t)) @@ -389,9 +405,12 @@ be set in `.emacs' instead." (:foreground "CadetBlue4" :bold t)) (t ())) - "Level 2 newsgroup face.") + "Level 2 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-2-face 'face-alias 'gnus-group-news-2) = -(defface gnus-group-news-2-empty-face +(defface gnus-group-news-2-empty '((((class color) (background dark)) (:foreground "turquoise")) @@ -400,9 +419,12 @@ be set in `.emacs' instead." (:foreground "CadetBlue4")) (t ())) - "Level 2 empty newsgroup face.") + "Level 2 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-2-empty-face 'face-alias 'gnus-group-news-2-empty) = -(defface gnus-group-news-3-face +(defface gnus-group-news-3 '((((class color) (background dark)) (:bold t)) @@ -411,9 +433,12 @@ be set in `.emacs' instead." (:bold t)) (t ())) - "Level 3 newsgroup face.") + "Level 3 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-3-face 'face-alias 'gnus-group-news-3) = -(defface gnus-group-news-3-empty-face +(defface gnus-group-news-3-empty '((((class color) (background dark)) ()) @@ -422,9 +447,12 @@ be set in `.emacs' instead." ()) (t ())) - "Level 3 empty newsgroup face.") + "Level 3 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-3-empty-face 'face-alias 'gnus-group-news-3-empty) = -(defface gnus-group-news-4-face +(defface gnus-group-news-4 '((((class color) (background dark)) (:bold t)) @@ -433,9 +461,12 @@ be set in `.emacs' instead." (:bold t)) (t ())) - "Level 4 newsgroup face.") + "Level 4 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-4-face 'face-alias 'gnus-group-news-4) = -(defface gnus-group-news-4-empty-face +(defface gnus-group-news-4-empty '((((class color) (background dark)) ()) @@ -444,9 +475,12 @@ be set in `.emacs' instead." ()) (t ())) - "Level 4 empty newsgroup face.") + "Level 4 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-4-empty-face 'face-alias 'gnus-group-news-4-empty) = -(defface gnus-group-news-5-face +(defface gnus-group-news-5 '((((class color) (background dark)) (:bold t)) @@ -455,9 +489,12 @@ be set in `.emacs' instead." (:bold t)) (t ())) - "Level 5 newsgroup face.") + "Level 5 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-5-face 'face-alias 'gnus-group-news-5) = -(defface gnus-group-news-5-empty-face +(defface gnus-group-news-5-empty '((((class color) (background dark)) ()) @@ -466,9 +503,12 @@ be set in `.emacs' instead." ()) (t ())) - "Level 5 empty newsgroup face.") + "Level 5 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-5-empty-face 'face-alias 'gnus-group-news-5-empty) = -(defface gnus-group-news-6-face +(defface gnus-group-news-6 '((((class color) (background dark)) (:bold t)) @@ -477,9 +517,12 @@ be set in `.emacs' instead." (:bold t)) (t ())) - "Level 6 newsgroup face.") + "Level 6 newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-6-face 'face-alias 'gnus-group-news-6) = -(defface gnus-group-news-6-empty-face +(defface gnus-group-news-6-empty '((((class color) (background dark)) ()) @@ -488,9 +531,12 @@ be set in `.emacs' instead." ()) (t ())) - "Level 6 empty newsgroup face.") + "Level 6 empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-6-empty-face 'face-alias 'gnus-group-news-6-empty) = -(defface gnus-group-news-low-face +(defface gnus-group-news-low '((((class color) (background dark)) (:foreground "DarkTurquoise" :bold t)) @@ -499,9 +545,12 @@ be set in `.emacs' instead." (:foreground "DarkGreen" :bold t)) (t ())) - "Low level newsgroup face.") + "Low level newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-low-face 'face-alias 'gnus-group-news-low) = -(defface gnus-group-news-low-empty-face +(defface gnus-group-news-low-empty '((((class color) (background dark)) (:foreground "DarkTurquoise")) @@ -510,9 +559,12 @@ be set in `.emacs' instead." (:foreground "DarkGreen")) (t ())) - "Low level empty newsgroup face.") + "Low level empty newsgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-news-low-empty-face 'face-alias 'gnus-group-news-low-em= pty) = -(defface gnus-group-mail-1-face +(defface gnus-group-mail-1 '((((class color) (background dark)) (:foreground "aquamarine1" :bold t)) @@ -521,9 +573,12 @@ be set in `.emacs' instead." (:foreground "DeepPink3" :bold t)) (t (:bold t))) - "Level 1 mailgroup face.") + "Level 1 mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-1-face 'face-alias 'gnus-group-mail-1) = -(defface gnus-group-mail-1-empty-face +(defface gnus-group-mail-1-empty '((((class color) (background dark)) (:foreground "aquamarine1")) @@ -532,9 +587,12 @@ be set in `.emacs' instead." (:foreground "DeepPink3")) (t (:italic t :bold t))) - "Level 1 empty mailgroup face.") + "Level 1 empty mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-1-empty-face 'face-alias 'gnus-group-mail-1-empty) = -(defface gnus-group-mail-2-face +(defface gnus-group-mail-2 '((((class color) (background dark)) (:foreground "aquamarine2" :bold t)) @@ -543,9 +601,12 @@ be set in `.emacs' instead." (:foreground "HotPink3" :bold t)) (t (:bold t))) - "Level 2 mailgroup face.") + "Level 2 mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-2-face 'face-alias 'gnus-group-mail-2) = -(defface gnus-group-mail-2-empty-face +(defface gnus-group-mail-2-empty '((((class color) (background dark)) (:foreground "aquamarine2")) @@ -554,9 +615,12 @@ be set in `.emacs' instead." (:foreground "HotPink3")) (t (:bold t))) - "Level 2 empty mailgroup face.") + "Level 2 empty mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-2-empty-face 'face-alias 'gnus-group-mail-2-empty) = -(defface gnus-group-mail-3-face +(defface gnus-group-mail-3 '((((class color) (background dark)) (:foreground "aquamarine3" :bold t)) @@ -565,9 +629,12 @@ be set in `.emacs' instead." (:foreground "magenta4" :bold t)) (t (:bold t))) - "Level 3 mailgroup face.") + "Level 3 mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-3-face 'face-alias 'gnus-group-mail-3) = -(defface gnus-group-mail-3-empty-face +(defface gnus-group-mail-3-empty '((((class color) (background dark)) (:foreground "aquamarine3")) @@ -576,9 +643,12 @@ be set in `.emacs' instead." (:foreground "magenta4")) (t ())) - "Level 3 empty mailgroup face.") + "Level 3 empty mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-3-empty-face 'face-alias 'gnus-group-mail-3-empty) = -(defface gnus-group-mail-low-face +(defface gnus-group-mail-low '((((class color) (background dark)) (:foreground "aquamarine4" :bold t)) @@ -587,9 +657,12 @@ be set in `.emacs' instead." (:foreground "DeepPink4" :bold t)) (t (:bold t))) - "Low level mailgroup face.") + "Low level mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-low-face 'face-alias 'gnus-group-mail-low) = -(defface gnus-group-mail-low-empty-face +(defface gnus-group-mail-low-empty '((((class color) (background dark)) (:foreground "aquamarine4")) @@ -598,20 +671,28 @@ be set in `.emacs' instead." (:foreground "DeepPink4")) (t (:bold t))) - "Low level empty mailgroup face.") + "Low level empty mailgroup face." + :group 'gnus-group) +;; backward-compatibility alias +(put 'gnus-group-mail-low-empty-face 'face-alias 'gnus-group-mail-low-em= pty) = ;; Summary mode faces. = -(defface gnus-summary-selected-face '((t - (:underline t))) - "Face used for selected articles.") +(defface gnus-summary-selected '((t (:underline t))) + "Face used for selected articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-selected-face 'face-alias 'gnus-summary-selected) = -(defface gnus-summary-cancelled-face +(defface gnus-summary-cancelled '((((class color)) (:foreground "yellow" :background "black"))) - "Face used for cancelled articles.") + "Face used for cancelled articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-cancelled-face 'face-alias 'gnus-summary-cancelled) = -(defface gnus-summary-high-ticked-face +(defface gnus-summary-high-ticked '((((class color) (background dark)) (:foreground "pink" :bold t)) @@ -620,9 +701,12 @@ be set in `.emacs' instead." (:foreground "firebrick" :bold t)) (t (:bold t))) - "Face used for high interest ticked articles.") + "Face used for high interest ticked articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-high-ticked-face 'face-alias 'gnus-summary-high-ticke= d) = -(defface gnus-summary-low-ticked-face +(defface gnus-summary-low-ticked '((((class color) (background dark)) (:foreground "pink" :italic t)) @@ -631,9 +715,12 @@ be set in `.emacs' instead." (:foreground "firebrick" :italic t)) (t (:italic t))) - "Face used for low interest ticked articles.") + "Face used for low interest ticked articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-low-ticked-face 'face-alias 'gnus-summary-low-ticked) = -(defface gnus-summary-normal-ticked-face +(defface gnus-summary-normal-ticked '((((class color) (background dark)) (:foreground "pink")) @@ -642,9 +729,12 @@ be set in `.emacs' instead." (:foreground "firebrick")) (t ())) - "Face used for normal interest ticked articles.") + "Face used for normal interest ticked articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-normal-ticked-face 'face-alias 'gnus-summary-normal-t= icked) = -(defface gnus-summary-high-ancient-face +(defface gnus-summary-high-ancient '((((class color) (background dark)) (:foreground "SkyBlue" :bold t)) @@ -653,9 +743,12 @@ be set in `.emacs' instead." (:foreground "RoyalBlue" :bold t)) (t (:bold t))) - "Face used for high interest ancient articles.") + "Face used for high interest ancient articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-high-ancient-face 'face-alias 'gnus-summary-high-anci= ent) = -(defface gnus-summary-low-ancient-face +(defface gnus-summary-low-ancient '((((class color) (background dark)) (:foreground "SkyBlue" :italic t)) @@ -664,9 +757,12 @@ be set in `.emacs' instead." (:foreground "RoyalBlue" :italic t)) (t (:italic t))) - "Face used for low interest ancient articles.") + "Face used for low interest ancient articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-low-ancient-face 'face-alias 'gnus-summary-low-ancien= t) = -(defface gnus-summary-normal-ancient-face +(defface gnus-summary-normal-ancient '((((class color) (background dark)) (:foreground "SkyBlue")) @@ -675,51 +771,72 @@ be set in `.emacs' instead." (:foreground "RoyalBlue")) (t ())) - "Face used for normal interest ancient articles.") + "Face used for normal interest ancient articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-normal-ancient-face 'face-alias 'gnus-summary-normal-= ancient) = -(defface gnus-summary-high-undownloaded-face +(defface gnus-summary-high-undownloaded '((((class color) (background light)) (:bold t :foreground "cyan4")) (((class color) (background dark)) (:bold t :foreground "LightGray")) (t (:inverse-video t :bold t))) - "Face used for high interest uncached articles.") + "Face used for high interest uncached articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-high-undownloaded-face 'face-alias 'gnus-summary-high= -undownloaded) = -(defface gnus-summary-low-undownloaded-face +(defface gnus-summary-low-undownloaded '((((class color) (background light)) (:italic t :foreground "cyan4" :bold nil)) (((class color) (background dark)) (:italic t :foreground "LightGray" :bold nil)) (t (:inverse-video t :italic t))) - "Face used for low interest uncached articles.") + "Face used for low interest uncached articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-low-undownloaded-face 'face-alias 'gnus-summary-low-u= ndownloaded) = -(defface gnus-summary-normal-undownloaded-face +(defface gnus-summary-normal-undownloaded '((((class color) (background light)) (:foreground "cyan4" :bold nil)) (((class color) (background dark)) (:foreground "LightGray" :bold nil)) (t (:inverse-video t))) - "Face used for normal interest uncached articles.") + "Face used for normal interest uncached articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-normal-undownloaded-face 'face-alias 'gnus-summary-no= rmal-undownloaded) = -(defface gnus-summary-high-unread-face +(defface gnus-summary-high-unread '((t (:bold t))) - "Face used for high interest unread articles.") + "Face used for high interest unread articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-high-unread-face 'face-alias 'gnus-summary-high-unrea= d) = -(defface gnus-summary-low-unread-face +(defface gnus-summary-low-unread '((t (:italic t))) - "Face used for low interest unread articles.") + "Face used for low interest unread articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-low-unread-face 'face-alias 'gnus-summary-low-unread) = -(defface gnus-summary-normal-unread-face +(defface gnus-summary-normal-unread '((t ())) - "Face used for normal interest unread articles.") + "Face used for normal interest unread articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-normal-unread-face 'face-alias 'gnus-summary-normal-u= nread) = -(defface gnus-summary-high-read-face +(defface gnus-summary-high-read '((((class color) (background dark)) (:foreground "PaleGreen" @@ -730,9 +847,12 @@ be set in `.emacs' instead." :bold t)) (t (:bold t))) - "Face used for high interest read articles.") + "Face used for high interest read articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-high-read-face 'face-alias 'gnus-summary-high-read) = -(defface gnus-summary-low-read-face +(defface gnus-summary-low-read '((((class color) (background dark)) (:foreground "PaleGreen" @@ -743,9 +863,12 @@ be set in `.emacs' instead." :italic t)) (t (:italic t))) - "Face used for low interest read articles.") + "Face used for low interest read articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-low-read-face 'face-alias 'gnus-summary-low-read) = -(defface gnus-summary-normal-read-face +(defface gnus-summary-normal-read '((((class color) (background dark)) (:foreground "PaleGreen")) @@ -754,7 +877,10 @@ be set in `.emacs' instead." (:foreground "DarkGreen")) (t ())) - "Face used for normal interest read articles.") + "Face used for normal interest read articles." + :group 'gnus-summary) +;; backward-compatibility alias +(put 'gnus-summary-normal-read-face 'face-alias 'gnus-summary-normal-rea= d) = = ;;; @@ -798,7 +924,7 @@ be set in `.emacs' instead." (eval-and-compile (autoload 'gnus-play-jingle "gnus-audio")) = -(defface gnus-splash-face +(defface gnus-splash '((((class color) (background dark)) (:foreground "#888888")) @@ -807,7 +933,10 @@ be set in `.emacs' instead." (:foreground "#888888")) (t ())) - "Face for the splash screen.") + "Face for the splash screen." + :group 'gnus) +;; backward-compatibility alias +(put 'gnus-splash-face 'face-alias 'gnus-splash) = (defun gnus-splash () (save-excursion @@ -877,6 +1006,11 @@ be set in `.emacs' instead." (fboundp 'find-image) (display-graphic-p) (let* ((data-directory (nnheader-find-etc-directory "images/gnus")) + (image-load-path (cond (data-directory + (list data-directory)) + ((boundp 'image-load-path) + (symbol-value 'image-load-path)) + (t load-path))) (image (find-image `((:type xpm :file "gnus.xpm" :color-symbols @@ -886,11 +1020,11 @@ be set in `.emacs' instead." ("background" . ,(face-background 'default)))) (:type pbm :file "gnus.pbm" ;; Account for the pbm's blackground. - :background ,(face-foreground 'gnus-splash-face) + :background ,(face-foreground 'gnus-splash) :foreground ,(face-background 'default)) (:type xbm :file "gnus.xbm" ;; Account for the xbm's blackground. - :background ,(face-foreground 'gnus-splash-face) + :background ,(face-foreground 'gnus-splash) :foreground ,(face-background 'default)))))) (when image (let ((size (image-size image))) @@ -934,7 +1068,7 @@ be set in `.emacs' instead." (rest (- wheight pheight))) (insert (make-string (max 0 (* 2 (/ rest 3))) ?\n))) ;; Fontify some. - (put-text-property (point-min) (point-max) 'face 'gnus-splash-face) + (put-text-property (point-min) (point-max) 'face 'gnus-splash) (setq gnus-simple-splash t))) (goto-char (point-min)) (setq mode-line-buffer-identification (concat " " gnus-version)) @@ -970,6 +1104,17 @@ For example: :type '(repeat (cons regexp (repeat sexp)))) = +(defcustom gnus-parameters-case-fold-search 'default + "If it is t, ignore case of group names specified in `gnus-parameters'. +If it is nil, don't ignore case. If it is `default', which is for the +backward compatibility, use the value of `case-fold-search'." + :version "22.1" + :group 'gnus-group-various + :type '(choice :format "%{%t%}:\n %[Value Menu%] %v" + (const :tag "Use `case-fold-search'" default) + (const nil) + (const t))) + (defvar gnus-group-parameters-more nil) = (defmacro gnus-define-group-parameter (param &rest rest) @@ -2214,7 +2359,8 @@ following hook: "Function run when a group level is changed. It is called with three parameters -- GROUP, LEVEL and OLDLEVEL." :group 'gnus-group-levels - :type 'function) + :type '(choice (const nil) + function)) = ;;; Face thingies. = @@ -2343,24 +2489,45 @@ This should be an alist for Emacs, or a = (symbol :tag "Parameter") (sexp :tag "Value"))))) = -(defcustom gnus-user-agent 'emacs-gnus-type +(defcustom gnus-user-agent '(emacs gnus type) "Which information should be exposed in the User-Agent header. = -It can be one of the symbols `gnus' \(show only Gnus version\), `emacs-g= nus' -\(show only Emacs and Gnus versions\), `emacs-gnus-config' \(same as -`emacs-gnus' plus system configuration\), `emacs-gnus-type' \(same as -`emacs-gnus' plus system type\) or a custom string. If you set it to a -string, be sure to use a valid format, see RFC 2616." +Can be a list of symbols or a string. Valid symbols are `gnus' +\(show Gnus version\) and `emacs' \(show Emacs version\). In +addition to the Emacs version, you can add `codename' \(show +\(S\)XEmacs codename\) or either `config' \(show system +configuration\) or `type' \(show system type\). If you set it to +a string, be sure to use a valid format, see RFC 2616." + :version "22.1" :group 'gnus-message - :type '(choice - (item :tag "Show Gnus and Emacs versions and system type" - emacs-gnus-type) - (item :tag "Show Gnus and Emacs versions and system configuration" - emacs-gnus-config) - (item :tag "Show Gnus and Emacs versions" emacs-gnus) - (item :tag "Show only Gnus version" gnus) - (string :tag "Other"))) + :type '(choice (list (set :inline t + (const gnus :tag "Gnus version") + (const emacs :tag "Emacs version") + (choice :tag "system" + (const type :tag "system type") + (const config :tag "system configuration")) + (const codename :tag "Emacs codename"))) + (string))) + +;; Convert old (No Gnus < 2005-01-10, v5-10 < 2005-09-05) symbol type va= lues: +(when (symbolp gnus-user-agent) + (setq gnus-user-agent + (cond ((eq gnus-user-agent 'emacs-gnus-config) + '(emacs gnus config)) + ((eq gnus-user-agent 'emacs-gnus-type) + '(emacs gnus type)) + ((eq gnus-user-agent 'emacs-gnus) + '(emacs gnus)) + ((eq gnus-user-agent 'gnus) + '(gnus)) + (t gnus-user-agent))) + (gnus-message 1 "Converted `gnus-user-agent' to `%s'." gnus-user-agent) + (sit-for 1) + (if (get 'gnus-user-agent 'saved-value) + (customize-save-variable 'gnus-user-agent gnus-user-agent) + (gnus-message 1 "Edit your init file to make this change permanent.") + (sit-for 2))) = =0C ;;; Internal variables @@ -3566,7 +3733,10 @@ You should probably use `gnus-find-metho = (defun gnus-parameters-get-parameter (group) "Return the group parameters for GROUP from `gnus-parameters'." - (let (params-list) + (let ((case-fold-search (if (eq gnus-parameters-case-fold-search 'defa= ult) + case-fold-search + gnus-parameters-case-fold-search)) + params-list) (dolist (elem gnus-parameters) (when (string-match (car elem) group) (setq params-list @@ -3924,6 +4094,9 @@ If NEWSGROUP is nil, return the global k (push (car valids) outs)) (setq valids (cdr valids))) outs)) + +(eval-and-compile + (autoload 'message-y-or-n-p "message" nil nil 'macro)) = (defun gnus-read-group (prompt &optional default) "Prompt the user for a group name. = = = 1.5 +2 -2 XEmacs/packages/xemacs-packages/gnus/lisp/gpg-ring.el = Index: gpg-ring.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gpg-r= ing.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- gpg-ring.el 2004/09/28 02:21:10 1.4 +++ gpg-ring.el 2005/11/15 03:45:51 1.5 @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = = =0C = = = 1.7 +2 -2 XEmacs/packages/xemacs-packages/gnus/lisp/gpg.el = Index: gpg.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/gpg.e= l,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- gpg.el 2005/03/13 00:23:31 1.6 +++ gpg.el 2005/11/15 03:45:51 1.7 @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.5 +19 -8 XEmacs/packages/xemacs-packages/gnus/lisp/hashcash.el = Index: hashcash.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/hashc= ash.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- hashcash.el 2004/09/28 02:21:11 1.4 +++ hashcash.el 2005/11/15 03:45:51 1.5 @@ -1,6 +1,6 @@ ;;; hashcash.el --- Add hashcash payments to email = -;; Copyright (C) 2003 Free Software Foundation +;; Copyright (C) 2002, 2003, 2005 Free Software Foundation ;; Copyright (C) 1997--2002 Paul E. Foley = ;; Maintainer: Paul Foley @@ -24,38 +24,49 @@ (eval-and-compile (autoload 'executable-find "executable")) = +(defgroup hashcash nil + "Hashcash configuration." + :group 'mail) + (defcustom hashcash-default-payment 0 "*The default number of bits to pay to unknown users. If this is zero, no payment header will be generated. See `hashcash-payment-alist'." - :type 'integer) + :type 'integer + :group 'hashcash) = (defcustom hashcash-payment-alist '() "*An association list mapping email addresses to payment amounts. Elements may consist of (ADDR AMOUNT) or (ADDR STRING AMOUNT), where ADDR is the email address of the intended recipient and AMOUNT is the value of hashcash payment to be made to that user. STRING, if -present, is the string to be hashed; if not present ADDR will be used.") +present, is the string to be hashed; if not present ADDR will be used." + :group 'hashcash) = (defcustom hashcash-default-accept-payment 10 "*The default minimum number of bits to accept on incoming payments." - :type 'integer) + :type 'integer + :group 'hashcash) = (defcustom hashcash-accept-resources `((,user-mail-address nil)) "*An association list mapping hashcash resources to payment amounts. Resources named here are to be accepted in incoming payments. If the corresponding AMOUNT is NIL, the value of `hashcash-default-accept-payme= nt' -is used instead.") +is used instead." + :group 'hashcash) = (defcustom hashcash-path (executable-find "hashcash") - "*The path to the hashcash binary.") + "*The path to the hashcash binary." + :group 'hashcash) = (defcustom hashcash-double-spend-database "hashcash.db" - "*The path to the double-spending database.") + "*The path to the double-spending database." + :group 'hashcash) = (defcustom hashcash-in-news nil "*Specifies whether or not hashcash payments should be made to newsgro= ups." - :type 'boolean) + :type 'boolean + :group 'hashcash) = (require 'mail-utils) = = = = 1.5 +6 -4 XEmacs/packages/xemacs-packages/gnus/lisp/html2text.= el = Index: html2text.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/html2= text.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- html2text.el 2005/03/13 00:23:31 1.4 +++ html2text.el 2005/11/15 03:45:51 1.5 @@ -1,6 +1,7 @@ ;;; html2text.el --- a simple html to plain text converter -;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. = +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. + ;; Author: Joakim Hove = ;; This file is part of GNU Emacs. @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -374,7 +375,8 @@ formatting, and then moved afterward.") fashion, quite close to pure guess-work. It does work in some cases thou= gh." (interactive) (goto-char (point-min)) - (replace-regexp "^
    $" "") + (while (re-search-forward "^
    $" nil t) + (delete-region (match-beginning 0) (match-end 0))) ;; Removing lonely
    on a single line, if they are left intact we ;; dont have any paragraphs at all. (goto-char (point-min)) = = = 1.5 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/ietf-drums= .el = Index: ietf-drums.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/ietf-= drums.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- ietf-drums.el 2004/09/28 02:21:11 1.4 +++ ietf-drums.el 2005/11/15 03:45:51 1.5 @@ -1,7 +1,8 @@ ;;; ietf-drums.el --- Functions for parsing RFC822bis headers -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +21 -10 XEmacs/packages/xemacs-packages/gnus/lisp/imap.el = Index: imap.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/imap.= el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- imap.el 2005/03/13 00:23:32 1.5 +++ imap.el 2005/11/15 03:45:52 1.6 @@ -1,7 +1,8 @@ ;;; imap.el --- imap library -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson ;; Keywords: mail = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -181,8 +182,7 @@ the list is tried until a successful con :type '(repeat string)) = (defcustom imap-gssapi-program (list - (concat "gsasl --client --connect %s:%p " - "--imap --application-data " + (concat "gsasl %s %p " "--mechanism GSSAPI " "--authentication-id %l") "imtest -m gssapi -u %l -p %p %s") @@ -599,6 +599,10 @@ sure of changing the value of `foo'." (or (not (looking-at "S: ")) (forward-char 3) t) + ;; GNU SASL may print 'Trying ...' first. + (or (not (looking-at "Trying ")) + (forward-line) + t) (not (and (imap-parse-greeting) ;; success in imtest 1.6: (re-search-forward @@ -640,7 +644,11 @@ sure of changing the value of `foo'." (let* ((port (or port imap-default-ssl-port)) (coding-system-for-read imap-coding-system-for-read) (coding-system-for-write imap-coding-system-for-write) - (process-connection-type nil) + (process-connection-type imap-process-connection-type) + (set-process-query-on-exit-flag + (if (fboundp 'set-process-query-on-exit-flag) + 'set-process-query-on-exit-flag + 'process-kill-without-query)) process) (when (progn (setq process (start-process @@ -650,7 +658,7 @@ sure of changing the value of `foo'." (format-spec-make ?s server ?p (number-to-string port))))) - (process-kill-without-query process) + (funcall set-process-query-on-exit-flag process nil) process) (with-current-buffer buffer (goto-char (point-min)) @@ -1030,8 +1038,11 @@ necessary. If nil, the buffer name is g stream)) ;; We're done, kill the first connection (imap-close buffer) - (kill-buffer buffer) - (rename-buffer buffer) + (let ((name (if (stringp buffer) + buffer + (buffer-name buffer)))) + (kill-buffer buffer) + (rename-buffer name)) (message "imap: Reconnecting with stream `%s'...done" stream) (setq imap-stream stream) = = = 1.2 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/legacy-gnu= s-agent.el = Index: legacy-gnus-agent.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/legac= y-gnus-agent.el,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- legacy-gnus-agent.el 2005/03/13 00:23:32 1.1 +++ legacy-gnus-agent.el 2005/11/15 03:45:52 1.2 @@ -25,7 +25,7 @@ converted to the compressed format." ((file-directory-p member) (push member search-in)) ((equal (file-name-nondirectory member) ".agentview") - (setq converted-something = + (setq converted-something (or (gnus-agent-convert-agentview member) converted-something)))))) = @@ -175,7 +175,7 @@ converted to the compressed format." (t t)))))) (kill-buffer buffer)) - (error "Change gnus-agent-expire-days to an integer for gnus to st= art.")))) + (error "Change gnus-agent-expire-days to an integer for gnus to st= art")))) = ;; The gnus-agent-unlist-expire-days has its own conversion prompt. ;; Therefore, hide the default prompt. @@ -198,8 +198,8 @@ possible that the hook was persistently = = (when (cond ((eq (type-of func) 'compiled-function) ;; Search def. of compiled function for gnus-agen= t-do-once string - (let* (definition = - print-level = + (let* (definition + print-level print-length (standard-output (lambda (char) = = = 1.8 +15 -17 XEmacs/packages/xemacs-packages/gnus/lisp/lpath.el = Index: lpath.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/lpath= .el,v retrieving revision 1.7 retrieving revision 1.8 diff -u -p -r1.7 -r1.8 --- lpath.el 2005/03/13 00:23:32 1.7 +++ lpath.el 2005/11/15 03:45:52 1.8 @@ -10,29 +10,27 @@ (mapcar (lambda (var) (unless (boundp var) (set var nil))) args)) = (maybe-fbind '(Info-directory - Info-menu create-image - display-graphic-p find-coding-system find-image image-size - image-type-available-p insert-image make-mode-line-mouse-map - make-temp-file propertize put-image replace-regexp-in-string - rmail-msg-is-pruned rmail-msg-restore-non-pruned-header - sort-coding-systems string-to-multibyte tool-bar-add-item - tool-bar-add-item-from-menu tool-bar-local-item-from-menu - url-generic-parse-url url-http-file-exists-p - url-insert-file-contents vcard-pretty-print w32-focus-frame - w3m-detect-meta-charset w3m-region x-focus-frame)) + Info-menu create-image display-graphic-p + display-time-event-handler find-coding-system find-image + image-size image-type-available-p insert-image + make-mode-line-mouse-map make-temp-file propertize put-image + replace-regexp-in-string rmail-msg-is-pruned + rmail-msg-restore-non-pruned-header sort-coding-systems + tool-bar-add-item tool-bar-add-item-from-menu + tool-bar-local-item-from-menu url-generic-parse-url + url-http-file-exists-p url-insert-file-contents + vcard-pretty-print w32-focus-frame w3m-detect-meta-charset + w3m-region x-focus-frame)) (maybe-bind '(filladapt-mode - mc-pgp-always-sign rmail-insert-mime-forwarded-message-function - url-current-object url-package-name url-package-version + rmail-insert-mime-forwarded-message-function w3-meta-charset-content-type-regexp - w3-meta-content-type-charset-regexp - w3m-cid-retrieve-function-alist w3m-current-buffer - w3m-display-inline-images w3m-minor-mode-map)) + w3-meta-content-type-charset-regexp)) = (if (featurep 'xemacs) (progn (maybe-fbind '(delete-overlay - event-click-count event-end event-start - find-coding-systems-for-charsets + detect-coding-string event-click-count event-end + event-start find-coding-systems-for-charsets find-coding-systems-region find-coding-systems-string mail-abbrevs-setup mouse-minibuffer-check mouse-movement-p mouse-scroll-subr overlay-lists = = = 1.4 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/mail-parse= .el = Index: mail-parse.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mail-= parse.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- mail-parse.el 2004/09/28 02:21:11 1.3 +++ mail-parse.el 2005/11/15 03:45:52 1.4 @@ -1,7 +1,8 @@ ;;; mail-parse.el --- Interface functions for parsing mail -;; Copyright (C) 1998, 1999, 2000 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +5 -3 XEmacs/packages/xemacs-packages/gnus/lisp/mail-prsvr= .el = Index: mail-prsvr.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mail-= prsvr.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- mail-prsvr.el 2004/09/28 02:21:12 1.3 +++ mail-prsvr.el 2005/11/15 03:45:52 1.4 @@ -1,6 +1,8 @@ ;;; mail-prsvr.el --- Interface variables for parsing mail -;; Copyright (C) 1999, 2000 Free Software Foundation, Inc. = +;; Copyright (C) 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -16,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +7 -4 XEmacs/packages/xemacs-packages/gnus/lisp/mail-sourc= e.el = Index: mail-source.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mail-= source.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- mail-source.el 2005/03/13 00:23:32 1.6 +++ mail-source.el 2005/11/15 03:45:52 1.7 @@ -1,7 +1,8 @@ ;;; mail-source.el --- functions for fetching mail -;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -739,6 +740,7 @@ Pass INFO on to CALLBACK." (funcall function mail-source-crash-box)) ;; The default is to use pop3.el. (t + (require 'pop3) (let ((pop3-password password) (pop3-maildrop user) (pop3-mailhost server) @@ -800,6 +802,7 @@ Pass INFO on to CALLBACK." (function) ;; The default is to use pop3.el. (t + (require 'pop3) (let ((pop3-password password) (pop3-maildrop user) (pop3-mailhost server) = = = 1.6 +5 -4 XEmacs/packages/xemacs-packages/gnus/lisp/mailcap.el = Index: mailcap.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mailc= ap.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mailcap.el 2005/03/13 00:23:33 1.5 +++ mailcap.el 2005/11/15 03:45:52 1.6 @@ -1,7 +1,8 @@ ;;; mailcap.el --- MIME media types configuration -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: William M. Perry ;; Lars Magne Ingebrigtsen ;; Keywords: news, mail, multimedia @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +121 -70 XEmacs/packages/xemacs-packages/gnus/lisp/message.el = Index: message.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/messa= ge.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- message.el 2005/03/13 00:23:33 1.6 +++ message.el 2005/11/15 03:45:53 1.7 @@ -1,7 +1,8 @@ ;;; message.el --- composing mail and news messages -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2= 005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -62,46 +63,46 @@ (put 'user-full-name 'custom-type 'string) = (defgroup message-various nil - "Various Message Variables" + "Various Message Variables." :link '(custom-manual "(message)Various Message Variables") :group 'message) = (defgroup message-buffers nil - "Message Buffers" + "Message Buffers." :link '(custom-manual "(message)Message Buffers") :group 'message) = (defgroup message-sending nil - "Message Sending" + "Message Sending." :link '(custom-manual "(message)Sending Variables") :group 'message) = (defgroup message-interface nil - "Message Interface" + "Message Interface." :link '(custom-manual "(message)Interface") :group 'message) = (defgroup message-forwarding nil - "Message Forwarding" + "Message Forwarding." :link '(custom-manual "(message)Forwarding") :group 'message-interface) = (defgroup message-insertion nil - "Message Insertion" + "Message Insertion." :link '(custom-manual "(message)Insertion") :group 'message) = (defgroup message-headers nil - "Message Headers" + "Message Headers." :link '(custom-manual "(message)Message Headers") :group 'message) = (defgroup message-news nil - "Composing News Messages" + "Composing News Messages." :group 'message) = (defgroup message-mail nil - "Composing Mail Messages" + "Composing Mail Messages." :group 'message) = (defgroup message-faces nil @@ -842,7 +843,8 @@ the signature is inserted." (set-keymap-parent map minibuffer-local-map) map) "Keymap for `message-read-from-minibuffer'." - :version "22.1") + :version "22.1" + :group 'message-various) = ;;;###autoload (defcustom message-citation-line-function 'message-insert-citation-line @@ -1123,7 +1125,7 @@ starting with `not' and followed by rege table) "Syntax table used while in Message mode.") = -(defface message-header-to-face +(defface message-header-to '((((class color) (background dark)) (:foreground "green2" :bold t)) @@ -1134,8 +1136,10 @@ starting with `not' and followed by rege (:bold t :italic t))) "Face used for displaying From headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-to-face 'face-alias 'message-header-to) = -(defface message-header-cc-face +(defface message-header-cc '((((class color) (background dark)) (:foreground "green4" :bold t)) @@ -1146,8 +1150,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying Cc headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-cc-face 'face-alias 'message-header-cc) = -(defface message-header-subject-face +(defface message-header-subject '((((class color) (background dark)) (:foreground "green3")) @@ -1158,8 +1164,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying subject headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-subject-face 'face-alias 'message-header-subject) = -(defface message-header-newsgroups-face +(defface message-header-newsgroups '((((class color) (background dark)) (:foreground "yellow" :bold t :italic t)) @@ -1170,8 +1178,10 @@ starting with `not' and followed by rege (:bold t :italic t))) "Face used for displaying newsgroups headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-newsgroups-face 'face-alias 'message-header-newsgro= ups) = -(defface message-header-other-face +(defface message-header-other '((((class color) (background dark)) (:foreground "#b00000")) @@ -1182,8 +1192,10 @@ starting with `not' and followed by rege (:bold t :italic t))) "Face used for displaying newsgroups headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-other-face 'face-alias 'message-header-other) = -(defface message-header-name-face +(defface message-header-name '((((class color) (background dark)) (:foreground "DarkGreen")) @@ -1194,8 +1206,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying header names." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-name-face 'face-alias 'message-header-name) = -(defface message-header-xheader-face +(defface message-header-xheader '((((class color) (background dark)) (:foreground "blue")) @@ -1206,8 +1220,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying X-Header headers." :group 'message-faces) +;; backward-compatibility alias +(put 'message-header-xheader-face 'face-alias 'message-header-xheader) = -(defface message-separator-face +(defface message-separator '((((class color) (background dark)) (:foreground "blue3")) @@ -1218,8 +1234,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying the separator." :group 'message-faces) +;; backward-compatibility alias +(put 'message-separator-face 'face-alias 'message-separator) = -(defface message-cited-text-face +(defface message-cited-text '((((class color) (background dark)) (:foreground "red")) @@ -1230,8 +1248,10 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying cited text names." :group 'message-faces) +;; backward-compatibility alias +(put 'message-cited-text-face 'face-alias 'message-cited-text) = -(defface message-mml-face +(defface message-mml '((((class color) (background dark)) (:foreground "ForestGreen")) @@ -1242,6 +1262,8 @@ starting with `not' and followed by rege (:bold t))) "Face used for displaying MML." :group 'message-faces) +;; backward-compatibility alias +(put 'message-mml-face 'face-alias 'message-mml) = (defun message-font-lock-make-header-matcher (regexp) (let ((form @@ -1265,41 +1287,41 @@ starting with `not' and followed by rege (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)\n?")) `((,(message-font-lock-make-header-matcher (concat "^\\([Tt]o:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-to-face nil t)) + (1 'message-header-name) + (2 'message-header-to nil t)) (,(message-font-lock-make-header-matcher (concat "^\\(^[GBF]?[Cc][Cc]:\\|^[Rr]eply-[Tt]o:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-cc-face nil t)) + (1 'message-header-name) + (2 'message-header-cc nil t)) (,(message-font-lock-make-header-matcher (concat "^\\([Ss]ubject:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-subject-face nil t)) + (1 'message-header-name) + (2 'message-header-subject nil t)) (,(message-font-lock-make-header-matcher (concat "^\\([Nn]ewsgroups:\\|Followup-[Tt]o:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-newsgroups-face nil t)) + (1 'message-header-name) + (2 'message-header-newsgroups nil t)) (,(message-font-lock-make-header-matcher (concat "^\\([A-Z][^: \n\t]+:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-other-face nil t)) + (1 'message-header-name) + (2 'message-header-other nil t)) (,(message-font-lock-make-header-matcher (concat "^\\(X-[A-Za-z0-9-]+:\\|In-Reply-To:\\)" content)) - (1 'message-header-name-face) - (2 'message-header-name-face)) + (1 'message-header-name) + (2 'message-header-name)) ,@(if (and mail-header-separator (not (equal mail-header-separator ""))) `((,(concat "^\\(" (regexp-quote mail-header-separator) "\\)$") - 1 'message-separator-face)) + 1 'message-separator)) nil) ((lambda (limit) (re-search-forward (concat "^\\(" message-cite-prefix-regexp "\\).*") limit t)) - (0 'message-cited-text-face)) + (0 'message-cited-text)) ("<#/?\\(multipart\\|part\\|external\\|mml\\|secure\\)[^>]*>" - (0 'message-mml-face)))) + (0 'message-mml)))) "Additional expressions to highlight in Message mode.") = = @@ -1421,7 +1443,7 @@ no, only reply back to the author." :type 'boolean) = (defcustom message-user-fqdn nil - "*Domain part of Messsage-Ids." + "*Domain part of Message-Ids." :version "22.1" :group 'message-headers :link '(custom-manual "(message)News Headers") @@ -1432,8 +1454,13 @@ no, only reply back to the author." (file-error)) (mm-coding-system-p 'utf-8) (executable-find idna-program) - 'ask) - "Whether to encode non-ASCII in domain names into ASCII according to I= DNA." + (string=3D (idna-to-ascii "r=C3=A4ksm=C3=B6rg=C3=A5s") + "xn--rksmrgs-5wao1o") + t) + "Whether to encode non-ASCII in domain names into ASCII according to I= DNA. +GNU Libidn, and in particular the elisp package \"idna.el\" and +the external program \"idn\", must be installed for this +functionality to work." :version "22.1" :group 'message-headers :link '(custom-manual "(message)IDNA") @@ -1785,7 +1812,6 @@ Leading \"Re: \" is not stripped by this = ;;; Suggested by Jonas Steverud @ www.dtek.chalmers.se/~d4jonas/ = -;;;###autoload (defun message-change-subject (new-subject) "Ask for NEW-SUBJECT header, append (was: )." ;; @@ -1817,7 +1843,6 @@ Leading \"Re: \" is not stripped by this " (was: " old-subject ")\n"))))))))) = -;;;###autoload (defun message-mark-inserted-region (beg end) "Mark some region in the current article with enclosing tags. See `message-mark-insert-begin' and `message-mark-insert-end'." @@ -1829,7 +1854,6 @@ See `message-mark-insert-begin' and `mes (goto-char beg) (insert message-mark-insert-begin))) = -;;;###autoload (defun message-mark-insert-file (file) "Insert FILE at point, marking it with enclosing tags. See `message-mark-insert-begin' and `message-mark-insert-end'." @@ -1842,7 +1866,6 @@ See `message-mark-insert-begin' and `mes (goto-char p) (insert message-mark-insert-begin))) = -;;;###autoload (defun message-add-archive-header () "Insert \"X-No-Archive: Yes\" in the header and a note in the body. The note can be customized using `message-archive-note'. When called wi= th a @@ -1862,7 +1885,6 @@ body, set `message-archive-note' to nil (message-add-header message-archive-header) (message-sort-headers))) = -;;;###autoload (defun message-cross-post-followup-to-header (target-group) "Mangles FollowUp-To and Newsgroups header to point to TARGET-GROUP. With prefix-argument just set Follow-Up, don't cross-post." @@ -1906,7 +1928,6 @@ With prefix-argument just set Follow-Up, (insert (concat "\nFollowup-To: " target-group))) (setq message-cross-post-old-target target-group)) = -;;;###autoload (defun message-cross-post-insert-note (target-group cross-post in-old old-groups) "Insert a in message body note about a set Followup or Crosspost. @@ -1939,7 +1960,6 @@ been made to before the user asked for a (insert (concat message-followup-to-note target-group "\n")) (insert (concat message-cross-post-note target-group "\n"))))) = -;;;###autoload (defun message-cross-post-followup-to (target-group) "Crossposts message and set Followup-To to TARGET-GROUP. With prefix-argument just set Follow-Up, don't cross-post." @@ -1981,7 +2001,6 @@ With prefix-argument just set Follow-Up, = ;;; Reduce To: to Cc: or Bcc: header = -;;;###autoload (defun message-reduce-to-to-cc () "Replace contents of To: header with contents of Cc: or Bcc: header." (interactive) @@ -3185,7 +3204,9 @@ prefix, and don't delete any headers." (when (and message-reply-buffer message-cite-function) (delete-windows-on message-reply-buffer t) - (insert-buffer message-reply-buffer) + (push-mark (save-excursion + (insert-buffer-substring message-reply-buffer) + (point))) (unless arg (funcall message-cite-function)) (message-exchange-point-and-mark) @@ -3395,8 +3416,15 @@ Instead, just auto-save the buffer and t (file-exists-p auto-save-file-name)) (and file-name (file-exists-p file-name))) - (yes-or-no-p (format "Remove the backup file%s? " - (if modified " too" "")))) + (progn + ;; If the message buffer has lived in a dedicated window, + ;; `kill-buffer' has killed the frame. Thus the + ;; `yes-or-no-p' may show up in a lowered frame. Make sure + ;; that the user can see the question by raising the + ;; current frame: + (raise-frame) + (yes-or-no-p (format "Remove the backup file%s? " + (if modified " too" ""))))) (ignore-errors (delete-file auto-save-file-name)) (let ((message-draft-article draft-article)) @@ -3407,8 +3435,7 @@ Instead, just auto-save the buffer and t "Bury this mail BUFFER." (let ((newbuf (other-buffer buffer))) (bury-buffer buffer) - (if (and (fboundp 'frame-parameters) - (cdr (assq 'dedicated (frame-parameters))) + (if (and (window-dedicated-p (selected-window)) (not (null (delq (selected-frame) (visible-frame-list))))) (delete-frame (selected-frame)) (switch-to-buffer newbuf)))) @@ -4167,7 +4194,7 @@ Otherwise, generate and save a value for (zerop (length (setq to (completing-read - "Followups to (default: no Followup-To header) " + "Followups to (default no Followup-To header): " (mapcar #'list (cons "poster" (message-tokenize-header @@ -4564,9 +4591,11 @@ Otherwise, generate and save a value for (when (re-search-forward ",+$" nil t) (replace-match "" t t)))))) = +(eval-when-compile (require 'parse-time)) (defun message-make-date (&optional now) "Make a valid data header. If NOW, use that time instead." + (require 'parse-time) (let* ((now (or now (current-time))) (zone (nth 8 (decode-time now))) (sign "+")) @@ -4925,13 +4954,17 @@ subscribed address (and not the addition (let ((field (message-fetch-field header)) rhs ace address) (when field - (dolist (address (mail-header-parse-addresses field)) - (setq address (car address) - rhs (downcase (or (cadr (split-string address "@")) "")) - ace (downcase (idna-to-ascii rhs))) + (dolist (rhs + (mm-delete-duplicates + (mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) "")) + (mapcar 'downcase + (mapcar + 'car (mail-header-parse-addresses field)))))) + (setq ace (downcase (idna-to-ascii rhs))) (when (and (not (equal rhs ace)) (or (not (eq message-use-idna 'ask)) - (y-or-n-p (format "Replace %s with %s? " rhs ace)))) + (y-or-n-p (format "Replace %s with %s in %s:? " + rhs ace header)))) (goto-char (point-min)) (while (re-search-forward (concat "^" header ":") nil t) (message-narrow-to-field) @@ -4950,6 +4983,9 @@ See `message-idna-encode'." (message-narrow-to-head) (message-idna-to-ascii-rhs-1 "From") (message-idna-to-ascii-rhs-1 "To") + (message-idna-to-ascii-rhs-1 "Reply-To") + (message-idna-to-ascii-rhs-1 "Mail-Reply-To") + (message-idna-to-ascii-rhs-1 "Mail-Followup-To") (message-idna-to-ascii-rhs-1 "Cc"))))) = (defun message-generate-headers (headers) @@ -5041,7 +5077,8 @@ Headers already prepared in the buffer a ;; The element is a symbol. We insert the value ;; of this symbol, if any. (symbol-value header)) - ((not (message-check-element header)) + ((not (message-check-element + (intern (downcase (symbol-name header))))) ;; We couldn't generate a value for this header, ;; so we just ask the user. (read-from-minibuffer @@ -5909,9 +5946,9 @@ want to get rid of this query permanentl = (defun message-is-yours-p () "Non-nil means current article is yours. -If you have added 'cancel-messages to 'message-shoot-gnksa-feet', all ar= ticles +If you have added 'cancel-messages to `message-shoot-gnksa-feet', all ar= ticles are yours except those that have Cancel-Lock header not belonging to you. -Instead of shooting GNKSA feet, you should modify 'message-alternative-e= mails' +Instead of shooting GNKSA feet, you should modify `message-alternative-e= mails' regexp to match all of yours addresses." ;; Canlock-logic as suggested by Per Abrahamsen ;; @@ -6363,7 +6400,8 @@ Optional DIGEST will use digest to forwa (replace-match "X-From-Line: ")) ;; Send it. (let ((message-inhibit-body-encoding t) - message-required-mail-headers) + message-required-mail-headers + rfc2047-encode-encoded-words) (message-send-mail)) (kill-buffer (current-buffer))) (message "Resending message to %s...done" address))) @@ -6528,9 +6566,8 @@ which specify the range to operate on." = (defun message-tool-bar-local-item-from-menu (command icon in-map &optio= nal from-map &rest props) ;; We need to make tool bar entries in local keymaps with - ;; `tool-bar-local-item-from-menu' in Emacs > 21.3 + ;; `tool-bar-local-item-from-menu' in Emacs >=3D 22 (if (fboundp 'tool-bar-local-item-from-menu) - ;; This is for Emacs 21.3 (tool-bar-local-item-from-menu command icon in-map from-map props) (tool-bar-add-item-from-menu command icon from-map props))) = @@ -6549,7 +6586,7 @@ which specify the range to operate on." write-file dired open-file)) (define-key tool-bar-map (vector key) nil)) (message-tool-bar-local-item-from-menu - 'message-send-and-exit "mail_send" tool-bar-map message-mode-map) + 'message-send-and-exit "mail/send" tool-bar-map message-mode-map) (message-tool-bar-local-item-from-menu 'message-kill-buffer "close" tool-bar-map message-mode-map) (message-tool-bar-local-item-from-menu @@ -6598,7 +6635,8 @@ If nil, the function bound in `text-mode :version "22.1" :group 'message :link '(custom-manual "(message)Various Commands") - :type 'function) + :type '(choice (const nil) + function)) = (defun message-tab () "Complete names according to `message-completion-alist'. @@ -6615,6 +6653,17 @@ those headers." (lookup-key global-map "\t") 'indent-relative)))) = +(eval-and-compile + (condition-case nil + (with-temp-buffer + (let ((standard-output (current-buffer))) + (eval '(display-completion-list nil ""))) + (defalias 'message-display-completion-list 'display-completion-list)) + (error ;; Don't use `wrong-number-of-arguments' here because of XEma= cs. + (defun message-display-completion-list (completions &optional ignor= e) + "Display the list of completions, COMPLETIONS, using `standard-ou= tput'." + (display-completion-list completions))))) + (defun message-expand-group () "Expand the group name under point." (let* ((b (save-excursion @@ -6653,7 +6702,9 @@ those headers." (let ((buffer-read-only nil)) (erase-buffer) (let ((standard-output (current-buffer))) - (display-completion-list (sort completions 'string<))) + (message-display-completion-list (sort completions 'string<) + string)) + (setq buffer-read-only nil) (goto-char (point-min)) (delete-region (point) (progn (forward-line 3) (point)))))))))) = = = = 1.4 +53 -14 XEmacs/packages/xemacs-packages/gnus/lisp/messagexma= s.el = Index: messagexmas.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/messa= gexmas.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- messagexmas.el 2004/09/28 02:21:12 1.3 +++ messagexmas.el 2005/11/15 03:45:53 1.4 @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -38,13 +38,20 @@ If this variable is nil, Message will try to locate the directory automatically.") = -(defvar message-use-toolbar (if (featurep 'toolbar) - 'default-toolbar - nil) - "*If nil, do not use a toolbar. -If it is non-nil, it must be a toolbar. The five valid values are -`default-toolbar', `top-toolbar', `bottom-toolbar', -`right-toolbar', and `left-toolbar'.") +(defvar message-use-toolbar (if (featurep 'toolbar) 'default) + "*Position to display the toolbar. Nil means do not use a toolbar. +If it is non-nil, it should be one of the symbols `default', `top', +`bottom', `right', and `left'. `default' means to use the default +toolbar, the rest mean to display the toolbar on the place which those +names show.") + +(defvar message-toolbar-thickness + (if (featurep 'toolbar) + (cons (specifier-instance default-toolbar-height) + (specifier-instance default-toolbar-width))) + "*Cons of the height and the width specifying the thickness of a toolb= ar. +The height is used for the toolbar displayed on the top or the bottom, +the width is used for the toolbar displayed on the right or the left.") = (defvar message-toolbar '([message-spell ispell-message t "Spell"] @@ -60,7 +67,8 @@ If it is non-nil, it must be a toolbar. = (nnheader-find-etc-directory package)))) = (defun message-xmas-setup-toolbar (bar &optional force package) - (let ((dir (message-xmas-find-glyph-directory package)) + (let ((dir (or (message-xmas-find-glyph-directory package) + (message-xmas-find-glyph-directory "gnus"))) (xpm (if (featurep 'xpm) "xpm" "xbm")) icon up down disabled name) (unless package @@ -84,10 +92,41 @@ If it is non-nil, it must be a toolbar. = dir)) = (defun message-setup-toolbar () - (and message-use-toolbar - (message-xmas-setup-toolbar message-toolbar) - (set-specifier (symbol-value message-use-toolbar) - (cons (current-buffer) message-toolbar)))) + (when (featurep 'toolbar) + (if (and message-use-toolbar + (message-xmas-setup-toolbar message-toolbar)) + (let* ((bar (or (intern-soft (format "%s-toolbar" message-use-toolbar)) + 'default-toolbar)) + (bars (delq bar (list 'top-toolbar 'bottom-toolbar + 'right-toolbar 'left-toolbar))) + hw) + (while bars + (remove-specifier (symbol-value (pop bars)) (current-buffer))) + (unless (eq bar 'default-toolbar) + (set-specifier default-toolbar nil (current-buffer))) + (set-specifier (symbol-value bar) message-toolbar (current-buffer)) + (when (setq hw (cdr (assq message-use-toolbar + '((default . default-toolbar-height) + (top . top-toolbar-height) + (bottom . bottom-toolbar-height))))) + (set-specifier (symbol-value hw) (car message-toolbar-thickness) + (current-buffer))) + (when (setq hw (cdr (assq message-use-toolbar + '((default . default-toolbar-width) + (right . right-toolbar-width) + (left . left-toolbar-width))))) + (set-specifier (symbol-value hw) (cdr message-toolbar-thickness) + (current-buffer)))) + (set-specifier default-toolbar nil (current-buffer)) + (remove-specifier top-toolbar (current-buffer)) + (remove-specifier bottom-toolbar (current-buffer)) + (remove-specifier right-toolbar (current-buffer)) + (remove-specifier left-toolbar (current-buffer))) + (set-specifier default-toolbar-visible-p t (current-buffer)) + (set-specifier top-toolbar-visible-p t (current-buffer)) + (set-specifier bottom-toolbar-visible-p t (current-buffer)) + (set-specifier right-toolbar-visible-p t (current-buffer)) + (set-specifier left-toolbar-visible-p t (current-buffer)))) = (defun message-xmas-exchange-point-and-mark () "Exchange point and mark, but allow for XEmacs' optional argument." = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/messcompat= .el = Index: messcompat.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/messc= ompat.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- messcompat.el 2004/09/28 02:21:12 1.3 +++ messcompat.el 2005/11/15 03:45:53 1.4 @@ -1,7 +1,7 @@ ;;; messcompat.el --- making message mode compatible with mail mode = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: mail, news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +7 -6 XEmacs/packages/xemacs-packages/gnus/lisp/mm-bodies.= el = Index: mm-bodies.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-bo= dies.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- mm-bodies.el 2005/03/13 00:23:33 1.6 +++ mm-bodies.el 2005/11/15 03:45:53 1.7 @@ -1,7 +1,7 @@ ;;; mm-bodies.el --- Functions for decoding MIME things = -;; Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko @@ -19,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -95,7 +95,8 @@ If no encoding was done, nil is returned (save-excursion (if charset (progn - (mm-encode-coding-region (point-min) (point-max) charset) + (mm-encode-coding-region (point-min) (point-max) + (mm-charset-to-coding-system charset)) charset) (goto-char (point-min)) (let ((charsets (mm-find-mime-charset-region (point-min) (point-max) @@ -227,7 +228,7 @@ If TYPE is `text/plain' CRLF->LF transla nil)) (when (and (memq encoding '(base64 x-uuencode x-uue x-binhex x-yenc)) - (equal type "text/plain")) + (string-match "\\`text/" type)) (goto-char (point-min)) (while (search-forward "\r\n" nil t) (replace-match "\n" t t))))) = = = 1.7 +54 -22 XEmacs/packages/xemacs-packages/gnus/lisp/mm-decode.= el = Index: mm-decode.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-de= code.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- mm-decode.el 2005/03/13 00:23:33 1.6 +++ mm-decode.el 2005/11/15 03:45:53 1.7 @@ -1,7 +1,8 @@ ;;; mm-decode.el --- Functions for decoding MIME things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko ;; This file is part of GNU Emacs. @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -37,6 +38,8 @@ (autoload 'mm-inline-external-body "mm-extern") (autoload 'mm-insert-inline "mm-view")) = +(defvar gnus-current-window-configuration) + (add-hook 'gnus-exit-gnus-hook 'mm-destroy-postponed-undisplay-list) = (defgroup mime-display () @@ -219,7 +222,12 @@ before the external MIME handler is invo ("text/richtext" mm-inline-text identity) ("text/x-patch" mm-display-patch-inline (lambda (handle) - (locate-library "diff-mode"))) + ;; If the diff-mode.el package is installed, the function is + ;; autoloaded. Checking (locate-library "diff-mode") would be tr= ying + ;; to cater to broken installations. OTOH checking the function + ;; makes it possible to install another package which provides an + ;; alternative implementation of diff-mode. --Stef + (fboundp 'diff-mode))) ("application/emacs-lisp" mm-display-elisp-inline identity) ("application/x-emacs-lisp" mm-display-elisp-inline identity) ("text/html" @@ -448,21 +456,19 @@ If not set, `default-directory' will be = (defvar mm-viewer-completion-map (let ((map (make-sparse-keymap 'mm-viewer-completion-map))) (set-keymap-parent map minibuffer-local-completion-map) + ;; Should we bind other key to minibuffer-complete-word? + (define-key map " " 'self-insert-command) map) "Keymap for input viewer with completion.") = -;; Should we bind other key to minibuffer-complete-word? -(define-key mm-viewer-completion-map " " 'self-insert-command) - (defvar mm-viewer-completion-map (let ((map (make-sparse-keymap 'mm-viewer-completion-map))) (set-keymap-parent map minibuffer-local-completion-map) + ;; Should we bind other key to minibuffer-complete-word? + (define-key map " " 'self-insert-command) map) "Keymap for input viewer with completion.") = -;; Should we bind other key to minibuffer-complete-word? -(define-key mm-viewer-completion-map " " 'self-insert-command) - ;;; The functions. = (defun mm-alist-to-plist (alist) @@ -561,7 +567,7 @@ Postpone undisplaying of viewers for typ ;; what really needs to be done here is a way to link a ;; MIME handle back to it's parent MIME handle (in a multilevel ;; MIME article). That would probably require changing - ;; the mm-handle API so we simply store the multipart buffert + ;; the mm-handle API so we simply store the multipart buffer ;; name as a text property of the "multipart/whatever" string. (add-text-properties 0 (length (car ctl)) (list 'buffer (mm-copy-to-buffer) @@ -804,8 +810,7 @@ external if displayed external." (mm-mailcap-command method file (mm-handle-type handle))) (if (buffer-live-p buffer) - (save-excursion - (set-buffer buffer) + (with-current-buffer buffer (buffer-string)))) (progn (ignore-errors (delete-file file)) @@ -817,11 +822,32 @@ external if displayed external." (let ((command (mm-mailcap-command method file (mm-handle-type handle)))) (unwind-protect - (start-process "*display*" - (setq buffer - (generate-new-buffer " *mm*")) - shell-file-name - shell-command-switch command) + (progn + (start-process "*display*" + (setq buffer + (generate-new-buffer " *mm*")) + shell-file-name + shell-command-switch command) + (set-process-sentinel + (get-buffer-process buffer) + `(lambda (process state) + (when (eq 'exit (process-status process)) + ;; Don't use `ignore-errors'. + (condition-case nil + (delete-file ,file) + (error)) + (condition-case nil + (delete-directory ,(file-name-directory file)) + (error)) + (condition-case nil + (kill-buffer ,buffer) + (error)) + (condition-case nil + ,(macroexpand (list 'mm-handle-set-undisplayer + (list 'quote handle) + nil)) + (error)) + (message "Displaying %s...done" ,command))))) (mm-handle-set-external-undisplayer handle (cons file buffer))) (message "Displaying %s..." command)) @@ -1034,9 +1060,15 @@ external if displayed external." (defun mm-insert-part (handle) "Insert the contents of HANDLE in the current buffer." (save-excursion - (insert (if (mm-multibyte-p) - (mm-string-as-multibyte (mm-get-part handle)) - (mm-get-part handle))))) + (insert + (cond ((eq (mail-content-type-get (mm-handle-type handle) 'charset) + 'gnus-decoded) + (with-current-buffer (mm-handle-buffer handle) + (buffer-string))) + ((mm-multibyte-p) + (mm-string-as-multibyte (mm-get-part handle))) + (t + (mm-get-part handle)))))) = (defun mm-file-name-delete-whitespace (file-name) "Remove all whitespace characters from FILE-NAME." = = = 1.5 +6 -5 XEmacs/packages/xemacs-packages/gnus/lisp/mm-encode.= el = Index: mm-encode.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-en= code.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- mm-encode.el 2004/09/28 02:21:14 1.4 +++ mm-encode.el 2005/11/15 03:45:53 1.5 @@ -1,7 +1,8 @@ ;;; mm-encode.el --- Functions for encoding MIME things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko ;; This file is part of GNU Emacs. @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -117,7 +118,7 @@ ENCODING can be: nil (do nothing); one o ;; Likewise base64 below. (quoted-printable-encode-region (point-min) (point-max) t)) ((eq encoding 'base64) - (when (equal type "text/plain") + (when (string-match "\\`text/" type) (goto-char (point-min)) (while (search-forward "\n" nil t) (replace-match "\r\n" t t))) = = = 1.4 +9 -5 XEmacs/packages/xemacs-packages/gnus/lisp/mm-extern.= el = Index: mm-extern.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-ex= tern.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- mm-extern.el 2004/09/28 02:21:14 1.3 +++ mm-extern.el 2005/11/15 03:45:54 1.4 @@ -1,6 +1,8 @@ ;;; mm-extern.el --- showing message/external-body -;; Copyright (C) 2000, 2001, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Shenghuo Zhu ;; Keywords: message external-body = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -31,6 +33,8 @@ (require 'mm-decode) (require 'mm-url) = +(defvar gnus-article-mime-handles) + (defvar mm-extern-function-alist '((local-file . mm-extern-local-file) (url . mm-extern-url) @@ -52,7 +56,7 @@ (mm-disable-multibyte) (if (file-exists-p name) (mm-insert-file-contents name nil nil nil nil t) - (error (format "File %s is gone" name))))) + (error "File %s is gone" name)))) = (defun mm-extern-url (handle) (erase-buffer) @@ -124,7 +128,7 @@ If NO-DISPLAY is nil, display it. Otherw handles) (unless (mm-handle-cache handle) (unless func - (error (format "Access type (%s) is not supported" access-type))) + (error "Access type (%s) is not supported" access-type)) (with-temp-buffer (mm-insert-part handle) (goto-char (point-max)) = = = 1.4 +5 -3 XEmacs/packages/xemacs-packages/gnus/lisp/mm-partial= .el = Index: mm-partial.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-pa= rtial.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- mm-partial.el 2004/09/28 02:21:14 1.3 +++ mm-partial.el 2005/11/15 03:45:54 1.4 @@ -1,6 +1,8 @@ ;;; mm-partial.el --- showing message/partial -;; Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. = +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Shenghuo Zhu ;; Keywords: message partial = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.5 +10 -5 XEmacs/packages/xemacs-packages/gnus/lisp/mm-url.el = Index: mm-url.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-ur= l.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- mm-url.el 2005/03/13 00:23:33 1.4 +++ mm-url.el 2005/11/15 03:45:54 1.5 @@ -1,6 +1,7 @@ ;;; mm-url.el --- a wrapper of url functions/commands for Gnus -;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. + ;; Author: Shenghuo Zhu = ;; This file is part of GNU Emacs. @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -42,6 +43,10 @@ (require 'timer-funcs) (require 'timer))) = +(defvar url-current-object) +(defvar url-package-name) +(defvar url-package-version) + (defgroup mm-url nil "A wrapper of url package and external url command for Gnus." :group 'gnus) @@ -59,7 +64,7 @@ '((wget "wget" "--user-agent=3Dmm-url" "-q" "-O" "-") (w3m "w3m" "-dump_source") (lynx "lynx" "-source") - (curl "curl"))) + (curl "curl" "--silent" "--user-agent mm-url" "--location"))) = (defcustom mm-url-program (cond @@ -360,7 +365,7 @@ If FOLLOW-REFRESH is non-nil, redirect r (defun mm-url-decode-entities () "Decode all HTML entities." (goto-char (point-min)) - (while (re-search-forward "&\\(#[0-9]+\\|[a-z]+\\);" nil t) + (while (re-search-forward "&\\(#[0-9]+\\|[a-z]+[0-9]*\\);" nil t) (let ((elem (if (eq (aref (match-string 1) 0) ?\#) (let ((c (string-to-number (substring = = = 1.9 +113 -40 XEmacs/packages/xemacs-packages/gnus/lisp/mm-util.el = Index: mm-util.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-ut= il.el,v retrieving revision 1.8 retrieving revision 1.9 diff -u -p -r1.8 -r1.9 --- mm-util.el 2005/03/20 03:20:18 1.8 +++ mm-util.el 2005/11/15 03:45:54 1.9 @@ -1,7 +1,8 @@ ;;; mm-util.el --- Utility functions for Mule and low level things -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; MORIOKA Tomohiko ;; This file is part of GNU Emacs. @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -57,9 +58,11 @@ mm-mime-mule-charset-alist) nil t)))) (subst-char-in-string - . (lambda (from to string) ;; stolen (and renamed) from nnheader.el - "Replace characters in STRING from FROM to TO." - (let ((string (substring string 0)) ;Copy string. + . (lambda (from to string &optional inplace) + ;; stolen (and renamed) from nnheader.el + "Replace characters in STRING from FROM to TO. + Unless optional argument INPLACE is non-nil, return a new string." + (let ((string (if inplace string (copy-sequence string))) (len (length string)) (idx 0)) ;; Replace all occurrences of FROM with TO. @@ -70,7 +73,31 @@ string))) (string-as-unibyte . identity) (string-make-unibyte . identity) + ;; string-as-multibyte often doesn't really do what you think it do= es. + ;; Example: + ;; (aref (string-as-multibyte "\201") 0) -> 129 (aka ?\201) + ;; (aref (string-as-multibyte "\300") 0) -> 192 (aka ?\300) + ;; (aref (string-as-multibyte "\300\201") 0) -> 192 (aka ?\300) + ;; (aref (string-as-multibyte "\300\201") 1) -> 129 (aka ?\201) + ;; but + ;; (aref (string-as-multibyte "\201\300") 0) -> 2240 + ;; (aref (string-as-multibyte "\201\300") 1) -> + ;; Better use string-to-multibyte or encode-coding-string. + ;; If you really need string-as-multibyte somewhere it's usually + ;; because you're using the internal emacs-mule representation (may= be + ;; because you're using string-as-unibyte somewhere), which is + ;; generally a problem in itself. + ;; Here is an approximate equivalence table to help think about it: + ;; (string-as-multibyte s) ~=3D (decode-coding-string s 'emacs-mu= le) + ;; (string-to-multibyte s) ~=3D (decode-coding-string s 'binary) + ;; (string-make-multibyte s) ~=3D (decode-coding-string s locale-co= ding-system) (string-as-multibyte . identity) + (string-to-multibyte + . (lambda (string) + "Return a multibyte string with the same individual chars as string." + (mapconcat + (lambda (ch) (mm-string-as-multibyte (char-to-string ch))) + string ""))) (multibyte-string-p . ignore) ;; It is not a MIME function, but some MIME functions use it. (make-temp-file . (lambda (prefix &optional dir-flag) @@ -86,6 +113,32 @@ (multibyte-char-to-unibyte . identity)))) = (eval-and-compile + (cond + ((fboundp 'replace-in-string) + (defalias 'mm-replace-in-string 'replace-in-string)) + ((fboundp 'replace-regexp-in-string) + (defun mm-replace-in-string (string regexp newtext &optional literal) + "Replace all matches for REGEXP with NEWTEXT in STRING. +If LITERAL is non-nil, insert NEWTEXT literally. Return a new +string containing the replacements. + +This is a compatibility function for different Emacsen." + (replace-regexp-in-string regexp newtext string nil literal))) + (t + (defun mm-replace-in-string (string regexp newtext &optional literal) + "Replace all matches for REGEXP with NEWTEXT in STRING. +If LITERAL is non-nil, insert NEWTEXT literally. Return a new +string containing the replacements. + +This is a compatibility function for different Emacsen." + (let ((start 0) tail) + (while (string-match regexp string start) + (setq tail (- (length string) (match-end 0))) + (setq string (replace-match newtext nil literal string)) + (setq start (- (length string) tail)))) + string)))) + +(eval-and-compile (defalias 'mm-char-or-char-int-p (cond ((fboundp 'char-or-char-int-p) 'char-or-char-int-p) @@ -127,7 +180,7 @@ In XEmacs, also return non-nil if CS is = If CS is available, return CS itself in Emacs, and return a coding system object in XEmacs." (if (fboundp 'find-coding-system) - (find-coding-system cs) + (and cs (find-coding-system cs)) (if (fboundp 'coding-system-p) (when (coding-system-p cs) cs) @@ -334,11 +387,7 @@ Valid elements include: ;; Japanese users prefer iso-2022-jp to euc-japan or ;; shift_jis, however iso-8859-1 should be used when ;; there are only ASCII text and Latin-1 characters. - '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8)) - ((find-coding-system 'utf-8) = - '(iso-8859-1 iso-8859-2 iso-8859-15 utf-8)) = - (t = - '(iso-8859-1 iso-8859-2 iso-8859-15 iso-2022-jp))))) + '(iso-8859-1 iso-2022-jp iso-2022-jp-2 shift_jis utf-8))))) "Preferred coding systems for encoding outgoing messages. = More than one suitable coding system may be found for some text. @@ -519,14 +568,21 @@ If the charset is `composition', return = ;; This is for XEmacs. (mm-mule-charset-to-mime-charset charset))) = -(defun mm-delete-duplicates (list) - "Simple substitute for CL `delete-duplicates', testing with `equal'." - (let (result head) - (while list - (setq head (car list)) - (setq list (delete head list)) - (setq result (cons head result))) - (nreverse result))) +(if (fboundp 'delete-dups) + (defalias 'mm-delete-duplicates 'delete-dups) + (defun mm-delete-duplicates (list) + "Destructively remove `equal' duplicates from LIST. +Store the result in LIST and return it. LIST must be a proper list. +Of several `equal' occurrences of an element in LIST, the first +one is kept. + +This is a compatibility function for Emacsen without `delete-dups'." + ;; Code from `subr.el' in Emacs 22: + (let ((tail list)) + (while tail + (setcdr tail (delete (car tail) (cdr tail))) + (setq tail (cdr tail)))) + list)) = ;; Fixme: This is used in places when it should be testing the ;; default multibyteness. See mm-default-multibyte-p. @@ -610,7 +666,7 @@ But this is very much a corner case, so = = ;; Load the Latin Unity library, if available. (when (and (not (featurep 'latin-unity)) (locate-library "latin-unit= y")) - (require 'latin-unity)) + (ignore-errors (require 'latin-unity))) = ;; Now, can we use it? (if (featurep 'latin-unity) @@ -718,6 +774,17 @@ charset, and a longer list means no appr (if (and (memq 'iso-2022-jp-2 charsets) (memq 'iso-2022-jp-2 hack-charsets)) (setq charsets (delq 'iso-2022-jp charsets))) + ;; Attempt to reduce the number of charsets if utf-8 is available. + (if (and (featurep 'xemacs) + (> (length charsets) 1) + (mm-coding-system-p 'utf-8)) + (let ((mm-coding-system-priorities + (cons 'utf-8 mm-coding-system-priorities))) + (setq charsets + (mm-delete-duplicates + (mapcar 'mm-mime-charset + (delq 'ascii + (mm-find-charset-region b e))))))) charsets)) = (defmacro mm-with-unibyte-buffer (&rest forms) @@ -841,22 +908,28 @@ to advanced Emacs features, such as file `find-file-hooks', etc. If INHIBIT is non-nil, inhibit `mm-inhibit-file-name-handlers'. This function ensures that none of these modifications will take place= ." - (let ((format-alist nil) - (auto-mode-alist (if inhibit nil (mm-auto-mode-alist))) - (default-major-mode 'fundamental-mode) - (enable-local-variables nil) - (after-insert-file-functions nil) - (enable-local-eval nil) - (find-file-hooks nil) - (inhibit-file-name-operation (if inhibit - 'insert-file-contents - inhibit-file-name-operation)) - (inhibit-file-name-handlers - (if inhibit - (append mm-inhibit-file-name-handlers - inhibit-file-name-handlers) - inhibit-file-name-handlers))) - (insert-file-contents filename visit beg end replace))) + (let* ((format-alist nil) + (auto-mode-alist (if inhibit nil (mm-auto-mode-alist))) + (default-major-mode 'fundamental-mode) + (enable-local-variables nil) + (after-insert-file-functions nil) + (enable-local-eval nil) + (inhibit-file-name-operation (if inhibit + 'insert-file-contents + inhibit-file-name-operation)) + (inhibit-file-name-handlers + (if inhibit + (append mm-inhibit-file-name-handlers + inhibit-file-name-handlers) + inhibit-file-name-handlers)) + (ffh (if (boundp 'find-file-hook) + 'find-file-hook + 'find-file-hooks)) + (val (symbol-value ffh))) + (set ffh nil) + (unwind-protect + (insert-file-contents filename visit beg end replace) + (set ffh val)))) = (defun mm-append-to-file (start end filename &optional codesys inhibit) "Append the contents of the region to the end of file FILENAME. @@ -914,7 +987,7 @@ If INHIBIT is non-nil, inhibit `mm-inhib (defun mm-detect-coding-region (start end) "Like `detect-coding-region' except returning the best one." (let ((coding-systems - (detect-coding-region (point) (point-max)))) + (detect-coding-region start end))) (or (car-safe coding-systems) coding-systems))) (defun mm-detect-coding-region (start end) @@ -938,5 +1011,5 @@ If INHIBIT is non-nil, inhibit `mm-inhib = (provide 'mm-util) = -;;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238 +;; arch-tag: 94dc5388-825d-4fd1-bfa5-2100aa351238 ;;; mm-util.el ends here = = = 1.6 +30 -18 XEmacs/packages/xemacs-packages/gnus/lisp/mm-uu.el = Index: mm-uu.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-uu= .el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mm-uu.el 2005/03/13 00:23:34 1.5 +++ mm-uu.el 2005/11/15 03:45:54 1.6 @@ -1,6 +1,8 @@ ;;; mm-uu.el --- Return uu stuff as mm handles -;; Copyright (c) 1998, 1999, 2000, 2001, 2002, 2003 Free Software Founda= tion, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Shenghuo Zhu ;; Keywords: postscript uudecode binhex shar forward gnatsweb pgp = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -75,11 +77,15 @@ decoder, such as hexbin." "The default disposition of uu parts. This can be either \"inline\" or \"attachment\".") = -(defvar mm-uu-emacs-sources-regexp "gnu\\.emacs\\.sources" - "The regexp of Emacs sources groups.") +(defcustom mm-uu-emacs-sources-regexp "\\.emacs\\.sources" + "The regexp of Emacs sources groups." + :version "22.1" + :type 'regexp + :group 'gnus-article-mime) = -(defcustom mm-uu-diff-groups-regexp "gnus\\.commits" - "*Regexp matching diff groups." +(defcustom mm-uu-diff-groups-regexp + "\\(gmane\\|gnu\\)\\..*\\(diff\\|commit\\|cvs\\|bug\\|devel\\)" + "Regexp matching diff groups." :version "22.1" :type 'regexp :group 'gnus-article-mime) @@ -111,8 +117,8 @@ This can be either \"inline\" or \"attac "^exit 0$" mm-uu-shar-extract) (forward -;;; Thanks to Edward J. Sabol and -;;; Peter von der Ah\'e + ;; Thanks to Edward J. Sabol and + ;; Peter von der Ah\'e "^-+ \\(Start of \\)?Forwarded message" "^-+ End \\(of \\)?forwarded message" mm-uu-forward-extract @@ -151,7 +157,12 @@ This can be either \"inline\" or \"attac nil mm-uu-diff-extract nil - mm-uu-diff-test))) + mm-uu-diff-test)) + "A list of specifications for non-MIME attachments. +Each element consist of the following entries: label, +start-regexp, end-regexp, extract-function, test-function. + +After modifying this list you must run \\[mm-uu-configure].") = (defcustom mm-uu-configure-list '((shar . disabled)) "A list of mm-uu configuration. @@ -186,13 +197,12 @@ To disable dissecting shar codes, for in (defun mm-uu-copy-to-buffer (&optional from to) "Copy the contents of the current buffer to a fresh buffer. Return that buffer." - (save-excursion - (let ((obuf (current-buffer)) - (coding-system - ;; Might not exist in non-MULE XEmacs - (when (boundp 'buffer-file-coding-system) - buffer-file-coding-system))) - (set-buffer (generate-new-buffer " *mm-uu*")) + (let ((obuf (current-buffer)) + (coding-system + ;; Might not exist in non-MULE XEmacs + (when (boundp 'buffer-file-coding-system) + buffer-file-coding-system))) + (with-current-buffer (generate-new-buffer " *mm-uu*") (setq buffer-file-coding-system coding-system) (insert-buffer-substring obuf from to) (current-buffer)))) @@ -201,6 +211,8 @@ Return that buffer." (member (cons key val) mm-uu-configure-list)) = (defun mm-uu-configure (&optional symbol value) + "Configure detection of non-MIME attachments." + (interactive) (if symbol (set-default symbol value)) (setq mm-uu-beginning-regexp nil) (mapcar (lambda (entry) @@ -496,5 +508,5 @@ Return that buffer." = (provide 'mm-uu) = -;;; arch-tag: 7db076bf-53db-4320-aa19-ca76a1d2ab2c +;; arch-tag: 7db076bf-53db-4320-aa19-ca76a1d2ab2c ;;; mm-uu.el ends here = = = 1.6 +28 -16 XEmacs/packages/xemacs-packages/gnus/lisp/mm-view.el = Index: mm-view.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mm-vi= ew.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mm-view.el 2005/03/13 00:23:34 1.5 +++ mm-view.el 2005/11/15 03:45:54 1.6 @@ -1,7 +1,8 @@ ;;; mm-view.el --- functions for viewing MIME objects -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -39,6 +40,14 @@ (unless (fboundp 'diff-mode) (autoload 'diff-mode "diff-mode" "" t nil))) = +(defvar gnus-article-mime-handles) +(defvar gnus-newsgroup-charset) +(defvar smime-keys) +(defvar w3m-cid-retrieve-function-alist) +(defvar w3m-current-buffer) +(defvar w3m-display-inline-images) +(defvar w3m-minor-mode-map) + (defvar mm-text-html-renderer-alist '((w3 . mm-inline-text-html-render-with-w3) (w3m . mm-inline-text-html-render-with-w3m) @@ -358,9 +367,9 @@ (goto-char (point-max)))) (save-restriction (narrow-to-region b (point)) - (set-text-properties (point-min) (point-max) nil) (when (or (equal type "enriched") (equal type "richtext")) + (set-text-properties (point-min) (point-max) nil) (ignore-errors (enriched-decode (point-min) (point-max)))) (mm-handle-set-undisplayer @@ -467,14 +476,16 @@ (buffer-disable-undo) (mm-insert-part handle) (require 'font-lock) - ;; Inhibit font-lock this time (*-mode-hook might run - ;; `turn-on-font-lock') so that jit-lock may not turn off - ;; font-lock immediately after this. - (let ((font-lock-mode t)) - (funcall mode)) - (let ((font-lock-verbose nil)) - ;; I find font-lock a bit too verbose. - (font-lock-fontify-buffer)) + (let ((font-lock-maximum-size nil) + ;; Disable support modes, e.g., jit-lock, lazy-lock, etc. + (font-lock-mode-hook nil) + (font-lock-support-mode nil) + ;; I find font-lock a bit too verbose. + (font-lock-verbose nil)) + (funcall mode) + ;; The mode function might have already turned on font-lock. + (unless (symbol-value 'font-lock-mode) + (font-lock-fontify-buffer))) ;; By default, XEmacs font-lock uses non-duplicable text ;; properties. This code forces all the text properties ;; to be copied along with the text. @@ -565,9 +576,10 @@ (cadar smime-keys) (smime-get-key-by-email (gnus-completing-read-maybe-default - (concat "Decipher using which key? " - (if smime-keys (concat "(default " (caar smime-keys) ") ") - "")) + (concat "Decipher using key" + (if smime-keys + (concat " (default " (caar smime-keys) "): ") + ": ")) smime-keys nil nil nil nil (car-safe (car-safe smime-keys)))))) (goto-char (point-min)) (while (search-forward "\r\n" nil t) = = = 1.5 +5 -3 XEmacs/packages/xemacs-packages/gnus/lisp/mml-sec.el = Index: mml-sec.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mml-s= ec.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- mml-sec.el 2005/03/13 00:23:34 1.4 +++ mml-sec.el 2005/11/15 03:45:54 1.5 @@ -1,6 +1,8 @@ ;;; mml-sec.el --- A package with security functions for MML documents -;; Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, = Inc. = +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson = ;; This file is part of GNU Emacs. @@ -17,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +14 -6 XEmacs/packages/xemacs-packages/gnus/lisp/mml-smime.= el = Index: mml-smime.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mml-s= mime.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- mml-smime.el 2005/03/13 00:23:34 1.6 +++ mml-smime.el 2005/11/15 03:45:54 1.7 @@ -1,6 +1,8 @@ ;;; mml-smime.el --- S/MIME support for MML -;; Copyright (c) 2000, 2001, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson ;; Keywords: Gnus, MIME, S/MIME, MML = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -52,7 +54,7 @@ (if (not (and (not (file-exists-p tmp)) (get-buffer tmp))) (push tmp certfiles) - (setq file (mm-make-temp-file (expand-file-name "mml." = + (setq file (mm-make-temp-file (expand-file-name "mml." mm-tmp-directory))) (with-current-buffer tmp (write-region (point-min) (point-max) file)) @@ -77,7 +79,10 @@ (list 'keyfile (if (=3D (length smime-keys) 1) (cadar smime-keys) - (or (let ((from (cadr (funcall gnus-extract-address-components + (or (let ((from (cadr (funcall (if (boundp + 'gnus-extract-address-components) + gnus-extract-address-components + 'mail-extract-address-components) (or (save-excursion (save-restriction (message-narrow-to-headers) @@ -103,7 +108,10 @@ (while (not result) (setq who (read-from-minibuffer (format "%sLookup certificate for: " (or bad "")) - (cadr (funcall gnus-extract-address-components + (cadr (funcall (if (boundp + 'gnus-extract-address-components) + gnus-extract-address-components + 'mail-extract-address-components) (or (save-excursion (save-restriction (message-narrow-to-headers) = = = 1.6 +63 -28 XEmacs/packages/xemacs-packages/gnus/lisp/mml.el = Index: mml.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mml.e= l,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mml.el 2005/03/13 00:23:34 1.5 +++ mml.el 2005/11/15 03:45:54 1.6 @@ -1,7 +1,8 @@ ;;; mml.el --- A package for parsing and validating MML documents -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; This file is part of GNU Emacs. = @@ -17,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -40,6 +41,16 @@ (autoload 'fill-flowed-encode "flow-fill") (autoload 'message-posting-charset "message")) = +(defvar gnus-article-mime-handles) +(defvar gnus-mouse-2) +(defvar gnus-newsrc-hashtb) +(defvar message-default-charset) +(defvar message-deletable-headers) +(defvar message-options) +(defvar message-posting-charset) +(defvar message-required-mail-headers) +(defvar message-required-news-headers) + (defcustom mml-content-type-parameters '(name access-type expiration size permission format) "*A list of acceptable parameters in MML tag. @@ -123,7 +134,13 @@ unknown encoding; `use-ascii': always us with unknown encoding; `multipart': always send messages with more than one charsets.") = -(defvar mml-generate-default-type "text/plain") +(defvar mml-generate-default-type "text/plain" + "Content type by which the Content-Type header can be omitted. +The Content-Type header will not be put in the MIME part if the type +equals the value and there's no parameter (e.g. charset, format, etc.) +and `mml-insert-mime-headers-always' is nil. The value will be bound +to \"message/rfc822\" when encoding an article to be forwarded as a MIME +part. This is for the internal use, you should never modify the value.") = (defvar mml-buffer-list nil) = @@ -400,9 +417,14 @@ If MML is non-nil, return the buffer up = (mml-tweak-part cont) (cond ((or (eq (car cont) 'part) (eq (car cont) 'mml)) - (let ((raw (cdr (assq 'raw cont))) - coded encoding charset filename type flowed) - (setq type (or (cdr (assq 'type cont)) "text/plain")) + (let* ((raw (cdr (assq 'raw cont))) + (filename (cdr (assq 'filename cont))) + (type (or (cdr (assq 'type cont)) + (if filename + (or (mm-default-file-encoding filename) + "application/octet-stream") + "text/plain"))) + coded encoding charset flowed) (if (and (not raw) (member (car (split-string type "/")) '("text" "message"))) (progn @@ -414,7 +436,7 @@ If MML is non-nil, return the buffer up = (cond ((cdr (assq 'buffer cont)) (insert-buffer-substring (cdr (assq 'buffer cont)))) - ((and (setq filename (cdr (assq 'filename cont))) + ((and filename (not (equal (cdr (assq 'nofile cont)) "yes"))) (let ((coding-system-for-read charset)) (mm-insert-file-contents filename))) @@ -434,6 +456,10 @@ If MML is non-nil, return the buffer up = (cond ((eq (car cont) 'mml) (let ((mml-boundary (mml-compute-boundary cont)) + ;; It is necessary for the case where this + ;; function is called recursively since + ;; `m-g-d-t' will be bound to "message/rfc822" + ;; when encoding an article to be forwarded. (mml-generate-default-type "text/plain")) (mml-to-mime)) (let ((mm-7bit-chars (concat mm-7bit-chars "\x1b"))) @@ -475,7 +501,7 @@ If MML is non-nil, return the buffer up = (insert (with-current-buffer (cdr (assq 'buffer cont)) (mm-with-unibyte-current-buffer (buffer-string))))) - ((and (setq filename (cdr (assq 'filename cont))) + ((and filename (not (equal (cdr (assq 'nofile cont)) "yes"))) (let ((coding-system-for-read mm-binary-coding-system)) (mm-insert-file-contents filename nil nil nil nil t))) @@ -516,15 +542,21 @@ If MML is non-nil, return the buffer up = "access-type=3Durl")) (when parameters (mml-insert-parameter-string - cont '(expiration size permission)))) - (insert "\n\n") - (insert "Content-Type: " (cdr (assq 'type cont)) "\n") - (insert "Content-ID: " (message-make-message-id) "\n") - (insert "Content-Transfer-Encoding: " - (or (cdr (assq 'encoding cont)) "binary")) - (insert "\n\n") - (insert (or (cdr (assq 'contents cont)))) - (insert "\n")) + cont '(expiration size permission))) + (insert "\n\n") + (insert "Content-Type: " + (or (cdr (assq 'type cont)) + (if name + (or (mm-default-file-encoding name) + "application/octet-stream") + "text/plain")) + "\n") + (insert "Content-ID: " (message-make-message-id) "\n") + (insert "Content-Transfer-Encoding: " + (or (cdr (assq 'encoding cont)) "binary")) + (insert "\n\n") + (insert (or (cdr (assq 'contents cont)))) + (insert "\n"))) ((eq (car cont) 'multipart) (let* ((type (or (cdr (assq 'type cont)) "mixed")) (mml-generate-default-type (if (equal type "digest") @@ -560,7 +592,8 @@ If MML is non-nil, return the buffer up = (message-options-set 'message-sender sender)) (if (setq recipients (cdr (assq 'recipients cont))) (message-options-set 'message-recipients recipients)) - (let ((style (mml-signencrypt-style (first (or sign-item encrypt-item= ))))) + (let ((style (mml-signencrypt-style + (first (or sign-item encrypt-item))))) ;; check if: we're both signing & encrypting, both methods ;; are the same (why would they be different?!), and that ;; the signencrypt style allows for combined operation. @@ -943,13 +976,15 @@ See Info node `(emacs-mime)Composing'. description)) = (defun mml-minibuffer-read-disposition (type &optional default) - (let* ((default (or default - (if (string-match "^text/.*" type) - "inline" - "attachment"))) - (disposition (completing-read "Disposition: " - '(("attachment") ("inline") ("")) - nil t))) + (unless default (setq default + (if (and (string-match "\\`text/" type) + (not (string-match "\\`text/rtf\\'" typ= e))) + "inline" + "attachment"))) + (let ((disposition (completing-read + (format "Disposition (default %s): " default) + '(("attachment") ("inline") ("")) + nil t nil nil default))) (if (not (equal disposition "")) disposition default))) @@ -1067,7 +1102,7 @@ Should be adopted if code in `message-se = (defun mml-preview (&optional raw) "Display current buffer with Gnus, in a new buffer. -If RAW, don't highlight the article." +If RAW, display a raw encoded MIME message." (interactive "P") (save-excursion (let* ((buf (current-buffer)) = = = 1.5 +13 -7 XEmacs/packages/xemacs-packages/gnus/lisp/mml1991.el = Index: mml1991.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mml19= 91.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- mml1991.el 2004/09/28 02:21:15 1.4 +++ mml1991.el 2005/11/15 03:45:55 1.5 @@ -1,6 +1,8 @@ ;;; mml1991.el --- Old PGP message format (RFC 1991) support for MML -;; Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, = Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Sascha L=C3=BCdecke , ;; Simon Josefsson (Mailcrypt interface, Gnus gl= ue) ;; Keywords PGP @@ -19,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -30,6 +32,8 @@ (require 'cl) (require 'mm-util)) = +(defvar mc-pgp-always-sign) + (autoload 'quoted-printable-decode-region "qp") (autoload 'quoted-printable-encode-region "qp") = @@ -180,7 +184,7 @@ (delete-region (point-min) (point))) (mm-with-unibyte-current-buffer (with-temp-buffer - (flet ((gpg-encrypt-func = + (flet ((gpg-encrypt-func (sign plaintext ciphertext result recipients &optional passphrase sign-with-key armor textmode) (if sign @@ -219,8 +223,10 @@ = ;; pgg wrapper = -(defvar pgg-output-buffer) -(defvar pgg-errors-buffer) +(eval-when-compile + (defvar pgg-default-user-id) + (defvar pgg-errors-buffer) + (defvar pgg-output-buffer)) = (defun mml1991-pgg-sign (cont) (let (headers cte) @@ -266,7 +272,7 @@ (delete-region (point-min) (point))) (mm-decode-content-transfer-encoding cte) (unless (pgg-encrypt-region - (point-min) (point-max) = + (point-min) (point-max) (split-string (or (message-options-get 'message-recipients) = = = 1.6 +21 -7 XEmacs/packages/xemacs-packages/gnus/lisp/mml2015.el = Index: mml2015.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/mml20= 15.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- mml2015.el 2005/03/13 00:23:35 1.5 +++ mml2015.el 2005/11/15 03:45:55 1.6 @@ -1,6 +1,8 @@ ;;; mml2015.el --- MIME Security with Pretty Good Privacy (PGP) -;; Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Shenghuo Zhu ;; Keywords: PGP MIME MML = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -33,6 +35,8 @@ (require 'mm-util) (require 'mml) = +(defvar mc-pgp-always-sign) + (defvar mml2015-use (or (progn (ignore-errors @@ -632,6 +636,7 @@ ;;; pgg wrapper = (eval-when-compile + (defvar pgg-default-user-id) (defvar pgg-errors-buffer) (defvar pgg-output-buffer)) = @@ -639,7 +644,8 @@ (autoload 'pgg-decrypt-region "pgg") (autoload 'pgg-verify-region "pgg") (autoload 'pgg-sign-region "pgg") - (autoload 'pgg-encrypt-region "pgg")) + (autoload 'pgg-encrypt-region "pgg") + (autoload 'pgg-parse-armor "pgg-parse")) = (defun mml2015-pgg-decrypt (handle ctl) (catch 'error @@ -807,15 +813,23 @@ (let ((pgg-errors-buffer mml2015-result-buffer) (boundary (mml-compute-boundary cont)) (pgg-default-user-id (or (message-options-get 'mml-sender) - pgg-default-user-id))) + pgg-default-user-id)) + entry) (unless (pgg-sign-region (point-min) (point-max)) (pop-to-buffer mml2015-result-buffer) (error "Sign error")) (goto-char (point-min)) (insert (format "Content-Type: multipart/signed; boundary=3D\"%s\";\= n" boundary)) - ;;; FIXME: what is the micalg? - (insert "\tmicalg=3Dpgp-sha1; protocol=3D\"application/pgp-signature= \"\n") + (if (setq entry (assq 2 (pgg-parse-armor + (with-current-buffer pgg-output-buffer + (buffer-string))))) + (setq entry (assq 'hash-algorithm (cdr entry)))) + (insert (format "\tmicalg=3D%s; " + (if (cdr entry) + (downcase (format "pgp-%s" (cdr entry))) + "pgp-sha1"))) + (insert "protocol=3D\"application/pgp-signature\"\n") (insert (format "\n--%s\n" boundary)) (goto-char (point-max)) (insert (format "\n--%s\n" boundary)) = = = 1.5 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/nnagent.el = Index: nnagent.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnage= nt.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nnagent.el 2005/03/13 00:23:35 1.4 +++ nnagent.el 2005/11/15 03:45:55 1.5 @@ -1,7 +1,7 @@ ;;; nnagent.el --- offline backend for Gnus = -;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002 -;; Free Software Foundation, Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.5 +5 -5 XEmacs/packages/xemacs-packages/gnus/lisp/nnbabyl.el = Index: nnbabyl.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnbab= yl.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nnbabyl.el 2004/09/28 02:21:15 1.4 +++ nnbabyl.el 2005/11/15 03:45:55 1.5 @@ -1,7 +1,7 @@ ;;; nnbabyl.el --- rmail mbox access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1099, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1099, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -493,7 +493,7 @@ (when (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\= \) " nil t) (cons (buffer-substring (match-beginning 1) (match-end 1)) - (string-to-int + (string-to-number (buffer-substring (match-beginning 2) (match-end 2))))))) = (defun nnbabyl-insert-lines () = = = 1.4 +8 -13 XEmacs/packages/xemacs-packages/gnus/lisp/nndb.el = Index: nndb.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nndb.= el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nndb.el 2004/09/28 02:21:15 1.3 +++ nndb.el 2005/11/15 03:45:55 1.4 @@ -1,6 +1,7 @@ ;;; nndb.el --- nndb access for Gnus = -;; Copyright (C) 1997, 1998, 2000, 2003, 2004 Free Software Foundation, = Inc. +;; Copyright (C) 1997, 1998, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Masanobu UMEDA ;; Kai Grossjohann @@ -22,8 +23,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -50,7 +51,9 @@ ;;- ;; Register nndb with known select methods. = -(gnus-declare-backend "nndb" 'mail 'respool 'address 'prompt-address) +(require 'gnus-start) +(unless (assoc "nndb" gnus-valid-select-methods) + (gnus-declare-backend "nndb" 'mail 'respool 'address 'prompt-address)) = ;;; Code: = @@ -59,14 +62,6 @@ (require 'nntp) (eval-when-compile (require 'cl)) = -(eval-and-compile - (autoload 'news-setup "rnewspost") - (autoload 'news-reply-mode "rnewspost") - (autoload 'cancel-timer "timer") - (autoload 'telnet "telnet" nil t) - (autoload 'telnet-send-input "telnet" nil t) - (autoload 'gnus-declare-backend "gnus-start")) - ;; Declare nndb as derived from nntp = (nnoo-declare nndb nntp) @@ -201,7 +196,7 @@ article was posted to nndb") ;; otherwise, pull all of the following numbers into the list (re-search-forward "follows\r?\n?" nil t) (while (re-search-forward "^[0-9]+$" nil t) - (push (string-to-int (match-string 0)) list))) + (push (string-to-number (match-string 0)) list))) list)) = (defun nndb-request-expire-articles-remote = = = 1.5 +12 -11 XEmacs/packages/xemacs-packages/gnus/lisp/nndiary.el = Index: nndiary.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nndia= ry.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nndiary.el 2005/03/13 00:23:35 1.4 +++ nndiary.el 2005/11/15 03:45:55 1.5 @@ -1,7 +1,7 @@ ;;; nndiary.el --- A diary backend for Gnus = -;; Copyright (C) 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Didier Verna ;; Maintainer: Didier Verna @@ -22,7 +22,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with this program; if not, write to the Free Software -;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, +;; MA 02110-1301, USA. = = ;;; Commentary: @@ -601,7 +602,7 @@ all. This may very well take some time. (nnheader-report 'nndiary "Article %s retrieved" id) ;; We return the article number. (cons (if group-num (car group-num) group) - (string-to-int (file-name-nondirectory path))))))) + (string-to-number (file-name-nondirectory path))))))) = (deffoo nndiary-request-group (group &optional server dont-check) (let ((file-name-coding-system nnmail-pathname-coding-system)) @@ -820,7 +821,7 @@ all. This may very well take some time. ;; we should insert it. (This situation should never ;; occur, but one likes to make sure...) (while (and (looking-at "[0-9]+\t") - (< (string-to-int + (< (string-to-number (buffer-substring (match-beginning 0) (match-end 0))) article) @@ -1281,14 +1282,14 @@ all. This may very well take some time. (nnheader-article-to-file-alist nndiary-current-directory)))) = = -(defun nndiary-string-to-int (str min &optional max) - ;; Like `string-to-int' but barf if STR is not exactly an integer, and= not +(defun nndiary-string-to-number (str min &optional max) + ;; Like `string-to-number' but barf if STR is not exactly an integer, = and not ;; within the specified bounds. ;; Signals are caught by `nndiary-schedule'. (if (not (string-match "^[ \t]*[0-9]+[ \t]*$" str)) (nndiary-error "not an integer value") ;; else - (let ((val (string-to-int str))) + (let ((val (string-to-number str))) (and (or (< val min) (and max (> val max))) (nndiary-error "value out of range")) @@ -1315,12 +1316,12 @@ all. This may very well take some time. (let ((res (split-string val "-"))) (cond ((=3D (length res) 1) - (nndiary-string-to-int (car res) min-or-values max)) + (nndiary-string-to-number (car res) min-or-values max)) ((=3D (length res) 2) ;; don't know if crontab accepts this, but ensure ;; that BEG is <=3D END - (let ((beg (nndiary-string-to-int (car res) min-or-values max)) - (end (nndiary-string-to-int (cadr res) min-or-values max))) + (let ((beg (nndiary-string-to-number (car res) min-or-values max)) + (end (nndiary-string-to-number (cadr res) min-or-values max))) (cond ((< beg end) (cons beg end)) ((=3D beg end) = = = 1.3 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/nndir.el = Index: nndir.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nndir= .el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- nndir.el 2004/09/28 02:21:16 1.2 +++ nndir.el 2005/11/15 03:45:55 1.3 @@ -1,7 +1,7 @@ ;;; nndir.el --- single directory newsgroup access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +7 -6 XEmacs/packages/xemacs-packages/gnus/lisp/nndoc.el = Index: nndoc.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nndoc= .el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nndoc.el 2004/09/28 02:21:16 1.5 +++ nndoc.el 2005/11/15 03:45:55 1.6 @@ -1,7 +1,8 @@ ;;; nndoc.el --- single file access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA ;; Keywords: news @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -421,7 +422,7 @@ from the document.") (search-forward "\n\n" beg t) (re-search-backward "^Content-Length:[ \t]*\\([0-9]+\\) *$" end t) - (setq len (string-to-int (match-string 1))) + (setq len (string-to-number (match-string 1))) (search-forward "\n\n" beg t) (unless (=3D (setq len (+ (point) len)) (point-max)) (and (< len (point-max)) @@ -444,7 +445,7 @@ from the document.") (defun nndoc-rnews-body-end () (and (re-search-backward nndoc-article-begin nil t) (forward-line 1) - (goto-char (+ (point) (string-to-int (match-string 1)))))) + (goto-char (+ (point) (string-to-number (match-string 1)))))) = (defun nndoc-babyl-type-p () (when (re-search-forward "\^_\^L *\n" nil t) = = = 1.5 +11 -8 XEmacs/packages/xemacs-packages/gnus/lisp/nndraft.el = Index: nndraft.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nndra= ft.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nndraft.el 2004/09/28 02:21:16 1.4 +++ nndraft.el 2005/11/15 03:45:56 1.5 @@ -1,7 +1,7 @@ ;;; nndraft.el --- draft article access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -174,8 +174,11 @@ (setq buffer-file-name (expand-file-name file) buffer-auto-save-file-name (make-auto-save-file-name)) (clear-visited-file-modtime) - (make-local-variable 'write-contents-hooks) - (push 'nndraft-generate-headers write-contents-hooks) + (let ((hook (if (boundp 'write-contents-functions) + 'write-contents-functions + 'write-contents-hooks))) + (gnus-make-local-hook hook) + (add-hook hook 'nndraft-generate-headers nil t)) article)) = (deffoo nndraft-request-group (group &optional server dont-check) @@ -185,7 +188,7 @@ (file-name-coding-system nnmail-pathname-coding-system) dir file) (nnheader-re-read-dir pathname) - (setq dir (mapcar (lambda (name) (string-to-int (substring name 1)= )) + (setq dir (mapcar (lambda (name) (string-to-number (substring name= 1))) (ignore-errors (directory-files pathname nil "^#[0-9]+#$" t)))) (dolist (n dir) @@ -293,7 +296,7 @@ "Return the list of messages in the group." (gnus-make-directory nndraft-current-directory) (sort - (mapcar 'string-to-int + (mapcar 'string-to-number (directory-files nndraft-current-directory nil "\\`[0-9]+\\'" t)) '<)) = = = = 1.4 +7 -6 XEmacs/packages/xemacs-packages/gnus/lisp/nneething.= el = Index: nneething.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nneet= hing.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nneething.el 2004/09/28 02:21:16 1.3 +++ nneething.el 2005/11/15 03:45:56 1.4 @@ -1,7 +1,7 @@ ;;; nneething.el --- arbitrary file access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -37,7 +37,8 @@ = (nnoo-declare nneething) = -(defvoo nneething-map-file-directory "~/.nneething/" +(defvoo nneething-map-file-directory + (nnheader-concat gnus-directory ".nneething/") "Where nneething stores the map files.") = (defvoo nneething-map-file ".nneething" @@ -328,7 +329,7 @@ included.") (when (re-search-forward "<[a-zA-Z0-9_]@[-a-zA-Z0-9_]>" 1000 t) (concat "From: " (match-string 0) "\n")))) (nneething-from-line (nth 2 atts) file)) - (if (> (string-to-int (int-to-string (nth 7 atts))) 0) + (if (> (string-to-number (int-to-string (nth 7 atts))) 0) (concat "Chars: " (int-to-string (nth 7 atts)) "\n") "") (if buffer = = = 1.6 +9 -8 XEmacs/packages/xemacs-packages/gnus/lisp/nnfolder.el = Index: nnfolder.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnfol= der.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nnfolder.el 2005/03/13 00:23:35 1.5 +++ nnfolder.el 2005/11/15 03:45:56 1.6 @@ -1,7 +1,8 @@ ;;; nnfolder.el --- mail folder access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson (adding MARKS) ;; ShengHuo Zhu (adding NOV) ;; Scott Byer @@ -23,8 +24,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -200,7 +201,7 @@ the group. Then the marks file will be = ((search-backward (concat "\n" nnfolder-article-marker) nil t) (goto-char (match-end 0)) - (setq num (string-to-int + (setq num (string-to-number (buffer-substring (point) (gnus-point-at-eol)))) (goto-char start) @@ -210,7 +211,7 @@ the group. Then the marks file will be = (search-forward (concat "\n" nnfolder-article-marker) nil t) (progn - (setq num (string-to-int + (setq num (string-to-number (buffer-substring (point) (gnus-point-at-eol)))) (> num article)) @@ -285,7 +286,7 @@ the group. Then the marks file will be = (cons nnfolder-current-group (if (search-forward (concat "\n" nnfolder-article-marker) nil t) - (string-to-int (buffer-substring + (string-to-number (buffer-substring (point) (gnus-point-at-eol))) -1)))))))) = @@ -875,6 +876,7 @@ deleted. Point is left where the delete nnfolder-file-coding-system)) (nnheader-find-file-noselect file t))))) (mm-enable-multibyte) ;; Use multibyte buffer for future copying. + (buffer-disable-undo) (if (equal (cadr (assoc group nnfolder-scantime-alist)) (nth 5 (file-attributes file))) ;; This looks up-to-date, so we don't do any scanning. @@ -901,7 +903,6 @@ deleted. Point is left where the delete maxid start end newscantime novbuf articles newnum buffer-read-only) - (buffer-disable-undo) (setq maxid (cdr active)) = (unless (or gnus-nov-is-evil nnfolder-nov-is-evil = = = 1.4 +4 -4 XEmacs/packages/xemacs-packages/gnus/lisp/nngateway.= el = Index: nngateway.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nngat= eway.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nngateway.el 2004/09/28 02:21:16 1.3 +++ nngateway.el 2005/11/15 03:45:56 1.4 @@ -1,7 +1,7 @@ ;;; nngateway.el --- posting news via mail gateways = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.7 +24 -16 XEmacs/packages/xemacs-packages/gnus/lisp/nnheader.el = Index: nnheader.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnhea= der.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- nnheader.el 2005/03/13 00:23:35 1.6 +++ nnheader.el 2005/11/15 03:45:56 1.7 @@ -1,8 +1,8 @@ ;;; nnheader.el --- header access macros for Gnus and its backends = -;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, 1995, 1996, -;; 1997, 1998, 2000, 2001, 2002, 2003, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1987, 1988, 1989, 1990, 1993, 1994, +;; 1995, 1996, 1997, 1998, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Masanobu UMEDA ;; Lars Magne Ingebrigtsen @@ -22,8 +22,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -31,6 +31,8 @@ = (eval-when-compile (require 'cl)) = +(defvar nnmail-extra-headers) + ;; Requiring `gnus-util' at compile time creates a circular ;; dependency between nnheader.el and gnus-util.el. ;;(eval-when-compile (require 'gnus-util)) @@ -683,9 +685,9 @@ the line could be found." (defsubst nnheader-file-to-number (file) "Take a FILE name and return the article number." (if (string=3D nnheader-numerical-short-files "^[0-9]+$") - (string-to-int file) + (string-to-number file) (string-match nnheader-numerical-short-files file) - (string-to-int (match-string 0 file)))) + (string-to-number (match-string 0 file)))) = (defvar nnheader-directory-files-is-safe (or (eq system-type 'windows-nt) @@ -953,15 +955,21 @@ find-file-hooks, etc. (defun nnheader-find-file-noselect (&rest args) "Open a file with some variables bound. See `find-file-noselect' for the arguments." - (let ((format-alist nil) - (auto-mode-alist (mm-auto-mode-alist)) - (default-major-mode 'fundamental-mode) - (enable-local-variables nil) - (after-insert-file-functions nil) - (enable-local-eval nil) - (find-file-hooks nil) - (coding-system-for-read nnheader-file-coding-system)) - (apply 'find-file-noselect args))) + (let* ((format-alist nil) + (auto-mode-alist (mm-auto-mode-alist)) + (default-major-mode 'fundamental-mode) + (enable-local-variables nil) + (after-insert-file-functions nil) + (enable-local-eval nil) + (coding-system-for-read nnheader-file-coding-system) + (ffh (if (boundp 'find-file-hook) + 'find-file-hook + 'find-file-hooks)) + (val (symbol-value ffh))) + (set ffh nil) + (unwind-protect + (apply 'find-file-noselect args) + (set ffh val)))) = (defun nnheader-directory-regular-files (dir) "Return a list of all regular files in DIR." = = = 1.5 +2 -2 XEmacs/packages/xemacs-packages/gnus/lisp/nnheaderxm= .el = Index: nnheaderxm.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnhea= derxm.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nnheaderxm.el 2004/09/28 02:21:16 1.4 +++ nnheaderxm.el 2005/11/15 03:45:56 1.5 @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +31 -6 XEmacs/packages/xemacs-packages/gnus/lisp/nnimap.el = Index: nnimap.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnima= p.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nnimap.el 2005/03/13 00:23:35 1.5 +++ nnimap.el 2005/11/15 03:45:56 1.6 @@ -1,7 +1,8 @@ ;;; nnimap.el --- imap backend for Gnus -;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson ;; Jim Radford ;; Keywords: mail @@ -20,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -205,7 +206,7 @@ RFC2060 section 6.4.4." "Whether to download entire articles during splitting. This is generally not required, and will slow things down considerably. You may need it if you want to use an advanced splitting function that -analyses the body before splitting the article. +analyzes the body before splitting the article. If this variable is nil, bodies will not be downloaded; if this variable is the symbol `default' the default behaviour is used (which currently is nil, unless you use a statistical @@ -316,6 +317,11 @@ every message in the group, thus making = Unlike other backends, you do not need to take special care if you flip this variable.") = +(defvoo nnimap-search-uids-not-since-is-evil nil + "If non-nil, avoid \"UID SEARCH UID ... NOT SINCE\" queries when expir= ing. +Instead, use \"UID SEARCH SINCE\" to prune the list of expirable +articles within Gnus. This seems to be faster on Courier in some cases.= ") + (defvoo nnimap-expunge-on-close 'always ; 'ask, 'never "Whether to expunge a group when it is closed. When a IMAP group with articles marked for deletion is closed, this @@ -728,7 +734,9 @@ If EXAMINE is non-nil the group is selec (imap-capability 'IMAP4rev1 nnimap-server-buffer)) (imap-close nnimap-server-buffer) (nnheader-report 'nnimap "Server %s is not IMAP4 compliant" server= )) - (let* ((list (gnus-parse-netrc nnimap-authinfo-file)) + (let* ((list (progn (gnus-message 7 "Parsing authinfo file `%s'." + nnimap-authinfo-file) + (gnus-parse-netrc nnimap-authinfo-file))) (port (if nnimap-server-port (int-to-string nnimap-server-port) "imap")) @@ -1384,8 +1392,10 @@ function is generally only called when G (list (- ms 1) (+ (expt 2 16) ls)) (list ms ls)))) = +(eval-when-compile (require 'parse-time)) (defun nnimap-date-days-ago (daysago) "Return date, in format \"3-Aug-1998\", for DAYSAGO days ago." + (require 'parse-time) (let* ((time (nnimap-time-substract (current-time) (days-to-time daysa= go))) (date (format-time-string (format "%%d-%s-%%Y" @@ -1431,6 +1441,21 @@ function is generally only called when G (when (imap-message-flags-add (imap-range-to-message-set (gnus-compress-sequence oldarts)) "\\Deleted") + (setq articles (gnus-set-difference + articles oldarts)))))) + ((and nnimap-search-uids-not-since-is-evil (numberp days)) + (let* ((all-new-articles + (gnus-compress-sequence + (imap-search (format "SINCE %s" + (nnimap-date-days-ago days))))) + (oldartseq + (gnus-range-difference artseq all-new-articles)) + (oldarts (gnus-uncompress-range oldartseq))) + (when oldarts + (nnimap-expiry-target oldarts group server) + (when (imap-message-flags-add + (imap-range-to-message-set oldartseq) + "\\Deleted") (setq articles (gnus-set-difference articles oldarts)))))) ((numberp days) = = = 1.2 +17 -17 XEmacs/packages/xemacs-packages/gnus/lisp/nnir.el = Index: nnir.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnir.= el,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- nnir.el 2004/09/28 02:21:17 1.1 +++ nnir.el 2005/11/15 03:45:56 1.2 @@ -18,8 +18,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -376,7 +376,8 @@ Add an entry here when adding a new sear ;;; User Customizable Variables: = (defgroup nnir nil - "Search nnmh and nnml groups in Gnus with Glimpse, freeWAIS-sf, or EWS= .") + "Search nnmh and nnml groups in Gnus with Glimpse, freeWAIS-sf, or EWS= ." + :group 'gnus) = ;; Mail backend. = @@ -689,7 +690,17 @@ that it is for Namazu, not Glimpse." 'gnus-group-make-nnir-group)) (add-hook 'gnus-group-mode-hook 'nnir-group-mode-hook) = - +(defmacro nnir-group-server (group) + "Return the server for a foreign newsgroup GROUP. +The returned format is as `gnus-server-to-method' needs it. See +`gnus-group-real-prefix' and `gnus-group-real-name'." + `(let ((gname ,group)) + (if (string-match "^\\([^:]+\\):" gname) + (setq gname (match-string 1 gname)) + nil) + (if (string-match "^\\([^+]+\\)\\+\\(.+\\)$" gname) + (format "%s:%s" (match-string 1 gname) (match-string 2 gname)) + (concat gname ":")))) = ;; Summary mode commands. = @@ -862,7 +873,7 @@ pairs (also vectors, actually)." (let ((artlist nil) (groupspec (cdr (assq 'group query))) (qstring (cdr (assq 'query query))) - (prefix (nnir-read-server-parm 'nnir-glimps-remove-prefix server)) + (prefix (nnir-read-server-parm 'nnir-glimpse-remove-prefix server)) artno dirnam) (when (and group groupspec) (error (concat "It does not make sense to use a group spec" @@ -1191,7 +1202,7 @@ Tested with swish-e-2.0.1 on Windows NT = (error "Missing parameter `nnir-swish-e-index-file'"))) (additional-switches (nnir-read-server-parm - 'nnir-swish++-additional-switches server)) + 'nnir-swish-e-additional-switches server)) (cp-list `(,nnir-swish-e-program nil ; input from /dev/null t ; output @@ -1482,17 +1493,6 @@ form 'backend:name'." ;; (symbol-value key)) ;; (symbol-value key)) ;; )) - -(defmacro nnir-group-server (group) - "Returns the server for a foreign newsgroup in the format as gnus-serv= er-to-method needs it. Compare to gnus-group-real-prefix and gnus-group-rea= l-name." - `(let ((gname ,group)) - (if (string-match "^\\([^:]+\\):" gname) - (setq gname (match-string 1 gname)) - nil) - (if (string-match "^\\([^+]+\\)\\+\\(.+\\)$" gname) - (format "%s:%s" (match-string 1 gname) (match-string 2 gname)) - (concat gname ":")) - )) = (defun nnir-group-full-name (shortname server) "For the given group name, return a full Gnus group name. = = = 1.4 +5 -5 XEmacs/packages/xemacs-packages/gnus/lisp/nnkiboze.el = Index: nnkiboze.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnkib= oze.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nnkiboze.el 2004/09/28 02:21:17 1.3 +++ nnkiboze.el 2005/11/15 03:45:57 1.4 @@ -1,7 +1,7 @@ ;;; nnkiboze.el --- select virtual news access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -106,7 +106,7 @@ (error "nnkiboze: No xref")) (unless (string-match " \\([^ ]+\\):\\([0-9]+\\)" xref) (error "nnkiboze: Malformed xref")) - (setq num (string-to-int (match-string 2 xref)) + (setq num (string-to-number (match-string 2 xref)) group (match-string 1 xref)) (or (with-current-buffer buffer (or (and gnus-use-cache (gnus-cache-request-article num group)) = = = 1.4 +4 -3 XEmacs/packages/xemacs-packages/gnus/lisp/nnlistserv= .el = Index: nnlistserv.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnlis= tserv.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nnlistserv.el 2004/09/28 02:21:17 1.3 +++ nnlistserv.el 2005/11/15 03:45:57 1.4 @@ -1,6 +1,7 @@ ;;; nnlistserv.el --- retrieving articles via web mailing list archives = -;; Copyright (C) 1997, 1998, 1999, 2000, 2004 Free Software Foundation, = Inc. +;; Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.6 +9 -8 XEmacs/packages/xemacs-packages/gnus/lisp/nnmail.el = Index: nnmail.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnmai= l.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nnmail.el 2005/03/13 00:23:35 1.5 +++ nnmail.el 2005/11/15 03:45:57 1.6 @@ -1,7 +1,8 @@ ;;; nnmail.el --- mail support functions for the Gnus mail backends -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2= 004 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news, mail = @@ -19,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -49,7 +50,7 @@ :group 'nnmail) = (defgroup nnmail-prepare nil - "Preparing (or mangling) new mail after retrival." + "Preparing (or mangling) new mail after retrieval." :group 'nnmail) = (defgroup nnmail-duplicate nil @@ -769,7 +770,7 @@ If SOURCE is a directory spec, try to re (if (not (save-excursion (and (re-search-backward "^Content-Length:[ \t]*\\([0-9]+\\)" start t) - (setq content-length (string-to-int + (setq content-length (string-to-number (buffer-substring (match-beginning 1) (match-end 1)))) @@ -906,7 +907,7 @@ If SOURCE is a directory spec, try to re (if (not (re-search-forward "^Content-Length:[ \t]*\\([0-9]+\\)" nil t)) (setq content-length nil) - (setq content-length (string-to-int (match-string 1))) + (setq content-length (string-to-number (match-string 1))) ;; We destroy the header, since none of the backends ever ;; use it, and we do not want to confuse other mailers by ;; having a (possibly) faulty header. @@ -1141,7 +1142,7 @@ FUNC will be called with the group name = 5 "Error in `nnmail-split-methods'; using `bogus' mail group") (sit-for 1) '("bogus"))))) - (setq split (gnus-remove-duplicates split)) + (setq split (mm-delete-duplicates split)) ;; The article may be "cross-posted" to `junk'. What ;; to do? Just remove the `junk' spec. Don't really ;; see anything else to do... = = = 1.3 +5 -5 XEmacs/packages/xemacs-packages/gnus/lisp/nnmaildir.= el = Index: nnmaildir.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnmai= ldir.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- nnmaildir.el 2004/09/28 02:21:17 1.2 +++ nnmaildir.el 2005/11/15 03:45:57 1.3 @@ -17,8 +17,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -978,7 +978,7 @@ by nnmaildir-request-article.") (throw 'return nil)) (when (save-match-data (string-match "[\0/\t]" gname)) (setf (nnmaildir--srv-error nnmaildir--cur-server) - (concat "Illegal characters (null, tab, or /) in group name: " + (concat "Invalid characters (null, tab, or /) in group name: " gname)) (throw 'return nil)) (setq groups (nnmaildir--srv-groups nnmaildir--cur-server)) @@ -1023,7 +1023,7 @@ by nnmaildir-request-article.") (throw 'return nil)) (when (save-match-data (string-match "[\0/\t]" new-name)) (setf (nnmaildir--srv-error nnmaildir--cur-server) - (concat "Illegal characters (null, tab, or /) in group name: " + (concat "Invalid characters (null, tab, or /) in group name: " new-name)) (throw 'return nil)) (if (string-equal gname new-name) (throw 'return t)) @@ -1344,7 +1344,7 @@ by nnmaildir-request-article.") (write-region (point-min) (point-max) tmpfile nil 'no-message nil 'excl) (unix-sync))) ;; no fsync :( - (cancel-timer 24h) + (nnheader-cancel-timer 24h) (condition-case err (add-name-to-file tmpfile curfile) (error = = = 1.5 +6 -6 XEmacs/packages/xemacs-packages/gnus/lisp/nnmbox.el = Index: nnmbox.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnmbo= x.el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nnmbox.el 2004/09/28 02:21:18 1.4 +++ nnmbox.el 2005/11/15 03:45:57 1.5 @@ -1,7 +1,7 @@ ;;; nnmbox.el --- mail mbox access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -16,8 +16,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -475,7 +475,7 @@ (when (re-search-forward "^X-Gnus-Newsgroup: +\\([^:]+\\):\\([0-9]+\= \) " nil t) (cons (buffer-substring (match-beginning 1) (match-end 1)) - (string-to-int + (string-to-number (buffer-substring (match-beginning 2) (match-end 2))))))) = (defun nnmbox-in-header-p (pos) @@ -681,7 +681,7 @@ (let (alist) (while (re-search-forward " \\([^:]+\\):\\([0-9]+\\)" end-header= t) (push (cons (match-string 1) - (string-to-int (match-string 2))) alist)) + (string-to-number (match-string 2))) alist)) (nnmbox-insert-newsgroup-line alist)) ;; this is really a new article (nnmbox-save-mail = = = 1.5 +10 -10 XEmacs/packages/xemacs-packages/gnus/lisp/nnmh.el = Index: nnmh.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnmh.= el,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- nnmh.el 2004/09/28 02:21:18 1.4 +++ nnmh.el 2005/11/15 03:45:57 1.5 @@ -1,7 +1,7 @@ ;;; nnmh.el --- mhspool access for Gnus = -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -21,8 +21,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -150,7 +150,7 @@ as unread by Gnus.") (file-exists-p file) (not (file-directory-p file)) (save-excursion (nnmail-find-file file)) - (string-to-int (file-name-nondirectory file))))) + (string-to-number (file-name-nondirectory file))))) = (deffoo nnmh-request-group (group &optional server dont-check) (nnheader-init-server-buffer) @@ -176,7 +176,7 @@ as unread by Gnus.") (nnheader-re-read-dir pathname) (setq dir (sort - (mapcar (lambda (name) (string-to-int name)) + (mapcar (lambda (name) (string-to-number name)) (directory-files pathname nil "^[0-9]+$" t)) '<)) (cond @@ -224,7 +224,7 @@ as unread by Gnus.") ;; For each directory, generate an active file line. (unless (string=3D (expand-file-name nnmh-toplev) dir) (let ((files (mapcar - (lambda (name) (string-to-int name)) + (lambda (name) (string-to-number name)) (directory-files dir nil "^[0-9]+$" t)))) (when files (save-excursion @@ -358,7 +358,7 @@ as unread by Gnus.") (nnmh-possibly-change-directory group server) (let ((articles (mapcar (lambda (file) - (string-to-int file)) + (string-to-number file)) (directory-files nnmh-current-directory nil "^[0-9]+$")))) (when articles @@ -486,7 +486,7 @@ as unread by Gnus.") (let ((files (sort (mapcar (lambda (f) - (string-to-int f)) + (string-to-number f)) (directory-files dir nil "^[0-9]+$")) '>))) (when files @@ -509,7 +509,7 @@ as unread by Gnus.") ;; articles in this folder. The articles that are "new" will be ;; marked as unread by Gnus. (let* ((dir nnmh-current-directory) - (files (sort (mapcar (function (lambda (name) (string-to-int name))) + (files (sort (mapcar (function (lambda (name) (string-to-number name))) (directory-files nnmh-current-directory nil "^[0-9]+$" t)) '<)) = = = 1.6 +7 -6 XEmacs/packages/xemacs-packages/gnus/lisp/nnml.el = Index: nnml.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnml.= el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nnml.el 2005/03/13 00:23:36 1.5 +++ nnml.el 2005/11/15 03:45:57 1.6 @@ -1,7 +1,8 @@ ;;; nnml.el --- mail spool access for Gnus -;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2003 -;; Free Software Foundation, Inc. = +;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. + ;; Author: Simon Josefsson (adding MARKS) ;; Lars Magne Ingebrigtsen ;; Masanobu UMEDA @@ -21,8 +22,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -212,7 +213,7 @@ marks file will be regenerated properly = (nnheader-report 'nnml "Article %s retrieved" id) ;; We return the article number. (cons (if group-num (car group-num) group) - (string-to-int (file-name-nondirectory path))))))) + (string-to-number (file-name-nondirectory path))))))) = (deffoo nnml-request-group (group &optional server dont-check) (let ((file-name-coding-system nnmail-pathname-coding-system)) @@ -426,7 +427,7 @@ marks file will be regenerated properly = ;; we should insert it. (This situation should never ;; occur, but one likes to make sure...) (while (and (looking-at "[0-9]+\t") - (< (string-to-int + (< (string-to-number (buffer-substring (match-beginning 0) (match-end 0))) article) = = = 1.3 +2 -2 XEmacs/packages/xemacs-packages/gnus/lisp/nnnil.el = Index: nnnil.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnnil= .el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- nnnil.el 2004/09/28 02:21:19 1.2 +++ nnnil.el 2005/11/15 03:45:58 1.3 @@ -15,8 +15,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = = = = 1.4 +5 -5 XEmacs/packages/xemacs-packages/gnus/lisp/nnoo.el = Index: nnoo.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnoo.= el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nnoo.el 2004/09/28 02:21:19 1.3 +++ nnoo.el 2005/11/15 03:45:58 1.4 @@ -1,7 +1,7 @@ ;;; nnoo.el --- OO Gnus Backends = -;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001 -;; Free Software Foundation, Inc. +;; Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, +;; 2004, 2005 Free Software Foundation, Inc. = ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news @@ -20,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -254,7 +254,7 @@ (setcdr bstate (delq defs (cdr bstate))) (pop defs) (while defs - (set (car (pop defs)) nil))))) = + (set (car (pop defs)) nil))))) t) = (defun nnoo-close (backend) = = = 1.6 +451 -268 XEmacs/packages/xemacs-packages/gnus/lisp/nnrss.el = Index: nnrss.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnrss= .el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- nnrss.el 2005/03/13 00:23:36 1.5 +++ nnrss.el 2005/11/15 03:45:58 1.6 @@ -1,6 +1,7 @@ ;;; nnrss.el --- interfacing with RSS -;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. = +;; Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, = Inc. + ;; Author: Shenghuo Zhu ;; Keywords: RSS = @@ -18,8 +19,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -36,9 +37,11 @@ (require 'time-date) (require 'rfc2231) (require 'mm-url) +(require 'rfc2047) +(require 'mml) (eval-when-compile (ignore-errors - (require 'xml))) + (require 'xml))) (eval '(require 'xml)) = (nnoo-declare nnrss) @@ -75,20 +78,32 @@ To use the description in headers, put t (defvar nnrss-content-function nil "A function which is called in `nnrss-request-article'. The arguments are (ENTRY GROUP ARTICLE). -ENTRY is the record of the current headline. GROUP is the group name. +ENTRY is the record of the current headline. GROUP is the group name. ARTICLE is the article number of the current headline.") = +(defvar nnrss-file-coding-system mm-universal-coding-system + "Coding system used when reading and writing files.") + +(defvar nnrss-compatible-encoding-alist '((iso-8859-1 . windows-1252)) + "Alist of encodings and those supersets. +The cdr of each element is used to decode data if it is available when +the car is what the data specify as the encoding. Or, the car is used +for decoding when the cdr that the data specify is not available.") + (nnoo-define-basics nnrss) = ;;; Interface functions = -(eval-when-compile - (defmacro nnrss-string-as-multibyte (string) - (if (featurep 'xemacs) - string - `(string-as-multibyte ,string)))) +(defsubst nnrss-format-string (string) + (gnus-replace-in-string string " *\n *" " ")) = +(defun nnrss-decode-group-name (group) + (if (and group (mm-coding-system-p 'utf-8)) + (setq group (mm-decode-coding-string group 'utf-8)) + group)) + (deffoo nnrss-retrieve-headers (articles &optional group server fetch-ol= d) + (setq group (nnrss-decode-group-name group)) (nnrss-possibly-change-group group server) (let (e) (save-excursion @@ -97,21 +112,26 @@ ARTICLE is the article number of the cur (dolist (article articles) (if (setq e (assq article nnrss-group-data)) (insert (number-to-string (car e)) "\t" ;; number - (if (nth 3 e) - (nnrss-format-string (nth 3 e)) "") - "\t" ;; subject - (if (nth 4 e) - (nnrss-format-string (nth 4 e)) - "(nobody)") - "\t" ;;from + ;; subject + (or (nth 3 e) "") + "\t" + ;; from + (or (nth 4 e) "(nobody)") + "\t" + ;; date (or (nth 5 e) "") - "\t" ;; date + "\t" + ;; id (format "<%d@%s.nnrss>" (car e) group) - "\t" ;; id - "\t" ;; refs - "-1" "\t" ;; chars - "-1" "\t" ;; lines - "" "\t" ;; Xref + "\t" + ;; refs + "\t" + ;; chars + "-1" "\t" + ;; lines + "-1" "\t" + ;; Xref + "" "\t" (if (and (nth 6 e) (memq nnrss-description-field nnmail-extra-headers)) @@ -132,69 +152,115 @@ ARTICLE is the article number of the cur 'nov) = (deffoo nnrss-request-group (group &optional server dont-check) + (setq group (nnrss-decode-group-name group)) + (nnheader-message 6 "nnrss: Requesting %s..." group) (nnrss-possibly-change-group group server) - (if dont-check - t - (nnrss-check-group group server) - (nnheader-report 'nnrss "Opened group %s" group) - (nnheader-insert - "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max - (prin1-to-string group) - t))) + (prog1 + (if dont-check + t + (nnrss-check-group group server) + (nnheader-report 'nnrss "Opened group %s" group) + (nnheader-insert + "211 %d %d %d %s\n" nnrss-group-max nnrss-group-min nnrss-group-max + (prin1-to-string group) + t)) + (nnheader-message 6 "nnrss: Requesting %s...done" group))) = (deffoo nnrss-close-group (group &optional server) t) = (deffoo nnrss-request-article (article &optional group server buffer) + (setq group (nnrss-decode-group-name group)) + (when (stringp article) + (setq article (if (string-match "\\`<\\([0-9]+\\)@" article) + (string-to-number (match-string 1 article)) + 0))) (nnrss-possibly-change-group group server) (let ((e (assq article nnrss-group-data)) - (boundary "=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-=3D-") (nntp-server-buffer (or buffer nntp-server-buffer)) post err) (when e - (catch 'error - (with-current-buffer nntp-server-buffer - (erase-buffer) - (goto-char (point-min)) - (insert "Mime-Version: 1.0\nContent-Type: multipart/alternative; boun= dary=3D\"" boundary "\"\n") - (if group - (insert "Newsgroups: " group "\n")) - (if (nth 3 e) - (insert "Subject: " (nnrss-format-string (nth 3 e)) "\n")) - (if (nth 4 e) - (insert "From: " (nnrss-format-string (nth 4 e)) "\n")) - (if (nth 5 e) - (insert "Date: " (nnrss-format-string (nth 5 e)) "\n")) - (insert "Message-ID: " (format "<%d@%s.nnrss>" (car e) group) "\n") - (insert "\n") - (let ((text (if (nth 6 e) - (nnrss-string-as-multibyte (nth 6 e)))) - (link (if (nth 2 e) - (nth 2 e)))) - (insert "\n\n--" boundary "\nContent-Type: text/plain\n\n") - (let ((point (point))) - (if text - (progn (insert text) - (goto-char point) - (while (re-search-forward "\n" nil t) - (replace-match " ")) - (goto-char (point-max)) - (insert "\n\n"))) - (if link - (insert link))) - (insert "\n\n--" boundary "\nContent-Type: text/html\n\n") - (let ((point (point))) - (if text - (progn (insert "\n" text "\n") - (goto-char point) - (while (re-search-forward "\n" nil t) - (replace-match " ")) - (goto-char (point-max)) - (insert "\n\n"))) - (if link - (insert "

    link

    \n")))) - (if nnrss-content-function - (funcall nnrss-content-function e group article))))) + (with-current-buffer nntp-server-buffer + (erase-buffer) + (if group + (insert "Newsgroups: " group "\n")) + (if (nth 3 e) + (insert "Subject: " (nth 3 e) "\n")) + (if (nth 4 e) + (insert "From: " (nth 4 e) "\n")) + (if (nth 5 e) + (insert "Date: " (nnrss-format-string (nth 5 e)) "\n")) + (let ((header (buffer-string)) + (text (if (nth 6 e) + (mapconcat 'identity + (delete "" (split-string (nth 6 e) "\n+")) + " "))) + (link (nth 2 e)) + (enclosure (nth 7 e)) + (comments (nth 8 e)) + ;; Enable encoding of Newsgroups header in XEmacs. + (default-enable-multibyte-characters t) + (rfc2047-header-encoding-alist + (if (mm-coding-system-p 'utf-8) + (cons '("Newsgroups" . utf-8) + rfc2047-header-encoding-alist) + rfc2047-header-encoding-alist)) + rfc2047-encode-encoded-words body) + (when (or text link enclosure comments) + (insert "\n") + (insert "<#multipart type=3Dalternative>\n" + "<#part type=3D\"text/plain\">\n") + (setq body (point)) + (when text + (insert text "\n") + (when (or link enclosure) + (insert "\n"))) + (when link + (insert link "\n")) + (when enclosure + (insert (car enclosure) " " + (nth 2 enclosure) " " + (nth 3 enclosure) "\n")) + (when comments + (insert comments "\n")) + (setq body (buffer-substring body (point))) + (insert "<#/part>\n" + "<#part type=3D\"text/html\">\n" + "\n") + (when text + (insert text "\n")) + (when link + (insert "

    link

    \n")) + (when enclosure + (insert "

    " + (cadr enclosure) " " (nth 2 enclosure) + " " (nth 3 enclosure) "

    \n")) + (when comments + (insert "

    comments

    \n")) + (insert "\n" + "<#/part>\n" + "<#/multipart>\n")) + (condition-case nil + (mml-to-mime) + (error + (erase-buffer) + (insert header + "Content-Type: text/plain; charset=3Dgnus-decoded\n" + "Content-Transfer-Encoding: 8bit\n\n" + body) + (nnheader-message + 3 "Warning - there might be invalid characters")))) + (goto-char (point-min)) + (search-forward "\n\n") + (forward-line -1) + (insert (format "Message-ID: <%d@%s.nnrss>\n" + (car e) + (let ((rfc2047-encoding-type 'mime) + rfc2047-encode-max-chars) + (rfc2047-encode-string + (gnus-replace-in-string group "[\t\n ]+" "_"))))) + (when nnrss-content-function + (funcall nnrss-content-function e group article)))) (cond (err (nnheader-report 'nnrss err)) @@ -217,6 +283,7 @@ ARTICLE is the article number of the cur = (deffoo nnrss-request-expire-articles (articles group &optional server force) + (setq group (nnrss-decode-group-name group)) (nnrss-possibly-change-group group server) (let (e days not-expirable changed) (dolist (art articles) @@ -234,18 +301,18 @@ ARTICLE is the article number of the cur not-expirable)) = (deffoo nnrss-request-delete-group (group &optional force server) + (setq group (nnrss-decode-group-name group)) (nnrss-possibly-change-group group server) + (let (elem) + ;; There may be two or more entries in `nnrss-group-alist' since + ;; this function didn't delete them formerly. + (while (setq elem (assoc group nnrss-group-alist)) + (setq nnrss-group-alist (delq elem nnrss-group-alist)))) (setq nnrss-server-data (delq (assoc group nnrss-server-data) nnrss-server-data)) (nnrss-save-server-data server) - (let ((file (expand-file-name - (nnrss-translate-file-chars - (concat group (and server - (not (equal server "")) - "-") - server ".el")) nnrss-directory))) - (ignore-errors - (delete-file file))) + (ignore-errors + (delete-file (nnrss-make-filename group server))) t) = (deffoo nnrss-request-list-newsgroups (&optional server) @@ -262,34 +329,67 @@ ARTICLE is the article number of the cur = ;;; Internal functions (eval-when-compile (defun xml-rpc-method-call (&rest args))) + +(defun nnrss-get-encoding () + "Return an encoding attribute specified in the current xml contents. +If `nnrss-compatible-encoding-alist' specifies the compatible encoding, +it is used instead. If the xml contents doesn't specify the encoding, +return `utf-8' which is the default encoding for xml if it is available, +otherwise return nil." + (goto-char (point-min)) + (if (re-search-forward + "<\\?[^>]*encoding=3D\\(\"\\([^\">]+\\)\"\\|'\\([^'>]+\\)'\\)" + nil t) + (let ((encoding (intern (downcase (or (match-string 2) + (match-string 3)))))) + (or + (mm-coding-system-p (cdr (assq encoding + nnrss-compatible-encoding-alist))) + (mm-coding-system-p encoding) + (mm-coding-system-p (car (rassq encoding + nnrss-compatible-encoding-alist))))) + (mm-coding-system-p 'utf-8))) + (defun nnrss-fetch (url &optional local) - "Fetch the url and put it in a the expected lisp structure." - (with-temp-buffer - ;some CVS versions of url.el need this to close the connection quickly - (let* (xmlform htmlform) + "Fetch URL and put it in a the expected Lisp structure." + (mm-with-unibyte-buffer + ;;some CVS versions of url.el need this to close the connection quic= kly + (let (cs xmlform htmlform) ;; bit o' work necessary for w3 pre-cvs and post-cvs (if local (let ((coding-system-for-read 'binary)) (insert-file-contents url)) - (mm-url-insert url)) + ;; FIXME: shouldn't binding `coding-system-for-read' be moved + ;; to `mm-url-insert'? + (let ((coding-system-for-read 'binary)) + (mm-url-insert url))) + (nnheader-remove-cr-followed-by-lf) + ;; Decode text according to the encoding attribute. + (when (setq cs (nnrss-get-encoding)) + (mm-decode-coding-region (point-min) (point-max) cs) + (mm-enable-multibyte)) + (goto-char (point-min)) = -;; Because xml-parse-region can't deal with anything that isn't -;; xml and w3-parse-buffer can't deal with some xml, we have to -;; parse with xml-parse-region first and, if that fails, parse -;; with w3-parse-buffer. Yuck. Eventually, someone should find out -;; why w3-parse-buffer fails to parse some well-formed xml and -;; fix it. - - (condition-case err - (setq xmlform (xml-parse-region (point-min) (point-max))) - (error (if (fboundp 'w3-parse-buffer) - (setq htmlform (caddar (w3-parse-buffer - (current-buffer)))) - (message "nnrss: Not valid XML and w3 parse not available (%s)" - url)))) - (if htmlform - htmlform - xmlform)))) + ;; Because xml-parse-region can't deal with anything that isn't + ;; xml and w3-parse-buffer can't deal with some xml, we have to + ;; parse with xml-parse-region first and, if that fails, parse + ;; with w3-parse-buffer. Yuck. Eventually, someone should find o= ut + ;; why w3-parse-buffer fails to parse some well-formed xml and + ;; fix it. + + (condition-case err1 + (setq xmlform (xml-parse-region (point-min) (point-max))) + (error + (condition-case err2 + (setq htmlform (caddar (w3-parse-buffer + (current-buffer)))) + (error + (message "\ +nnrss: %s: Not valid XML %s and w3-parse doesn't work %s" + url err1 err2))))) + (if htmlform + htmlform + xmlform)))) = (defun nnrss-possibly-change-group (&optional group server) (when (and server @@ -302,9 +402,9 @@ ARTICLE is the article number of the cur (defvar nnrss-extra-categories '(nnrss-snarf-moreover-categories)) = (defun nnrss-generate-active () - (if (y-or-n-p "fetch extra categories? ") - (dolist (func nnrss-extra-categories) - (funcall func))) + (when (y-or-n-p "Fetch extra categories? ") + (dolist (func nnrss-extra-categories) + (funcall func))) (save-excursion (set-buffer nntp-server-buffer) (erase-buffer) @@ -318,41 +418,26 @@ ARTICLE is the article number of the cur = (defun nnrss-read-server-data (server) (setq nnrss-server-data nil) - (let ((file (expand-file-name - (nnrss-translate-file-chars - (concat "nnrss" (and server - (not (equal server "")) - "-") - server - ".el")) - nnrss-directory))) + (let ((file (nnrss-make-filename "nnrss" server))) (when (file-exists-p file) - (with-temp-buffer - (let ((coding-system-for-read 'binary) - emacs-lisp-mode-hook) + ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII + ;; file names. So, we use `insert-file-contents' instead. + (mm-with-multibyte-buffer + (let ((coding-system-for-read nnrss-file-coding-system) + (file-name-coding-system nnmail-pathname-coding-system)) (insert-file-contents file) - (emacs-lisp-mode) - (goto-char (point-min)) - (eval-buffer)))))) + (eval-region (point-min) (point-max))))))) = (defun nnrss-save-server-data (server) (gnus-make-directory nnrss-directory) - (let ((file (expand-file-name - (nnrss-translate-file-chars - (concat "nnrss" (and server - (not (equal server "")) - "-") - server ".el")) - nnrss-directory))) - (let ((coding-system-for-write 'binary) - print-level print-length) - (with-temp-file file - (insert "(setq nnrss-group-alist '" - (prin1-to-string nnrss-group-alist) - ")\n") - (insert "(setq nnrss-server-data '" - (prin1-to-string nnrss-server-data) - ")\n"))))) + (let ((coding-system-for-write nnrss-file-coding-system) + (file-name-coding-system nnmail-pathname-coding-system)) + (with-temp-file (nnrss-make-filename "nnrss" server) + (insert (format ";; -*- coding: %s; -*-\n" + nnrss-file-coding-system)) + (gnus-prin1 `(setq nnrss-group-alist ',nnrss-group-alist)) + (insert "\n") + (gnus-prin1 `(setq nnrss-server-data ',nnrss-server-data))))) = (defun nnrss-read-group-data (group server) (setq nnrss-group-data nil) @@ -360,43 +445,50 @@ ARTICLE is the article number of the cur (let ((pair (assoc group nnrss-server-data))) (setq nnrss-group-max (or (cadr pair) 0)) (setq nnrss-group-min (+ nnrss-group-max 1))) - (let ((file (expand-file-name - (nnrss-translate-file-chars - (concat group (and server - (not (equal server "")) - "-") - server ".el")) - nnrss-directory))) + (let ((file (nnrss-make-filename group server))) (when (file-exists-p file) - (with-temp-buffer - (let ((coding-system-for-read 'binary) - emacs-lisp-mode-hook) + ;; In Emacs 21.3 and earlier, `load' doesn't support non-ASCII + ;; file names. So, we use `insert-file-contents' instead. + (mm-with-multibyte-buffer + (let ((coding-system-for-read nnrss-file-coding-system) + (file-name-coding-system nnmail-pathname-coding-system)) (insert-file-contents file) - (emacs-lisp-mode) - (goto-char (point-min)) - (eval-buffer))) + (eval-region (point-min) (point-max)))) (dolist (e nnrss-group-data) - (gnus-sethash (nth 2 e) e nnrss-group-hashtb) - (if (and (car e) (> nnrss-group-min (car e))) - (setq nnrss-group-min (car e))) - (if (and (car e) (< nnrss-group-max (car e))) - (setq nnrss-group-max (car e))))))) + (gnus-sethash (or (nth 2 e) (nth 6 e)) t nnrss-group-hashtb) + (when (and (car e) (> nnrss-group-min (car e))) + (setq nnrss-group-min (car e))) + (when (and (car e) (< nnrss-group-max (car e))) + (setq nnrss-group-max (car e))))))) = (defun nnrss-save-group-data (group server) (gnus-make-directory nnrss-directory) - (let ((file (expand-file-name - (nnrss-translate-file-chars - (concat group (and server - (not (equal server "")) - "-") - server ".el")) - nnrss-directory))) - (let ((coding-system-for-write 'binary) - print-level print-length) - (with-temp-file file - (insert "(setq nnrss-group-data '" - (prin1-to-string nnrss-group-data) - ")\n"))))) + (let ((coding-system-for-write nnrss-file-coding-system) + (file-name-coding-system nnmail-pathname-coding-system)) + (with-temp-file (nnrss-make-filename group server) + (insert (format ";; -*- coding: %s; -*-\n" + nnrss-file-coding-system)) + (gnus-prin1 `(setq nnrss-group-data ',nnrss-group-data))))) + +(defun nnrss-make-filename (name server) + (expand-file-name + (nnrss-translate-file-chars + (concat name + (and server + (not (equal server "")) + "-") + server + ".el")) + nnrss-directory)) + +(gnus-add-shutdown 'nnrss-close 'gnus) + +(defun nnrss-close () + "Clear internal nnrss variables." + (setq nnrss-group-data nil + nnrss-server-data nil + nnrss-group-hashtb nil + nnrss-group-alist nil)) = ;;; URL interface = @@ -407,20 +499,41 @@ ARTICLE is the article number of the cur (mm-with-unibyte-current-buffer (mm-url-insert url))) = -(defun nnrss-decode-entities-unibyte-string (string) +(defun nnrss-decode-entities-string (string) (if string - (mm-with-unibyte-buffer + (mm-with-multibyte-buffer (insert string) (mm-url-decode-entities-nbsp) (buffer-string)))) = (defalias 'nnrss-insert 'nnrss-insert-w3) = +(defun nnrss-mime-encode-string (string) + (mm-with-multibyte-buffer + (insert string) + (mm-url-decode-entities-nbsp) + (goto-char (point-min)) + (while (re-search-forward "[\t\n ]+" nil t) + (replace-match " ")) + (goto-char (point-min)) + (skip-chars-forward " ") + (delete-region (point-min) (point)) + (goto-char (point-max)) + (skip-chars-forward " ") + (delete-region (point) (point-max)) + (let ((rfc2047-encoding-type 'mime) + rfc2047-encode-max-chars) + (rfc2047-encode-region (point-min) (point-max))) + (goto-char (point-min)) + (while (search-forward "\n" nil t) + (delete-backward-char 1)) + (buffer-string))) + ;;; Snarf functions = (defun nnrss-check-group (group server) - (let (file xml subject url extra changed author - date rss-ns rdf-ns content-ns dc-ns) + (let (file xml subject url extra changed author date + enclosure comments rss-ns rdf-ns content-ns dc-ns) (if (and nnrss-use-local (file-exists-p (setq file (expand-file-name (nnrss-translate-file-chars @@ -431,11 +544,11 @@ ARTICLE is the article number of the cur (second (assoc group nnrss-group-alist)))) (unless url (setq url - (cdr - (assoc 'href - (nnrss-discover-feed - (read-string - (format "URL to search for %s: " group) "http://"= ))))) + (cdr + (assoc 'href + (nnrss-discover-feed + (read-string + (format "URL to search for %s: " group) "http://"))))) (let ((pair (assoc group nnrss-server-data))) (if pair (setcdr (cdr pair) (list url)) @@ -451,12 +564,16 @@ ARTICLE is the article number of the cur content-ns (nnrss-get-namespace-prefix xml "http://purl.org/rss/1.0/m= odules/content/")) (dolist (item (nreverse (nnrss-find-el (intern (concat rss-ns "item"= )) xml))) (when (and (listp item) - (eq (intern (concat rss-ns "item")) (car item)) - (setq url (nnrss-decode-entities-unibyte-string - (nnrss-node-text rss-ns 'link (cddr item)))) - (not (gnus-gethash url nnrss-group-hashtb))) + (string=3D (concat rss-ns "item") (car item)) + (if (setq url (nnrss-decode-entities-string + (nnrss-node-text rss-ns 'link (cddr item)))) + (not (gnus-gethash url nnrss-group-hashtb)) + (setq extra (or (nnrss-node-text content-ns 'encoded item) + (nnrss-node-text rss-ns 'description item))) + (not (gnus-gethash extra nnrss-group-hashtb)))) (setq subject (nnrss-node-text rss-ns 'title item)) - (setq extra (or (nnrss-node-text content-ns 'encoded item) + (setq extra (or extra + (nnrss-node-text content-ns 'encoded item) (nnrss-node-text rss-ns 'description item))) (setq author (or (nnrss-node-text rss-ns 'author item) (nnrss-node-text dc-ns 'creator item) @@ -464,18 +581,43 @@ ARTICLE is the article number of the cur (setq date (or (nnrss-node-text dc-ns 'date item) (nnrss-node-text rss-ns 'pubDate item) (message-make-date))) + (setq comments (nnrss-node-text rss-ns 'comments item)) + (when (setq enclosure (cadr (assq (intern (concat rss-ns "enclosure")) = item))) + (let ((url (cdr (assq 'url enclosure))) + (len (cdr (assq 'length enclosure))) + (type (cdr (assq 'type enclosure))) + (name)) + (setq len + (if (and len (integerp (setq len (string-to-number len)))) + ;; actually already in `ls-lisp-format-file-size' but + ;; probably not worth to require it for one function + (do ((size (/ len 1.0) (/ size 1024.0)) + (post-fixes (list "" "k" "M" "G" "T" "P" "E") + (cdr post-fixes))) + ((< size 1024) + (format "%.1f%s" size (car post-fixes)))) + "0")) + (setq url (or url "")) + (setq name (if (string-match "/\\([^/]*\\)$" url) + (match-string 1 url) + "file")) + (setq type (or type "")) + (setq enclosure (list url name len type)))) (push (list (incf nnrss-group-max) (current-time) url - (and subject (nnrss-decode-entities-unibyte-string subject)) - (and author (nnrss-decode-entities-unibyte-string author)) + (and subject (nnrss-mime-encode-string subject)) + (and author (nnrss-mime-encode-string author)) date - (and extra (nnrss-decode-entities-unibyte-string extra))) + (and extra (nnrss-decode-entities-string extra)) + enclosure + comments) nnrss-group-data) - (gnus-sethash url (car nnrss-group-data) nnrss-group-hashtb) - (setq changed t))) + (gnus-sethash (or url extra) t nnrss-group-hashtb) + (setq changed t)) + (setq extra nil)) (when changed (nnrss-save-group-data group server) (let ((pair (assoc group nnrss-server-data))) @@ -484,6 +626,45 @@ ARTICLE is the article number of the cur (push (list group nnrss-group-max) nnrss-server-data))) (nnrss-save-server-data server)))) = +(defun nnrss-opml-import (opml-file) + "OPML subscriptions import. +Read the file and attempt to subscribe to each Feed in the file." + (interactive "fImport file: ") + (mapcar + (lambda (node) (gnus-group-make-rss-group + (cdr (assq 'xmlUrl (cadr node))))) + (nnrss-find-el 'outline + (progn + (find-file opml-file) + (xml-parse-region (point-min) + (point-max)))))) + +(defun nnrss-opml-export () + "OPML subscription export. +Export subscriptions to a buffer in OPML Format." + (interactive) + (with-current-buffer (get-buffer-create "*OPML Export*") + (mm-set-buffer-file-coding-system 'utf-8) + (insert "\n" + "\n" + "\n" + " \n" + " mySubscriptions\n" + " " (format-time-string "%a, %d %b %Y %T %z") + "\n" + " " user-mail-address "\n" + " " (user-full-name) "\n" + " \n" + " \n") + (dolist (sub nnrss-group-alist) + (insert " \n")) + (insert " \n" + "\n")) + (pop-to-buffer "*OPML Export*") + (when (fboundp 'sgml-mode) + (sgml-mode))) + (defun nnrss-generate-download-script () "Generate a download script in the current buffer. It is useful when `(setq nnrss-use-local t)'." @@ -530,17 +711,17 @@ It is useful when `(setq nnrss-use-local (if changed (nnrss-save-server-data "")))) = -(defun nnrss-format-string (string) - (gnus-replace-in-string (nnrss-string-as-multibyte string) " *\n *" " = ")) - (defun nnrss-node-text (namespace local-name element) (let* ((node (assq (intern (concat namespace (symbol-name local-name))) element)) (text (if (and node (listp node)) (nnrss-node-just-text node) node)) - (cleaned-text (if text (gnus-replace-in-string - text "^[\000-\037\177]+\\|^ +\\| +$" "")))) + (cleaned-text (if text + (gnus-replace-in-string + (gnus-replace-in-string + text "^[\000-\037\177]+\\|^ +\\| +$" "") + "\r\n" "\n")))) (if (string-equal "" cleaned-text) nil cleaned-text))) @@ -551,56 +732,59 @@ It is useful when `(setq nnrss-use-local node)) = (defun nnrss-find-el (tag data &optional found-list) - "Find the all matching elements in the data. Careful with this on -large documents!" - (if (listp data) - (mapcar (lambda (bit) - (if (car-safe bit) - (progn (if (equal tag (car bit)) - (setq found-list - (append found-list - (list bit)))) - (if (and (listp (car-safe (caddr bit))) - (not (stringp (caddr bit)))) - (setq found-list - (append found-list - (nnrss-find-el - tag (caddr bit)))) - (setq found-list - (append found-list - (nnrss-find-el - tag (cddr bit)))))))) - data)) + "Find the all matching elements in the data. +Careful with this on large documents!" + (when (consp data) + (dolist (bit data) + (when (car-safe bit) + (when (equal tag (car bit)) + ;; Old xml.el may return a list of string. + (when (and (consp (caddr bit)) + (stringp (caaddr bit))) + (setcar (cddr bit) (caaddr bit))) + (setq found-list + (append found-list + (list bit)))) + (if (and (consp (car-safe (caddr bit))) + (not (stringp (caddr bit)))) + (setq found-list + (append found-list + (nnrss-find-el + tag (caddr bit)))) + (setq found-list + (append found-list + (nnrss-find-el + tag (cddr bit)))))))) found-list) = (defun nnrss-rsslink-p (el) "Test if the element we are handed is an RSS autodiscovery link." (and (eq (car-safe el) 'link) (string-equal (cdr (assoc 'rel (cadr el))) "alternate") - (or (string-equal (cdr (assoc 'type (cadr el))) = + (or (string-equal (cdr (assoc 'type (cadr el))) "application/rss+xml") (string-equal (cdr (assoc 'type (cadr el))) "text/xml")))) = (defun nnrss-get-rsslinks (data) "Extract the elements that are links to RSS from the parsed dat= a." - (delq nil (mapcar = + (delq nil (mapcar (lambda (el) (if (nnrss-rsslink-p el) el)) (nnrss-find-el 'link data)))) = (defun nnrss-extract-hrefs (data) - "Recursively extract hrefs from a page's source. DATA should be -the output of xml-parse-region or w3-parse-buffer." + "Recursively extract hrefs from a page's source. +DATA should be the output of `xml-parse-region' or +`w3-parse-buffer'." (mapcar (lambda (ahref) (cdr (assoc 'href (cadr ahref)))) (nnrss-find-el 'a data))) = -(defmacro nnrss-match-macro (base-uri item = - onsite-list offsite-list) +(defmacro nnrss-match-macro (base-uri item onsite-list offsite-list) `(cond ((or (string-match (concat "^" ,base-uri) ,item) - (not (string-match "://" ,item))) - (setq ,onsite-list (append ,onsite-list (list ,item)))) - (t (setq ,offsite-list (append ,offsite-list (list ,item)))))) + (not (string-match "://" ,item))) + (setq ,onsite-list (append ,onsite-list (list ,item)))) + (t (setq ,offsite-list (append ,offsite-list (list ,item)))))) = (defun nnrss-order-hrefs (base-uri hrefs) "Given a list of hrefs, sort them using the following priorities: @@ -615,29 +799,28 @@ whether they are `offsite' or `onsite'." (let (rss-onsite-end rdf-onsite-end xml-onsite-end rss-onsite-in rdf-onsite-in xml-onsite-in rss-offsite-end rdf-offsite-end xml-offsite-end - rss-offsite-in rdf-offsite-in xml-offsite-in) - (mapcar (lambda (href) - (if (not (null href)) - (cond ((string-match "\\.rss$" href) - (nnrss-match-macro - base-uri href rss-onsite-end rss-offsite-end)) - ((string-match "\\.rdf$" href) - (nnrss-match-macro = - base-uri href rdf-onsite-end rdf-offsite-end)) - ((string-match "\\.xml$" href) - (nnrss-match-macro - base-uri href xml-onsite-end xml-offsite-end)) - ((string-match "rss" href) - (nnrss-match-macro - base-uri href rss-onsite-in rss-offsite-in)) - ((string-match "rdf" href) - (nnrss-match-macro - base-uri href rdf-onsite-in rdf-offsite-in)) - ((string-match "xml" href) - (nnrss-match-macro - base-uri href xml-onsite-in xml-offsite-in))))) - hrefs) - (append = + rss-offsite-in rdf-offsite-in xml-offsite-in) + (dolist (href hrefs) + (cond ((null href)) + ((string-match "\\.rss$" href) + (nnrss-match-macro + base-uri href rss-onsite-end rss-offsite-end)) + ((string-match "\\.rdf$" href) + (nnrss-match-macro + base-uri href rdf-onsite-end rdf-offsite-end)) + ((string-match "\\.xml$" href) + (nnrss-match-macro + base-uri href xml-onsite-end xml-offsite-end)) + ((string-match "rss" href) + (nnrss-match-macro + base-uri href rss-onsite-in rss-offsite-in)) + ((string-match "rdf" href) + (nnrss-match-macro + base-uri href rdf-onsite-in rdf-offsite-in)) + ((string-match "xml" href) + (nnrss-match-macro + base-uri href xml-onsite-in xml-offsite-in)))) + (append rss-onsite-end rdf-onsite-end xml-onsite-end rss-onsite-in rdf-onsite-in xml-onsite-in rss-offsite-end rdf-offsite-end xml-offsite-end @@ -670,23 +853,23 @@ whether they are `offsite' or `onsite'." ;; - offsite links containing any of the above (let* ((base-uri (progn (string-match ".*://[^/]+/?" url) (match-string 0 url))) - (hrefs (nnrss-order-hrefs = + (hrefs (nnrss-order-hrefs base-uri (nnrss-extract-hrefs parsed-page))) (rss-link nil)) - (while (and (eq rss-link nil) (not (eq hrefs nil))) - (let ((href-data (nnrss-fetch (car hrefs)))) - (if (nnrss-rss-p href-data) - (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.or= g/rss/1.0/"))) - (setq rss-link (nnrss-rss-title-description - rss-ns href-data (car hrefs)))) - (setq hrefs (cdr hrefs))))) - (if rss-link rss-link + (while (and (eq rss-link nil) (not (eq hrefs nil))) + (let ((href-data (nnrss-fetch (car hrefs)))) + (if (nnrss-rss-p href-data) + (let* ((rss-ns (nnrss-get-namespace-prefix href-data "http://purl.= org/rss/1.0/"))) + (setq rss-link (nnrss-rss-title-description + rss-ns href-data (car hrefs)))) + (setq hrefs (cdr hrefs))))) + (if rss-link rss-link = ;; 4. check syndic8 - (nnrss-find-rss-via-syndic8 url)))))))) + (nnrss-find-rss-via-syndic8 url)))))))) = (defun nnrss-find-rss-via-syndic8 (url) - "query syndic8 for the rss feeds it has for the url." + "Query syndic8 for the rss feeds it has for URL." (if (not (locate-library "xml-rpc")) (progn (message "XML-RPC is not available... not checking Syndic8.") @@ -697,22 +880,22 @@ whether they are `offsite' or `onsite'." 'syndic8.FindSites url))) (when feedid - (let* ((feedinfo (xml-rpc-method-call = + (let* ((feedinfo (xml-rpc-method-call "http://www.syndic8.com/xmlrpc.php" 'syndic8.GetFeedInfo feedid)) (urllist - (delq nil = + (delq nil (mapcar (lambda (listinfo) - (if (string-equal = + (if (string-equal (cdr (assoc "status" listinfo)) "Syndicated") (cons (cdr (assoc "sitename" listinfo)) (list (cons 'title - (cdr (assoc = + (cdr (assoc "sitename" listinfo))) (cons 'href (cdr (assoc @@ -721,20 +904,20 @@ whether they are `offsite' or `onsite'." (if (not (> (length urllist) 1)) (cdar urllist) (let ((completion-ignore-case t) - (selection = + (selection (mapcar (lambda (listinfo) - (cons (cdr (assoc "sitename" listinfo)) = - (string-to-int = + (cons (cdr (assoc "sitename" listinfo)) + (string-to-number (cdr (assoc "feedid" listinfo))))) feedinfo))) - (cdr (assoc = + (cdr (assoc (completing-read "Multiple feeds found. Select one: " selection nil t) urllist))))))))) = (defun nnrss-rss-p (data) - "Test if data is an RSS feed. Simply ensures that the first -element is rss or rdf." + "Test if DATA is an RSS feed. +Simply ensures that the first element is rss or rdf." (or (eq (caar data) 'rss) (eq (caar data) 'rdf:RDF))) = @@ -755,13 +938,13 @@ element is rss or rdf." that gives the URI for which you want to retrieve the namespace prefix), return the prefix." (let* ((prefix (car (rassoc uri (cadar el)))) - (nslist (if prefix = + (nslist (if prefix (split-string (symbol-name prefix) ":"))) (ns (cond ((eq (length nslist) 1) ; no prefix given "") ((eq (length nslist) 2) ; extract prefix (cadr nslist))))) - (if (and ns (not (eq ns ""))) + (if (and ns (not (string=3D ns ""))) (concat ns ":") ns))) = = = = 1.4 +25 -36 XEmacs/packages/xemacs-packages/gnus/lisp/nnslashdot= .el = Index: nnslashdot.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/gnus/lisp/nnsla= shdot.el,v retrieving revision 1.3 retrieving revision 1.4 diff -u -p -r1.3 -r1.4 --- nnslashdot.el 2004/09/28 02:21:19 1.3 +++ nnslashdot.el 2005/11/15 03:45:58 1.4 @@ -1,6 +1,8 @@ ;;; nnslashdot.el --- interfacing with Slashdot -;; Copyright (C) 1999, 2000, 2001, 2002, 2003 Free Software Foundation, = Inc. = +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005 Free Software Foundation, Inc. + ;; Author: Lars Magne Ingebrigtsen ;; Keywords: news = @@ -18,8 +20,8 @@ = ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. = ;;; Commentary: = @@ -85,7 +87,7 @@ (nnslashdot-possibly-change-server group server) (condition-case why (unless gnus-nov-is-evil - (nnslashdot-retrieve-headers-1 articles group)) + (nnslashdot-retrieve-headers-1 articles group)) (search-failed (nnslashdot-lose why)))) = (deffoo nnslashdot-retrieve-headers-1 (articles group) @@ -140,41 +142,30 @@ (setq article (if (and article (< start article)) article start)) (goto-char point) (while (re-search-forward - "<\\(b\\|H4\\)>\\([^<]+\\)= .*score:\\([^)]+\\))" + "\\([^<]+\\).*\n.*score:\\([^)]+\\))" nil t) (setq cid (match-string 1) - subject (match-string 3) - score (match-string 5)) + subject (match-string 2) + score (match-string 3)) (unless (assq article (nth 4 entry)) (setcar (nthcdr 4 entry) (cons (cons article cid) (nth 4 entry))) (setq changed t)) (when (string-match "^Re: *" subject) (setq subject (concat "Re: " (substring subject (match-end 0))))) - (setq subject (mm-url-decode-entities-string subject)) - (search-forward "
    ") - (cond = - ((looking-at - "by[ \t\n]+]+>\\([^<]+\\)[ \t\n]*(\\(<[^>]+>\\)*\\([^<>= )]+\\))") - (goto-char (- (match-end 0) 5)) - (setq from (concat - (mm-url-decode-entities-string (match-string 1)) - " <" (match-string 3) ">"))) - ((looking-at "by[ \t\n]+]+>\\([^<(]+\\) (\\([0-9]+\\))") - (goto-char (- (match-end 0) 5)) - (setq from (concat = - (mm-url-decode-entities-string (match-string 1)) - " <" (match-string 2) ">"))) - ((looking-at "by \\([^<>]*\\)[\t\n\r ]+on ") - (goto-char (- (match-end 0) 5)) - (setq from (mm-url-decode-entities-string (match-string 1)))) - (t - (setq from ""))) + (setq subject (mm-url-decode-entities-string subject) + from "") + (when (re-search-forward "by[ \t\n]+<[^>]+>\\([^<(]+\\)" nil t) + (setq from + (concat + (mm-url-decode-entities-string (match-string 1)) + " "))) (search-forward "on ") (setq date (nnslashdot-date-to-date - (buffer-substring (point) (progn (skip-chars-forward "^()<>\n\r") (= point))))) - (setq lines (/ (abs (- (search-forward ""))) + (buffer-substring + (point) (progn (skip-chars-forward "^()<>\n\r") (point))))) + (setq lines (/ (abs (- (search-forward ""))) 70)) (if (not (re-search-forward ".*cid=3D\\([0-9]+\\)\">Parent" nil t)) @@ -253,23 +244,21 @@ (when (numberp article) (if (=3D article 1) (progn - (re-search-forward - "Posted by") - (search-forward "
    ") + (search-forward "Posted by") + (search-forward "
    ") (setq contents (buffer-substring (point) (progn - (re-search-forward - "\\| fix PAGE_SIZE -#endif -#undef PAGE_SIZE -#define CPP_PAGE_SIZE (1 << CPP_LOG_PAGE_SIZE) -#define LOG_PAGE_SIZE ((EMACS_INT) CPP_LOG_PAGE_SIZE) -#define PAGE_SIZE ((EMACS_INT) CPP_PAGE_SIZE) -#define PAGE_SIZE_DIV_2 (PAGE_SIZE >> 1) - - -/* NOT USED ANYMORE */ -#ifdef USE_EXPONENTIAL_USED_LIST_GROWTH -/* used heap list logarithms */ -#if USED_LIST_LOWER_THRESHOLD =3D=3D 8 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 3 -#endif -#if USED_LIST_LOWER_THRESHOLD =3D=3D 16 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 4 -#endif -#if USED_LIST_LOWER_THRESHOLD =3D=3D 32 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 5 -#endif -#if USED_LIST_LOWER_THRESHOLD =3D=3D 64 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 6 -#endif -#if USED_LIST_LOWER_THRESHOLD =3D=3D 128 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 7 -#endif -#if USED_LIST_LOWER_THRESHOLD =3D=3D 256 -# define CPP_LOG_USED_LIST_LOWER_THRESHOLD 8 -#endif -#ifndef CPP_LOG_USED_LIST_LOWER_THRESHOLD ---> fix USED_LIST_LOWER_THRESHOLD -#endif -#define LOG_USED_LIST_LOWER_THRESHOLD CPP_LOG_USED_LIST_LOWER_THRESHOLD -#endif /* USE_EXPONENTIAL_USED_LIST_GROWTH */ = -/* used heap list count */ -#define N_USED_PAGE_LISTS (((USED_LIST_UPPER_THRESHOLD \ - - USED_LIST_MIN_OBJECT_SIZE) \ - / USED_LIST_LIN_STEP) + 1 ) + 1 +=0C +/*--- values depending on PAGE_SIZE ------------------------------------*/ = -/* unmanaged memory list count */ -#define N_UNMANAGED_PAGE_LISTS (((UNMANAGED_LIST_UPPER_THRESHOLD \ - - UNMANAGED_LIST_MIN_OBJECT_SIZE) \ - / UNMANAGED_LIST_LIN_STEP) + 1 ) + 1 - -/* NOT USED ANYMORE */ -#ifdef USE_EXPONENTIAL_USED_LIST_GROWTH -#define N_USED_PAGE_LISTS_LIN (((USED_LIST_LOWER_THRESHOLD \ - - USED_LIST_MIN_OBJECT_SIZE) \ - / USED_LIST_LIN_STEP) + 1 ) -#define N_USED_PAGE_LISTS_EXP \ - (LOG_PAGE_SIZE - LOG_USED_LIST_LOWER_THRESHOLD) - -#define N_USED_PAGE_LISTS \ - (N_USED_PAGE_LISTS_LIN + N_USED_PAGE_LISTS_EXP + 1) -#endif /* USE_EXPONENTIAL_USED_LIST_GROWTH */ +/* initialized in init_mc_allocator () */ +static EMACS_INT log_page_size; +static EMACS_INT page_size_div_2; = -/* free heap list count */ -#define N_FREE_PAGE_LISTS (((FREE_LIST_UPPER_THRESHOLD \ - - FREE_LIST_LOWER_THRESHOLD) \ - / FREE_LIST_LIN_STEP) \ - + FREE_LIST_LOWER_THRESHOLD) +#undef PAGE_SIZE +#define PAGE_SIZE SYS_PAGE_SIZE +#define LOG_PAGE_SIZE log_page_size +#define PAGE_SIZE_DIV_2 page_size_div_2 = = /* Constants for heap address to page header mapping. */ @@ -237,8 +190,7 @@ Boston, MA 02111-1307, USA. */ =0C /*--- structs and typedefs ---------------------------------------------*/ = -/* Links the free lists (mark_bit_free_list, page_header_free_list, - cell free list). */ +/* Links the free lists (mark_bit_free_list and cell free list). */ typedef struct free_link { struct lrecord_header lheader; @@ -246,7 +198,7 @@ typedef struct free_link } free_link; = = -/* Header for pages. They are hold in a doubly linked list. */ +/* Header for pages. They are held in a doubly linked list. */ typedef struct page_header { struct page_header *next; /* next page_header */ @@ -263,7 +215,11 @@ typedef struct page_header mark_bits holds the pointer to this area. Is the number of objects smaller than BITS_PER_EMACS_INT, the mark bits are held in the mark_bit EMACS_INT directly, without an additional indirection. */ - char *mark_bits; /* pointer to mark bits */ + unsigned int black_bit:1; /* objects on page are black */ + unsigned int dirty_bit:1; /* page is dirty */ + unsigned int protection_bit:1; /* page is write protected */ + unsigned int array_bit:1; /* page holds arrays */ + Rawbyte *mark_bits; /* pointer to mark bits */ void *heap_space; /* pointer to heap, where objects are stored */ } page_header; @@ -272,7 +228,6 @@ typedef struct page_header /* Different list types. */ enum list_type_enum { USED_LIST, - UNMANAGED_LIST, FREE_LIST }; = @@ -339,20 +294,19 @@ typedef struct mc_allocator_globals_type = /* Holds all allocated pages, each object size class in its separate lis= t, to guarantee fast allocation on partially filled pages. */ - page_list_header used_heap_pages[N_USED_PAGE_LISTS]; - - /* Holds all unmanaged pages. */ - page_list_header unmanaged_heap_pages[N_UNMANAGED_PAGE_LISTS]; + page_list_header *used_heap_pages; = /* Holds all free pages in the heap. N multiples of PAGE_SIZE are kept on the Nth free list. Contiguos pages are coalesced. */ page_list_header free_heap_pages[N_FREE_PAGE_LISTS]; = /* ptr lookup table */ - level_2_lookup_tree *ptr_lookup_table[LEVEL1_SIZE]; + level_2_lookup_tree **ptr_lookup_table; = +#ifndef BLOCKTYPE_ALLOC_PAGE_HEADER /* page header free list */ free_link *page_header_free_list; +#endif /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ = #ifdef MEMORY_USAGE_STATS EMACS_INT malloced_bytes; @@ -369,9 +323,6 @@ mc_allocator_globals_type mc_allocator_g #define USED_HEAP_PAGES(i) \ ((page_list_header*) &mc_allocator_globals.used_heap_pages[i]) = -#define UNMANAGED_HEAP_PAGES(i) \ - ((page_list_header*) &mc_allocator_globals.unmanaged_heap_pages[i]) - #define FREE_HEAP_PAGES(i) \ ((page_list_header*) &mc_allocator_globals.free_heap_pages[i]) = @@ -398,6 +349,10 @@ mc_allocator_globals_type mc_allocator_g # define PH_CELL_SIZE(ph) PH (ph)->cell_size # define PH_CELLS_ON_PAGE(ph) PH (ph)->cells_on_page # define PH_CELLS_USED(ph) PH (ph)->cells_used +# define PH_BLACK_BIT(ph) PH (ph)->black_bit +# define PH_DIRTY_BIT(ph) PH (ph)->dirty_bit +# define PH_PROTECTION_BIT(ph) PH (ph)->protection_bit +# define PH_ARRAY_BIT(ph) PH (ph)->array_bit # define PH_MARK_BITS(ph) PH (ph)->mark_bits # define PH_HEAP_SPACE(ph) PH (ph)->heap_space #define PH_LIST_TYPE(ph) PLH_LIST_TYPE (PH_PLH (ph)) @@ -412,7 +367,9 @@ mc_allocator_globals_type mc_allocator_g #define HEAP_SECTION(index) mc_allocator_globals.heap_sections[index] #define N_HEAP_SECTIONS mc_allocator_globals.n_heap_sections = +#ifndef BLOCKTYPE_ALLOC_PAGE_HEADER #define PAGE_HEADER_FREE_LIST mc_allocator_globals.page_header_free_list +#endif /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ = #define NEXT_FREE(free_list) ((free_link*) free_list)->next_free #define FREE_LIST(free_list) (free_link*) (free_list) @@ -444,9 +401,13 @@ mc_allocator_globals_type mc_allocator_g #define PH_ON_USED_LIST_P(ph) \ (ph && PH_PLH (ph) && (PLH_LIST_TYPE (PH_PLH (ph)) =3D=3D USED_LIST)) = -#define PH_ON_UNMANAGED_LIST_P(ph) \ - (ph && PH_PLH (ph) && (PLH_LIST_TYPE (PH_PLH (ph)) =3D=3D UNMANAGED_LIST= )) = +/* Number of mark bits: minimum 1, maximum 8. */ +#ifdef NEW_GC +#define N_MARK_BITS 2 +#else /* not NEW_GC */ +#define N_MARK_BITS 1 +#endif /* not NEW_GC */ = = =0C @@ -455,12 +416,6 @@ mc_allocator_globals_type mc_allocator_g /************************************************************************/ = = -/* ###TODO### */ -#if 1 -# define ALLOC_MB_UNMANAGED 1 -#endif - - /*--- misc functions ---------------------------------------------------*/ = /* moved here from alloc.c */ @@ -483,7 +438,7 @@ deadbeef_memory (void *ptr, Bytecount si static void visit_all_used_page_headers (void (*f) (page_header *ph)) { - int i; + EMACS_INT i; for (i =3D 0; i < N_USED_PAGE_LISTS; i++) if (PLH_FIRST (USED_HEAP_PAGES (i))) { @@ -507,7 +462,7 @@ visit_all_used_page_headers (void (*f) ( static void set_lookup_table (void *ptr, page_header *ph) { - int l1_index =3D L1_INDEX (ptr); + EMACS_INT l1_index =3D L1_INDEX (ptr); level_2_lookup_tree *l2 =3D PTR_LOOKUP_TABLE (l1_index); #ifdef USE_HASH_TABLE while ((l2) && (LEVEL2_KEY (l2) !=3D l1_index)) @@ -537,7 +492,7 @@ set_lookup_table (void *ptr, page_header static void unset_lookup_table (void *ptr) { - int l1_index =3D L1_INDEX (ptr); + EMACS_INT l1_index =3D L1_INDEX (ptr); level_2_lookup_tree *l2 =3D PTR_LOOKUP_TABLE (l1_index); #ifdef USE_HASH_TABLE while ((l2) && (LEVEL2_KEY (l2) !=3D l1_index)) @@ -554,7 +509,7 @@ unset_lookup_table (void *ptr) static page_header * get_page_header_internal (void *ptr) { - int l1_index =3D L1_INDEX (ptr); + EMACS_INT l1_index =3D L1_INDEX (ptr); level_2_lookup_tree *l2 =3D PTR_LOOKUP_TABLE (l1_index); #ifdef USE_HASH_TABLE while ((l2) && (LEVEL2_KEY (l2) !=3D l1_index)) @@ -569,7 +524,7 @@ get_page_header_internal (void *ptr) static page_header * get_page_header (void *ptr) { - int l1_index =3D L1_INDEX (ptr); + EMACS_INT l1_index =3D L1_INDEX (ptr); level_2_lookup_tree *l2 =3D PTR_LOOKUP_TABLE (l1_index); assert (l2); #ifdef USE_HASH_TABLE @@ -580,14 +535,14 @@ get_page_header (void *ptr) return LEVEL2 (l2, L2_INDEX (ptr)); } = - /* Returns the mark bit index of a given heap address. */ static EMACS_INT get_mark_bit_index (void *ptr, page_header *ph) { EMACS_INT cell_size =3D PH_CELL_SIZE (ph); if (cell_size) - return (((EMACS_INT) ptr - (EMACS_INT)(PH_HEAP_SPACE (ph))) / cell_siz= e); + return (((EMACS_INT) ptr - (EMACS_INT)(PH_HEAP_SPACE (ph))) / cell_siz= e) = + * N_MARK_BITS; else /* only one object on page */ return 0; } @@ -597,9 +552,9 @@ get_mark_bit_index (void *ptr, page_head static void add_pages_to_lookup_table (page_header *ph, EMACS_INT n_pages) { - char *p =3D (char*) PH_HEAP_SPACE (ph); + Rawbyte *p =3D (Rawbyte *) PH_HEAP_SPACE (ph); EMACS_INT end_of_section =3D (EMACS_INT) p + (PAGE_SIZE * n_pages); - for (p =3D (char*) PH_HEAP_SPACE (ph); + for (p =3D (Rawbyte *) PH_HEAP_SPACE (ph); (EMACS_INT) p < end_of_section; p +=3D PAGE_SIZE) set_lookup_table (p, ph); } @@ -609,7 +564,7 @@ add_pages_to_lookup_table (page_header * static void init_lookup_table (void) { - int i; + EMACS_INT i; for (i =3D 0; i < LEVEL1_SIZE; i++) PTR_LOOKUP_TABLE (i) =3D 0; } @@ -619,35 +574,32 @@ init_lookup_table (void) =0C /*--- mark bits --------------------------------------------------------*/ = -/* Number of mark bits: minimum 1, maximum 8. */ -#define N_MARK_BITS 1 - /*--- bit operations --- */ = /* Allocates a bit array of length bits. */ -static char * +static Rawbyte * alloc_bit_array(size_t bits) { -#ifdef ALLOC_MB_UNMANAGED - size_t size =3D ((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof(char); + Rawbyte *bit_array; +#ifdef USE_MARK_BITS_FREE_LIST + size_t size =3D ((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof (Rawbyte); = +#else /* not USE_MARK_BITS_FREE_LIST */ + size_t size =3D = + ALIGN_FOR_TYPE (((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof (Rawbyte), = + Rawbyte *); +#endif /* not USE_MARK_BITS_FREE_LIST */ if (size < sizeof (free_link)) size =3D sizeof (free_link); - return (char *) mc_alloc_unmanaged (size); -#else /* not ALLOC_MB_UNMANAGED */ - size_t size =3D ((bits + CHAR_BIT - 1) / CHAR_BIT) * sizeof(char); - char *bit_array; - if (size < sizeof (free_link)) size =3D sizeof (free_link); - bit_array =3D (char*) xmalloc_and_zero (size); #ifdef MEMORY_USAGE_STATS MC_MALLOCED_BYTES +=3D malloced_storage_size (0, size, 0); #endif + bit_array =3D (Rawbyte *) xmalloc_and_zero (size); return bit_array; -#endif /* not ALLOC_MB_UNMANAGED */ } = = /* Returns the bit value at pos. */ static EMACS_INT -get_bit (char *bit_array, EMACS_INT pos) +get_bit (Rawbyte *bit_array, EMACS_INT pos) { #if N_MARK_BITS > 1 EMACS_INT result =3D 0; @@ -656,8 +608,8 @@ get_bit (char *bit_array, EMACS_INT pos) bit_array +=3D pos / CHAR_BIT; #if N_MARK_BITS > 1 for (i =3D 0; i < N_MARK_BITS; i++) - result |=3D (*bit_array & (1 << ((pos + i) % CHAR_BIT))); - return result >> pos; + result |=3D ((*bit_array & (1 << ((pos + i) % CHAR_BIT))) !=3D 0) << i; + return result; #else return (*bit_array & (1 << (pos % CHAR_BIT))) !=3D 0; #endif @@ -666,10 +618,9 @@ get_bit (char *bit_array, EMACS_INT pos) = /* Bit_Arrays bit at pos to val. */ static void -set_bit(char *bit_array, EMACS_INT pos, EMACS_INT val) +set_bit (Rawbyte *bit_array, EMACS_INT pos, EMACS_INT val) { #if N_MARK_BITS > 1 - EMACS_INT result =3D 0; EMACS_INT i; #endif bit_array +=3D pos / CHAR_BIT; @@ -689,21 +640,23 @@ set_bit(char *bit_array, EMACS_INT pos, = = = /*--- mark bit functions ---*/ -#define USE_PNTR_MARK_BITS(ph) (PH_CELLS_ON_PAGE (ph) > BITS_PER_EMACS_INT) -#define USE_WORD_MARK_BITS(ph) (PH_CELLS_ON_PAGE (ph) <=3D BITS_PER_EMACS_= INT) +#define USE_PNTR_MARK_BITS(ph) \ + ((PH_CELLS_ON_PAGE (ph) * N_MARK_BITS) > BITS_PER_EMACS_INT) +#define USE_WORD_MARK_BITS(ph) \ + ((PH_CELLS_ON_PAGE (ph) * N_MARK_BITS) <=3D BITS_PER_EMACS_INT) = -#define GET_BIT_WORD(b, p) get_bit ((char*) &b, p) +#define GET_BIT_WORD(b, p) get_bit ((Rawbyte *) &b, p) #define GET_BIT_PNTR(b, p) get_bit (b, p) = -#define SET_BIT_WORD(b, p, v) set_bit ((char*) &b, p, v) +#define SET_BIT_WORD(b, p, v) set_bit ((Rawbyte *) &b, p, v) #define SET_BIT_PNTR(b, p, v) set_bit (b, p, v) = #define ZERO_MARK_BITS_WORD(ph) PH_MARK_BITS (ph) =3D 0 -#define ZERO_MARK_BITS_PNTR(ph) \ -do { \ - memset (PH_MARK_BITS (ph), '\0', \ - (PH_CELLS_ON_PAGE (ph) + CHAR_BIT - 1) \ - / CHAR_BIT * sizeof(char)); \ +#define ZERO_MARK_BITS_PNTR(ph) \ +do { \ + memset (PH_MARK_BITS (ph), '\0', \ + ((PH_CELLS_ON_PAGE (ph) * N_MARK_BITS) \ + + CHAR_BIT - 1) / CHAR_BIT * sizeof (Rawbyte)); \ } while (0) = #define GET_BIT(bit, ph, p) \ @@ -733,17 +686,21 @@ do { \ = /* Allocates mark-bit space either from a free list or from the OS for the given page header. */ -static char * +static Rawbyte * alloc_mark_bits (page_header *ph) { - char *result; + Rawbyte *result; +#ifdef USE_MARK_BITS_FREE_LIST if (PH_MARK_BIT_FREE_LIST (ph) =3D=3D 0) - result =3D (char*) alloc_bit_array (PH_CELLS_ON_PAGE (ph) * N_MARK_BIT= S); + result =3D (Rawbyte *) alloc_bit_array (PH_CELLS_ON_PAGE (ph) * N_MARK= _BITS); else { - result =3D (char*) PH_MARK_BIT_FREE_LIST (ph); + result =3D (Rawbyte *) PH_MARK_BIT_FREE_LIST (ph); PH_MARK_BIT_FREE_LIST (ph) =3D NEXT_FREE (result); } +#else /* not USE_MARK_BITS_FREE_LIST */ + result =3D (Rawbyte *) alloc_bit_array (PH_CELLS_ON_PAGE (ph) * N_MARK_B= ITS); +#endif /* not USE_MARK_BITS_FREE_LIST */ return result; } = @@ -752,15 +709,13 @@ alloc_mark_bits (page_header *ph) static void free_mark_bits (page_header *ph) { -#ifdef ALLOC_MB_UNMANAGED +#ifdef USE_MARK_BITS_FREE_LIST + NEXT_FREE (PH_MARK_BITS (ph)) =3D PH_MARK_BIT_FREE_LIST (ph); + PH_MARK_BIT_FREE_LIST (ph) =3D FREE_LIST (PH_MARK_BITS (ph)); +#else /* not USE_MARK_BITS_FREE_LIST */ if (PH_MARK_BITS (ph)) - mc_free (PH_MARK_BITS (ph)); -#else /* not ALLOC_MB_UNMANAGED */ - if (PH_MARK_BITS (ph)) { - NEXT_FREE (PH_MARK_BITS (ph)) =3D PH_MARK_BIT_FREE_LIST (ph); - PH_MARK_BIT_FREE_LIST (ph) =3D FREE_LIST (PH_MARK_BITS (ph)); - } -#endif /* not ALLOC_MB_UNMANAGED */ + free (PH_MARK_BITS (ph)); +#endif /* not USE_MARK_BITS_FREE_LIST */ } = = @@ -818,6 +773,11 @@ set_mark_bit (void *ptr, EMACS_INT value assert (ph && PH_ON_USED_LIST_P (ph)); if (ph) { +#ifdef NEW_GC + if (value =3D=3D BLACK) + if (!PH_BLACK_BIT (ph)) + PH_BLACK_BIT (ph) =3D 1; +#endif /* NEW_GC */ SET_BIT (ph, get_mark_bit_index (ptr, ph), value); } } @@ -827,11 +787,29 @@ set_mark_bit (void *ptr, EMACS_INT value =0C /*--- page header functions --------------------------------------------*/ = +#ifdef BLOCKTYPE_ALLOC_PAGE_HEADER +#include "blocktype.h" + +struct page_header_blocktype = +{ = + Blocktype_declare (page_header); = +} *the_page_header_blocktype; +#endif /* BLOCKTYPE_ALLOC_PAGE_HEADER */ + /* Allocates a page header either from a free list or from the OS. */ static page_header * alloc_page_header (void) { +#ifdef BLOCKTYPE_ALLOC_PAGE_HEADER page_header *result; +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES +=3D malloced_storage_size (0, sizeof (page_header), 0= ); +#endif + result =3D Blocktype_alloc (the_page_header_blocktype); + ZERO_PAGE_HEADER (result); + return result; +#else /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ + page_header *result; if (PAGE_HEADER_FREE_LIST =3D=3D 0) { result =3D = @@ -839,7 +817,6 @@ alloc_page_header (void) #ifdef MEMORY_USAGE_STATS MC_MALLOCED_BYTES +=3D malloced_storage_size (0, sizeof (page_header= ), 0); #endif - } else { @@ -847,6 +824,7 @@ alloc_page_header (void) PAGE_HEADER_FREE_LIST =3D NEXT_FREE (result); } return result; +#endif /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ } = = @@ -854,11 +832,15 @@ alloc_page_header (void) static void free_page_header (page_header *ph) { +#ifdef BLOCKTYPE_ALLOC_PAGE_HEADER + Blocktype_free (the_page_header_blocktype, ph); +#else /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ #if ZERO_MEM ZERO_PAGE_HEADER (ph); #endif NEXT_FREE (ph) =3D PAGE_HEADER_FREE_LIST; PAGE_HEADER_FREE_LIST =3D FREE_LIST (ph); +#endif /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ } = = @@ -940,14 +922,22 @@ static int get_used_list_index (size_t size) { if (size <=3D USED_LIST_MIN_OBJECT_SIZE) - return 0; - if (size <=3D USED_LIST_UPPER_THRESHOLD) - return ((size - USED_LIST_MIN_OBJECT_SIZE - 1) - / USED_LIST_LIN_STEP) + 1; + { + // printf ("size %d -> index %d\n", size, 0); + return 0; + } + if (size <=3D (size_t) USED_LIST_UPPER_THRESHOLD) + { + // printf ("size %d -> index %d\n", size, = + // ((size - USED_LIST_MIN_OBJECT_SIZE - 1) + // / USED_LIST_LIN_STEP) + 1); + return ((size - USED_LIST_MIN_OBJECT_SIZE - 1) + / USED_LIST_LIN_STEP) + 1; + } + // printf ("size %d -> index %d\n", size, N_USED_PAGE_LISTS - 1); return N_USED_PAGE_LISTS - 1; } = - /* Returns the size of the used heap list according to given index. */ static size_t get_used_list_size_value (int used_index) @@ -958,32 +948,8 @@ get_used_list_size_value (int used_index } = = -/* Returns the index of the used heap list according to given size. */ -static int -get_unmanaged_list_index (size_t size) -{ - if (size <=3D UNMANAGED_LIST_MIN_OBJECT_SIZE) - return 0; - if (size <=3D UNMANAGED_LIST_UPPER_THRESHOLD) - return ((size - UNMANAGED_LIST_MIN_OBJECT_SIZE - 1) - / UNMANAGED_LIST_LIN_STEP) + 1; - return N_UNMANAGED_PAGE_LISTS - 1; -} - - -/* Returns the size of the unmanaged heap list according to given index. */ -static size_t -get_unmanaged_list_size_value (int unmanaged_index) -{ - if (unmanaged_index < N_UNMANAGED_PAGE_LISTS - 1) - return (unmanaged_index * UNMANAGED_LIST_LIN_STEP) = - + UNMANAGED_LIST_MIN_OBJECT_SIZE; - return 0; -} - - /* Returns the index of the free heap list according to given size. */ -static int +static EMACS_INT get_free_list_index (EMACS_INT n_pages) { if (n_pages =3D=3D 0) @@ -1000,7 +966,7 @@ get_free_list_index (EMACS_INT n_pages) = /* Returns the size in number of pages of the given free list at index. */ static size_t -get_free_list_size_value (int free_index) +get_free_list_size_value (EMACS_INT free_index) { if (free_index < FREE_LIST_LOWER_THRESHOLD) return free_index + 1; @@ -1038,8 +1004,8 @@ mc_alloced_storage_size (Bytecount claim static EMACS_INT free_heap_section (page_header *ph) { - int i; - int removed =3D 0; + EMACS_INT i; + EMACS_INT removed =3D 0; for (i =3D 0; i < N_HEAP_SECTIONS; i++) if (!removed) { @@ -1220,22 +1186,23 @@ expand_heap (EMACS_INT needed_pages) /*--- used heap functions ----------------------------------------------*/ /* Installs initial free list. */ static void -install_cell_free_list (page_header *ph) +install_cell_free_list (page_header *ph, EMACS_INT elemcount) { - char *p; - int i; + Rawbyte *p; + EMACS_INT i; EMACS_INT cell_size =3D PH_CELL_SIZE (ph); /* write initial free list if cell_size is < PAGE_SIZE */ - p =3D (char *) PH_HEAP_SPACE (ph); + p =3D (Rawbyte *) PH_HEAP_SPACE (ph); for (i =3D 0; i < PH_CELLS_ON_PAGE (ph) - 1; i++) { #ifdef ERROR_CHECK_GC assert (!LRECORD_FREE_P (p)); MARK_LRECORD_AS_FREE (p); #endif - NEXT_FREE (p) =3D FREE_LIST (p + cell_size); + if (elemcount =3D=3D 1) + NEXT_FREE (p) =3D FREE_LIST (p + cell_size); set_lookup_table (p, ph); - p +=3D cell_size; + p +=3D cell_size; } #ifdef ERROR_CHECK_GC assert (!LRECORD_FREE_P (p)); @@ -1263,7 +1230,7 @@ remove_cell_free_list (page_header *ph) /* Installs a new page and hooks it into given page_list_header. */ static page_header * install_page_in_used_list (page_header *ph, page_list_header *plh, = - size_t size, int managed) + size_t size, EMACS_INT elemcount) { /* add to list */ add_page_header_to_plh (ph, plh); @@ -1273,16 +1240,21 @@ install_page_in_used_list (page_header * PH_CELL_SIZE (ph) =3D PLH_SIZE (plh); else PH_CELL_SIZE (ph) =3D size; - PH_CELLS_ON_PAGE (ph) =3D (PAGE_SIZE * PH_N_PAGES (ph)) / PH_CELL_SIZE (= ph); + if (elemcount =3D=3D 1) + PH_CELLS_ON_PAGE (ph) =3D (PAGE_SIZE * PH_N_PAGES (ph)) / PH_CELL_SIZE= (ph); + else + { + PH_CELLS_ON_PAGE (ph) =3D elemcount; + PH_ARRAY_BIT (ph) =3D 1; + } = /* init cell count */ PH_CELLS_USED (ph) =3D 0; = /* install mark bits and initialize cell free list */ - if (managed) - install_mark_bits (ph); + install_mark_bits (ph); = - install_cell_free_list (ph); + install_cell_free_list (ph, elemcount); = #ifdef MEMORY_USAGE_STATS PLH_TOTAL_CELLS (plh) +=3D PH_CELLS_ON_PAGE (ph); @@ -1299,6 +1271,11 @@ remove_page_from_used_list (page_header = { page_list_header *plh =3D PH_PLH (ph); = +#ifdef NEW_GC + if (gc_in_progress && PH_PROTECTION_BIT (ph)) ABORT(); + /* cleanup: remove memory protection, zero page_header bits. */ +#endif /* not NEW_GC */ + #ifdef MEMORY_USAGE_STATS PLH_TOTAL_CELLS (plh) -=3D PH_CELLS_ON_PAGE (ph); PLH_TOTAL_SPACE (plh) -=3D PAGE_SIZE * PH_N_PAGES (ph); @@ -1377,7 +1354,7 @@ static page_header * allocate_page_from_free_list (EMACS_INT needed_pages) { page_header *ph =3D 0; - int i; + EMACS_INT i; for (i =3D get_free_list_index (needed_pages); i < N_FREE_PAGE_LISTS; i+= +) if ((ph =3D find_free_page_first_fit (needed_pages, PLH_FIRST (FREE_HEAP_PAGES (i)))) = !=3D 0) @@ -1396,15 +1373,15 @@ allocate_page_from_free_list (EMACS_INT = = /* Allocates a new page, either from free list or by expanding the heap. */ static page_header * -allocate_new_page (page_list_header *plh, size_t size, int managed) +allocate_new_page (page_list_header *plh, size_t size, EMACS_INT elemcount) { - EMACS_INT needed_pages =3D BYTES_TO_PAGES (size); + EMACS_INT needed_pages =3D BYTES_TO_PAGES (size * elemcount); /* first check free list */ page_header *result =3D allocate_page_from_free_list (needed_pages); if (!result) /* expand heap */ result =3D expand_heap (needed_pages); - install_page_in_used_list (result, plh, size, managed); + install_page_in_used_list (result, plh, size, elemcount); return result; } = @@ -1412,63 +1389,56 @@ allocate_new_page (page_list_header *plh /* Selects the correct size class, tries to allocate a cell of this size from the free list, if this fails, a new page is allocated. */ static void * -mc_alloc_1 (size_t size, int managed) +mc_alloc_1 (size_t size, EMACS_INT elemcount) { page_list_header *plh =3D 0; page_header *ph =3D 0; void *result =3D 0; = - if (managed) - plh =3D USED_HEAP_PAGES (get_used_list_index (size)); - else - plh =3D UNMANAGED_HEAP_PAGES (get_unmanaged_list_index (size)); + plh =3D USED_HEAP_PAGES (get_used_list_index (size)); = if (size =3D=3D 0) return 0; - if (size < PAGE_SIZE_DIV_2) + if ((elemcount =3D=3D 1) && (size < (size_t) PAGE_SIZE_DIV_2)) /* first check any free cells */ ph =3D allocate_cell (plh); if (!ph) /* allocate a new page */ - ph =3D allocate_new_page (plh, size, managed); + ph =3D allocate_new_page (plh, size, elemcount); = /* return first element of free list and remove it from the list */ result =3D (void*) PH_FREE_LIST (ph); PH_FREE_LIST (ph) =3D NEXT_FREE (PH_FREE_LIST (ph)); = - memset (result, '\0', size); - if (managed) - MARK_LRECORD_AS_FREE (result); + memset (result, '\0', (size * elemcount)); + MARK_LRECORD_AS_FREE (result); = /* bump used cells counter */ - PH_CELLS_USED (ph)++; + PH_CELLS_USED (ph) +=3D elemcount; = #ifdef MEMORY_USAGE_STATS - PLH_USED_CELLS (plh)++; - if (managed) - PLH_USED_SPACE (plh) +=3D size; - else - PLH_USED_SPACE (plh) +=3D PLH_SIZE (plh); + PLH_USED_CELLS (plh) +=3D elemcount; + PLH_USED_SPACE (plh) +=3D size * elemcount; #endif = return result; } = +/* Array allocation. */ void * -mc_alloc (size_t size) +mc_alloc_array (size_t size, EMACS_INT elemcount) { - return mc_alloc_1 (size, 1); + return mc_alloc_1 (size, elemcount); } = void * -mc_alloc_unmanaged (size_t size) +mc_alloc (size_t size) { - return mc_alloc_1 (size, 0); + return mc_alloc_1 (size, 1); } = = - =0C /*--- sweep & free & finalize-------------------------------------------*/ = @@ -1512,7 +1482,11 @@ mark_free_list (page_header *ph) free_link *fl =3D PH_FREE_LIST (ph); while (fl) { +#ifdef NEW_GC + SET_BIT (ph, get_mark_bit_index (fl, ph), BLACK); +#else /* not NEW_GC */ SET_BIT (ph, get_mark_bit_index (fl, ph), 1); +#endif /* not NEW_GC */ fl =3D NEXT_FREE (fl); } } @@ -1529,14 +1503,31 @@ finalize_page (page_header *ph) EMACS_INT heap_space_step =3D PH_CELL_SIZE (ph); EMACS_INT mark_bit =3D 0; EMACS_INT mark_bit_max_index =3D PH_CELLS_ON_PAGE (ph); - int bit =3D 0; + unsigned int bit =3D 0; = mark_free_list (ph); = +#ifdef NEW_GC + /* ARRAY_BIT_HACK */ + if (PH_ARRAY_BIT (ph)) + for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) + { + GET_BIT (bit, ph, mark_bit * N_MARK_BITS); + if (bit) + { + return; + } + } +#endif /* NEW_GC */ + for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) { - GET_BIT (bit, ph, mark_bit); - if (!bit) = + GET_BIT (bit, ph, mark_bit * N_MARK_BITS); +#ifdef NEW_GC + if (bit =3D=3D WHITE) = +#else /* not NEW_GC */ + if (bit =3D=3D 0) = +#endif /* not NEW_GC */ { EMACS_INT ptr =3D (heap_space + (heap_space_step * mark_bit)); MC_ALLOC_CALL_FINALIZER ((void *) ptr); @@ -1559,8 +1550,6 @@ finalize_page_for_disksave (page_header = EMACS_INT mark_bit =3D 0; EMACS_INT mark_bit_max_index =3D PH_CELLS_ON_PAGE (ph); = - mark_free_list (ph); - for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) { EMACS_INT ptr =3D (heap_space + (heap_space_step * mark_bit)); @@ -1591,23 +1580,46 @@ mc_finalize_for_disksave (void) static void sweep_page (page_header *ph) { - char *heap_space =3D (char *) PH_HEAP_SPACE (ph); + Rawbyte *heap_space =3D (Rawbyte *) PH_HEAP_SPACE (ph); EMACS_INT heap_space_step =3D PH_CELL_SIZE (ph); EMACS_INT mark_bit =3D 0; EMACS_INT mark_bit_max_index =3D PH_CELLS_ON_PAGE (ph); - int bit =3D 0; + unsigned int bit =3D 0; = mark_free_list (ph); = +#ifdef NEW_GC + /* ARRAY_BIT_HACK */ + if (PH_ARRAY_BIT (ph)) + for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) + { + GET_BIT (bit, ph, mark_bit * N_MARK_BITS); + if (bit) + { + zero_mark_bits (ph); + PH_BLACK_BIT (ph) =3D 0; + return; + } + } +#endif /* NEW_GC */ + for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) { - GET_BIT (bit, ph, mark_bit); - if (!bit) = + GET_BIT (bit, ph, mark_bit * N_MARK_BITS); +#ifdef NEW_GC + if (bit =3D=3D WHITE) = +#else /* not NEW_GC */ + if (bit =3D=3D 0) = +#endif /* not NEW_GC */ { +#ifdef NEW_GC + GC_STAT_FREED; +#endif /* NEW_GC */ remove_cell (heap_space + (heap_space_step * mark_bit), ph); } } zero_mark_bits (ph); + PH_BLACK_BIT (ph) =3D 0; if (PH_CELLS_USED (ph) =3D=3D 0) remove_page_from_used_list (ph); else if (PH_CELLS_USED (ph) < PH_CELLS_ON_PAGE (ph)) @@ -1627,9 +1639,24 @@ mc_sweep (void) void mc_free (void *ptr) { - page_header *ph =3D get_page_header (ptr); - assert (!PH_ON_FREE_LIST_P (ph)); + page_header *ph; + +#ifdef NEW_GC + /* Do not allow manual freeing while a gc is running. Data is going + to be freed next gc cycle. */ + if (write_barrier_enabled || gc_in_progress) + return; +#endif /* NEW_GC */ + + ph =3D get_page_header (ptr); + assert (ph); + assert (PH_PLH (ph)); + assert (PLH_LIST_TYPE (PH_PLH (ph)) !=3D FREE_LIST); = +#ifdef NEW_GC + if (PH_ON_USED_LIST_P (ph)) + SET_BIT (ph, get_mark_bit_index (ptr, ph), WHITE); +#endif /* NEW_GC */ remove_cell (ptr, ph); = if (PH_CELLS_USED (ph) =3D=3D 0) @@ -1642,29 +1669,32 @@ mc_free (void *ptr) /* Changes the size of the cell pointed to by ptr. Returns the new address of the new cell with new size. */ void * -mc_realloc_1 (void *ptr, size_t size, int managed) +mc_realloc_1 (void *ptr, size_t size, int elemcount) { if (ptr) { - if (size) + if (size * elemcount) { - void *result =3D mc_alloc_1 (size, managed); + void *result =3D mc_alloc_1 (size, elemcount); size_t from_size =3D PH_CELL_SIZE (get_page_header (ptr)); - size_t cpy_size =3D size; - if (size > from_size) = + size_t cpy_size =3D size * elemcount; + if (cpy_size > from_size) = cpy_size =3D from_size; memcpy (result, ptr, cpy_size); - mc_free (ptr); +#ifdef ALLOC_TYPE_STATS + inc_lrecord_stats (size, (struct lrecord_header *) result); +#endif /* not ALLOC_TYPE_STATS */ + /* mc_free (ptr); not needed, will be collected next gc */ return result; } else { - mc_free (ptr); + /* mc_free (ptr); not needed, will be collected next gc */ return 0; } } else - return mc_alloc_1 (size, managed); + return mc_alloc_1 (size, elemcount); } = void * @@ -1674,13 +1704,12 @@ mc_realloc (void *ptr, size_t size) } = void * -mc_realloc_unmanaged (void *ptr, size_t size) +mc_realloc_array (void *ptr, size_t size, EMACS_INT elemcount) { - return mc_realloc_1 (ptr, size, 0); + return mc_realloc_1 (ptr, size, elemcount); } = = - =0C /*--- initialization ---------------------------------------------------*/ = @@ -1688,32 +1717,49 @@ mc_realloc_unmanaged (void *ptr, size_t = void init_mc_allocator (void) { - int i; + EMACS_INT i; = - memset (&mc_allocator_globals, '\0', sizeof (mc_allocator_globals_type)); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES =3D 0; +#endif = - for (i =3D 0; i < N_USED_PAGE_LISTS; i++) + /* init of pagesize dependent values */ + switch (SYS_PAGE_SIZE) { - page_list_header *plh =3D USED_HEAP_PAGES (i); - PLH_LIST_TYPE (plh) =3D USED_LIST; - PLH_SIZE (plh) =3D get_used_list_size_value (i); - PLH_FIRST (plh) =3D 0; - PLH_LAST (plh) =3D 0; - PLH_MARK_BIT_FREE_LIST (plh) =3D 0; + case 512: log_page_size =3D 9; break; + case 1024: log_page_size =3D 10; break; + case 2048: log_page_size =3D 11; break; + case 4096: log_page_size =3D 12; break; + case 8192: log_page_size =3D 13; break; + case 16384: log_page_size =3D 14; break; + default: ABORT (); + } + = + page_size_div_2 =3D (EMACS_INT) SYS_PAGE_SIZE >> 1; + = + mc_allocator_globals.used_heap_pages =3D = + (page_list_header *) xmalloc_and_zero ((N_USED_PAGE_LISTS + 1) + * sizeof (page_list_header)); #ifdef MEMORY_USAGE_STATS - PLH_PAGE_COUNT (plh) =3D 0; - PLH_USED_CELLS (plh) =3D 0; - PLH_USED_SPACE (plh) =3D 0; - PLH_TOTAL_CELLS (plh) =3D 0; - PLH_TOTAL_SPACE (plh) =3D 0; + MC_MALLOCED_BYTES +=3D (N_USED_PAGE_LISTS + 1) * sizeof (page_list_heade= r); #endif - } + + mc_allocator_globals.ptr_lookup_table =3D = + (level_2_lookup_tree **) = + xmalloc_and_zero ((LEVEL1_SIZE + 1) * sizeof (level_2_lookup_tree *)); +#ifdef MEMORY_USAGE_STATS + MC_MALLOCED_BYTES +=3D (LEVEL1_SIZE + 1) * sizeof (level_2_lookup_tree *= ); +#endif + = +#ifdef BLOCKTYPE_ALLOC_PAGE_HEADER + the_page_header_blocktype =3D Blocktype_new (struct page_header_blocktyp= e); +#endif /* BLOCKTYPE_ALLOC_PAGE_HEADER */ = - for (i =3D 0; i < N_UNMANAGED_PAGE_LISTS; i++) + for (i =3D 0; i < N_USED_PAGE_LISTS; i++) { - page_list_header *plh =3D UNMANAGED_HEAP_PAGES (i); - PLH_LIST_TYPE (plh) =3D UNMANAGED_LIST; - PLH_SIZE (plh) =3D get_unmanaged_list_size_value (i); + page_list_header *plh =3D USED_HEAP_PAGES (i); + PLH_LIST_TYPE (plh) =3D USED_LIST; + PLH_SIZE (plh) =3D get_used_list_size_value (i); PLH_FIRST (plh) =3D 0; PLH_LAST (plh) =3D 0; PLH_MARK_BIT_FREE_LIST (plh) =3D 0; @@ -1743,10 +1789,12 @@ init_mc_allocator (void) #endif } = +#ifndef BLOCKTYPE_ALLOC_PAGE_HEADER PAGE_HEADER_FREE_LIST =3D 0; +#endif /* not BLOCKTYPE_ALLOC_PAGE_HEADER */ = #ifdef MEMORY_USAGE_STATS - MC_MALLOCED_BYTES =3D sizeof (mc_allocator_globals); + MC_MALLOCED_BYTES +=3D sizeof (mc_allocator_globals); #endif = init_lookup_table (); @@ -1765,12 +1813,11 @@ Returns stats about the mc-alloc memory = { Lisp_Object free_plhs =3D Qnil; Lisp_Object used_plhs =3D Qnil; - Lisp_Object unmanaged_plhs =3D Qnil; Lisp_Object heap_sects =3D Qnil; - int used_size =3D 0; - int real_size =3D 0; + EMACS_INT used_size =3D 0; + EMACS_INT real_size =3D 0; = - int i; + EMACS_INT i; = for (i =3D 0; i < N_FREE_PAGE_LISTS; i++) = if (PLH_PAGE_COUNT (FREE_HEAP_PAGES(i)) > 0) @@ -1779,17 +1826,6 @@ Returns stats about the mc-alloc memory = list1 (make_int (PLH_PAGE_COUNT (FREE_HEAP_PAGES(i)))), free_plhs); = - for (i =3D 0; i < N_UNMANAGED_PAGE_LISTS; i++) = - if (PLH_PAGE_COUNT (UNMANAGED_HEAP_PAGES(i)) > 0) - unmanaged_plhs =3D = - acons (make_int (PLH_SIZE (UNMANAGED_HEAP_PAGES(i))), - list5 (make_int (PLH_PAGE_COUNT (UNMANAGED_HEAP_PAGES(i))), - make_int (PLH_USED_CELLS (UNMANAGED_HEAP_PAGES(i))), - make_int (PLH_USED_SPACE (UNMANAGED_HEAP_PAGES(i))), - make_int (PLH_TOTAL_CELLS (UNMANAGED_HEAP_PAGES(i))), - make_int (PLH_TOTAL_SPACE (UNMANAGED_HEAP_PAGES(i)))), - unmanaged_plhs); - for (i =3D 0; i < N_USED_PAGE_LISTS; i++) = if (PLH_PAGE_COUNT (USED_HEAP_PAGES(i)) > 0) used_plhs =3D = @@ -1813,9 +1849,8 @@ Returns stats about the mc-alloc memory = make_int (real_size)); = return Fcons (make_int (PAGE_SIZE), = - list6 (heap_sects, = + list5 (heap_sects, = Fnreverse (used_plhs), = - Fnreverse (unmanaged_plhs), = Fnreverse (free_plhs), = make_int (sizeof (mc_allocator_globals)), = make_int (MC_MALLOCED_BYTES))); @@ -1829,3 +1864,198 @@ syms_of_mc_alloc (void) DEFSUBR (Fmc_alloc_memory_usage); #endif /* MEMORY_USAGE_STATS */ } + + +#ifdef NEW_GC +/*--- incremental garbage collector ----------------------------------*/ + +/* access dirty bit of page header */ +void +set_dirty_bit (page_header *ph, unsigned int value) +{ + PH_DIRTY_BIT (ph) =3D value; +} + +void +set_dirty_bit_for_address (void *ptr, unsigned int value) +{ + set_dirty_bit (get_page_header (ptr), value); +} + +unsigned int +get_dirty_bit (page_header *ph) +{ + return PH_DIRTY_BIT (ph); +} + +unsigned int +get_dirty_bit_for_address (void *ptr) +{ + return get_dirty_bit (get_page_header (ptr)); +} + + +/* access protection bit of page header */ +void +set_protection_bit (page_header *ph, unsigned int value) +{ + PH_PROTECTION_BIT (ph) =3D value; +} + +void +set_protection_bit_for_address (void *ptr, unsigned int value) +{ + set_protection_bit (get_page_header (ptr), value); +} + +unsigned int +get_protection_bit (page_header *ph) +{ + return PH_PROTECTION_BIT (ph); +} + +unsigned int +get_protection_bit_for_address (void *ptr) +{ + return get_protection_bit (get_page_header (ptr)); +} + + +/* Returns the start of the page of the object pointed to by ptr. */ +void * +get_page_start (void *ptr) +{ + return PH_HEAP_SPACE (get_page_header (ptr)); +} + +/* Make PAGE_SIZE globally available. */ +EMACS_INT +mc_get_page_size () +{ + return PAGE_SIZE; +} + +/* Is the fault at ptr on a protected page? */ +EMACS_INT +fault_on_protected_page (void *ptr) +{ + page_header *ph =3D get_page_header_internal (ptr); + return (ph + && PH_HEAP_SPACE (ph) + && (PH_HEAP_SPACE (ph) <=3D ptr) = + && ((void *) ((EMACS_INT) PH_HEAP_SPACE (ph) = + + PH_N_PAGES (ph) * PAGE_SIZE) > ptr) + && (PH_PROTECTION_BIT (ph) =3D=3D 1)); +} + + +/* Protect the heap page of given page header ph if black objects are + on the page. */ +static void +protect_heap_page (page_header *ph) +{ + if (PH_BLACK_BIT (ph)) + { + void *heap_space =3D PH_HEAP_SPACE (ph); + EMACS_INT heap_space_size =3D PH_N_PAGES (ph) * PAGE_SIZE; + vdb_protect ((void *) heap_space, heap_space_size); + PH_PROTECTION_BIT (ph) =3D 1; + } +} + +/* Protect all heap pages with black objects. */ +void +protect_heap_pages (void) +{ + visit_all_used_page_headers (protect_heap_page); +} + + +/* Remove protection (if there) of heap page of given page header + ph. */ +static void +unprotect_heap_page (page_header *ph) +{ + if (PH_PROTECTION_BIT (ph)) + { + void *heap_space =3D PH_HEAP_SPACE (ph); + EMACS_INT heap_space_size =3D PH_N_PAGES (ph) * PAGE_SIZE; + vdb_unprotect (heap_space, heap_space_size); + PH_PROTECTION_BIT (ph) =3D 0; + } +} + +/* Remove protection for all heap pages which are protected. */ +void +unprotect_heap_pages (void) +{ + visit_all_used_page_headers (unprotect_heap_page); +} + +/* Remove protection and mark page dirty. */ +void +unprotect_page_and_mark_dirty (void *ptr) +{ + page_header *ph =3D get_page_header (ptr); + unprotect_heap_page (ph); + PH_DIRTY_BIT (ph) =3D 1; +} + +/* Repush all objects on dirty pages onto the mark stack. */ +int +repush_all_objects_on_page (void *ptr) +{ + int repushed_objects =3D 0; + page_header *ph =3D get_page_header (ptr); + Rawbyte *heap_space =3D (Rawbyte *) PH_HEAP_SPACE (ph); + EMACS_INT heap_space_step =3D PH_CELL_SIZE (ph); + EMACS_INT mark_bit =3D 0; + EMACS_INT mark_bit_max_index =3D PH_CELLS_ON_PAGE (ph); + unsigned int bit =3D 0; + for (mark_bit =3D 0; mark_bit < mark_bit_max_index; mark_bit++) + { + GET_BIT (bit, ph, mark_bit * N_MARK_BITS); + if (bit =3D=3D BLACK) + { + repushed_objects++; + gc_write_barrier = + (wrap_pointer_1 ((heap_space + (heap_space_step * mark_bit)))); + } + } + PH_BLACK_BIT (ph) =3D 0; + PH_DIRTY_BIT (ph) =3D 0; + return repushed_objects; +} + +/* Mark black if object is currently grey. This first checks, if the + object is really allocated on the mc-heap. If it is, it can be + marked black; if it is not, it cannot be marked. */ +EMACS_INT +maybe_mark_black (void *ptr) +{ + page_header *ph =3D get_page_header_internal (ptr); + unsigned int bit =3D 0; + + if (ph && PH_PLH (ph) && PH_ON_USED_LIST_P (ph)) + { + GET_BIT (bit, ph, get_mark_bit_index (ptr, ph)); + if (bit =3D=3D GREY) + { + if (!PH_BLACK_BIT (ph)) + PH_BLACK_BIT (ph) =3D 1; + SET_BIT (ph, get_mark_bit_index (ptr, ph), BLACK); + } + return 1; + } + return 0; +} + +/* Only for debugging --- not used anywhere in the sources. */ +EMACS_INT +object_on_heap_p (void *ptr) +{ + page_header *ph =3D get_page_header_internal (ptr); + return (ph && PH_ON_USED_LIST_P (ph)); +} + +#endif /* NEW_GC */ 1.3 +98 -32 XEmacs/xemacs/src/mc-alloc.h Index: mc-alloc.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/mc-alloc.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- mc-alloc.h 2005/10/14 01:22:01 1.2 +++ mc-alloc.h 2005/11/25 01:42:05 1.3 @@ -23,43 +23,87 @@ Boston, MA 02111-1307, USA. */ #ifndef INCLUDED_mc_alloc_h_ #define INCLUDED_mc_alloc_h_ = - -/* This is moved here from alloc.c. */ -#ifndef MALLOC_OVERHEAD -# ifdef GNU_MALLOC -# define MALLOC_OVERHEAD 0 -# elif defined (rcheck) -# define MALLOC_OVERHEAD 20 -# else -# define MALLOC_OVERHEAD 8 -# endif -#endif /* MALLOC_OVERHEAD */ - /*--- prototypes -------------------------------------------------------*/ = BEGIN_C_DECLS = = = -/* Allocation related functions and macros: */ +/* Internal Allocator Functions: */ = -/* Builds and initializes all needed datastructures of the new allocator. = */ +/* Initialize the allocator. This has to be called prior to + requesting memory. */ void init_mc_allocator (void); = -/* Returns a pointer to a block of memory of given size on the used heap. = */ +/* Allocate a block of memory of given size and return the pointer to + it. */ void *mc_alloc (size_t size); = -/* Frees the object pointed to by pointer. */ +/* Allocate a block of memory as an array with elemcount elements of + given size and return the pointer to it. Arrays contain several + objects that are allocated in one consecutive block of memory with + each element being a fully qualified object---that is, it has a + Lisp object header and a mark bit. Objects like hash tables and + dynamic arrays use this function. */ +void *mc_alloc_array (size_t size, EMACS_INT elemcount); + +/* Free the object pointed to by ptr and make its memory re-usable + again. The memory must have been returned by a previous call to + mc_alloc(). This can be used to free memory explicitly, outside a + garbage collection. */ void mc_free (void *ptr); = -/* Modifies the size of the memory block pointed to by ptr. The - Address of the new block of given size is returned. */ +/* Modify the size of the memory block pointed to by ptr. Return the + address of the new block of given size. The content of the memory + block will be unchanged to the minimum of the old and new sizes: if + the new size is smaller, the overlaying data is cut off; if the new + size is bigger, the newly allocated memory will be uninitialized.*/ void *mc_realloc (void *ptr, size_t size); = = +/* Modify the size of the array pointed to by ptr. Return the address + of the new array block with elemcount elements of given size. The + content of the memory block will be unchanged to the minimum of the + old and new sizes: if the new size is smaller, the overlaying data + is cut off; if the new size is bigger, the newly allocated memory + will be uninitialized.*/ +void *mc_realloc_array (void *ptr, size_t size, EMACS_INT elemcount); = = + /* Garbage collection related functions and macros: */ = +#ifdef NEW_GC +enum mark_bit_colors +{ + WHITE =3D 0, + BLACK =3D 1, + GREY =3D 2 +}; + +/* Set the mark bit of the object pointed to by ptr to value.*/ +void set_mark_bit (void *ptr, EMACS_INT value); + +/* Return the mark bit of the object pointed to by ptr. */ +EMACS_INT get_mark_bit (void *ptr); + +/* mark bit macros */ +/* Returns true if the mark bit of the object pointed to by ptr is set. */ +#define MARKED_P(ptr) (get_mark_bit (ptr) !=3D WHITE) + +/* Marks the object pointed to by ptr (sets the mark bit to 1). */ +#define MARK(ptr) set_mark_bit (ptr, BLACK) + +/* Unmarks the object pointed to by ptr (sets the mark bit to 0). */ +#define UNMARK(ptr) set_mark_bit (ptr, WHITE) + +#define MARK_WHITE(ptr) set_mark_bit (ptr, WHITE) +#define MARK_GREY(ptr) set_mark_bit (ptr, GREY) +#define MARK_BLACK(ptr) set_mark_bit (ptr, BLACK) + +#define MARKED_WHITE_P(ptr) (get_mark_bit (ptr) =3D=3D WHITE) +#define MARKED_GREY_P(ptr) (get_mark_bit (ptr) =3D=3D GREY) +#define MARKED_BLACK_P(ptr) (get_mark_bit (ptr) =3D=3D BLACK) +#else /* not NEW_GC */ /* Set the mark bit of the object pointed to by ptr to value.*/ void set_mark_bit (void *ptr, EMACS_INT value); = @@ -75,8 +119,9 @@ EMACS_INT get_mark_bit (void *ptr); = /* Unmarks the object pointed to by ptr (sets the mark bit to 0). */ #define UNMARK(ptr) set_mark_bit (ptr, 0) +#endif /* not NEW_GC */ = -/* The finalizer of every not marked object is called. The macro +/* The finalizer of every not marked object is called. The macro MC_ALLOC_CALL_FINALIZER has to be defined and call the finalizer of the object. */ void mc_finalize (void); @@ -89,24 +134,12 @@ void mc_sweep (void); /* Portable dumper related functions and macros: */ = /* The finalizer for disksave of every object is called to shrink the - dump image. The macro MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE has to + dump image. The macro MC_ALLOC_CALL_FINALIZER_FOR_DISKSAVE has to be defined and call the finalizer for disksave of the object. */ void mc_finalize_for_disksave (void); = = = -/* Allocation function for the unmanaged heap: */ - -/* Returns a pointer to a block of memory of given size on the - unmanaged heap. */ -void *mc_alloc_unmanaged (size_t size); - -/* Modifies the size of the memory block pointed to by ptr. The - Address of the new block of given size is returned. */ -void *mc_realloc_unmanaged (void *ptr, size_t size); - - - /* Functions and macros related with allocation statistics: */ = #ifdef MEMORY_USAGE_STATS @@ -115,6 +148,39 @@ void *mc_realloc_unmanaged (void *ptr, s Bytecount mc_alloced_storage_size (Bytecount claimed_size, struct overhead_stats *stats); #endif /* MEMORY_USAGE_STATS */ + + +#ifdef NEW_GC +/* Incremental Garbage Collector / Write Barrier Support: */ + +/* Return the PAGESIZE the allocator uses. Generally equals to the + system's PAGESIZE. */ +EMACS_INT mc_get_page_size (void); + +/* Is the fault at ptr on a protected page? */ +EMACS_INT fault_on_protected_page (void *ptr); + +/* Remove protection (if there) of heap page of given page header + ph. */ +void protect_heap_pages (void); + +/* Remove protection for all heap pages which are protected. */ +void unprotect_heap_pages (void); + +/* Remove protection and mark page dirty. */ +void unprotect_page_and_mark_dirty (void *ptr); + +/* Repush all objects on dirty pages onto the mark stack. Return + number of repushed objects. */ +int repush_all_objects_on_page (void *ptr); + +/* Mark black if object is currently grey. */ +EMACS_INT maybe_mark_black (void *ptr); + +/* Only for debugging---not used anywhere in the sources. */ +EMACS_INT object_on_heap_p (void *ptr); + +#endif /* NEW_GC */ = END_C_DECLS = 1.2 +32 -0 XEmacs/xemacs/src/objects-tty-impl.h Index: objects-tty-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-tty-impl.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- objects-tty-impl.h 2002/06/20 21:18:39 1.1 +++ objects-tty-impl.h 2005/11/25 01:42:05 1.2 @@ -29,9 +29,25 @@ Boston, MA 02111-1307, USA. */ = struct tty_color_instance_data { +#ifdef NEW_GC + struct lrecord_header header; +#endif /* NEW_GC */ Lisp_Object symbol; /* so we don't have to constantly call Fintern() */ }; = +#ifdef NEW_GC +DECLARE_LRECORD (tty_color_instance_data, struct tty_color_instance_data); +#define XTTY_COLOR_INSTANCE_DATA(x) \ + XRECORD (x, tty_color_instance_data, struct tty_color_instance_data) +#define wrap_tty_color_instance_data(p) \ + wrap_record (p, tty_color_instance_data) +#define TTY_COLOR_INSTANCE_DATAP(x) RECORDP (x, tty_color_instance_data) +#define CHECK_TTY_COLOR_INSTANCE_DATA(x) \ + CHECK_RECORD (x, tty_color_instance_data) +#define CONCHECK_TTY_COLOR_INSTANCE_DATA(x) \ + CONCHECK_RECORD (x, tty_color_instance_data) +#endif /* NEW_GC */ + #define TTY_COLOR_INSTANCE_DATA(c) \ ((struct tty_color_instance_data *) (c)->data) = @@ -39,8 +55,24 @@ struct tty_color_instance_data = struct tty_font_instance_data { +#ifdef NEW_GC + struct lrecord_header header; +#endif /* NEW_GC */ Lisp_Object charset; }; + +#ifdef NEW_GC +DECLARE_LRECORD (tty_font_instance_data, struct tty_font_instance_data); +#define XTTY_FONT_INSTANCE_DATA(x) \ + XRECORD (x, tty_font_instance_data, struct tty_font_instance_data) +#define wrap_tty_font_instance_data(p) \ + wrap_record (p, tty_font_instance_data) +#define TTY_FONT_INSTANCE_DATAP(x) RECORDP (x, tty_font_instance_data) +#define CHECK_TTY_FONT_INSTANCE_DATA(x) \ + CHECK_RECORD (x, tty_font_instance_data) +#define CONCHECK_TTY_FONT_INSTANCE_DATA(x) \ + CONCHECK_RECORD (x, tty_font_instance_data) +#endif /* NEW_GC */ = #define TTY_FONT_INSTANCE_DATA(c) \ ((struct tty_font_instance_data *) (c)->data) 1.17 +41 -0 XEmacs/xemacs/src/objects-tty.c Index: objects-tty.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-tty.c,v retrieving revision 1.16 retrieving revision 1.17 diff -u -p -r1.16 -r1.17 --- objects-tty.c 2005/01/28 02:58:51 1.16 +++ objects-tty.c 2005/11/25 01:42:06 1.17 @@ -42,18 +42,36 @@ static const struct memory_description t { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("tty-color-instance-data", = + tty_color_instance_data, + 0, /*dumpable-flag*/ + 0, 0, 0, 0, 0, = + tty_color_instance_data_description_1, + struct tty_color_instance_data); +#else /* not NEW_GC */ const struct sized_memory_description tty_color_instance_data_description = =3D { sizeof (struct tty_color_instance_data), tty_color_instance_data_descrip= tion_1 }; +#endif /* not NEW_GC */ = static const struct memory_description tty_font_instance_data_description_= 1 [] =3D { { XD_LISP_OBJECT, offsetof (struct tty_font_instance_data, charset) }, { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("tty-font-instance-data", = + tty_font_instance_data, + 0, /*dumpable-flag*/ + 0, 0, 0, 0, 0, = + tty_font_instance_data_description_1, + struct tty_font_instance_data); +#else /* not NEW_GC */ const struct sized_memory_description tty_font_instance_data_description = =3D { sizeof (struct tty_font_instance_data), tty_font_instance_data_descripti= on_1 }; +#endif /* not NEW_GC */ = DEFUN ("register-tty-color", Fregister_tty_color, 3, 3, 0, /* Register COLOR as a recognized TTY color. @@ -176,7 +194,12 @@ tty_initialize_color_instance (Lisp_Colo } = /* Don't allocate the data until we're sure that we will succeed. */ +#ifdef NEW_GC + c->data =3D alloc_lrecord_type (struct tty_color_instance_data, + &lrecord_tty_color_instance_data); +#else /* not NEW_GC */ c->data =3D xnew (struct tty_color_instance_data); +#endif /* not NEW_GC */ COLOR_INSTANCE_TTY_SYMBOL (c) =3D name; = return 1; @@ -199,7 +222,11 @@ static void tty_finalize_color_instance (Lisp_Color_Instance *c) { if (c->data) +#ifdef NEW_GC + mc_free (c->data); +#else /* not NEW_GC */ xfree (c->data, void *); +#endif /* not NEW_GC */ } = static int @@ -254,7 +281,12 @@ tty_initialize_font_instance (Lisp_Font_ } = /* Don't allocate the data until we're sure that we will succeed. */ +#ifdef NEW_GC + f->data =3D alloc_lrecord_type (struct tty_font_instance_data, + &lrecord_tty_font_instance_data); +#else /* not NEW_GC */ f->data =3D xnew (struct tty_font_instance_data); +#endif /* not NEW_GC */ FONT_INSTANCE_TTY_CHARSET (f) =3D charset; #ifdef MULE if (CHARSETP (charset)) @@ -287,7 +319,11 @@ static void tty_finalize_font_instance (Lisp_Font_Instance *f) { if (f->data) +#ifdef NEW_GC + mc_free (f->data); +#else /* not NEW_GC */ xfree (f->data, void *); +#endif /* not NEW_GC */ } = static Lisp_Object @@ -363,6 +399,11 @@ tty_find_charset_font (Lisp_Object devic void syms_of_objects_tty (void) { +#ifdef NEW_GC + INIT_LRECORD_IMPLEMENTATION (tty_color_instance_data); + INIT_LRECORD_IMPLEMENTATION (tty_font_instance_data); +#endif /* NEW_GC */ + DEFSUBR (Fregister_tty_color); DEFSUBR (Funregister_tty_color); DEFSUBR (Ffind_tty_color); 1.30 +9 -1 XEmacs/xemacs/src/objects.c Index: objects.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -p -r1.29 -r1.30 --- objects.c 2005/10/24 10:07:39 1.29 +++ objects.c 2005/11/25 01:42:06 1.30 @@ -63,7 +63,11 @@ Lisp_Object Qcolor_instancep; = static const struct memory_description color_instance_data_description_1 [= ]=3D { #ifdef HAVE_TTY +#ifdef NEW_GC + { XD_LISP_OBJECT, tty_console }, +#else /* not NEW_GC */ { XD_BLOCK_PTR, tty_console, 1, { &tty_color_instance_data_description }= }, +#endif /* not NEW_GC */ #endif { XD_END } }; @@ -272,7 +276,11 @@ static Lisp_Object font_instance_truenam = static const struct memory_description font_instance_data_description_1 []= =3D { #ifdef HAVE_TTY - { XD_BLOCK_PTR, tty_console, 1, { &tty_font_instance_data_description} }, +#ifdef NEW_GC + { XD_LISP_OBJECT, tty_console }, +#else /* not NEW_GC */ + { XD_BLOCK_PTR, tty_console, 1, { &tty_font_instance_data_description } = }, +#endif /* not NEW_GC */ #endif { XD_END } }; 1.59 +15 -3 XEmacs/xemacs/src/print.c Index: print.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/print.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -p -r1.58 -r1.59 --- print.c 2005/11/22 09:02:43 1.58 +++ print.c 2005/11/25 01:42:06 1.59 @@ -1733,6 +1733,17 @@ print_internal (Lisp_Object obj, Lisp_Ob = if (STRINGP (obj)) { +#ifdef NEW_GC + if (!debug_can_access_memory (XSTRING_DATA (obj), = + XSTRING_LENGTH (obj))) + { + write_fmt_string + (printcharfun, + "#", + lheader, XSTRING_DATA (obj)); + break; + } +#else /* not NEW_GC */ Lisp_String *l =3D (Lisp_String *) lheader; if (!debug_can_access_memory (l->data_, l->size_)) { @@ -1742,6 +1753,7 @@ print_internal (Lisp_Object obj, Lisp_Ob lheader, l->data_); break; } +#endif /* not NEW_GC */ } } = @@ -2219,9 +2231,9 @@ debug_p4 (Lisp_Object obj) debug_out ("#<%s addr=3D0x%lx uid=3D0x%lx>", LHEADER_IMPLEMENTATION (header)->name, (EMACS_INT) header, - LHEADER_IMPLEMENTATION (header)->basic_p ? - ((struct lrecord_header *) header)->uid : - ((struct old_lcrecord_header *) header)->uid); + (EMACS_INT) (LHEADER_IMPLEMENTATION (header)->basic_p ? + ((struct lrecord_header *) header)->uid : + ((struct old_lcrecord_header *) header)->uid)); #endif /* not MC_ALLOC */ } = 1.43 +25 -0 XEmacs/xemacs/src/specifier.c Index: specifier.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.c,v retrieving revision 1.42 retrieving revision 1.43 diff -u -p -r1.42 -r1.43 --- specifier.c 2005/10/24 10:07:40 1.42 +++ specifier.c 2005/11/25 01:42:06 1.43 @@ -302,7 +302,11 @@ finalize_specifier (void *header, int fo /* don't be snafued by the disksave finalization. */ if (!for_disksave && !GHOST_SPECIFIER_P(sp) && sp->caching) { +#ifdef NEW_GC + mc_free (sp->caching); +#else /* not NEW_GC */ xfree (sp->caching, struct specifier_caching *); +#endif /* not NEW_GC */ sp->caching =3D 0; } } @@ -382,10 +386,19 @@ static const struct memory_description s { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("specifier-caching", = + specifier_caching, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, = + specifier_caching_description_1, + struct specifier_caching); +#else /* not NEW_GC */ static const struct sized_memory_description specifier_caching_description= =3D { sizeof (struct specifier_caching), specifier_caching_description_1 }; +#endif /* not NEW_GC */ = static const struct sized_memory_description specifier_extra_description_m= ap[] =3D { @@ -403,8 +416,12 @@ const struct memory_description specifie { XD_LISP_OBJECT, offsetof (Lisp_Specifier, frame_specs) }, { XD_LISP_OBJECT, offsetof (Lisp_Specifier, window_specs) }, { XD_LISP_OBJECT, offsetof (Lisp_Specifier, buffer_specs) }, +#ifdef NEW_GC + { XD_LISP_OBJECT, offsetof (Lisp_Specifier, caching) }, +#else /* not NEW_GC */ { XD_BLOCK_PTR, offsetof (Lisp_Specifier, caching), 1, { &specifier_caching_description } }, +#endif /* not NEW_GC */ { XD_LISP_OBJECT, offsetof (Lisp_Specifier, magic_parent) }, { XD_LISP_OBJECT, offsetof (Lisp_Specifier, fallback) }, { XD_BLOCK_ARRAY, offsetof (Lisp_Specifier, data), 1, @@ -2996,7 +3013,12 @@ set_specifier_caching (Lisp_Object speci assert (!GHOST_SPECIFIER_P (sp)); = if (!sp->caching) +#ifdef NEW_GC + sp->caching =3D alloc_lrecord_type (struct specifier_caching, + &lrecord_specifier_caching); +#else /* not NEW_GC */ sp->caching =3D xnew_and_zero (struct specifier_caching); +#endif /* not NEW_GC */ sp->caching->offset_into_struct_window =3D struct_window_offset; sp->caching->value_changed_in_window =3D value_changed_in_window; sp->caching->offset_into_struct_frame =3D struct_frame_offset; @@ -3349,6 +3371,9 @@ void syms_of_specifier (void) { INIT_LRECORD_IMPLEMENTATION (specifier); +#ifdef NEW_GC + INIT_LRECORD_IMPLEMENTATION (specifier_caching); +#endif /* NEW_GC */ = DEFSYMBOL (Qspecifierp); = 1.19 +16 -0 XEmacs/xemacs/src/specifier.h Index: specifier.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/specifier.h,v retrieving revision 1.18 retrieving revision 1.19 diff -u -p -r1.18 -r1.19 --- specifier.h 2005/10/24 10:07:41 1.18 +++ specifier.h 2005/11/25 01:42:06 1.19 @@ -423,6 +423,9 @@ enum spec_add_meth = struct specifier_caching { +#ifdef NEW_GC + struct lrecord_header header; +#endif /* NEW_GC */ int offset_into_struct_window; void (*value_changed_in_window) (Lisp_Object specifier, struct window *w, Lisp_Object oldval); @@ -431,6 +434,19 @@ struct specifier_caching Lisp_Object oldval); int always_recompute; }; + +#ifdef NEW_GC +DECLARE_LRECORD (specifier_caching, struct specifier_caching); +#define XSPECIFIER_CACHING(x) \ + XRECORD (x, specifier_caching, struct specifier_caching) +#define wrap_specifier_caching(p) \ + wrap_record (p, specifier_caching) +#define SPECIFIER_CACHINGP(x) RECORDP (x, specifier_caching) +#define CHECK_SPECIFIER_CACHING(x) \ + CHECK_RECORD (x, specifier_caching) +#define CONCHECK_SPECIFIER_CACHING(x) \ + CONCHECK_RECORD (x, specifier_caching) +#endif /* NEW_GC */ = /* #### get image instances out of domains! */ = 1.25 +21 -0 XEmacs/xemacs/src/syntax.c Index: syntax.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/syntax.c,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- syntax.c 2005/10/25 11:16:28 1.24 +++ syntax.c 2005/11/25 01:42:06 1.25 @@ -309,10 +309,19 @@ static const struct memory_description s { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("syntax-cache", syntax_cache, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, + syntax_cache_description_1, + Lisp_Syntax_Cache); +#else /* not NEW_GC */ + const struct sized_memory_description syntax_cache_description =3D { sizeof (struct syntax_cache), syntax_cache_description_1 }; +#endif /* not NEW_GC */ = void mark_buffer_syntax_cache (struct buffer *buf) @@ -344,7 +353,12 @@ void init_buffer_syntax_cache (struct buffer *buf) { struct syntax_cache *cache; +#ifdef NEW_GC + buf->syntax_cache =3D alloc_lrecord_type (struct syntax_cache, + &lrecord_syntax_cache); +#else /* not NEW_GC */ buf->syntax_cache =3D xnew_and_zero (struct syntax_cache); +#endif /* not NEW_GC */ cache =3D buf->syntax_cache; cache->object =3D wrap_buffer (buf); cache->buffer =3D buf; @@ -359,7 +373,11 @@ init_buffer_syntax_cache (struct buffer = void uninit_buffer_syntax_cache (struct buffer *buf) { +#ifdef NEW_GC + mc_free (buf->syntax_cache); +#else /* not NEW_GC */ xfree (buf->syntax_cache, struct syntax_cache *); +#endif /* not NEW_GC */ buf->syntax_cache =3D 0; } = @@ -2313,6 +2331,9 @@ update_syntax_table (Lisp_Object table) void syms_of_syntax (void) { +#ifdef NEW_GC + INIT_LRECORD_IMPLEMENTATION (syntax_cache); +#endif /* NEW_GC */ DEFSYMBOL (Qsyntax_table_p); DEFSYMBOL (Qsyntax_table); = 1.13 +18 -0 XEmacs/xemacs/src/syntax.h Index: syntax.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/syntax.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- syntax.h 2003/02/20 08:19:43 1.12 +++ syntax.h 2005/11/25 01:42:07 1.13 @@ -295,6 +295,9 @@ extern int lookup_syntax_properties; faster than if we did the whole calculation from scratch. */ struct syntax_cache { +#ifdef NEW_GC + struct lrecord_header header; +#endif /* NEW_GC */ int use_code; /* Whether to use syntax_code or syntax_table. This is set depending on whether the @@ -332,6 +335,21 @@ struct syntax_cache Charxpos prev_change; /* Position of the previous extent change. */ }; + +#ifdef NEW_GC +typedef struct syntax_cache Lisp_Syntax_Cache; + +DECLARE_LRECORD (syntax_cache, Lisp_Syntax_Cache); + +#define XSYNTAX_CACHE(x) \ + XRECORD (x, syntax_cache, Lisp_Syntax_Cache) +#define wrap_syntax_cache(p) wrap_record (p, syntax_cache) +#define SYNTAX_CACHE_P(x) RECORDP (x, syntax_cache) +#define CHECK_SYNTAX_CACHE(x) CHECK_RECORD (x, syntax_cache) +#define CONCHECK_SYNTAX_CACHE(x) CONCHECK_RECORD (x, syntax_cache) +#endif /* NEW_GC */ + + = extern const struct sized_memory_description syntax_cache_description; = 1.90 +69 -0 XEmacs/xemacs/src/window.c Index: window.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/window.c,v retrieving revision 1.89 retrieving revision 1.90 diff -u -p -r1.89 -r1.90 --- window.c 2005/11/18 12:23:57 1.89 +++ window.c 2005/11/25 01:42:08 1.90 @@ -181,40 +181,80 @@ static const struct memory_description f { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("face-cachel", face_cachel, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, + face_cachel_description_1, + Lisp_Face_Cachel); +#endif /* NEW_GC */ + static const struct sized_memory_description face_cachel_description =3D { sizeof (face_cachel), face_cachel_description_1 }; = static const struct memory_description face_cachel_dynarr_description_1[] = =3D { +#ifdef NEW_GC + XD_LISP_DYNARR_DESC (face_cachel_dynarr, &face_cachel_description), +#else /* not NEW_GC */ XD_DYNARR_DESC (face_cachel_dynarr, &face_cachel_description), +#endif /* not NEW_GC */ { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("face-cachel-dynarr", face_cachel_dynarr, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, + face_cachel_dynarr_description_1, + face_cachel_dynarr); +#else /* not NEW_GC */ static const struct sized_memory_description face_cachel_dynarr_descriptio= n =3D { sizeof (face_cachel_dynarr), face_cachel_dynarr_description_1 }; +#endif /* not NEW_GC */ = static const struct memory_description glyph_cachel_description_1[] =3D { { XD_LISP_OBJECT, offsetof (glyph_cachel, glyph) }, { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("glyph-cachel", glyph_cachel, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, + glyph_cachel_description_1, + Lisp_Glyph_Cachel); +#endif /* NEW_GC */ + static const struct sized_memory_description glyph_cachel_description =3D { sizeof (glyph_cachel), glyph_cachel_description_1 }; = static const struct memory_description glyph_cachel_dynarr_description_1[]= =3D { +#ifdef NEW_GC + XD_LISP_DYNARR_DESC (glyph_cachel_dynarr, &glyph_cachel_description), +#else /* not NEW_GC */ XD_DYNARR_DESC (glyph_cachel_dynarr, &glyph_cachel_description), +#endif /* not NEW_GC */ { XD_END } }; = +#ifdef NEW_GC +DEFINE_LRECORD_IMPLEMENTATION ("glyph-cachel-dynarr", glyph_cachel_dynarr, + 1, /*dumpable-flag*/ + 0, 0, 0, 0, 0, + glyph_cachel_dynarr_description_1, + glyph_cachel_dynarr); +#else /* not NEW_GC */ static const struct sized_memory_description glyph_cachel_dynarr_descripti= on =3D { sizeof (glyph_cachel_dynarr), glyph_cachel_dynarr_description_1 }; +#endif /* not NEW_GC */ = static const struct memory_description line_start_cache_description_1[] = =3D { { XD_END } @@ -241,10 +281,15 @@ static const struct memory_description w { XD_LISP_OBJECT_ARRAY, offsetof (struct window, slot), size }, #include "winslots.h" = +#ifdef NEW_GC + { XD_LISP_OBJECT, offsetof (struct window, face_cachels) }, + { XD_LISP_OBJECT, offsetof (struct window, glyph_cachels) }, +#else /* not NEW_GC */ { XD_BLOCK_PTR, offsetof (struct window, face_cachels), 1, { &face_cachel_dynarr_description } }, { XD_BLOCK_PTR, offsetof (struct window, glyph_cachels), 1, { &glyph_cachel_dynarr_description } }, +#endif /* not NEW_GC */ { XD_BLOCK_PTR, offsetof (struct window, line_start_cache), 1, { &line_start_cache_dynarr_description }, XD_FLAG_NO_KKCC }, { XD_END } @@ -362,8 +407,17 @@ allocate_window (void) INIT_DISP_VARIABLE (last_point, Fmake_marker ()); INIT_DISP_VARIABLE (last_start, Fmake_marker ()); INIT_DISP_VARIABLE (last_facechange, Qzero); +#ifdef NEW_GC + p->face_cachels =3D Dynarr_lisp_new (face_cachel, + &lrecord_face_cachel_dynarr, + &lrecord_face_cachel); + p->glyph_cachels =3D Dynarr_lisp_new (glyph_cachel, + &lrecord_glyph_cachel_dynarr, + &lrecord_glyph_cachel); +#else /* not NEW_GC */ p->face_cachels =3D Dynarr_new (face_cachel); p->glyph_cachels =3D Dynarr_new (glyph_cachel); +#endif /* not NEW_GC */ p->line_start_cache =3D Dynarr_new (line_start_cache); p->subwindow_instance_cache =3D make_image_instance_cache_hash_table (); = @@ -3810,8 +3864,17 @@ make_dummy_parent (Lisp_Object window) /* Don't copy the pointers to the line start cache or the face instances. */ p->line_start_cache =3D Dynarr_new (line_start_cache); +#ifdef NEW_GC + p->face_cachels =3D Dynarr_lisp_new (face_cachel, + &lrecord_face_cachel_dynarr, + &lrecord_face_cachel); + p->glyph_cachels =3D Dynarr_lisp_new (glyph_cachel, + &lrecord_glyph_cachel_dynarr, + &lrecord_glyph_cachel); +#else /* not NEW_GC */ p->face_cachels =3D Dynarr_new (face_cachel); p->glyph_cachels =3D Dynarr_new (glyph_cachel); +#endif /* not NEW_GC */ p->subwindow_instance_cache =3D make_image_instance_cache_hash_table (); = @@ -5384,6 +5447,12 @@ syms_of_window (void) { INIT_LRECORD_IMPLEMENTATION (window); INIT_LRECORD_IMPLEMENTATION (window_mirror); +#ifdef NEW_GC + INIT_LRECORD_IMPLEMENTATION (face_cachel); + INIT_LRECORD_IMPLEMENTATION (face_cachel_dynarr); + INIT_LRECORD_IMPLEMENTATION (glyph_cachel); + INIT_LRECORD_IMPLEMENTATION (glyph_cachel_dynarr); +#endif /* NEW_GC */ = DEFSYMBOL (Qwindowp); DEFSYMBOL (Qwindow_live_p); 1.1 XEmacs/xemacs/src/.dbxrc.in Index: .dbxrc.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ## -*- ksh -*- ## Copyright (C) 1998 Free Software Foundation, Inc. ## This file is part of XEmacs. ## XEmacs is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the ## Free Software Foundation; either version 2, or (at your option) any ## later version. ## XEmacs is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## You should have received a copy of the GNU General Public License ## along with XEmacs; see the file COPYING. If not, write to ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. ## Author: Martin Buchholz ## You can use this file to debug XEmacs using Sun WorkShop's dbx. ## Some functions defined here require a running process, but most ## don't. Considerable effort has been expended to this end. ## Since this file is called `.dbxrc', it will be read by dbx ## automatically when dbx is run in the build directory, which is where ## developers usually debug their xemacs. ## See also the comments in .gdbinit. ## See also the question of the XEmacs FAQ, titled ## "How to Debug an XEmacs problem with a debugger". ## gdb sources the ./.gdbinit in _addition_ to ~/.gdbinit. ## But dbx does _not_ source ~/.dbxrc if it found ./.dbxrc. ## So we simulate the gdb algorithm by doing it ourselves here. #define NOT_C_CODE #include "config.h" if test -r $HOME/.dbxrc; then . $HOME/.dbxrc; fi dbxenv language_mode ansic ignore POLL ignore IO #ifdef VDB_POSIX ignore SIGSEGV SIGBUS #endif document lbt << 'end' Usage: lbt Print the current Lisp stack trace. Requires a running xemacs process. end function lbt { call debug_backtrace() } document ldp << 'end' Usage: ldp lisp_object Print a Lisp Object value using the Lisp printer. Requires a running xemacs process. end function ldp { call debug_print ($1); } Lisp_Type_Int=3D-2 ## A bug in dbx prevents string variables from having values beginning with= `-'!! function XEmacsInit { function ToInt { eval "$1=3D\$[(int) \`alloc.c\`$1]"; } ToInt dbg_USE_UNION_TYPE ToInt Lisp_Type_Char ToInt Lisp_Type_Record ToInt dbg_valbits ToInt dbg_gctypebits function ToLong { eval "$1=3D\$[(\`alloc.c\`unsigned long) \`alloc.c\`$1]= "; } ToLong dbg_valmask ToLong dbg_typemask xemacs_initted=3Dyes } function printvar { for i in $*; do eval "echo $i=3D\$$i"; done } document decode_object << 'end' Usage: decode_object lisp_object Extract implementation information from a Lisp Object. Defines variables $val, $type and $imp. end ## Various dbx bugs cause ugliness in following code function decode_object { if test -z "$xemacs_initted"; then XEmacsInit; fi; if test $dbg_USE_UNION_TYPE =3D 1; then ## Repeat after me... dbx sux, dbx sux, dbx sux... ## Allow both `pobj Qnil' and `pobj 0x82746834' to work case $(whatis $1) in *Lisp_Object*) obj=3D"$[(`alloc.c`unsigned long)(($1).i)]";; *) obj=3D"$[(`alloc.c`unsigned long)($1)]";; esac else obj=3D"$[(`alloc.c`unsigned long)($1)]"; fi if test $[(int)($obj & 1)] =3D 1; then ## It's an int val=3D$[(long)(((unsigned long long)$obj) >> 1)] type=3D$Lisp_Type_Int else type=3D$[(int)(((void*)$obj) & $dbg_typemask)] if test $type =3D $Lisp_Type_Char; then val=3D$[(void*)(long)(((unsigned long long)($obj & $dbg_valmask)) >> = $dbg_gctypebits)] else ## It's a record pointer val=3D$[(void*)$obj] if test "$val" =3D "(nil)"; then type=3Dnull_pointer; fi fi fi if test $type =3D $Lisp_Type_Record; then lheader=3D"((struct lrecord_header *) $val)" lrecord_type=3D$[(enum lrecord_type) $lheader->type] imp=3D$[(void*)(`alloc.c`lrecord_implementations_table[$lheader->type])] else lheader=3D"((struct lrecord_header *) -1)" lrecord_type=3D-1 imp=3D"0xdeadbeef" fi ## printvar obj val type imp } function xint { decode_object "$*" print (long) ($val) } document xtype << 'end' Usage: xtype lisp_object Print the Lisp type of a lisp object. end function xtype { decode_object "$*" if test $type =3D $Lisp_Type_Int; then echo "int" elif test $type =3D $Lisp_Type_Char; then echo "char" elif test $type =3D null_pointer; then echo "null_pointer" else echo "record type with name: $[((struct lrecord_implementation *)$imp)-= >name]" fi } function lisp-shadows { run -batch -vanilla -f list-load-path-shadows } function environment-to-run-temacs { unset EMACSLOADPATH export EMACSBOOTSTRAPLOADPATH=3D../lisp/:.. export EMACSBOOTSTRAPMODULEPATH=3D../modules/:.. } document run-temacs << 'end' Usage: run-temacs Run temacs interactively, like xemacs. Use this with debugging tools (like purify) that cannot deal with dumping, or when temacs builds successfully, but xemacs does not. end function run-temacs { environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el run-temacs -q ${1+"$@"} } document check-xemacs << 'end' Usage: check-xemacs Run the test suite. Equivalent to 'make check'. end function check-xemacs { run -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../t= ests/automated } document check-temacs << 'end' Usage: check-temacs Run the test suite on temacs. Equivalent to 'make check-temacs'. Use this with debugging tools (like purify) that cannot deal with dumping, or when temacs builds successfully, but xemacs does not. end function check-temacs { run-temacs -q -batch -l ../tests/automated/test-harness.el -f batch-test-= emacs ../tests/automated } document update-elc << 'end' Usage: update-elc Run the core lisp byte compilation part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end function update-elc { environment-to-run-temacs run -nd -batch -l ../lisp/update-elc.el } document dmp << 'end' Usage: dmp Run the dumping part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end function dmp { environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el dump } function pstruct { ## pstruct foo.c struct-name module "$1" > /dev/null type_ptr=3D"((struct $2 *) $val)" print $type_ptr print *$type_ptr } document pobj << 'end' Usage: pobj lisp_object Print the internal C representation of a Lisp Object. end function pobj { decode_object $1 if test $type =3D $Lisp_Type_Int; then print -f"Integer: %d" $val elif test $type =3D $Lisp_Type_Char; then if test $[$val > 32 && $val < 128] =3D 1; then print -f"Char: %c" $val else print -f"Char: %d" $val fi elif test $lrecord_type =3D lrecord_type_string; then pstruct alloc.c Lisp_String elif test $lrecord_type =3D lrecord_type_cons; then pstruct alloc.c Lisp_Cons elif test $lrecord_type =3D lrecord_type_symbol; then pstruct symbols.c Lisp_Symbol echo "Symbol name: $[(char *)($type_ptr->name->data)]" elif test $lrecord_type =3D lrecord_type_vector; then pstruct alloc.c Lisp_Vector echo "Vector of length $[$type_ptr->size]" elif test $lrecord_type =3D lrecord_type_bit_vector; then pstruct fns.c Lisp_Bit_Vector elif test $lrecord_type =3D lrecord_type_buffer; then pstruct buffer.c buffer elif test $lrecord_type =3D lrecord_type_char_table; then pstruct chartab.c Lisp_Char_Table elif test $lrecord_type =3D lrecord_type_char_table_entry; then pstruct chartab.c Lisp_Char_Table_Entry elif test $lrecord_type =3D lrecord_type_charset; then pstruct mule-charset.c Lisp_Charset elif test $lrecord_type =3D lrecord_type_coding_system; then pstruct file-coding.c Lisp_Coding_System elif test $lrecord_type =3D lrecord_type_color_instance; then pstruct objects.c Lisp_Color_Instance elif test $lrecord_type =3D lrecord_type_command_builder; then pstruct event-stream.c command_builder elif test $lrecord_type =3D lrecord_type_compiled_function; then pstruct bytecode.c Lisp_Compiled_Function elif test $lrecord_type =3D lrecord_type_console; then pstruct console.c console elif test $lrecord_type =3D lrecord_type_database; then pstruct database.c Lisp_Database elif test $lrecord_type =3D lrecord_type_device; then pstruct device.c device elif test $lrecord_type =3D lrecord_type_event; then pstruct events.c Lisp_Event elif test $lrecord_type =3D lrecord_type_extent; then pstruct extents.c extent elif test $lrecord_type =3D lrecord_type_extent_auxiliary; then pstruct extents.c extent_auxiliary elif test $lrecord_type =3D lrecord_type_extent_info; then pstruct extents.c extent_info elif test $lrecord_type =3D lrecord_type_face; then pstruct faces.c Lisp_Face elif test $lrecord_type =3D lrecord_type_float; then pstruct floatfns.c Lisp_Float elif test $lrecord_type =3D lrecord_type_font_instance; then pstruct objects.c Lisp_Font_Instance elif test $lrecord_type =3D lrecord_type_frame; then pstruct frame.c frame elif test $lrecord_type =3D lrecord_type_glyph; then pstruct glyph.c Lisp_Glyph elif test $lrecord_type =3D lrecord_type_gui_item; then pstruct gui.c Lisp_Gui_Item elif test $lrecord_type =3D lrecord_type_hash_table; then pstruct elhash.c Lisp_Hash_Table elif test $lrecord_type =3D lrecord_type_image_instance; then pstruct glyphs.c Lisp_Image_Instance elif test $lrecord_type =3D lrecord_type_keymap; then pstruct keymap.c Lisp_Keymap elif test $lrecord_type =3D lrecord_type_lcrecord_list; then pstruct alloc.c lcrecord_list elif test $lrecord_type =3D lrecord_type_ldap; then pstruct ldap.c Lisp_LDAP elif test $lrecord_type =3D lrecord_type_lstream; then pstruct lstream.c lstream elif test $lrecord_type =3D lrecord_type_marker; then pstruct marker.c Lisp_Marker elif test $lrecord_type =3D lrecord_type_opaque; then pstruct opaque.c Lisp_Opaque elif test $lrecord_type =3D lrecord_type_opaque_ptr; then pstruct opaque.c Lisp_Opaque_Ptr elif test $lrecord_type =3D lrecord_type_popup_data; then pstruct gui-x.c popup_data elif test $lrecord_type =3D lrecord_type_process; then pstruct process.c Lisp_Process elif test $lrecord_type =3D lrecord_type_range_table; then pstruct rangetab.c Lisp_Range_Table elif test $lrecord_type =3D lrecord_type_specifier; then pstruct specifier.c Lisp_Specifier elif test $lrecord_type =3D lrecord_type_subr; then pstruct eval.c Lisp_Subr elif test $lrecord_type =3D lrecord_type_symbol_value_buffer_local; then pstruct symbols.c symbol_value_buffer_local elif test $lrecord_type =3D lrecord_type_symbol_value_forward; then pstruct symbols.c symbol_value_forward elif test $lrecord_type =3D lrecord_type_symbol_value_lisp_magic; then pstruct symbols.c symbol_value_lisp_magic elif test $lrecord_type =3D lrecord_type_symbol_value_varalias; then pstruct symbols.c symbol_value_varalias elif test $lrecord_type =3D lrecord_type_timeout; then pstruct event-stream.c Lisp_Timeout elif test $lrecord_type =3D lrecord_type_toolbar_button; then pstruct toolbar.c toolbar_button elif test $lrecord_type =3D lrecord_type_tooltalk_message; then pstruct tooltalk.c Lisp_Tooltalk_Message elif test $lrecord_type =3D lrecord_type_tooltalk_pattern; then pstruct tooltalk.c Lisp_Tooltalk_Pattern elif test $lrecord_type =3D lrecord_type_weak_list; then pstruct data.c weak_list elif test $lrecord_type =3D lrecord_type_window; then pstruct window.c window elif test $lrecord_type =3D lrecord_type_window_configuration; then pstruct window.c window_config elif test "$type" =3D "null_pointer"; then echo "Lisp Object is a null pointer!!" else echo "Unknown Lisp Object type" print $1 fi } dbxenv suppress_startup_message 4.0 ## dbxenv mt_watchpoints on function dp_core { print ((struct x_frame *)(((struct frame*)(Fselected_frame(Qnil)&0x00FFFF= FF))->frame_data))->widget->core } ## Barf! function print_shell { print *(`frame-x.c`TopLevelShellRec*) (((struct `frame-x.c`x_frame*) (((s= truct `frame-x.c`frame*) (Fselected_frame(Qnil)&0x00FFFFFF))->frame_data))-= >widget) } ## ------------------------------------------------------------- ## functions to test the debugging support itself. ## If you change this file, make sure the following still work... ## ------------------------------------------------------------- function test_xtype { function doit { echo -n "$1: "; xtype "$1"; } test_various_objects } function test_pobj { function doit { echo '=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D'; echo -n "$1: "; pobj "$1"; } test_various_objects } function test_various_objects { doit Vemacs_major_version doit Vhelp_char doit Qnil doit Qunbound doit Vobarray doit Vall_weak_lists doit Vxemacs_codename } 1.1 XEmacs/xemacs/src/.gdbinit.in Index: .gdbinit.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ## -*- ksh -*- ## Copyright (C) 1998 Free Software Foundation, Inc. ## This file is part of XEmacs. ## XEmacs is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the ## Free Software Foundation; either version 2, or (at your option) any ## later version. ## XEmacs is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## You should have received a copy of the GNU General Public License ## along with XEmacs; see the file COPYING. If not, write to ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. ## Author: Martin Buchholz ## Some useful commands for debugging emacs with gdb 4.16 or better. ## ## Since this file is called `.gdbinit', it will be read by gdb ## automatically when gdb is run in the build directory, which is where ## developers usually debug their xemacs. You can also source this ## file from your ~/.gdbinit, if you like. ## ## Configure xemacs with --debug, and compile with -g. ## ## See also the question of the XEmacs FAQ, titled ## "How to Debug an XEmacs problem with a debugger". ## ## This can be used to debug XEmacs no matter how the following are ## specified: ## USE_UNION_TYPE ## (the above all have configure equivalents) ## Some functions defined here require a running process, but most ## don't. Considerable effort has been expended to this end. ## See the dbg_ C support code in src/alloc.c that allows the functions ## defined in this file to work correctly. #define NOT_C_CODE #include "config.h" set print union off set print pretty off #ifdef VDB_POSIX handle SIGSEGV SIGBUS nostop noprint #endif set $Lisp_Type_Int =3D -2 define decode_object set $obj =3D (unsigned long) $arg0 if $obj & 1 ## It's an int set $val =3D $obj >> 1 set $type =3D $Lisp_Type_Int else set $type =3D $obj & dbg_typemask if $type =3D=3D Lisp_Type_Char set $val =3D ($obj & dbg_valmask) >> dbg_gctypebits else ## It's a record pointer set $val =3D $obj end end if $type =3D=3D Lisp_Type_Record set $lheader =3D ((struct lrecord_header *) $val) set $lrecord_type =3D ($lheader->type) set $imp =3D ((struct lrecord_implementation *) lrecord_implementations= _table[(int) $lrecord_type]) else set $lrecord_type =3D -1 set $lheader =3D -1 set $imp =3D -1 end end document decode_object Usage: decode_object lisp_object Extract implementation information from a Lisp Object. Defines variables $val, $type and $imp. end define xint decode_object $arg0 print ((long) $val) end define xtype decode_object $arg0 if $type =3D=3D $Lisp_Type_Int echo int\n else if $type =3D=3D Lisp_Type_Char echo char\n else printf "record type: %s\n", $imp->name end end end document xtype Usage: xtype lisp_object Print the Lisp type of a lisp object. end define lisp-shadows run -batch -vanilla -f list-load-path-shadows end document lisp-shadows Usage: lisp-shadows Run xemacs to check for lisp shadows end define environment-to-run-temacs unset env EMACSLOADPATH set env EMACSBOOTSTRAPLOADPATH=3D../lisp/:.. set env EMACSBOOTSTRAPMODULEPATH=3D../modules/:.. end define run-temacs environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el run-temacs -q end document run-temacs Usage: run-temacs Run temacs interactively, like xemacs. Use this with debugging tools (like purify) that cannot deal with dumping, or when temacs builds successfully, but xemacs does not. end define check-xemacs run -batch -l ../tests/automated/test-harness.el -f batch-test-emacs ../t= ests/automated end document check-xemacs Usage: check-xemacs Run the test suite. Equivalent to 'make check'. end define check-temacs environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el run-temacs -q -batch -l ../tests/auto= mated/test-harness.el -f batch-test-emacs ../tests/automated end document check-temacs Usage: check-temacs Run the test suite on temacs. Equivalent to 'make check-temacs'. Use this with debugging tools (like purify) that cannot deal with dumping, or when temacs builds successfully, but xemacs does not. end define update-elc environment-to-run-temacs run -nd -batch -l ../lisp/update-elc.el end document update-elc Usage: update-elc Run the core lisp byte compilation part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end define dmp environment-to-run-temacs run -nd -batch -l ../lisp/loadup.el dump end document dmp Usage: dmp Run the dumping part of the build procedure. Use when debugging temacs, not xemacs! Use this when temacs builds successfully, but xemacs does not. end define ldp printf "%s", "Lisp =3D> " call debug_print($arg0) end document ldp Usage: ldp lisp_object Print a Lisp Object value using the Lisp printer. Requires a running xemacs process. end define lbt call debug_backtrace() end document lbt Usage: lbt Print the current Lisp stack trace. Requires a running xemacs process. end define leval ldp Feval(Fcar(Fread_from_string(build_string($arg0),Qnil,Qnil))) end document leval Usage: leval "SEXP" Eval a lisp expression. Requires a running xemacs process. Example: (gdb) leval "(+ 1 2)" Lisp =3D=3D> 3 end define wtype print $arg0->core.widget_class->core_class.class_name end define xtname print XrmQuarkToString(((Object)($arg0))->object.xrm_name) end ## GDB's command language makes you want to ... define pptype set $type_ptr =3D ($arg0 *) $val print $type_ptr print *$type_ptr end define pstructtype set $type_ptr =3D (struct $arg0 *) $val print $type_ptr print *$type_ptr end define pobj decode_object $arg0 if $type =3D=3D $Lisp_Type_Int printf "Integer: %d\n", $val else if $type =3D=3D Lisp_Type_Char if $val > 32 && $val < 128 printf "Char: %c\n", $val else printf "Char: %d\n", $val end else if $lrecord_type =3D=3D lrecord_type_string pptype Lisp_String else if $lrecord_type =3D=3D lrecord_type_cons pptype Lisp_Cons else if $lrecord_type =3D=3D lrecord_type_symbol pptype Lisp_Symbol printf "Symbol name: %s\n", ((Lisp_String *)$type_ptr->name)->data_ else if $lrecord_type =3D=3D lrecord_type_vector pptype Lisp_Vector printf "Vector of length %d\n", $type_ptr->size ##print *($type_ptr->data) @ $type_ptr->size else if $lrecord_type =3D=3D lrecord_type_bit_vector pptype Lisp_Bit_Vector else if $lrecord_type =3D=3D lrecord_type_buffer pstructtype buffer else if $lrecord_type =3D=3D lrecord_type_char_table pptype Lisp_Char_Table else if $lrecord_type =3D=3D lrecord_type_char_table_entry pptype Lisp_Char_Table_Entry else if $lrecord_type =3D=3D lrecord_type_charset pptype Lisp_Charset else if $lrecord_type =3D=3D lrecord_type_coding_system pptype Lisp_Coding_System else if $lrecord_type =3D=3D lrecord_type_color_instance pptype Lisp_Color_Instance else if $lrecord_type =3D=3D lrecord_type_command_builder pptype command_builder else if $lrecord_type =3D=3D lrecord_type_compiled_function pptype Lisp_Compiled_Function else if $lrecord_type =3D=3D lrecord_type_console pstructtype console else if $lrecord_type =3D=3D lrecord_type_database pptype Lisp_Database else if $lrecord_type =3D=3D lrecord_type_device pstructtype device else if $lrecord_type =3D=3D lrecord_type_event pptype Lisp_Event else if $lrecord_type =3D=3D lrecord_type_extent pstructtype extent else if $lrecord_type =3D=3D lrecord_type_extent_auxiliary pstructtype extent_auxiliary else if $lrecord_type =3D=3D lrecord_type_extent_info pstructtype extent_info else if $lrecord_type =3D=3D lrecord_type_face pptype Lisp_Face else if $lrecord_type =3D=3D lrecord_type_float pptype Lisp_Float else if $lrecord_type =3D=3D lrecord_type_font_instance pptype Lisp_Font_Instance else if $lrecord_type =3D=3D lrecord_type_frame pstructtype frame else if $lrecord_type =3D=3D lrecord_type_glyph pptype Lisp_Glyph else if $lrecord_type =3D=3D lrecord_type_gui_item pptype Lisp_Gui_Item else if $lrecord_type =3D=3D lrecord_type_hash_table pptype Lisp_Hash_Table else if $lrecord_type =3D=3D lrecord_type_image_instance pptype Lisp_Image_Instance else if $lrecord_type =3D=3D lrecord_type_keymap pptype Lisp_Keymap else if $lrecord_type =3D=3D lrecord_type_lcrecord_list pstructtype lcrecord_list else if $lrecord_type =3D=3D lrecord_type_ldap pptype Lisp_LDAP else if $lrecord_type =3D=3D lrecord_type_lstream pstructtype lstream else if $lrecord_type =3D=3D lrecord_type_marker pptype Lisp_Marker else if $lrecord_type =3D=3D lrecord_type_opaque pptype Lisp_Opaque else if $lrecord_type =3D=3D lrecord_type_opaque_ptr pptype Lisp_Opaque_Ptr else if $lrecord_type =3D=3D lrecord_type_popup_data pptype popup_data else if $lrecord_type =3D=3D lrecord_type_process pptype Lisp_Process else if $lrecord_type =3D=3D lrecord_type_range_table pptype Lisp_Range_Table else if $lrecord_type =3D=3D lrecord_type_specifier pptype Lisp_Specifier else if $lrecord_type =3D=3D lrecord_type_subr pptype Lisp_Subr else if $lrecord_type =3D=3D lrecord_type_symbol_value_buffer_local pstructtype symbol_value_buffer_local else if $lrecord_type =3D=3D lrecord_type_symbol_value_forward pstructtype symbol_value_forward else if $lrecord_type =3D=3D lrecord_type_symbol_value_lisp_magic pstructtype symbol_value_lisp_magic else if $lrecord_type =3D=3D lrecord_type_symbol_value_varalias pstructtype symbol_value_varalias else if $lrecord_type =3D=3D lrecord_type_timeout pptype Lisp_Timeout else if $lrecord_type =3D=3D lrecord_type_toolbar_button pstructtype toolbar_button else if $lrecord_type =3D=3D lrecord_type_tooltalk_message pptype Lisp_Tooltalk_Message else if $lrecord_type =3D=3D lrecord_type_tooltalk_pattern pptype Lisp_Tooltalk_Pattern else if $lrecord_type =3D=3D lrecord_type_weak_list pstructtype weak_list else if $lrecord_type =3D=3D lrecord_type_window pstructtype window else if $lrecord_type =3D=3D lrecord_type_window_configuration pstructtype window_config else if $lrecord_type =3D=3D lrecord_type_fc_pattern pstructtype fc_pattern else if $lrecord_type =3D=3D lrecord_type_fc_objectset pstructtype fc_objectset else if $lrecord_type =3D=3D lrecord_type_fc_fontset pstructtype fc_fontset else echo Unknown Lisp Object type\n print $arg0 ## Barf, gag, retch end end end = end end end end end end end end end end end end end end end end end ## Repeat after me... gdb sux, gdb sux, gdb sux... end end end end end end end end end end end end end end end end end end ## Are we having fun yet?? end end end end end end end end end end end end end end end end end end end document pobj Usage: pobj lisp_object Print the internal C representation of a Lisp Object. end ## ------------------------------------------------------------- ## functions to test the debugging support itself. ## If you change this file, make sure the following still work... ## ------------------------------------------------------------- define test_xtype printf "Vemacs_major_version: " xtype Vemacs_major_version printf "Vhelp_char: " xtype Vhelp_char printf "Qnil: " xtype Qnil printf "Qunbound: " xtype Qunbound printf "Vobarray: " xtype Vobarray printf "Vall_weak_lists: " xtype Vall_weak_lists printf "Vxemacs_codename: " xtype Vxemacs_codename end define test_pobj printf "Vemacs_major_version: " pobj Vemacs_major_version printf "Vhelp_char: " pobj Vhelp_char printf "Qnil: " pobj Qnil printf "Qunbound: " pobj Qunbound printf "Vobarray: " pobj Vobarray printf "Vall_weak_lists: " pobj Vall_weak_lists printf "Vxemacs_codename: " pobj Vxemacs_codename end 1.1 XEmacs/xemacs/src/gc.c Index: gc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* New incremental garbage collector for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" #include "backtrace.h" #include "buffer.h" #include "bytecode.h" #include "chartab.h" #include "console-stream.h" #include "device.h" #include "elhash.h" #include "events.h" #include "extents-impl.h" #include "file-coding.h" #include "frame-impl.h" #include "gc.h" #include "glyphs.h" #include "opaque.h" #include "lrecord.h" #include "lstream.h" #include "process.h" #include "profile.h" #include "redisplay.h" #include "specifier.h" #include "sysfile.h" #include "sysdep.h" #include "window.h" #include "vdb.h" #define GC_CONS_THRESHOLD 2000000 #define GC_CONS_INCREMENTAL_THRESHOLD 200000 #define GC_INCREMENTAL_TRAVERSAL_THRESHOLD 100000 /* Number of bytes of consing done since the last GC. */ EMACS_INT consing_since_gc; /* Number of bytes of consing done since startup. */ EMACS_UINT total_consing; /* Number of bytes of current allocated heap objects. */ EMACS_INT total_gc_usage; /* If the above is set. */ int total_gc_usage_set; /* Number of bytes of consing since gc before another gc should be done. */ EMACS_INT gc_cons_threshold; /* Nonzero during gc */ int gc_in_progress; /* Percentage of consing of total data size before another GC. */ EMACS_INT gc_cons_percentage; #ifdef NEW_GC /* Number of bytes of consing since gc before another cycle of the gc should be done in incremental mode. */ EMACS_INT gc_cons_incremental_threshold; /* Number of elements marked in one cycle of incremental GC. */ EMACS_INT gc_incremental_traversal_threshold; /* Nonzero during write barrier */ int write_barrier_enabled; #endif /* NEW_GC */ =0C #ifdef NEW_GC /************************************************************************/ /* Incremental State and Statistics */ /************************************************************************/ enum gc_phase { NONE, INIT_GC, PUSH_ROOT_SET, MARK, REPUSH_ROOT_SET, FINISH_MARK, FINALIZE, SWEEP, FINISH_GC }; #ifndef ERROR_CHECK_GC struct { enum gc_phase phase; } gc_state; #else /* ERROR_CHECK_GC */ enum gc_stat_id { GC_STAT_TOTAL, GC_STAT_IN_LAST_GC, GC_STAT_IN_THIS_GC, GC_STAT_IN_LAST_CYCLE, GC_STAT_IN_THIS_CYCLE, GC_STAT_COUNT /* has to be last */ }; struct { enum gc_phase phase; EMACS_INT n_gc[GC_STAT_COUNT]; EMACS_INT n_cycles[GC_STAT_COUNT]; EMACS_INT enqueued[GC_STAT_COUNT]; EMACS_INT dequeued[GC_STAT_COUNT]; EMACS_INT repushed[GC_STAT_COUNT]; EMACS_INT enqueued2[GC_STAT_COUNT]; EMACS_INT dequeued2[GC_STAT_COUNT]; EMACS_INT finalized[GC_STAT_COUNT]; EMACS_INT freed[GC_STAT_COUNT]; EMACS_INT explicitly_freed; EMACS_INT explicitly_tried_freed; } gc_state; #endif /* ERROR_CHECK_GC */ #define GC_PHASE gc_state.phase #define GC_SET_PHASE(p) GC_PHASE =3D p #ifdef ERROR_CHECK_GC # define GC_STAT_START_NEW_GC gc_stat_start_new_gc () # define GC_STAT_RESUME_GC gc_stat_resume_gc () #define GC_STAT_TICK(STAT) \ gc_state.STAT[GC_STAT_TOTAL]++; \ gc_state.STAT[GC_STAT_IN_THIS_GC]++; \ gc_state.STAT[GC_STAT_IN_THIS_CYCLE]++ # define GC_STAT_ENQUEUED \ if (GC_PHASE =3D=3D REPUSH_ROOT_SET) \ { \ GC_STAT_TICK (enqueued2); \ } \ else \ { \ GC_STAT_TICK (enqueued); \ } = # define GC_STAT_DEQUEUED \ if (gc_state.phase =3D=3D REPUSH_ROOT_SET) \ { \ GC_STAT_TICK (dequeued2); \ } \ else \ { \ GC_STAT_TICK (dequeued); \ } = # define GC_STAT_REPUSHED GC_STAT_TICK (repushed) #define GC_STAT_RESUME(stat) \ gc_state.stat[GC_STAT_IN_LAST_CYCLE] =3D \ gc_state.stat[GC_STAT_IN_THIS_CYCLE]; \ gc_state.stat[GC_STAT_IN_THIS_CYCLE] =3D 0 #define GC_STAT_RESTART(stat) \ gc_state.stat[GC_STAT_IN_LAST_GC] =3D \ gc_state.stat[GC_STAT_IN_THIS_GC]; \ gc_state.stat[GC_STAT_IN_THIS_GC] =3D 0; \ GC_STAT_RESUME (stat) void gc_stat_start_new_gc (void) { gc_state.n_gc[GC_STAT_TOTAL]++; gc_state.n_cycles[GC_STAT_TOTAL]++; gc_state.n_cycles[GC_STAT_IN_LAST_GC] =3D gc_state.n_cycles[GC_STAT_IN_TH= IS_GC]; gc_state.n_cycles[GC_STAT_IN_THIS_GC] =3D 1; = GC_STAT_RESTART (enqueued); GC_STAT_RESTART (dequeued); GC_STAT_RESTART (repushed); GC_STAT_RESTART (finalized); GC_STAT_RESTART (enqueued2); GC_STAT_RESTART (dequeued2); GC_STAT_RESTART (freed); } = void gc_stat_resume_gc (void) { gc_state.n_cycles[GC_STAT_TOTAL]++; gc_state.n_cycles[GC_STAT_IN_THIS_GC]++; GC_STAT_RESUME (enqueued); GC_STAT_RESUME (dequeued); GC_STAT_RESUME (repushed); GC_STAT_RESUME (finalized); GC_STAT_RESUME (enqueued2); GC_STAT_RESUME (dequeued2); GC_STAT_RESUME (freed); } void gc_stat_finalized (void) { GC_STAT_TICK (finalized); } void gc_stat_freed (void) { GC_STAT_TICK (freed); } void gc_stat_explicitly_freed (void) { gc_state.explicitly_freed++; } void gc_stat_explicitly_tried_freed (void) { gc_state.explicitly_tried_freed++; } #define GC_STAT_PRINT_ONE(stat) \ printf (" | %9s %10d %10d %10d %10d %10d\n", \ #stat, \ (int) gc_state.stat[GC_STAT_TOTAL], \ (int) gc_state.stat[GC_STAT_IN_LAST_GC], \ (int) gc_state.stat[GC_STAT_IN_THIS_GC], \ (int) gc_state.stat[GC_STAT_IN_LAST_CYCLE], \ (int) gc_state.stat[GC_STAT_IN_THIS_CYCLE]) void gc_stat_print_stats (void) { printf (" | PHASE %d TOTAL_GC %d\n", (int) GC_PHASE, (int) gc_state.n_gc[GC_STAT_TOTAL]); printf (" | %9s %10s %10s %10s %10s %10s\n", "stat", "total", "last_gc", "this_gc", "last_cycle", "this_cycle"); printf (" | %9s %10d %10d %10d \n", "cycle", (int) gc_state.n_cycles[GC_STAT_TOTAL], (int) gc_state.n_cycles[GC_STAT_IN_LAST_GC], (int) gc_state.n_cycles[GC_STAT_IN_THIS_GC]); GC_STAT_PRINT_ONE (enqueued); GC_STAT_PRINT_ONE (dequeued); GC_STAT_PRINT_ONE (repushed); GC_STAT_PRINT_ONE (enqueued2); GC_STAT_PRINT_ONE (dequeued2); GC_STAT_PRINT_ONE (finalized); GC_STAT_PRINT_ONE (freed); printf (" | explicitly freed %d tried %d\n", = (int) gc_state.explicitly_freed, = (int) gc_state.explicitly_tried_freed); } DEFUN("gc-stats", Fgc_stats, 0, 0 ,"", /* Return statistics about garbage collection cycles in a property list. */ ()) { Lisp_Object pl =3D Qnil; #define PL(name,value) \ pl =3D cons3 (intern (name), make_int ((int) gc_state.value), pl) PL ("explicitly-tried-freed", explicitly_tried_freed); PL ("explicitly-freed", explicitly_freed); PL ("freed-in-this-cycle", freed[GC_STAT_IN_THIS_CYCLE]); PL ("freed-in-this-gc", freed[GC_STAT_IN_THIS_GC]); PL ("freed-in-last-cycle", freed[GC_STAT_IN_LAST_CYCLE]); PL ("freed-in-last-gc", freed[GC_STAT_IN_LAST_GC]); PL ("freed-total", freed[GC_STAT_TOTAL]); PL ("finalized-in-this-cycle", finalized[GC_STAT_IN_THIS_CYCLE]); PL ("finalized-in-this-gc", finalized[GC_STAT_IN_THIS_GC]); PL ("finalized-in-last-cycle", finalized[GC_STAT_IN_LAST_CYCLE]); PL ("finalized-in-last-gc", finalized[GC_STAT_IN_LAST_GC]); PL ("finalized-total", finalized[GC_STAT_TOTAL]); PL ("repushed-in-this-cycle", repushed[GC_STAT_IN_THIS_CYCLE]); PL ("repushed-in-this-gc", repushed[GC_STAT_IN_THIS_GC]); PL ("repushed-in-last-cycle", repushed[GC_STAT_IN_LAST_CYCLE]); PL ("repushed-in-last-gc", repushed[GC_STAT_IN_LAST_GC]); PL ("repushed-total", repushed[GC_STAT_TOTAL]); PL ("dequeued2-in-this-cycle", dequeued2[GC_STAT_IN_THIS_CYCLE]); PL ("dequeued2-in-this-gc", dequeued2[GC_STAT_IN_THIS_GC]); PL ("dequeued2-in-last-cycle", dequeued2[GC_STAT_IN_LAST_CYCLE]); PL ("dequeued2-in-last-gc", dequeued2[GC_STAT_IN_LAST_GC]); PL ("dequeued2-total", dequeued2[GC_STAT_TOTAL]); PL ("enqueued2-in-this-cycle", enqueued2[GC_STAT_IN_THIS_CYCLE]); PL ("enqueued2-in-this-gc", enqueued2[GC_STAT_IN_THIS_GC]); PL ("enqueued2-in-last-cycle", enqueued2[GC_STAT_IN_LAST_CYCLE]); PL ("enqueued2-in-last-gc", enqueued2[GC_STAT_IN_LAST_GC]); PL ("enqueued2-total", enqueued2[GC_STAT_TOTAL]); PL ("dequeued-in-this-cycle", dequeued[GC_STAT_IN_THIS_CYCLE]); PL ("dequeued-in-this-gc", dequeued[GC_STAT_IN_THIS_GC]); PL ("dequeued-in-last-cycle", dequeued[GC_STAT_IN_LAST_CYCLE]); PL ("dequeued-in-last-gc", dequeued[GC_STAT_IN_LAST_GC]); PL ("dequeued-total", dequeued[GC_STAT_TOTAL]); PL ("enqueued-in-this-cycle", enqueued[GC_STAT_IN_THIS_CYCLE]); PL ("enqueued-in-this-gc", enqueued[GC_STAT_IN_THIS_GC]); PL ("enqueued-in-last-cycle", enqueued[GC_STAT_IN_LAST_CYCLE]); PL ("enqueued-in-last-gc", enqueued[GC_STAT_IN_LAST_GC]); PL ("enqueued-total", enqueued[GC_STAT_TOTAL]); PL ("n-cycles-in-this-gc", n_cycles[GC_STAT_IN_THIS_GC]); PL ("n-cycles-in-last-gc", n_cycles[GC_STAT_IN_LAST_GC]); PL ("n-cycles-total", n_cycles[GC_STAT_TOTAL]); PL ("n-gc-total", n_gc[GC_STAT_TOTAL]); PL ("phase", phase); return pl; } #else /* not ERROR_CHECK_GC */ # define GC_STAT_START_NEW_GC # define GC_STAT_RESUME_GC # define GC_STAT_ENQUEUED # define GC_STAT_DEQUEUED # define GC_STAT_REPUSHED # define GC_STAT_REMOVED #endif /* not ERROR_CHECK_GC */ #endif /* NEW_GC */ =0C /************************************************************************/ /* Recompute need to garbage collect */ /************************************************************************/ int need_to_garbage_collect; #ifdef ERROR_CHECK_GC int always_gc =3D 0; /* Debugging hack; equivalent to (setq gc-cons-thresold -1) */ #else #define always_gc 0 #endif /* True if it's time to garbage collect now. */ void recompute_need_to_garbage_collect (void) { if (always_gc) need_to_garbage_collect =3D 1; else need_to_garbage_collect =3D = #ifdef NEW_GC write_barrier_enabled ? = (consing_since_gc > gc_cons_incremental_threshold) : #endif /* NEW_GC */ (consing_since_gc > gc_cons_threshold && #if 0 /* #### implement this better */ (100 * consing_since_gc) / total_data_usage () >=3D gc_cons_percentage #else (!total_gc_usage_set || (100 * consing_since_gc) / total_gc_usage >=3D gc_cons_percentage) #endif ); recompute_funcall_allocation_flag (); } =0C /************************************************************************/ /* Mark Phase */ /************************************************************************/ static const struct memory_description lisp_object_description_1[] =3D { { XD_LISP_OBJECT, 0 }, { XD_END } }; const struct sized_memory_description lisp_object_description =3D { sizeof (Lisp_Object), lisp_object_description_1 }; #if defined (USE_KKCC) || defined (PDUMP) /* This function extracts the value of a count variable described somewhere = else in the description. It is converted corresponding to the type */ = EMACS_INT lispdesc_indirect_count_1 (EMACS_INT code, const struct memory_description *idesc, const void *idata) { EMACS_INT count; const void *irdata; int line =3D XD_INDIRECT_VAL (code); int delta =3D XD_INDIRECT_DELTA (code); irdata =3D ((char *) idata) + lispdesc_indirect_count (idesc[line].offset, idesc, idata); switch (idesc[line].type) { case XD_BYTECOUNT: count =3D * (Bytecount *) irdata; break; case XD_ELEMCOUNT: count =3D * (Elemcount *) irdata; break; case XD_HASHCODE: count =3D * (Hashcode *) irdata; break; case XD_INT: count =3D * (int *) irdata; break; case XD_LONG: count =3D * (long *) irdata; break; default: stderr_out ("Unsupported count type : %d (line =3D %d, code =3D %ld)\= n", idesc[line].type, line, (long) code); #if defined(USE_KKCC) && defined(DEBUG_XEMACS) if (gc_in_progress) kkcc_backtrace (); #endif #ifdef PDUMP if (in_pdump) pdump_backtrace (); #endif count =3D 0; /* warning suppression */ ABORT (); } count +=3D delta; return count; } /* SDESC is a "description map" (basically, a list of offsets used for successive indirections) and OBJ is the first object to indirect off of. Return the description ultimately found. */ const struct sized_memory_description * lispdesc_indirect_description_1 (const void *obj, const struct sized_memory_description *sdesc) { int pos; for (pos =3D 0; sdesc[pos].size >=3D 0; pos++) obj =3D * (const void **) ((const char *) obj + sdesc[pos].size); return (const struct sized_memory_description *) obj; } /* Compute the size of the data at RDATA, described by a single entry DESC1 in a description array. OBJ and DESC are used for XD_INDIRECT references. */ static Bytecount lispdesc_one_description_line_size (void *rdata, const struct memory_description *desc1, const void *obj, const struct memory_description *desc) { union_switcheroo: switch (desc1->type) { case XD_LISP_OBJECT_ARRAY: { EMACS_INT val =3D lispdesc_indirect_count (desc1->data1, desc, obj); return (val * sizeof (Lisp_Object)); } case XD_LISP_OBJECT: case XD_LO_LINK: return sizeof (Lisp_Object); case XD_OPAQUE_PTR: return sizeof (void *); #ifdef NEW_GC case XD_LISP_OBJECT_BLOCK_PTR: #endif /* NEW_GC */ case XD_BLOCK_PTR: { EMACS_INT val =3D lispdesc_indirect_count (desc1->data1, desc, obj); return val * sizeof (void *); } case XD_BLOCK_ARRAY: { EMACS_INT val =3D lispdesc_indirect_count (desc1->data1, desc, obj); = return (val * lispdesc_block_size (rdata, lispdesc_indirect_description (obj, desc1->data2.descr))); } case XD_OPAQUE_DATA_PTR: return sizeof (void *); case XD_UNION_DYNAMIC_SIZE: { /* If an explicit size was given in the first-level structure description, use it; else compute size based on current union constant. */ const struct sized_memory_description *sdesc =3D lispdesc_indirect_description (obj, desc1->data2.descr); if (sdesc->size) return sdesc->size; else { desc1 =3D lispdesc_process_xd_union (desc1, desc, obj); if (desc1) goto union_switcheroo; break; } } case XD_UNION: { /* If an explicit size was given in the first-level structure description, use it; else compute size based on maximum of all possible structures. */ const struct sized_memory_description *sdesc =3D lispdesc_indirect_description (obj, desc1->data2.descr); if (sdesc->size) return sdesc->size; else { int count; Bytecount max_size =3D -1, size; desc1 =3D sdesc->description; for (count =3D 0; desc1[count].type !=3D XD_END; count++) { size =3D lispdesc_one_description_line_size (rdata, &desc1[count], obj, desc); if (size > max_size) max_size =3D size; } return max_size; } } case XD_ASCII_STRING: return sizeof (void *); case XD_DOC_STRING: return sizeof (void *); case XD_INT_RESET: return sizeof (int); case XD_BYTECOUNT: return sizeof (Bytecount); case XD_ELEMCOUNT: return sizeof (Elemcount); case XD_HASHCODE: return sizeof (Hashcode); case XD_INT: return sizeof (int); case XD_LONG: return sizeof (long); default: stderr_out ("Unsupported dump type : %d\n", desc1->type); ABORT (); } return 0; } /* Return the size of the memory block (NOT necessarily a structure!) = described by SDESC and pointed to by OBJ. If SDESC records an explicit size (i.e. non-zero), it is simply returned; otherwise, the size is calculated by the maximum offset and the size of the object at that offset, rounded up to the maximum alignment. In this case, we may need the object, for example when retrieving an "indirect count" of an inlined array (the count is not constant, but is specified by one of the elements of the memory block). (It is generally not a problem if we return an overly large size -- we will simply end up reserving more space than necessary; but if the size is too small we could be in serious trouble, in particular with nested inlined structures, where there may be alignment padding in the middle of a block. #### In fact there is an (at least theoretical) problem with an overly large size -- we may trigger a protection fault when reading from invalid memory. We need to handle this -- perhaps in a stupid but dependable way, i.e. by trapping SIGSEGV and SIGBUS.) */ Bytecount lispdesc_block_size_1 (const void *obj, Bytecount size, const struct memory_description *desc) { EMACS_INT max_offset =3D -1; int max_offset_pos =3D -1; int pos; if (size) return size; for (pos =3D 0; desc[pos].type !=3D XD_END; pos++) { EMACS_INT offset =3D lispdesc_indirect_count (desc[pos].offset, desc,= obj); if (offset =3D=3D max_offset) { stderr_out ("Two relocatable elements at same offset?\n"); ABORT (); } else if (offset > max_offset) { max_offset =3D offset; max_offset_pos =3D pos; } } if (max_offset_pos < 0) return 0; { Bytecount size_at_max; size_at_max =3D lispdesc_one_description_line_size ((char *) obj + max_offset, &desc[max_offset_pos], obj, desc); /* We have no way of knowing the required alignment for this structure, so just make it maximally aligned. */ return MAX_ALIGN_SIZE (max_offset + size_at_max); } } #endif /* defined (USE_KKCC) || defined (PDUMP) */ #ifdef MC_ALLOC #define GC_CHECK_NOT_FREE(lheader) \ gc_checking_assert (! LRECORD_FREE_P (lheader)); #else /* MC_ALLOC */ #define GC_CHECK_NOT_FREE(lheader) \ gc_checking_assert (! LRECORD_FREE_P (lheader)); \ gc_checking_assert (LHEADER_IMPLEMENTATION (lheader)->basic_p || \ ! ((struct old_lcrecord_header *) lheader)->free) #endif /* MC_ALLOC */ #ifdef USE_KKCC /* The following functions implement the new mark algorithm. = They mark objects according to their descriptions. They = are modeled on the corresponding pdumper procedures. */ #if 0 # define KKCC_STACK_AS_QUEUE 1 #endif #ifdef DEBUG_XEMACS /* The backtrace for the KKCC mark functions. */ #define KKCC_INIT_BT_STACK_SIZE 4096 typedef struct { void *obj; const struct memory_description *desc; int pos; } kkcc_bt_stack_entry; static kkcc_bt_stack_entry *kkcc_bt; static int kkcc_bt_stack_size; static int kkcc_bt_depth =3D 0; static void kkcc_bt_init (void) { kkcc_bt_depth =3D 0; kkcc_bt_stack_size =3D KKCC_INIT_BT_STACK_SIZE; kkcc_bt =3D (kkcc_bt_stack_entry *) xmalloc_and_zero (kkcc_bt_stack_size * sizeof (kkcc_bt_stack_entry)); if (!kkcc_bt) { stderr_out ("KKCC backtrace stack init failed for size %d\n", kkcc_bt_stack_size); ABORT (); } } void kkcc_backtrace (void) { int i; stderr_out ("KKCC mark stack backtrace :\n"); for (i =3D kkcc_bt_depth - 1; i >=3D 0; i--) { Lisp_Object obj =3D wrap_pointer_1 (kkcc_bt[i].obj); stderr_out (" [%d]", i); if ((XRECORD_LHEADER (obj)->type >=3D lrecord_type_last_built_in_type) || (!LRECORDP (obj)) || (!XRECORD_LHEADER_IMPLEMENTATION (obj))) { stderr_out (" non Lisp Object"); } else { stderr_out (" %s", XRECORD_LHEADER_IMPLEMENTATION (obj)->name); } stderr_out (" (addr: 0x%x, desc: 0x%x, ", (int) kkcc_bt[i].obj, (int) kkcc_bt[i].desc); if (kkcc_bt[i].pos >=3D 0) stderr_out ("pos: %d)\n", kkcc_bt[i].pos); else if (kkcc_bt[i].pos =3D=3D -1) stderr_out ("root set)\n"); else if (kkcc_bt[i].pos =3D=3D -2) stderr_out ("dirty object)\n"); } } static void kkcc_bt_stack_realloc (void) { kkcc_bt_stack_size *=3D 2; kkcc_bt =3D (kkcc_bt_stack_entry *) xrealloc (kkcc_bt, kkcc_bt_stack_size * sizeof (kkcc_bt_stack_entry)); if (!kkcc_bt) { stderr_out ("KKCC backtrace stack realloc failed for size %d\n", = kkcc_bt_stack_size); ABORT (); } } static void kkcc_bt_free (void) { xfree_1 (kkcc_bt); kkcc_bt =3D 0; kkcc_bt_stack_size =3D 0; } static void kkcc_bt_push (void *obj, const struct memory_description *desc, = int level, int pos) { kkcc_bt_depth =3D level; kkcc_bt[kkcc_bt_depth].obj =3D obj; kkcc_bt[kkcc_bt_depth].desc =3D desc; kkcc_bt[kkcc_bt_depth].pos =3D pos; kkcc_bt_depth++; if (kkcc_bt_depth >=3D kkcc_bt_stack_size) kkcc_bt_stack_realloc (); } #else /* not DEBUG_XEMACS */ #define kkcc_bt_init() #define kkcc_bt_push(obj, desc, level, pos) #endif /* not DEBUG_XEMACS */ /* Object memory descriptions are in the lrecord_implementation structure. But copying them to a parallel array is much more cache-friendly. */ const struct memory_description *lrecord_memory_descriptions[countof (lreco= rd_implementations_table)]; /* the initial stack size in kkcc_gc_stack_entries */ #define KKCC_INIT_GC_STACK_SIZE 16384 typedef struct { void *data; const struct memory_description *desc; #ifdef DEBUG_XEMACS int level; int pos; #endif } kkcc_gc_stack_entry; static kkcc_gc_stack_entry *kkcc_gc_stack_ptr; static int kkcc_gc_stack_front; static int kkcc_gc_stack_rear; static int kkcc_gc_stack_size; #define KKCC_INC(i) ((i + 1) % kkcc_gc_stack_size) #define KKCC_INC2(i) ((i + 2) % kkcc_gc_stack_size) #define KKCC_GC_STACK_FULL (KKCC_INC2 (kkcc_gc_stack_rear) =3D=3D kkcc_gc_s= tack_front) #define KKCC_GC_STACK_EMPTY (KKCC_INC (kkcc_gc_stack_rear) =3D=3D kkcc_gc_s= tack_front) static void kkcc_gc_stack_init (void) { kkcc_gc_stack_size =3D KKCC_INIT_GC_STACK_SIZE; kkcc_gc_stack_ptr =3D (kkcc_gc_stack_entry *) xmalloc_and_zero (kkcc_gc_stack_size * sizeof (kkcc_gc_stack_entry)); if (!kkcc_gc_stack_ptr) = { stderr_out ("stack init failed for size %d\n", kkcc_gc_stack_size); ABORT (); } kkcc_gc_stack_front =3D 0; kkcc_gc_stack_rear =3D kkcc_gc_stack_size - 1; } static void kkcc_gc_stack_free (void) { xfree_1 (kkcc_gc_stack_ptr); kkcc_gc_stack_ptr =3D 0; kkcc_gc_stack_front =3D 0; kkcc_gc_stack_rear =3D 0; kkcc_gc_stack_size =3D 0; } static void kkcc_gc_stack_realloc (void) { kkcc_gc_stack_entry *old_ptr =3D kkcc_gc_stack_ptr; int old_size =3D kkcc_gc_stack_size; kkcc_gc_stack_size *=3D 2; kkcc_gc_stack_ptr =3D (kkcc_gc_stack_entry *) xmalloc_and_zero (kkcc_gc_stack_size * sizeof (kkcc_gc_stack_entry)); if (!kkcc_gc_stack_ptr) { stderr_out ("stack realloc failed for size %d\n", kkcc_gc_stack_size); ABORT (); } if (kkcc_gc_stack_rear >=3D kkcc_gc_stack_front) { int number_elements =3D kkcc_gc_stack_rear - kkcc_gc_stack_front + 1; memcpy (kkcc_gc_stack_ptr, &old_ptr[kkcc_gc_stack_front], = number_elements * sizeof (kkcc_gc_stack_entry)); kkcc_gc_stack_front =3D 0; kkcc_gc_stack_rear =3D number_elements - 1; } else { int number_elements =3D old_size - kkcc_gc_stack_front; memcpy (kkcc_gc_stack_ptr, &old_ptr[kkcc_gc_stack_front], number_elements * sizeof (kkcc_gc_stack_entry)); memcpy (&kkcc_gc_stack_ptr[number_elements], &old_ptr[0], (kkcc_gc_stack_rear + 1) * sizeof (kkcc_gc_stack_entry)); kkcc_gc_stack_front =3D 0; kkcc_gc_stack_rear =3D kkcc_gc_stack_rear + number_elements; } xfree_1 (old_ptr); } static void #ifdef DEBUG_XEMACS kkcc_gc_stack_push_1 (void *data, const struct memory_description *desc, int level, int pos) #else kkcc_gc_stack_push_1 (void *data, const struct memory_description *desc) #endif { #ifdef NEW_GC GC_STAT_ENQUEUED; #endif /* NEW_GC */ if (KKCC_GC_STACK_FULL) kkcc_gc_stack_realloc(); kkcc_gc_stack_rear =3D KKCC_INC (kkcc_gc_stack_rear); kkcc_gc_stack_ptr[kkcc_gc_stack_rear].data =3D data; kkcc_gc_stack_ptr[kkcc_gc_stack_rear].desc =3D desc; #ifdef DEBUG_XEMACS kkcc_gc_stack_ptr[kkcc_gc_stack_rear].level =3D level; kkcc_gc_stack_ptr[kkcc_gc_stack_rear].pos =3D pos; #endif } #ifdef DEBUG_XEMACS #define kkcc_gc_stack_push(data, desc, level, pos) \ kkcc_gc_stack_push_1 (data, desc, level, pos) #else #define kkcc_gc_stack_push(data, desc, level, pos) \ kkcc_gc_stack_push_1 (data, desc) #endif static kkcc_gc_stack_entry * kkcc_gc_stack_pop (void) { if (KKCC_GC_STACK_EMPTY) return 0; #ifdef NEW_GC GC_STAT_DEQUEUED; #endif /* NEW_GC */ #ifndef KKCC_STACK_AS_QUEUE /* stack behaviour */ return &kkcc_gc_stack_ptr[kkcc_gc_stack_rear--]; #else /* queue behaviour */ { int old_front =3D kkcc_gc_stack_front; kkcc_gc_stack_front =3D KKCC_INC (kkcc_gc_stack_front); return &kkcc_gc_stack_ptr[old_front]; } #endif } void #ifdef DEBUG_XEMACS kkcc_gc_stack_push_lisp_object_1 (Lisp_Object obj, int level, int pos) #else kkcc_gc_stack_push_lisp_object_1 (Lisp_Object obj) #endif { if (XTYPE (obj) =3D=3D Lisp_Type_Record) { struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); const struct memory_description *desc; GC_CHECK_LHEADER_INVARIANTS (lheader); desc =3D RECORD_DESCRIPTION (lheader); if (! MARKED_RECORD_HEADER_P (lheader)) = { #ifdef NEW_GC MARK_GREY (lheader); #else /* not NEW_GC */ MARK_RECORD_HEADER (lheader); #endif /* not NEW_GC */ kkcc_gc_stack_push ((void *) lheader, desc, level, pos); } } } #ifdef NEW_GC #ifdef DEBUG_XEMACS #define kkcc_gc_stack_push_lisp_object(obj, level, pos) \ kkcc_gc_stack_push_lisp_object_1 (obj, level, pos) #else #define kkcc_gc_stack_push_lisp_object(obj, level, pos) \ kkcc_gc_stack_push_lisp_object_1 (obj) #endif void #ifdef DEBUG_XEMACS kkcc_gc_stack_repush_dirty_object_1 (Lisp_Object obj, int level, int pos) #else kkcc_gc_stack_repush_dirty_object_1 (Lisp_Object obj) #endif { if (XTYPE (obj) =3D=3D Lisp_Type_Record) { struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); const struct memory_description *desc; GC_STAT_REPUSHED; GC_CHECK_LHEADER_INVARIANTS (lheader); desc =3D RECORD_DESCRIPTION (lheader); MARK_GREY (lheader); kkcc_gc_stack_push ((void*) lheader, desc, level, pos); } } #endif /* NEW_GC */ #ifdef ERROR_CHECK_GC #define KKCC_DO_CHECK_FREE(obj, allow_free) \ do \ { \ if (!allow_free && XTYPE (obj) =3D=3D Lisp_Type_Record) \ { \ struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); \ GC_CHECK_NOT_FREE (lheader); \ } \ } while (0) #else #define KKCC_DO_CHECK_FREE(obj, allow_free) #endif #ifdef ERROR_CHECK_GC #ifdef DEBUG_XEMACS static void mark_object_maybe_checking_free_1 (Lisp_Object obj, int allow_free, int level, int pos) #else static void mark_object_maybe_checking_free_1 (Lisp_Object obj, int allow_free) #endif { KKCC_DO_CHECK_FREE (obj, allow_free); kkcc_gc_stack_push_lisp_object (obj, level, pos); } #ifdef DEBUG_XEMACS #define mark_object_maybe_checking_free(obj, allow_free, level, pos) \ mark_object_maybe_checking_free_1 (obj, allow_free, level, pos) #else #define mark_object_maybe_checking_free(obj, allow_free, level, pos) \ mark_object_maybe_checking_free_1 (obj, allow_free) #endif #else /* not ERROR_CHECK_GC */ #define mark_object_maybe_checking_free(obj, allow_free, level, pos) \ kkcc_gc_stack_push_lisp_object (obj, level, pos) #endif /* not ERROR_CHECK_GC */ /* This function loops all elements of a struct pointer and calls = mark_with_description with each element. */ static void #ifdef DEBUG_XEMACS mark_struct_contents_1 (const void *data, const struct sized_memory_description *sdesc, int count, int level, int pos) #else mark_struct_contents_1 (const void *data, const struct sized_memory_description *sdesc, int count) #endif { int i; Bytecount elsize; elsize =3D lispdesc_block_size (data, sdesc); for (i =3D 0; i < count; i++) { kkcc_gc_stack_push (((char *) data) + elsize * i, sdesc->description, level, pos); } } #ifdef DEBUG_XEMACS #define mark_struct_contents(data, sdesc, count, level, pos) \ mark_struct_contents_1 (data, sdesc, count, level, pos) #else #define mark_struct_contents(data, sdesc, count, level, pos) \ mark_struct_contents_1 (data, sdesc, count) #endif #ifdef NEW_GC /* This function loops all elements of a struct pointer and calls = mark_with_description with each element. */ static void #ifdef DEBUG_XEMACS mark_lisp_object_block_contents_1 (const void *data, const struct sized_memory_description *sdesc, int count, int level, int pos) #else mark_lisp_object_block_contents_1 (const void *data, const struct sized_memory_description *sdesc, int count) #endif { int i; Bytecount elsize; elsize =3D lispdesc_block_size (data, sdesc); for (i =3D 0; i < count; i++) { const Lisp_Object obj =3D wrap_pointer_1 (((char *) data) + elsize * = i); if (XTYPE (obj) =3D=3D Lisp_Type_Record) { struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); const struct memory_description *desc; GC_CHECK_LHEADER_INVARIANTS (lheader); desc =3D sdesc->description; if (! MARKED_RECORD_HEADER_P (lheader)) = { MARK_GREY (lheader); kkcc_gc_stack_push ((void *) lheader, desc, level, pos); } } } } #ifdef DEBUG_XEMACS #define mark_lisp_object_block_contents(data, sdesc, count, level, pos) \ mark_lisp_object_block_contents_1 (data, sdesc, count, level, pos) #else #define mark_lisp_object_block_contents(data, sdesc, count, level, pos) \ mark_lisp_object_block_contents_1 (data, sdesc, count) #endif #endif /* not NEW_GC */ /* This function implements the KKCC mark algorithm. Instead of calling mark_object, all the alive Lisp_Objects are pushed on the kkcc_gc_stack. This function processes all elements on the stack according to their descriptions. */ static void kkcc_marking ( #ifdef NEW_GC int cnt #else /* not NEW_GC */ int UNUSED(cnt) #endif /* not NEW_GC */ = ) { kkcc_gc_stack_entry *stack_entry =3D 0; void *data =3D 0; const struct memory_description *desc =3D 0; int pos; #ifdef NEW_GC int count =3D cnt; #endif /* NEW_GC */ #ifdef DEBUG_XEMACS int level =3D 0; #endif = while ((stack_entry =3D kkcc_gc_stack_pop ()) !=3D 0) { data =3D stack_entry->data; desc =3D stack_entry->desc; #ifdef DEBUG_XEMACS level =3D stack_entry->level + 1; #endif kkcc_bt_push (data, desc, stack_entry->level, stack_entry->pos); #ifdef NEW_GC /* Mark black if object is currently grey. This first checks, if the object is really allocated on the mc-heap. If it is, it can be marked black; if it is not, it cannot be marked. */ maybe_mark_black (data); #endif /* NEW_GC */ if (!data) continue; gc_checking_assert (data); gc_checking_assert (desc); for (pos =3D 0; desc[pos].type !=3D XD_END; pos++) { const struct memory_description *desc1 =3D &desc[pos]; const void *rdata =3D (const char *) data + lispdesc_indirect_count (desc1->offset, desc, data); union_switcheroo: = /* If the flag says don't mark, then don't mark. */ if ((desc1->flags) & XD_FLAG_NO_KKCC) continue; switch (desc1->type) { case XD_BYTECOUNT: case XD_ELEMCOUNT: case XD_HASHCODE: case XD_INT: case XD_LONG: case XD_INT_RESET: case XD_LO_LINK: case XD_OPAQUE_PTR: case XD_OPAQUE_DATA_PTR: case XD_ASCII_STRING: case XD_DOC_STRING: break; case XD_LISP_OBJECT: = { const Lisp_Object *stored_obj =3D (const Lisp_Object *) rdata; /* Because of the way that tagged objects work (pointers and Lisp_Objects have the same representation), XD_LISP_OBJECT can be used for untagged pointers. They might be NULL, though. */ if (EQ (*stored_obj, Qnull_pointer)) break; #ifdef MC_ALLOC mark_object_maybe_checking_free (*stored_obj, 0, level, pos); #else /* not MC_ALLOC */ mark_object_maybe_checking_free (*stored_obj, (desc1->flags) & XD_FLAG_FREE_LISP_OBJECT, level, pos); #endif /* not MC_ALLOC */ break; } case XD_LISP_OBJECT_ARRAY: { int i; EMACS_INT count =3D lispdesc_indirect_count (desc1->data1, desc, data); = for (i =3D 0; i < count; i++) { const Lisp_Object *stored_obj =3D (const Lisp_Object *) rdata + i; if (EQ (*stored_obj, Qnull_pointer)) break; #ifdef MC_ALLOC mark_object_maybe_checking_free = (*stored_obj, 0, level, pos); #else /* not MC_ALLOC */ mark_object_maybe_checking_free (*stored_obj, (desc1->flags) & XD_FLAG_FREE_LISP_OBJECT, level, pos); #endif /* not MC_ALLOC */ } break; } #ifdef NEW_GC case XD_LISP_OBJECT_BLOCK_PTR: { EMACS_INT count =3D lispdesc_indirect_count (desc1->data1, desc, data); const struct sized_memory_description *sdesc =3D lispdesc_indirect_description (data, desc1->data2.descr); const char *dobj =3D * (const char **) rdata; if (dobj) mark_lisp_object_block_contents = (dobj, sdesc, count, level, pos); break; } #endif /* NEW_GC */ case XD_BLOCK_PTR: { EMACS_INT count =3D lispdesc_indirect_count (desc1->data1, desc, data); const struct sized_memory_description *sdesc =3D lispdesc_indirect_description (data, desc1->data2.descr); const char *dobj =3D * (const char **) rdata; if (dobj) mark_struct_contents (dobj, sdesc, count, level, pos); break; } case XD_BLOCK_ARRAY: { EMACS_INT count =3D lispdesc_indirect_count (desc1->data1, desc, data); const struct sized_memory_description *sdesc =3D lispdesc_indirect_description (data, desc1->data2.descr); = mark_struct_contents (rdata, sdesc, count, level, pos); break; } case XD_UNION: case XD_UNION_DYNAMIC_SIZE: desc1 =3D lispdesc_process_xd_union (desc1, desc, data); if (desc1) goto union_switcheroo; break; = default: stderr_out ("Unsupported description type : %d\n", desc1->type); kkcc_backtrace (); ABORT (); } } #ifdef NEW_GC if (cnt) = if (!--count) break; #endif /* NEW_GC */ } } #endif /* USE_KKCC */ /* I hate duplicating all this crap! */ int marked_p (Lisp_Object obj) { /* Checks we used to perform. */ /* if (EQ (obj, Qnull_pointer)) return 1; */ /* if (!POINTER_TYPE_P (XGCTYPE (obj))) return 1; */ /* if (PURIFIED (XPNTR (obj))) return 1; */ if (XTYPE (obj) =3D=3D Lisp_Type_Record) { struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); GC_CHECK_LHEADER_INVARIANTS (lheader); return MARKED_RECORD_HEADER_P (lheader); } return 1; } /* Mark reference to a Lisp_Object. If the object referred to has not been seen yet, recursively mark all the references contained in it. */ void mark_object ( #ifdef USE_KKCC Lisp_Object UNUSED (obj) #else Lisp_Object obj #endif ) { #ifdef USE_KKCC /* this code should never be reached when configured for KKCC */ stderr_out ("KKCC: Invalid mark_object call.\n"); stderr_out ("Replace mark_object with kkcc_gc_stack_push_lisp_object.\n"); ABORT (); #else /* not USE_KKCC */ tail_recurse: /* Checks we used to perform */ /* if (EQ (obj, Qnull_pointer)) return; */ /* if (!POINTER_TYPE_P (XGCTYPE (obj))) return; */ /* if (PURIFIED (XPNTR (obj))) return; */ if (XTYPE (obj) =3D=3D Lisp_Type_Record) { struct lrecord_header *lheader =3D XRECORD_LHEADER (obj); GC_CHECK_LHEADER_INVARIANTS (lheader); /* We handle this separately, above, so we can mark free objects */ GC_CHECK_NOT_FREE (lheader); /* All c_readonly objects have their mark bit set, so that we only need to check the mark bit here. */ if (! MARKED_RECORD_HEADER_P (lheader)) { MARK_RECORD_HEADER (lheader); if (RECORD_MARKER (lheader)) { obj =3D RECORD_MARKER (lheader) (obj); if (!NILP (obj)) goto tail_recurse; } } } #endif /* not KKCC */ } =0C /************************************************************************/ /* Hooks */ /************************************************************************/ /* Nonzero when calling certain hooks or doing other things where a GC would be bad. It prevents infinite recursive calls to gc. */ int gc_currently_forbidden; int begin_gc_forbidden (void) { return internal_bind_int (&gc_currently_forbidden, 1); } void end_gc_forbidden (int count) { unbind_to (count); } /* Hooks. */ Lisp_Object Vpre_gc_hook, Qpre_gc_hook; Lisp_Object Vpost_gc_hook, Qpost_gc_hook; /* Maybe we want to use this when doing a "panic" gc after memory_full()? */ static int gc_hooks_inhibited; struct post_gc_action { void (*fun) (void *); void *arg; }; typedef struct post_gc_action post_gc_action; typedef struct { Dynarr_declare (post_gc_action); } post_gc_action_dynarr; static post_gc_action_dynarr *post_gc_actions; /* Register an action to be called at the end of GC. gc_in_progress is 0 when this is called. This is used when it is discovered that an action needs to be taken, but it's during GC, so it's not safe. (e.g. in a finalize method.) As a general rule, do not use Lisp objects here. And NEVER signal an error. */ void register_post_gc_action (void (*fun) (void *), void *arg) { post_gc_action action; if (!post_gc_actions) post_gc_actions =3D Dynarr_new (post_gc_action); action.fun =3D fun; action.arg =3D arg; Dynarr_add (post_gc_actions, action); } static void run_post_gc_actions (void) { int i; if (post_gc_actions) { for (i =3D 0; i < Dynarr_length (post_gc_actions); i++) { post_gc_action action =3D Dynarr_at (post_gc_actions, i); (action.fun) (action.arg); } Dynarr_reset (post_gc_actions); } } =0C /************************************************************************/ /* Garbage Collection */ /************************************************************************/ /* Enable/disable incremental garbage collection during runtime. */ int allow_incremental_gc; /* For profiling. */ static Lisp_Object QSin_garbage_collection; /* Nonzero means display messages at beginning and end of GC. */ int garbage_collection_messages; /* "Garbage collecting" */ Lisp_Object Vgc_message; Lisp_Object Vgc_pointer_glyph; static const Ascbyte gc_default_message[] =3D "Garbage collecting"; Lisp_Object Qgarbage_collecting; /* "Locals" during GC. */ struct frame *f; int speccount; int cursor_changed; Lisp_Object pre_gc_cursor; /* PROFILE_DECLARE */ int do_backtrace; struct backtrace backtrace; /* Maximum amount of C stack to save when a GC happens. */ #ifndef MAX_SAVE_STACK #define MAX_SAVE_STACK 0 /* 16000 */ #endif void gc_prepare (void) { #if MAX_SAVE_STACK > 0 char stack_top_variable; extern char *stack_bottom; #endif #ifdef NEW_GC GC_STAT_START_NEW_GC; GC_SET_PHASE (INIT_GC); #endif /* NEW_GC */ do_backtrace =3D profiling_active || backtrace_with_internal_sections; assert (!gc_in_progress); assert (!in_display || gc_currently_forbidden); PROFILE_RECORD_ENTERING_SECTION (QSin_garbage_collection); /* We used to call selected_frame() here. The following functions cannot be called inside GC so we move to after the above tests. */ { Lisp_Object frame; Lisp_Object device =3D Fselected_device (Qnil); if (NILP (device)) /* Could happen during startup, eg. if always_gc */ return; frame =3D Fselected_frame (device); if (NILP (frame)) invalid_state ("No frames exist on device", device); f =3D XFRAME (frame); } pre_gc_cursor =3D Qnil; cursor_changed =3D 0; need_to_signal_post_gc =3D 0; recompute_funcall_allocation_flag (); if (!gc_hooks_inhibited) run_hook_trapping_problems (Qgarbage_collecting, Qpre_gc_hook, INHIBIT_EXISTING_PERMANENT_DISPLAY_OBJECT_DELETION); /* Now show the GC cursor/message. */ if (!noninteractive) { if (FRAME_WIN_P (f)) { Lisp_Object frame =3D wrap_frame (f); Lisp_Object cursor =3D glyph_image_instance (Vgc_pointer_glyph, FRAME_SELECTED_WINDOW (f), ERROR_ME_NOT, 1); pre_gc_cursor =3D f->pointer; if (POINTER_IMAGE_INSTANCEP (cursor) /* don't change if we don't know how to change back. */ && POINTER_IMAGE_INSTANCEP (pre_gc_cursor)) { cursor_changed =3D 1; Fset_frame_pointer (frame, cursor); } } /* Don't print messages to the stream device. */ if (!cursor_changed && !FRAME_STREAM_P (f)) { if (garbage_collection_messages) { Lisp_Object args[2], whole_msg; args[0] =3D (STRINGP (Vgc_message) ? Vgc_message : build_msg_string (gc_default_message)); args[1] =3D build_string ("..."); whole_msg =3D Fconcat (2, args); echo_area_message (f, (Ibyte *) 0, whole_msg, 0, -1, Qgarbage_collecting); } } } /***** Now we actually start the garbage collection. */ gc_in_progress =3D 1; #ifndef NEW_GC inhibit_non_essential_conversion_operations =3D 1; #endif /* NEW_GC */ #if MAX_SAVE_STACK > 0 /* Save a copy of the contents of the stack, for debugging. */ if (!purify_flag) { /* Static buffer in which we save a copy of the C stack at each GC. = */ static char *stack_copy; static Bytecount stack_copy_size; ptrdiff_t stack_diff =3D &stack_top_variable - stack_bottom; Bytecount stack_size =3D (stack_diff > 0 ? stack_diff : -stack_diff); if (stack_size < MAX_SAVE_STACK) { if (stack_copy_size < stack_size) { stack_copy =3D (char *) xrealloc (stack_copy, stack_size); stack_copy_size =3D stack_size; } memcpy (stack_copy, stack_diff > 0 ? stack_bottom : &stack_top_variable, stack_size); } } #endif /* MAX_SAVE_STACK > 0 */ /* Do some totally ad-hoc resource clearing. */ /* #### generalize this? */ clear_event_resource (); cleanup_specifiers (); cleanup_buffer_undo_lists (); } void gc_mark_root_set ( #ifdef NEW_GC enum gc_phase phase #else /* not NEW_GC */ void #endif /* not NEW_GC */ ) { #ifdef NEW_GC GC_SET_PHASE (phase); #endif /* NEW_GC */ /* Mark all the special slots that serve as the roots of accessibility. */ #ifdef USE_KKCC # define mark_object(obj) kkcc_gc_stack_push_lisp_object (obj, 0, -1) #endif /* USE_KKCC */ { /* staticpro() */ Lisp_Object **p =3D Dynarr_begin (staticpros); Elemcount count; for (count =3D Dynarr_length (staticpros); count; count--) /* Need to check if the pointer in the staticpro array is not NULL. A gc can occur after variable is added to the staticpro array and _before_ it is correctly initialized. In this case its value is NULL, which we have to catch here. */ if (*p) mark_object (**p++); else **p++; } { /* staticpro_nodump() */ Lisp_Object **p =3D Dynarr_begin (staticpros_nodump); Elemcount count; for (count =3D Dynarr_length (staticpros_nodump); count; count--) /* Need to check if the pointer in the staticpro array is not NULL. A gc can occur after variable is added to the staticpro array and _before_ it is correctly initialized. In this case its value is NULL, which we have to catch here. */ if (*p) mark_object (**p++); else **p++; } #ifdef MC_ALLOC { /* mcpro () */ Lisp_Object *p =3D Dynarr_begin (mcpros); Elemcount count; for (count =3D Dynarr_length (mcpros); count; count--) mark_object (*p++); } #endif /* MC_ALLOC */ { /* GCPRO() */ struct gcpro *tail; int i; for (tail =3D gcprolist; tail; tail =3D tail->next) for (i =3D 0; i < tail->nvars; i++) mark_object (tail->var[i]); } { /* specbind() */ struct specbinding *bind; for (bind =3D specpdl; bind !=3D specpdl_ptr; bind++) { mark_object (bind->symbol); mark_object (bind->old_value); } } { struct catchtag *c; for (c =3D catchlist; c; c =3D c->next) { mark_object (c->tag); mark_object (c->val); mark_object (c->actual_tag); mark_object (c->backtrace); } } { struct backtrace *backlist; for (backlist =3D backtrace_list; backlist; backlist =3D backlist->next) { int nargs =3D backlist->nargs; int i; mark_object (*backlist->function); if (nargs < 0 /* nargs =3D=3D UNEVALLED || nargs =3D=3D MANY */ /* might be fake (internal profiling entry) */ && backlist->args) mark_object (backlist->args[0]); else for (i =3D 0; i < nargs; i++) mark_object (backlist->args[i]); } } mark_profiling_info (); #ifdef USE_KKCC # undef mark_object #endif } void gc_finish_mark (void) { #ifdef NEW_GC GC_SET_PHASE (FINISH_MARK); #endif /* NEW_GC */ init_marking_ephemerons (); while (finish_marking_weak_hash_tables () > 0 || finish_marking_weak_lists () > 0 || continue_marking_ephemerons () > 0) #ifdef USE_KKCC { kkcc_marking (0); } #else /* not USE_KKCC */ ; #endif /* not USE_KKCC */ /* At this point, we know which objects need to be finalized: we still need to resurrect them */ while (finish_marking_ephemerons () > 0 || finish_marking_weak_lists () > 0 || finish_marking_weak_hash_tables () > 0) #ifdef USE_KKCC { kkcc_marking (0); } #else /* not USE_KKCC */ ; #endif /* not USE_KKCC */ /* And prune (this needs to be called after everything else has been marked and before we do any sweeping). */ /* #### this is somewhat ad-hoc and should probably be an object method */ prune_weak_hash_tables (); prune_weak_lists (); prune_specifiers (); prune_syntax_tables (); prune_ephemerons (); prune_weak_boxes (); } #ifdef NEW_GC void gc_finalize (void) { GC_SET_PHASE (FINALIZE); mc_finalize (); } void gc_sweep (void) { GC_SET_PHASE (SWEEP); mc_sweep (); } #endif /* NEW_GC */ void gc_finish (void) { #ifdef NEW_GC GC_SET_PHASE (FINISH_GC); #endif /* NEW_GC */ consing_since_gc =3D 0; #ifndef DEBUG_XEMACS /* Allow you to set it really fucking low if you really want ... */ if (gc_cons_threshold < 10000) gc_cons_threshold =3D 10000; #endif recompute_need_to_garbage_collect (); #ifndef NEW_GC inhibit_non_essential_conversion_operations =3D 0; #endif /* not NEW_GC */ gc_in_progress =3D 0; run_post_gc_actions (); /******* End of garbage collection ********/ /* Now remove the GC cursor/message */ if (!noninteractive) { if (cursor_changed) Fset_frame_pointer (wrap_frame (f), pre_gc_cursor); else if (!FRAME_STREAM_P (f)) { /* Show "...done" only if the echo area would otherwise be empty. */ if (NILP (clear_echo_area (selected_frame (), Qgarbage_collecting, 0))) { if (garbage_collection_messages) { Lisp_Object args[2], whole_msg; args[0] =3D (STRINGP (Vgc_message) ? Vgc_message : build_msg_string (gc_default_message)); args[1] =3D build_msg_string ("... done"); whole_msg =3D Fconcat (2, args); echo_area_message (selected_frame (), (Ibyte *) 0, whole_msg, 0, -1, Qgarbage_collecting); } } } } #ifndef MC_ALLOC if (!breathing_space) { breathing_space =3D malloc (4096 - MALLOC_OVERHEAD); } #endif /* not MC_ALLOC */ need_to_signal_post_gc =3D 1; funcall_allocation_flag =3D 1; PROFILE_RECORD_EXITING_SECTION (QSin_garbage_collection); #ifdef NEW_GC GC_SET_PHASE (NONE); #endif /* NEW_GC */ } #ifdef NEW_GC void gc_suspend_mark_phase (void) { PROFILE_RECORD_EXITING_SECTION (QSin_garbage_collection); write_barrier_enabled =3D 1; consing_since_gc =3D 0; vdb_start_dirty_bits_recording (); } int gc_resume_mark_phase (void) { PROFILE_RECORD_ENTERING_SECTION (QSin_garbage_collection); assert (write_barrier_enabled); vdb_stop_dirty_bits_recording (); write_barrier_enabled =3D 0; return vdb_read_dirty_bits (); } int gc_mark (int incremental) { GC_SET_PHASE (MARK); if (!incremental) { kkcc_marking (0); } else = { kkcc_marking (gc_incremental_traversal_threshold); if (!KKCC_GC_STACK_EMPTY) { gc_suspend_mark_phase (); return 0; } } return 1; } int gc_resume_mark (int incremental) { if (!incremental) { if (!KKCC_GC_STACK_EMPTY) { GC_STAT_RESUME_GC; /* An incremental garbage collection is already running --- now wrap it up and resume it atomically. */ gc_resume_mark_phase (); gc_mark_root_set (REPUSH_ROOT_SET); kkcc_marking (0); } } else { int repushed_objects; int mark_work; GC_STAT_RESUME_GC; repushed_objects =3D gc_resume_mark_phase (); mark_work =3D (gc_incremental_traversal_threshold > repushed_objects)= ? gc_incremental_traversal_threshold : repushed_objects; kkcc_marking (mark_work); if (KKCC_GC_STACK_EMPTY) { /* Mark root set again and finish up marking. */ gc_mark_root_set (REPUSH_ROOT_SET); kkcc_marking (0); } else { gc_suspend_mark_phase (); return 0; } } return 1; } void gc_1 (int incremental) { switch (GC_PHASE) { case NONE: gc_prepare (); kkcc_gc_stack_init(); #ifdef DEBUG_XEMACS kkcc_bt_init (); #endif case INIT_GC: gc_mark_root_set (PUSH_ROOT_SET); case PUSH_ROOT_SET: if (!gc_mark (incremental)) return; /* suspend gc */ case MARK: if (!KKCC_GC_STACK_EMPTY) if (!gc_resume_mark (incremental)) return; /* suspend gc */ gc_finish_mark (); kkcc_gc_stack_free (); #ifdef DEBUG_XEMACS kkcc_bt_free (); #endif case FINISH_MARK: gc_finalize (); case FINALIZE: gc_sweep (); case SWEEP: gc_finish (); case FINISH_GC: break; } } void gc (int incremental) { if (gc_currently_forbidden || in_display || preparing_for_armageddon) return; /* Very important to prevent GC during any of the following stuff that might run Lisp code; otherwise, we'll likely have infinite GC recursion. */ speccount =3D begin_gc_forbidden (); gc_1 (incremental); /* now stop inhibiting GC */ unbind_to (speccount); } void = gc_full (void) { gc (0); } DEFUN ("gc-full", Fgc_full, 0, 0, "", /* This function performs a full garbage collection. If an incremental garbage collection is already running, it completes without any further interruption. This function guarantees that unused objects are freed when it returns. Garbage collection happens automatically if the client allocates more than `gc-cons-threshold' bytes of Lisp data since the previous garbage collection. */ ()) { gc_full (); return Qt; } void = gc_incremental (void) { gc (allow_incremental_gc); } DEFUN ("gc-incremental", Fgc_incremental, 0, 0, "", /* This function starts an incremental garbage collection. If an incremental garbage collection is already running, the next cycle starts. Note that this function has not necessarily freed any memory when it returns. This function only guarantees, that the traversal of the heap makes progress. The next cycle of incremental garbage collection happens automatically if the client allocates more than `gc-incremental-cons-threshold' bytes of Lisp data since previous garbage collection. */ ()) { gc_incremental (); return Qt; } #else /* not NEW_GC */ void garbage_collect_1 (void) { if (gc_in_progress || gc_currently_forbidden || in_display || preparing_for_armageddon) return; /* Very important to prevent GC during any of the following stuff that might run Lisp code; otherwise, we'll likely have infinite GC recursion. */ speccount =3D begin_gc_forbidden (); gc_prepare (); #ifdef USE_KKCC kkcc_gc_stack_init(); #ifdef DEBUG_XEMACS kkcc_bt_init (); #endif #endif /* USE_KKCC */ gc_mark_root_set (); #ifdef USE_KKCC kkcc_marking (0); #endif /* USE_KKCC */ gc_finish_mark (); #ifdef USE_KKCC kkcc_gc_stack_free (); #ifdef DEBUG_XEMACS kkcc_bt_free (); #endif #endif /* USE_KKCC */ gc_sweep_1 (); gc_finish (); /* now stop inhibiting GC */ unbind_to (speccount); } #endif /* not NEW_GC */ =0C /************************************************************************/ /* Initializations */ /************************************************************************/ /* Initialization */ static void common_init_gc_early (void) { Vgc_message =3D Qzero; gc_currently_forbidden =3D 0; gc_hooks_inhibited =3D 0; need_to_garbage_collect =3D always_gc; gc_cons_threshold =3D GC_CONS_THRESHOLD; gc_cons_percentage =3D 40; /* #### what is optimal? */ total_gc_usage_set =3D 0; #ifdef NEW_GC gc_cons_incremental_threshold =3D GC_CONS_INCREMENTAL_THRESHOLD; gc_incremental_traversal_threshold =3D GC_INCREMENTAL_TRAVERSAL_THRESHOLD; #endif /* not NEW_GC */ } void init_gc_early (void) { } void reinit_gc_early (void) { common_init_gc_early (); } void init_gc_once_early (void) { common_init_gc_early (); } void syms_of_gc (void) { DEFSYMBOL (Qpre_gc_hook); DEFSYMBOL (Qpost_gc_hook); #ifdef NEW_GC DEFSUBR (Fgc_full); DEFSUBR (Fgc_incremental); #ifdef ERROR_CHECK_GC DEFSUBR (Fgc_stats); #endif /* not ERROR_CHECK_GC */ #endif /* NEW_GC */ } void vars_of_gc (void) { staticpro_nodump (&pre_gc_cursor); QSin_garbage_collection =3D build_msg_string ("(in garbage collection)"); staticpro (&QSin_garbage_collection); DEFVAR_INT ("gc-cons-threshold", &gc_cons_threshold /* *Number of bytes of consing between full garbage collections. \"Consing\" is a misnomer in that this actually counts allocation of all different kinds of objects, not just conses. Garbage collection can happen automatically once this many bytes have been allocated since the last garbage collection. All data types count. Garbage collection happens automatically when `eval' or `funcall' are called. (Note that `funcall' is called implicitly as part of evaluation.) By binding this temporarily to a large number, you can effectively prevent garbage collection during a part of the program. Normally, you cannot set this value less than 10,000 (if you do, it is automatically reset during the next garbage collection). However, if XEmacs was compiled with DEBUG_XEMACS, this does not happen, allowing you to set this value very low to track down problems with insufficient GCPRO'ing. If you set this to a negative number, garbage collection will happen at *EVERY* call to `eval' or `funcall'. This is an extremely effective way to check GCPRO problems, but be warned that your XEmacs will be unusable! You almost certainly won't have the patience to wait long enough to be able to set it back. = See also `consing-since-gc' and `gc-cons-percentage'. */ ); DEFVAR_INT ("gc-cons-percentage", &gc_cons_percentage /* *Percentage of memory allocated between garbage collections. Garbage collection will happen if this percentage of the total amount of memory used for data (see `lisp-object-memory-usage') has been allocated since the last garbage collection. However, it will not happen if less than `gc-cons-threshold' bytes have been allocated -- this sets an absolute minimum in case very little data has been allocated or the percentage is set very low. Set this to 0 to have garbage collection always happen after `gc-cons-threshold' bytes have been allocated, regardless of current memory usage. See also `consing-since-gc' and `gc-cons-threshold'. */ ); #ifdef NEW_GC DEFVAR_INT ("gc-cons-incremental-threshold", = &gc_cons_incremental_threshold /* *Number of bytes of consing between cycles of incremental garbage collections. \"Consing\" is a misnomer in that this actually counts allocation of all different kinds of objects, not just conses. The next garbage collection cycle can happen automatically once this many bytes have been allocated since the last garbage collection cycle. All data types count. See also `gc-cons-threshold'. */ ); DEFVAR_INT ("gc-incremental-traversal-threshold", = &gc_incremental_traversal_threshold /* *Number of elements processed in one cycle of incremental travesal. */ ); #endif /* NEW_GC */ DEFVAR_BOOL ("purify-flag", &purify_flag /* Non-nil means loading Lisp code in order to dump an executable. This means that certain objects should be allocated in readonly space. */ ); DEFVAR_BOOL ("garbage-collection-messages", &garbage_collection_messages = /* Non-nil means display messages at start and end of garbage collection. */ ); garbage_collection_messages =3D 0; DEFVAR_LISP ("pre-gc-hook", &Vpre_gc_hook /* Function or functions to be run just before each garbage collection. Interrupts, garbage collection, and errors are inhibited while this hook runs, so be extremely careful in what you add here. In particular, avoid consing, and do not interact with the user. */ ); Vpre_gc_hook =3D Qnil; DEFVAR_LISP ("post-gc-hook", &Vpost_gc_hook /* Function or functions to be run just after each garbage collection. Interrupts, garbage collection, and errors are inhibited while this hook runs. Each hook is called with one argument which is an alist with finalization data. */ ); Vpost_gc_hook =3D Qnil; DEFVAR_LISP ("gc-message", &Vgc_message /* String to print to indicate that a garbage collection is in progress. This is printed in the echo area. If the selected frame is on a window system and `gc-pointer-glyph' specifies a value (i.e. a pointer image instance) in the domain of the selected frame, the mouse pointer will change instead of this message being printed. */ ); Vgc_message =3D build_string (gc_default_message); DEFVAR_LISP ("gc-pointer-glyph", &Vgc_pointer_glyph /* Pointer glyph used to indicate that a garbage collection is in progress. If the selected window is on a window system and this glyph specifies a value (i.e. a pointer image instance) in the domain of the selected window, the pointer will be changed as specified during garbage collection. Otherwise, a message will be printed in the echo area, as controlled by `gc-message'. */ ); #ifdef NEW_GC DEFVAR_BOOL ("allow-incremental-gc", &allow_incremental_gc /* *Non-nil means to allow incremental garbage collection. Nil prevents *incremental garbage collection, the garbage collector then only does *full collects (even if (gc-incremental) is called). */ ); #endif /* NEW_GC */ } void complex_vars_of_gc (void) { Vgc_pointer_glyph =3D Fmake_glyph_internal (Qpointer); } 1.1 XEmacs/xemacs/src/gc.h Index: gc.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* New incremental garbage collector for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #ifndef INCLUDED_gc_h_ #define INCLUDED_gc_h_ BEGIN_C_DECLS =0C #ifdef NEW_GC /************************************************************************/ /* Incremental Statistics */ /************************************************************************/ #ifdef ERROR_CHECK_GC void gc_stat_print_stats (void); void gc_stat_finalized (void); void gc_stat_freed (void); void gc_stat_explicitly_freed (void); void gc_stat_explicitly_tried_freed (void); # define GC_STAT_FINALIZED gc_stat_finalized () # define GC_STAT_FREED gc_stat_freed () # define GC_STAT_EXPLICITLY_FREED gc_stat_explicitly_freed () # define GC_STAT_EXPLICITLY_TRIED_FREED gc_stat_explicitly_tried_freed () #else /* not ERROR_CHECK_GC */ # define GC_STAT_FINALIZED # define GC_STAT_FREED # define GC_STAT_EXPLICITLY_FREED # define GC_STAT_EXPLICITLY_TRIED_FREED = #endif /* not ERROR_CHECK_GC */ #endif /* not NEW_GC */ =0C /************************************************************************/ /* Global Variables */ /************************************************************************/ /* Number of bytes of consing done since the last GC. */ extern EMACS_INT consing_since_gc; /* Number of bytes of consing done since startup. */ extern EMACS_UINT total_consing; /* Number of bytes of current allocated heap objects. */ extern EMACS_INT total_gc_usage; /* If the above is set. */ extern int total_gc_usage_set; /* Number of bytes of consing since gc before another gc should be done. */ extern EMACS_INT gc_cons_threshold; /* Percentage of consing of total data size before another GC. */ extern EMACS_INT gc_cons_percentage; #ifdef NEW_GC /* Number of bytes of consing since gc before another cycle of the gc should be done in incremental mode. */ extern EMACS_INT gc_cons_incremental_threshold; /* Nonzero during gc */ extern int gc_in_progress; /* Nonzero during write barrier */ extern int write_barrier_enabled; /* Enable/disable incremental garbage collection during runtime. */ extern int allow_incremental_gc; #endif /* NEW_GC */ =0C /************************************************************************/ /* Prototypes */ /************************************************************************/ #ifndef MALLOC_OVERHEAD #ifdef GNU_MALLOC #define MALLOC_OVERHEAD 0 #elif defined (rcheck) #define MALLOC_OVERHEAD 20 #else #define MALLOC_OVERHEAD 8 #endif #endif /* MALLOC_OVERHEAD */ #ifdef ERROR_CHECK_GC #define GC_CHECK_LHEADER_INVARIANTS(lheader) do { \ struct lrecord_header * GCLI_lh =3D (lheader); \ assert (GCLI_lh !=3D 0); \ assert (GCLI_lh->type < (unsigned int) lrecord_type_count); \ } while (0) #else #define GC_CHECK_LHEADER_INVARIANTS(lheader) #endif void recompute_need_to_garbage_collect (void); /* KKCC mark algorithm. */ #ifdef DEBUG_XEMACS void kkcc_gc_stack_push_lisp_object_1 (Lisp_Object obj, int level, int pos); #define kkcc_gc_stack_push_lisp_object(obj, level, pos) \ kkcc_gc_stack_push_lisp_object_1 (obj, level, pos) void kkcc_gc_stack_repush_dirty_object_1 (Lisp_Object obj, int level, int p= os); #define kkcc_gc_stack_repush_dirty_object(obj) \ kkcc_gc_stack_repush_dirty_object_1 (obj, 0, -2) void kkcc_backtrace (void); #else void kkcc_gc_stack_push_lisp_object_1 (Lisp_Object obj); #define kkcc_gc_stack_push_lisp_object(obj, level, pos) \ kkcc_gc_stack_push_lisp_object_1 (obj) void kkcc_gc_stack_repush_dirty_object_1 (Lisp_Object obj); #define kkcc_gc_stack_repush_dirty_object(obj) \ kkcc_gc_stack_repush_dirty_object_1 (obj) #define kkcc_backtrace() #endif #ifdef NEW_GC /* Repush objects that are caught by the write barrier. */ #define gc_write_barrier(obj) kkcc_gc_stack_repush_dirty_object (obj); /* GC functions: */ /* Perform a full garbage collection without interruption. If an incremental garbage collection is already running it is completed without further interruption. This function calls gc() with a negative or zero argument. */ void gc_full (void); /* This function starts an incremental garbage collection. If an incremental garbage collection is already running, the next cycle of traversal work is done, or the garbage collection is completed when no more traversal work has to be done. This function calls gc with a positive argument, indicating how many objects can be traversed in this cycle. */ void gc_incremental (void); #endif /* NEW_GC */ /* Initializers */ void init_gc_early (void); void reinit_gc_early (void); void init_gc_once_early (void); void syms_of_gc (void); void vars_of_gc (void); void complex_vars_of_gc (void); #ifndef NEW_GC /* Needed prototypes due to the garbage collector code move from alloc.c to gc.c. */ void gc_sweep_1 (void); #ifndef MC_ALLOC extern void *breathing_space; #endif /* not MC_ALLOC */ #endif /* not NEW_GC */ END_C_DECLS #endif /* INCLUDED_gc_h_ */ 1.1 XEmacs/xemacs/src/vdb-fake.c Index: vdb-fake.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" void fake_error (void) { fprintf (stderr, "Incremental garbage collection not yet available on thi= s"); fprintf (stderr, "system.\nDon't try to set allow-incremental-gc to t.\n"= ); ABORT (); } void = vdb_install_signal_handler (void) { allow_incremental_gc =3D 0; } void vdb_protect (void *UNUSED (ptr), EMACS_INT UNUSED (len)) { fake_error (); } void vdb_unprotect (void *UNUSED (ptr), EMACS_INT UNUSED (len)) { fake_error (); } 1.1 XEmacs/xemacs/src/vdb-mach.c Index: vdb-mach.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" #include "gc.h" #include "mc-alloc.h" #include "vdb.h" #include #include #include #include #include #include #include #include #include /* the structure of an exception msg and its reply */ typedef struct rep_msg { mach_msg_header_t head; NDR_record_t NDR; kern_return_t ret_code; } mach_reply_msg_t; typedef struct exc_msg { mach_msg_header_t head; /* start of the kernel processed data */ mach_msg_body_t msgh_body; mach_msg_port_descriptor_t thread; mach_msg_port_descriptor_t task; /* end of the kernel processed data */ NDR_record_t NDR; exception_type_t exception; mach_msg_type_number_t code_cnt; exception_data_t code; /* some padding */ char pad[512]; } mach_exc_msg_t; /* this is a neat little mach callback */ extern boolean_t exc_server(mach_msg_header_t *in, mach_msg_header_t *out); /* these are the globals everyone needs */ static size_t page_size =3D 16384; static mach_port_t task_self =3D NULL; static mach_port_t exc_port =3D NULL; /* these are some less neat mach callbacks */ kern_return_t catch_exception_raise_state = (mach_port_t UNUSED (port), exception_type_t UNUSED (exception_type), exception_data_t UNUSED (exception_data), mach_msg_type_number_t UNUSED (data_cnt), thread_state_flavor_t *UNUSED (flavor), thread_state_t UNUSED (in_state), mach_msg_type_number_t UNUSED (is_cnt), thread_state_t UNUSED (out_state), mach_msg_type_number_t UNUSED (os_cnt)) { return KERN_FAILURE; } kern_return_t = catch_exception_raise_state_identitity = (mach_port_t UNUSED (port), mach_port_t UNUSED (thread_port), mach_port_t UNUSED (task_port), exception_type_t UNUSED (exception_type), exception_data_t UNUSED (exception_data), mach_msg_type_number_t UNUSED (data_count), thread_state_flavor_t *UNUSED (state_flavor), thread_state_t UNUSED (in_state), mach_msg_type_number_t UNUSED (in_state_count), thread_state_t UNUSED (out_state), mach_msg_type_number_t UNUSED (out_state_count)) { return KERN_FAILURE; } kern_return_t = catch_exception_raise (mach_port_t UNUSED (port), mach_port_t UNUSED (thread_port), mach_port_t UNUSED (task_port), exception_type_t UNUSED (exception_type), exception_data_t exception_data, mach_msg_type_number_t UNUSED (data_count)) { /* kernel return value is in exception_data[0], faulting address in exception_data[1] */ if (write_barrier_enabled && (fault_on_protected_page ((void *) exception_data[1])) && exception_data[0] =3D=3D KERN_PROTECTION_FAILURE) { vdb_designate_modified ((void *) exception_data[1]); unprotect_page_and_mark_dirty ((void *) exception_data[1]); return KERN_SUCCESS; } else /* default sigsegv handler */ { fprintf (stderr, "\n\nFatal Error: Received %s (%d) for address 0x%x\= n", "EXC_BAD_ACCESS", exception_data[0], (int) exception_data[1]); return KERN_FAILURE; } } /* this is the thread which forwards of exceptions read from the exception server off to our exception catchers and then back out to the other thread */ void = exception_thread(void) { mach_msg_header_t *message; mach_msg_header_t *reply; kern_return_t retval; = /* allocate the space for the message and reply */ message =3D (mach_msg_header_t *) malloc (sizeof (mach_exc_msg_t)); reply =3D (mach_msg_header_t *) malloc (sizeof (mach_reply_msg_t)); /* do this loop forever */ while (1) = { /* block until we get an exception message */ retval =3D mach_msg (message, MACH_RCV_MSG, 0, sizeof (mach_exc_msg_t= ), = exc_port, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); /* forward off the handling of this message */ if (!exc_server (message, reply)) = { fprintf (stderr, "INTERNAL ERROR: exc_server() failed.\n"); ABORT (); } /* send the message back out to the thread */ retval =3D mach_msg (reply, MACH_SEND_MSG, sizeof (mach_reply_msg_t),= 0, = MACH_PORT_NULL, MACH_MSG_TIMEOUT_NONE, MACH_PORT_NULL); } } /* this initializes the subsystem (sets the exception port, starts the exception handling thread, etc) */ void = vdb_install_signal_handler (void) = { mach_port_t thread_self, exc_port_s, exc_thread; ppc_thread_state_t *exc_thread_state; mach_msg_type_name_t type; void *subthread_stack; kern_return_t retval; /* get ids for ourself */ if (!task_self) = task_self =3D mach_task_self (); thread_self =3D mach_thread_self (); /* allocate the port we're going to get exceptions on */ retval =3D mach_port_allocate (task_self, MACH_PORT_RIGHT_RECEIVE, &exc_p= ort); if (retval !=3D KERN_SUCCESS) = { fprintf (stderr, "Couldn't allocate exception port: %s\n", = mach_error_string (retval)); ABORT (); } /* extract out the send rights for that port, which the OS needs */ retval =3D mach_port_extract_right (task_self, exc_port, = MACH_MSG_TYPE_MAKE_SEND, &exc_port_s, &type); if(retval !=3D KERN_SUCCESS) { fprintf (stderr, "Couldn't extract send rights: %s\n", mach_error_string (retval)); ABORT (); } /* set the exception ports for this thread to the above */ retval =3D thread_set_exception_ports(thread_self, EXC_MASK_BAD_ACCESS, = exc_port_s, EXCEPTION_DEFAULT, = PPC_THREAD_STATE); if(retval !=3D KERN_SUCCESS) { fprintf (stderr, "Couldn't set exception ports: %s\n", mach_error_string (retval)); ABORT (); } /* set up the subthread */ retval =3D thread_create(task_self, &exc_thread); if(retval !=3D KERN_SUCCESS) = { fprintf (stderr , "Couldn't create exception thread: %s\n", mach_error_string (retval)); ABORT (); } subthread_stack =3D (void *) malloc (page_size); subthread_stack =3D = (char *) subthread_stack + (page_size - C_ARGSAVE_LEN - C_RED_ZONE); exc_thread_state =3D = (ppc_thread_state_t *) malloc (sizeof (ppc_thread_state_t)); exc_thread_state->srr0 =3D (unsigned int) exception_thread; exc_thread_state->r1 =3D (unsigned int) subthread_stack; retval =3D thread_set_state (exc_thread, PPC_THREAD_STATE, (thread_state_t) exc_thread_state, PPC_THREAD_STATE_COUNT); if (retval !=3D KERN_SUCCESS) { fprintf (stderr, "Couldn't set subthread state: %s\n", mach_error_string (retval)); ABORT (); } retval =3D thread_resume (exc_thread); if (retval !=3D KERN_SUCCESS) = { fprintf (stderr, "Couldn't resume subthread: %s\n", mach_error_string (retval)); ABORT (); } allow_incremental_gc =3D 1; } void vdb_protect (void *ptr, EMACS_INT len) { if (mprotect (ptr, len, PROT_READ)) { perror ("Couldn't mprotect"); ABORT (); } } void vdb_unprotect (void *ptr, EMACS_INT len) { if (mprotect (ptr, len, PROT_READ | PROT_WRITE)) { perror ("Couldn't mprotect"); ABORT (); } } 1.1 XEmacs/xemacs/src/vdb-posix.c Index: vdb-posix.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" #include "gc.h" #include "mc-alloc.h" #include "vdb.h" #include #include #include #if defined (HAVE_SIGACTION) # if defined (HAVE_STRUCT_SIGINFO_SI_ADDR) # define FAULT_HANDLER_ARGUMENTS \ int signum, struct siginfo *siginfo, void *UNUSED (ctx) # define GET_FAULT_ADDRESS siginfo->si_addr # elif defined (HAVE_SIGINFO_T_SI_ADDR) # define FAULT_HANDLER_ARGUMENTS \ int signum, siginfo_t *siginfo, void *UNUSED (ctx) # define GET_FAULT_ADDRESS siginfo->si_addr # endif # define USE_SIGACTION # define FAULT_HANDLER_REMOVE_HANDLER #elif defined (HAVE_SIGNAL) # define FAULT_HANDLER_ARGUMENTS int signum, struct sigcontext sc # define GET_FAULT_ADDRESS (void *) sc.cr2 # define USE_SIGNAL #endif #ifdef USE_SIGACTION struct sigaction act, segv_oact, bus_oact; #endif /* USE_SIGACTION */ #ifdef USE_SIGNAL sighandler_t segv_oact, bus_oact; #endif /* USE_SIGNAL */ void vdb_remove_signal_handler (void); void = vdb_fault_handler (FAULT_HANDLER_ARGUMENTS) { if (write_barrier_enabled && (fault_on_protected_page (GET_FAULT_ADDRESS))) { vdb_designate_modified (GET_FAULT_ADDRESS); unprotect_page_and_mark_dirty (GET_FAULT_ADDRESS); #ifdef FAULT_HANDLER_REINSTALL_HANDLER vdb_install_signal_handler (); #endif /* FAULT_HANDLER_REINSTALL_HANDLER */ } else /* default sigsegv handler */ { char *signal_name; if (signum =3D=3D SIGSEGV) signal_name =3D "SIGSEGV"; else if (signum =3D=3D SIGBUS) signal_name =3D "SIGBUS"; else = ABORT (); /* something weird happened: wrong signal caught */ fprintf (stderr, "\n\nFatal Error: Received %s (%d) for address 0x%x\= n", signal_name, signum, (int) GET_FAULT_ADDRESS); #ifdef FAULT_HANDLER_CALL_PREVIOUS_HANDLER if (signum =3D=3D SIGSEGV) segv_oact (signum); else if (signum =3D=3D SIGBUS) bus_oact (signum); #endif /* FAULT_HANDLER_CALL_PREVIOUS_HANDLER */ #ifdef FAULT_HANDLER_REMOVE_HANDLER vdb_remove_signal_handler (); #endif /* FAULT_HANDLER_REMOVE_HANDLER */ } } void = vdb_remove_signal_handler (void) { #ifdef USE_SIGACTION sigaction(SIGSEGV, &segv_oact, 0); sigaction(SIGBUS, &bus_oact, 0); #endif /* USE_SIGACTION */ #ifdef USE_SIGNAL signal (SIGSEGV, segv_oact); signal (SIGBUS, bus_oact); #endif } void vdb_install_signal_handler (void) { /* See init_signals_very_early () in signal.c. */ if (noninteractive && !initialized) { allow_incremental_gc =3D 0; return; } #ifdef USE_SIGACTION memset(&act, sizeof(struct sigaction), 0); act.sa_sigaction =3D vdb_fault_handler; sigemptyset (&act.sa_mask); act.sa_flags =3D SA_SIGINFO; sigaction (SIGSEGV, &act, &segv_oact); sigaction (SIGBUS, &act, &bus_oact); allow_incremental_gc =3D 1; #endif /* USE_SIGACTION */ #ifdef USE_SIGNAL segv_oact =3D signal (SIGSEGV, (void (*)(int)) vdb_fault_handler); bus_oact =3D signal (SIGBUS, (void (*)(int)) vdb_fault_handler); #endif /* USE_SIGNAL */ } void vdb_protect (void *ptr, EMACS_INT len) { if (mprotect (ptr, len, PROT_READ)) { perror ("Couldn't mprotect"); ABORT (); } } void vdb_unprotect (void *ptr, EMACS_INT len) { if (mprotect (ptr, len, PROT_READ | PROT_WRITE)) { perror ("Couldn't mprotect"); ABORT (); } } 1.1 XEmacs/xemacs/src/vdb-win32.c Index: vdb-win32.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" #include "gc.h" #include "mc-alloc.h" #include "vdb.h" #include "syswindows.h" DWORD WINAPI = win32_fault_handler (LPEXCEPTION_POINTERS e) { #define GET_FAULT_ADDRESS (void *) e->ExceptionRecord->ExceptionInformation= [1] if ((e->ExceptionRecord->ExceptionCode =3D=3D EXCEPTION_ACCESS_VIOLATION) && (e->ExceptionRecord->ExceptionInformation[0] =3D=3D 1) && write_barrier_enabled && (fault_on_protected_page (GET_FAULT_ADDRESS))) { vdb_designate_modified (GET_FAULT_ADDRESS); unprotect_page_and_mark_dirty (GET_FAULT_ADDRESS); return EXCEPTION_CONTINUE_EXECUTION; } = else return EXCEPTION_CONTINUE_SEARCH; } typedef DWORD (WINAPI *gcPVECTORED_EXCEPTION_HANDLER) (LPEXCEPTION_POINTERS= e); void vdb_install_signal_handler (void) { HMODULE hm; PVOID (WINAPI *aveh) (ULONG, gcPVECTORED_EXCEPTION_HANDLER); = /* See init_signals_very_early () in signal.c. */ if (noninteractive && !initialized) { allow_incremental_gc =3D 0; return; } hm =3D qxeGetModuleHandle (XETEXT ("kernel32")); if (hm) aveh =3D (PVOID (WINAPI *) (ULONG, gcPVECTORED_EXCEPTION_HANDLER)) GetProcAddress (hm, "AddVectoredExceptionHandler"); else { fprintf (stderr, "\nFAILED TO LOAD LIBRARY\n"); aveh =3D NULL; } if (aveh) { allow_incremental_gc =3D 1; aveh (TRUE, win32_fault_handler); } else { fprintf (stderr, "\nFAILED TO INSTALL SIGNAL HANDLER\n"); ABORT (); } } void vdb_protect (void *ptr, EMACS_INT len) { DWORD old; VirtualProtect (ptr, len, PAGE_READONLY, &old); } void vdb_unprotect (void *ptr, EMACS_INT len) { DWORD old; VirtualProtect (ptr, len, PAGE_READWRITE, &old); } 1.1 XEmacs/xemacs/src/vdb.c Index: vdb.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation (platform independent) for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include #include "lisp.h" #include "gc.h" #include "mc-alloc.h" #include "vdb.h" typedef struct { Dynarr_declare (void *); } void_ptr_dynarr; void_ptr_dynarr *page_fault_table; /* Init page fault table and protect heap. */ void vdb_start_dirty_bits_recording (void) { page_fault_table =3D Dynarr_new2 (void_ptr_dynarr, void *); protect_heap_pages (); } /* Remove heap protection. */ void vdb_stop_dirty_bits_recording (void) { unprotect_heap_pages (); } /* Read page fault table and pass page faults to garbage collector. */ int = vdb_read_dirty_bits (void) { int repushed_objects =3D 0; Elemcount count; for (count =3D Dynarr_length (page_fault_table); count; count--) repushed_objects +=3D = repush_all_objects_on_page (Dynarr_at (page_fault_table, count - 1)); Dynarr_free (page_fault_table); page_fault_table =3D 0; return repushed_objects; } /* Called by the page fault handler: add address to page fault table. */ void = vdb_designate_modified (void *addr) { Dynarr_add (page_fault_table, addr); } /* For testing and debugging... */ DEFUN ("test-vdb", Ftest_vdb, 0, 0, "", /* Test virtual dirty bit implementation. Prints results to stderr. */ ()) { Rawbyte *p; char c; Elemcount count; = /* Wrap up gc (if currently running). */ gc_full (); /* Allocate a buffer; it will have the default protection of PROT_READ|PROT_WRITE. */ p =3D (Rawbyte *) mc_alloc (mc_get_page_size()); set_lheader_implementation ((struct lrecord_header *) p, &lrecord_cons); fprintf (stderr, "Allocate p: [%x ... %x], length %d\n", = (int) p, (int) (p + mc_get_page_size ()), = (int) mc_get_page_size ()); /* Test read. */ fprintf (stderr, "Attempt to read p[666]... "); c =3D p[666]; fprintf (stderr, "read ok.\n"); /* Test write. */ fprintf (stderr, "Attempt to write 42 to p[666]... "); p[666] =3D 42; fprintf (stderr, "write ok, p[666] =3D %d\n", p[666]); /* Mark the buffer read-only and set environemnt for write-barrier. */ fprintf (stderr, "Write-protect the page.\n"); MARK_BLACK (p); vdb_start_dirty_bits_recording (); write_barrier_enabled =3D 1; /* Test write-barrier read. */ fprintf (stderr, "Attempt to read p[666]... "); c =3D p[666]; fprintf (stderr, "read ok.\n"); = /* Test write-barrier write, program receives SIGSEGV. */ fprintf (stderr, "Attempt to write 23 to p[666]... "); p[666] =3D 23; fprintf (stderr, "Written p[666] =3D %d\n", p[666]); /* Stop write-barrier mode. */ write_barrier_enabled =3D 0; MARK_WHITE (p); vdb_unprotect (p, mc_get_page_size ()); for (count =3D Dynarr_length (page_fault_table); count; count--) if (Dynarr_at (page_fault_table, count - 1) =3D=3D &p[666]) fprintf (stderr, "VALID page fault at %x\n", (int) Dynarr_at (page_fault_table, count - 1)); else fprintf (stderr, "WRONG page fault at %x\n", (int) Dynarr_at (page_fault_table, count - 1)); Dynarr_free (page_fault_table); mc_free (p); return Qnil; } DEFUN ("test-segfault", Ftest_segfault, 0, 0, "", /* Test virtual dirty bit implementation: provoke a segfault on purpose. WARNING: this function causes a SEGFAULT on purpose and thus crashes XEmacs! This is only used for debbugging, e.g. for testing how the debugger behaves when XEmacs segfaults and the write barrier is enabled. */ ()) { Rawbyte *q =3D 0; q[0] =3D 23; return Qnil; } void syms_of_vdb (void) { DEFSUBR (Ftest_vdb); DEFSUBR (Ftest_segfault); } 1.1 XEmacs/xemacs/src/vdb.h Index: vdb.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* Virtual diry bit implementation for XEmacs. Copyright (C) 2005 Marcus Crestani. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ /* Synched up with: Not in FSF. */ #include "lisp.h" #ifndef INCLUDED_vdb_h_ #define INCLUDED_vdb_h_ /*--- prototypes -------------------------------------------------------*/ BEGIN_C_DECLS /* Platform dependent signal handling: */ /* Install the platform-dependent signal handler. */ void vdb_install_signal_handler (void); /* Platform dependent memory protection. */ void vdb_protect (void *ptr, EMACS_INT len); void vdb_unprotect (void *ptr, EMACS_INT len); /* Common (platform independent) virtual diry bit stuff: */ /* Start the write barrier. This function is called when a garbage collection is suspendend and the client is resumed. */ void vdb_start_dirty_bits_recording (void); /* Stop the write barrier. This function is called when the client is suspendend and garbage collection is resumed. */ void vdb_stop_dirty_bits_recording (void); /* Record page faults: Add the object pointed to by addr to the write barrer's internal data structure that stores modified objects. This function is called by the write barrier's fault handler. */ void vdb_designate_modified (void *addr); /* Propagate page faults to garbage collector: Read out the write barrier's internal data structure that stores modified objects and pass the information to the garbage collector. This function is called by vdb_stop_dirty_bits_recording(). Return how many objects have to be re-examined by the garbage collector. */ int vdb_read_dirty_bits (void); /* Provides Lisp functions for testing vdb implementation. */ void syms_of_vdb (void); END_C_DECLS #endif /* INCLUDED_vdb_h_ */ --===============6619883729532616754==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============5340826111153244020==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs/src, database.c ... Date: 2005-11-25 02:02:05 +0000 Message-ID: <20051125020205.2508.qmail@sunsite.dk> --===============5340826111153244020== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/11/25 03:02:05 Branch: xemacs release-21-4 xemacs/etc release-21-4 xemacs/lisp release-21-4 xemacs/src release-21-4 Modified: xemacs/src ChangeLog callproc.c chartab.c config.h.in database.c glyphs-gtk.c process-unix.c sysdll.c Log: More patches for 21.4.18. Revision Changes Path 1.241.2.77 +13 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.241.2.76 retrieving revision 1.241.2.77 diff -u -p -r1.241.2.76 -r1.241.2.77 --- ChangeLog 2005/03/24 04:55:34 1.241.2.76 +++ ChangeLog 2005/11/25 01:59:59 1.241.2.77 @@ -1,3 +1,16 @@ +2005-11-15 Dr. Volker Zell + + * configure.in: Avoid using Motif also for cygwin + +2005-11-15 Dr. Volker Zell + + * configure.in: Check for u_int*_t typedefs and use them in + Berkeley DB detection. + +2005-04-11 Norbert Koch + + * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla. + 2005-03-23 Vin Shelton = * configure.in: Remove -fno-gnu-linker option from Solaris 1.147.2.34 +238 -53 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.147.2.33 retrieving revision 1.147.2.34 diff -u -p -r1.147.2.33 -r1.147.2.34 --- configure 2005/03/24 04:55:35 1.147.2.33 +++ configure 2005/11/25 02:00:00 1.147.2.34 @@ -9657,7 +9657,7 @@ rm -f conftest* fi = = case "$opsys" in - *linux* ) lucid_prefers_motif=3D"no" ;; + *linux* | cygwin* ) lucid_prefers_motif=3D"no" ;; * ) lucid_prefers_motif=3D"yes" ;; esac = @@ -14284,14 +14284,191 @@ EOF } = = +echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6 +echo "configure:14289: checking for u_int8_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int8_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int8_t=3Dyes +else + rm -rf conftest* + ac_cv_type_u_int8_t=3Dno +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int8_t" 1>&6 +if test $ac_cv_type_u_int8_t =3D no; then + { test "$extra_verbose" =3D "yes" && cat << \EOF + Defining u_int8_t =3D uint8_t +EOF +cat >> confdefs.h <<\EOF +#define u_int8_t uint8_t +EOF +} + +fi + +if test $ac_cv_type_u_int8_t =3D yes; then +{ test "$extra_verbose" =3D "yes" && cat << \EOF + Defining HAVE_U_INT8_T =3D 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT8_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6 +echo "configure:14333: checking for u_int16_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int16_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int16_t=3Dyes +else + rm -rf conftest* + ac_cv_type_u_int16_t=3Dno +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int16_t" 1>&6 +if test $ac_cv_type_u_int16_t =3D no; then + { test "$extra_verbose" =3D "yes" && cat << \EOF + Defining u_int16_t =3D uint16_t +EOF +cat >> confdefs.h <<\EOF +#define u_int16_t uint16_t +EOF +} + +fi + +if test $ac_cv_type_u_int16_t =3D yes; then +{ test "$extra_verbose" =3D "yes" && cat << \EOF + Defining HAVE_U_INT16_T =3D 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT16_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 +echo "configure:14377: checking for u_int32_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int32_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int32_t=3Dyes +else + rm -rf conftest* + ac_cv_type_u_int32_t=3Dno +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int32_t" 1>&6 +if test $ac_cv_type_u_int32_t =3D no; then + { test "$extra_verbose" =3D "yes" && cat << \EOF + Defining u_int32_t =3D uint32_t +EOF +cat >> confdefs.h <<\EOF +#define u_int32_t uint32_t +EOF +} + +fi + +if test $ac_cv_type_u_int32_t =3D yes; then +{ test "$extra_verbose" =3D "yes" && cat << \EOF + Defining HAVE_U_INT32_T =3D 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT32_T 1 +EOF +} + +fi +echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6 +echo "configure:14421: checking for u_int64_t" >&5 + +cat > conftest.$ac_ext < +#if STDC_HEADERS +#include +#include +#endif +EOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + egrep "(^|[^a-zA-Z_0-9])u_int64_t[^a-zA-Z_0-9]" >/dev/null 2>&1; then + rm -rf conftest* + ac_cv_type_u_int64_t=3Dyes +else + rm -rf conftest* + ac_cv_type_u_int64_t=3Dno +fi +rm -f conftest* + +echo "$ac_t""$ac_cv_type_u_int64_t" 1>&6 +if test $ac_cv_type_u_int64_t =3D no; then + { test "$extra_verbose" =3D "yes" && cat << \EOF + Defining u_int64_t =3D uint64_t +EOF +cat >> confdefs.h <<\EOF +#define u_int64_t uint64_t +EOF +} + +fi + +if test $ac_cv_type_u_int64_t =3D yes; then +{ test "$extra_verbose" =3D "yes" && cat << \EOF + Defining HAVE_U_INT64_T =3D 1 +EOF +cat >> confdefs.h <<\EOF +#define HAVE_U_INT64_T 1 +EOF +} + +fi + if test "$with_database_berkdb" !=3D "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14290: checking for Berkeley db.h" >&5 +echo "configure:14467: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14307,7 +14484,7 @@ int main() { = ; return 0; } EOF -if { (eval echo configure:14311: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:14488: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* db_h_file=3D"$header"; break else @@ -14318,7 +14495,7 @@ rm -f conftest* ;; *) cat > conftest.$ac_ext < @@ -14326,21 +14503,29 @@ rm -f conftest* #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; #endif #endif #endif +#endif #include <$header> = int main() { = ; return 0; } EOF -if { (eval echo configure:14344: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:14529: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* db_h_file=3D"$header"; break else @@ -14358,9 +14543,9 @@ rm -f conftest* = if test "$with_database_berkdb" !=3D "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:14362: checking for Berkeley DB version" >&5 +echo "configure:14547: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14372,7 +14557,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>& egrep "yes" >/dev/null 2>&1; then rm -rf conftest* cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 2 @@ -14399,10 +14584,10 @@ fi rm -f conftest* = echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14403: checking for $dbfunc" >&5 +echo "configure:14588: checking for $dbfunc" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14614: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$dbfunc=3Dyes" else @@ -14444,12 +14629,12 @@ else = = echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14448: checking for $dbfunc in -ldb" >&5 +echo "configure:14633: checking for $dbfunc in -ldb" >&5 ac_lib_var=3D`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldb " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14524,12 +14709,12 @@ fi if test "$with_socks" =3D "yes"; then = echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14528: checking for SOCKSinit in -lsocks" >&5 +echo "configure:14713: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=3D`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lsocks " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14729: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14595,7 +14780,7 @@ fi = if test "$with_modules" !=3D "no"; then echo "checking for module support" 1>&6 -echo "configure:14599: checking for module support" >&5 +echo "configure:14784: checking for module support" >&5 = if test "$with_msw" =3D "yes"; then have_dl=3Dyes; @@ -14611,15 +14796,15 @@ EOF ;; *) ac_safe=3D`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:14615: checking for dlfcn.h" >&5 +echo "configure:14800: checking for dlfcn.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14623: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -14636,16 +14821,16 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 = echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:14640: checking for dlopen in -lc" >&5 +echo "configure:14825: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14649: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=3Dyes = else @@ -14654,18 +14839,18 @@ else rm -rf conftest* = echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14658: checking for dlopen in -ldl" >&5 +echo "configure:14843: checking for dlopen in -ldl" >&5 ac_save_LIBS=3D"$LIBS" LIBS=3D"-ldl $LIBS" cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14669: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=3Dyes = else @@ -14694,12 +14879,12 @@ EOF else = echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14698: checking for shl_load in -ldld" >&5 +echo "configure:14883: checking for shl_load in -ldld" >&5 ac_lib_var=3D`echo dld'_'shl_load | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14737,12 +14922,12 @@ else echo "$ac_t""no" 1>&6 = echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14741: checking for dld_init in -ldld" >&5 +echo "configure:14926: checking for dld_init in -ldld" >&5 ac_lib_var=3D`echo dld'_'dld_init | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14942: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14800,7 +14985,7 @@ xehost=3D$canonical xealias=3D$internal_configuration = echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14804: checking how to build dynamic libraries for ${xehos= t}" >&5 +echo "configure:14989: checking how to build dynamic libraries for ${xehos= t}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -14828,9 +15013,9 @@ if test "$GCC" =3D "yes"; then XEGCC=3Dyes else echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:14832: checking checking whether we are using GNU C" >&5 +echo "configure:15017: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:14856: checking how to produce PIC code" >&5 +echo "configure:15041: checking how to produce PIC code" >&5 wl=3D = can_build_shared=3Dyes @@ -14953,18 +15138,18 @@ if test -n "$dll_cflags"; then = # Check to make sure the dll_cflags actually works. echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" = 1>&6 -echo "configure:14957: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:15142: checking if PIC flag ${dll_cflags} really works" >&5 save_CFLAGS=3D"$CFLAGS" CFLAGS=3D"$CFLAGS $dll_cflags -DPIC" cat > conftest.$ac_ext <&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:15153: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* = # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also @@ -14995,7 +15180,7 @@ cc_produces_so=3Dno xldf=3D xcldf=3D echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c= " 1>&6 -echo "configure:14999: checking if C compiler can produce shared libraries= " >&5 +echo "configure:15184: checking if C compiler can produce shared libraries= " >&5 if test "$XEGCC" =3D yes -o "$__ICC" =3D yes; then xcldf=3D"-shared" xldf=3D"-shared" @@ -15046,14 +15231,14 @@ if test -n "$xcldf"; then xe_libs=3D ac_link=3D'${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' con= ftest.$ac_ext '"$xe_libs"' 1>&5' cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=3Dyes else @@ -15078,7 +15263,7 @@ if test -z "$LTLD"; then if test "$XEGCC" =3D yes; then # Check if gcc -print-prog-name=3Dld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:15082: checking for ld used by GCC" >&5 +echo "configure:15267: checking for ld used by GCC" >&5 ac_prog=3D`($CC -print-prog-name=3Dld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15104,7 +15289,7 @@ echo "configure:15082: checking for ld u esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15108: checking for GNU ld" >&5 +echo "configure:15293: checking for GNU ld" >&5 fi = if test -z "$LTLD"; then @@ -15142,7 +15327,7 @@ ld_dynamic_link_flags=3D = # Check to see if it really is or isn't GNU ld. echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6 -echo "configure:15146: checking if the linker is GNU ld" >&5 +echo "configure:15331: checking if the linker is GNU ld" >&5 # I'd rather use --version here, but apparently some GNU ld's only accept = -v. if $LTLD -v 2>&1 &5; then xe_gnu_ld=3Dyes @@ -15170,7 +15355,7 @@ else # OK - only NOW do we futz about with ld. # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker supports shared libraries""... $= ac_c" 1>&6 -echo "configure:15174: checking whether the linker supports shared librari= es" >&5 +echo "configure:15359: checking whether the linker supports shared librari= es" >&5 dll_ld=3D$CC dll_ldflags=3D$LDFLAGS ld_shlibs=3Dyes @@ -15381,10 +15566,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15385: checking for $ac_func" >&5 +echo "configure:15570: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15596: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -15446,11 +15631,11 @@ done fi = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15639: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then : else 1.151.2.33 +27 -1 XEmacs/xemacs/configure.in Index: configure.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.in,v retrieving revision 1.151.2.32 retrieving revision 1.151.2.33 diff -u -p -r1.151.2.32 -r1.151.2.33 --- configure.in 2005/03/24 04:56:00 1.151.2.32 +++ configure.in 2005/11/25 02:00:33 1.151.2.33 @@ -3592,7 +3592,7 @@ dnl Not all toolkits support all widgets = dnl Avoid using Motif :-( case "$opsys" in - *linux* ) lucid_prefers_motif=3D"no" ;; + *linux* | cygwin* ) lucid_prefers_motif=3D"no" ;; * ) lucid_prefers_motif=3D"yes" ;; esac = @@ -4454,6 +4454,24 @@ test "$with_database_gdbm" =3D "yes" -o \ "$with_database_dbm" =3D "yes" && \ AC_DEFINE(HAVE_DBM) = +dnl Check for u_int*_t typedefs. +AC_CHECK_TYPE(u_int8_t, uint8_t) +if test $ac_cv_type_u_int8_t =3D yes; then +AC_DEFINE(HAVE_U_INT8_T,1) +fi +AC_CHECK_TYPE(u_int16_t, uint16_t) +if test $ac_cv_type_u_int16_t =3D yes; then +AC_DEFINE(HAVE_U_INT16_T,1) +fi +AC_CHECK_TYPE(u_int32_t, uint32_t) +if test $ac_cv_type_u_int32_t =3D yes; then +AC_DEFINE(HAVE_U_INT32_T,1) +fi +AC_CHECK_TYPE(u_int64_t, uint64_t) +if test $ac_cv_type_u_int64_t =3D yes; then +AC_DEFINE(HAVE_U_INT64_T,1) +fi + dnl Check for Berkeley DB. if test "$with_database_berkdb" !=3D "no"; then AC_MSG_CHECKING(for Berkeley db.h) @@ -4478,11 +4496,19 @@ if test "$with_database_berkdb" !=3D "no"; #ifdef HAVE_INTTYPES_H #define __BIT_TYPES_DEFINED__ #include +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; +#endif #endif #endif #endif 1.8.4.7 +6 -0 XEmacs/xemacs/etc/Attic/PACKAGES Index: PACKAGES =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/Attic/PACKAGES,v retrieving revision 1.8.4.6 retrieving revision 1.8.4.7 diff -u -p -r1.8.4.6 -r1.8.4.7 --- PACKAGES 2005/02/19 22:01:59 1.8.4.6 +++ PACKAGES 2005/11/25 02:01:46 1.8.4.7 @@ -234,6 +234,9 @@ Deprecated collection of DTDs for psgml. *** python-modes Python support. = +*** re-builder +Interactive development tool for regular expressions. + *** reftex Emacs support for LaTeX cross-references, citations. = @@ -340,6 +343,9 @@ Fundamental XEmacs support, you almost c XEmacs Lisp developer support. This package contains utilities for supporting Lisp development. It is a single-file package so it may be = tailored. + +*** xetla +(setq mm-coding-system-priorities '(iso-8859-1 iso-8859-15 utf-8)) = *** xlib Emacs interface to X server. 1.266.2.83 +19 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.266.2.82 retrieving revision 1.266.2.83 diff -u -p -r1.266.2.82 -r1.266.2.83 --- ChangeLog 2005/02/24 03:06:06 1.266.2.82 +++ ChangeLog 2005/11/25 02:01:48 1.266.2.83 @@ -1,3 +1,22 @@ +2005-06-06 Adrian Aichner + + * package-get.el (package-get-init-package): + package-get-init-package buglet (21.4.17) by Jeff Mincy + fixing false temporary load-path shadows reported + after package installation and simplifying code. + +2005-10-18 Ville Skytt=C3=A4 + + * package-get.el (package-get-download-sites): Sync mirrors list + with the XEmacs website. + (package-get-pre-release-download-sites): Ditto. + +2005-04-06 Stephen J. Turnbull + + * derived.el (derived-mode-merge-syntax-tables): + Revert my 21.5-only patch of 2003-07-18 which slipped in + through Jerry James's patch of 2004-06-07. + 2005-02-23 Adrian Aichner = * cmdloop.el (keyboard-quit): Remove workaround for 1.4.2.2 +6 -14 XEmacs/xemacs/lisp/derived.el Index: derived.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/derived.el,v retrieving revision 1.4.2.1 retrieving revision 1.4.2.2 diff -u -p -r1.4.2.1 -r1.4.2.2 --- derived.el 2004/06/22 01:49:47 1.4.2.1 +++ derived.el 2005/11/25 02:01:49 1.4.2.2 @@ -421,20 +421,12 @@ Where the new table already has an entry ;; check for inheritance. (map-char-table #'(lambda (key value) - (let ((newval (get-range-char-table key new 'multi))) - (cond ((eq newval 'multi) ; OK, dive into the class hierarchy - (map-char-table - #'(lambda (key1 value1) - (when (eq ?@ (char-syntax-from-code - (get-range-char-table key new ?@))) - (put-char-table key1 value new)) - nil) - new - key)) - ((eq ?@ (char-syntax-from-code newval)) ;; class at once - (put-char-table key value new)))) - nil) - old)) + (if (eq ?@ (char-syntax-from-code value)) + (map-char-table #'(lambda (key1 value1) + (put-char-table key1 value1 new)) + old + key))) + new)) = ;; Merge an old abbrev table into a new one. ;; This function requires internal knowledge of how abbrev tables work, 1.39.2.10 +13 -19 XEmacs/xemacs/lisp/package-get.el Index: package-get.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/package-get.el,v retrieving revision 1.39.2.9 retrieving revision 1.39.2.10 diff -u -p -r1.39.2.9 -r1.39.2.10 --- package-get.el 2004/06/28 01:19:56 1.39.2.9 +++ package-get.el 2005/11/25 02:01:49 1.39.2.10 @@ -204,6 +204,7 @@ directory." ("US (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/packages") ;; In alphabetical order of Country, our mirrors... + ("Argentina (xmundo.net)" "xemacs.xmundo.net" "pub/mirrors/xemacs/pack= ages") ("Australia (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/packag= es") ("Australia (au.xemacs.org)" "ftp.au.xemacs.org" "pub/xemacs/packages") ("Austria (at.xemacs.org)" "ftp.at.xemacs.org" "editors/xemacs/package= s") @@ -211,7 +212,7 @@ directory." ("Brazil (br.xemacs.org)" "ftp.br.xemacs.org" "pub/xemacs/packages") ("Canada (ca.xemacs.org)" "ftp.ca.xemacs.org" "pub/Mirror/xemacs/packa= ges") ("Canada (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/packages") - ("Canada (ualberta.ca)" "sunsite.ualberta.ca" "pub/Mirror/xemacs/packa= ges") + ("Canada (nrc.ca)" "ftp.nrc.ca" "pub/packages/editors/xemacs/packages") ("Czech Republic (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xem= acs.org/pub/xemacs/packages") ("Denmark (dk.xemacs.org)" "ftp.dk.xemacs.org" "pub/emacs/xemacs/packa= ges") ("Finland (fi.xemacs.org)" "ftp.fi.xemacs.org" "pub/mirrors/ftp.xemacs= .org/pub/tux/xemacs/packages") @@ -219,8 +220,9 @@ directory." ("France (mirror.cict.fr)" "mirror.cict.fr" "xemacs/packages") ("France (pasteur.fr)" "ftp.pasteur.fr" "pub/computing/xemacs/packages= ") ("Germany (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux= /xemacs/packages") - ("Germany (tu-darmstadt.de)" "ftp.tu-darmstadt.de" "pub/editors/xemacs= /packages") + ("Iceland (is.xemacs.org)" "ftp.is.xemacs.org" "pub/xemacs/packages") ("Ireland (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org= /pub/xemacs/packages") + ("Ireland (heanet.ie)" "ftp.heanet.ie" "mirrors/ftp.xemacs.org/package= s") ("Italy (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/pac= kages") ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/pac= kages") @@ -234,7 +236,6 @@ directory." ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs= /packages") ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") - ("Slovakia (sk.xemacs.org)" "ftp.sk.xemacs.org" "pub/mirrors/xemacs/pa= ckages") ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.x= emacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages= ") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/pack= ages") @@ -263,6 +264,8 @@ variable actually used to specify packag ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ;; In alphabetical order of Country, our mirrors... + ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" + "pub/mirrors/xemacs/beta/experimental/packages") ("Australia Pre-Releases (aarnet.edu.au)" "mirror.aarnet.edu.au" "pub/xemacs/beta/experimental/packages") ("Australia Pre-Releases (au.xemacs.org)" "ftp.au.xemacs.org" @@ -275,8 +278,8 @@ variable actually used to specify packag "pub/Mirror/xemacs/beta/experimental/packages") ("Canada Pre-Releases (crc.ca)" "ftp.crc.ca" "pub/packages/editors/xemacs/beta/experimental/packages") - ("Canada Pre-Releases (ualberta.ca)" "sunsite.ualberta.ca" - "pub/Mirror/xemacs/beta/experimental/packages") + ("Canada Pre-Releases (nrc.ca)" "ftp.nrc.ca" + "pub/packages/editors/xemacs/beta/experimental/packages") ("Czech Republic Pre-Releases (cz.xemacs.org)" "ftp.cz.xemacs.org" "MIRRORS/ftp.xemacs.org/pub/xemacs/xemacs-21.5/experimental/packages") ("Denmark Pre-Releases (dk.xemacs.org)" "ftp.dk.xemacs.org" @@ -291,10 +294,12 @@ variable actually used to specify packag "pub/computing/xemacs/beta/experimental/packages") ("Germany Pre-Releases (de.xemacs.org)" "ftp.de.xemacs.org" "pub/ftp.xemacs.org/tux/xemacs/beta/experimental/packages") - ("Germany Pre-Releases (tu-darmstadt.de)" "ftp.tu-darmstadt.de" - "pub/editors/xemacs/beta/experimental/packages") + ("Iceland Pre-Releases (is.xemacs.org)" "ftp.is.xemacs.org" + "pub/xemacs/beta/experimental/packages") ("Ireland Pre-Releases (ie.xemacs.org)" "ftp.ie.xemacs.org" "mirrors/ftp.xemacs.org/pub/xemacs/beta/experimental/packages") + ("Ireland Pre-Releases (heanet.ie)" "ftp.heanet.ie" + "mirrors/ftp.xemacs.org/beta/experimental/packages") ("Italy Pre-Releases (it.xemacs.org)" "ftp.it.xemacs.org" "unix/packages/XEMACS/beta/experimental/packages") ("Japan Pre-Releases (aist.go.jp)" "ring.aist.go.jp" @@ -316,10 +321,6 @@ variable actually used to specify packag "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/beta/experimental/packages") - ("Saudi Arabia Pre-Releases (sa.xemacs.org)" "ftp.sa.xemacs.org" - "pub/mirrors/ftp.xemacs.org/xemacs/xemacs-21.5/experimental/packages") - ("Slovakia Pre-Releases (sk.xemacs.org)" "ftp.sk.xemacs.org" - "pub/mirrors/xemacs/beta/experimental/packages") ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.xemacs.org/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" @@ -844,14 +845,7 @@ Return `t' upon complete success, `nil' = (progn ;; Add lispdir to load-path if it doesn't already exist. ;; NOTE: this does not take symlinks, etc., into account. - (if (let ((dirs load-path)) - (catch 'done - (while dirs - (if (string-equal (car dirs) lispdir) - (throw 'done nil)) - (setq dirs (cdr dirs))) - t)) - (setq load-path (cons lispdir load-path))) + (add-to-list 'load-path (file-name-as-directory lispdir)) (if (not (package-get-load-package-file lispdir "auto-autoloads")) (package-get-load-package-file lispdir "_pkg")) t) 1.290.2.96 +44 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.290.2.95 retrieving revision 1.290.2.96 diff -u -p -r1.290.2.95 -r1.290.2.96 --- ChangeLog 2005/02/14 04:15:31 1.290.2.95 +++ ChangeLog 2005/11/25 02:01:53 1.290.2.96 @@ -1,3 +1,47 @@ +2005-07-11 Malcolm Purvis + + * glyphs-gtk.c: Rename a local static variable because gcc 4.0 + says it clashes with a global with the same name. + +2005-07-11 Atanu Ghosh + + * sysdll.c (dll_open): Under MacOS X return NULL under the + filename is NULL. Fixes problems finding local symbols under 10.4 + (Tiger) + +2005-11-15 Dr. Volker Zell + = + * config.h.in: New HAVE_U_INT*_T defines. + = + * database.c: Only use u_int*_t typedefs if not already + defined. + +2005-04-07 15:08 Enrico Scholz + + * src/process-unix.c (unix_open_network_stream): moved + 'portbuf' buffer out of an inner block as it is used in the + entire function. With gcc4, the stack may get corrupted + after leaving this block. This patches adjusts the size of + the used buffer also; static '128' bytes are far too much + currently and might not suffice for future architectures + (e.g. for 512 bit ones ;)). Instead of, use only the really + required space (max octets * ln(256)/ln(10) chars + space + for '\0' and the sign) + +2005-04-08 Aidan Kehoe + + * callproc.c: Include sysdir.h, so any necessary Mule processing + is done on the current directory name before starting a new + process. + +2005-04-06 Stephen J. Turnbull + + * chartab.c (Fchar_table_p): + (Fget_range_char_table): + (Fput_char_table): + (Fmap_char_table): + Describe range representation and fix typo. + 2005-02-12 Vin Shelton = * emacs.c (shut_down_emacs): Advise users to send email to the 1.37.2.3 +1 -0 XEmacs/xemacs/src/Attic/callproc.c Index: callproc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/callproc.c,v retrieving revision 1.37.2.2 retrieving revision 1.37.2.3 diff -u -p -r1.37.2.2 -r1.37.2.3 --- callproc.c 2002/10/31 15:07:30 1.37.2.2 +++ callproc.c 2005/11/25 02:01:56 1.37.2.3 @@ -48,6 +48,7 @@ Boston, MA 02111-1307, USA. */ #include "systime.h" #include "sysproc.h" #include "sysfile.h" /* Always include after sysproc.h */ +#include "sysdir.h" #include "syssignal.h" /* Always include before systty.h */ #include "systty.h" = 1.14.2.2 +22 -10 XEmacs/xemacs/src/chartab.c Index: chartab.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/chartab.c,v retrieving revision 1.14.2.1 retrieving revision 1.14.2.2 diff -u -p -r1.14.2.1 -r1.14.2.2 --- chartab.c 2005/01/31 02:55:05 1.14.2.1 +++ chartab.c 2005/11/25 02:01:56 1.14.2.2 @@ -457,15 +457,17 @@ once per character). When Mule support exists, the types of ranges that can be assigned values are = --- all characters +-- all characters (represented by t) -- an entire charset --- a single row in a two-octet charset +-- a single row in a two-octet charset (represented by a vector of two + elements: a two-octet charset and a row number; the row must be an + integer, not a character) -- a single character = When Mule support is not present, the types of ranges that can be assigned values are = --- all characters +-- all characters (represented by t) -- a single character = To create a char table, use `make-char-table'. @@ -853,8 +855,11 @@ Find value for CHARACTER in CHAR-TABLE. } = DEFUN ("get-range-char-table", Fget_range_char_table, 2, 3, 0, /* -Find value for a range in CHAR-TABLE. +Find value for RANGE in CHAR-TABLE. If there is more than one value, return MULTI (defaults to nil). + +Valid values for RANGE are single characters, charsets, a row in a +two-octet charset, and all characters. See `put-char-table'. */ (range, char_table, multi)) { @@ -1142,8 +1147,9 @@ one of the following: = -- t (all characters are affected) -- A charset (only allowed when Mule support is present) --- A vector of two elements: a two-octet charset and a row number - (only allowed when Mule support is present) +-- A vector of two elements: a two-octet charset and a row number; the row + must be an integer, not a character (only allowed when Mule support is + present) -- A single character = VALUE must be a value appropriate for the type of CHAR-TABLE. @@ -1437,12 +1443,18 @@ slow_map_char_table_fun (struct chartab_ } = DEFUN ("map-char-table", Fmap_char_table, 2, 3, 0, /* -Map FUNCTION over entries in CHAR-TABLE, calling it with two args, -each key and value in the table. +Map FUNCTION over CHAR-TABLE until it returns non-nil; return that value. +FUNCTION is called with two arguments, each key and entry in the table. = -RANGE specifies a subrange to map over and is in the same format as -the RANGE argument to `put-range-table'. If omitted or t, it defaults to +RANGE specifies a subrange to map over. If omitted or t, it defaults to the entire table. + +Both RANGE and the keys passed to FUNCTION are in the same format as the +RANGE argument to `put-char-table'. N.B. This function does NOT map over +all characters in RANGE, but over the subranges that have been assigned to. +Thus this function is most suitable for searching a char-table, or for +populating one char-table based on the contents of another. The current +implementation does not coalesce ranges all of whose values are the same. */ (function, char_table, range)) { 1.61.2.8 +9 -0 XEmacs/xemacs/src/config.h.in Index: config.h.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/config.h.in,v retrieving revision 1.61.2.7 retrieving revision 1.61.2.8 diff -u -p -r1.61.2.7 -r1.61.2.8 --- config.h.in 2003/08/18 01:42:10 1.61.2.7 +++ config.h.in 2005/11/25 02:01:56 1.61.2.8 @@ -422,6 +422,15 @@ void *alloca (); /* Compile in support for DBM databases? May require libgdbm or libdbm. */ #undef HAVE_DBM = +/* Define to 1 if the system has the type `u_int8_t'. */ +#undef HAVE_U_INT8_T +/* Define to 1 if the system has the type `u_int16_t'. */ +#undef HAVE_U_INT16_T +/* Define to 1 if the system has the type `u_int32_t'. */ +#undef HAVE_U_INT32_T +/* Define to 1 if the system has the type `u_int64_t'. */ +#undef HAVE_U_INT64_T + /* Compile in support for Berkeley DB style databases? May require libdb.= */ #undef HAVE_BERKELEY_DB /* Full #include file path for Berkeley DB's db.h */ 1.16.2.5 +8 -0 XEmacs/xemacs/src/database.c Index: database.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/database.c,v retrieving revision 1.16.2.4 retrieving revision 1.16.2.5 diff -u -p -r1.16.2.4 -r1.16.2.5 --- database.c 2003/06/19 03:34:42 1.16.2.4 +++ database.c 2005/11/25 02:01:57 1.16.2.5 @@ -46,13 +46,21 @@ Boston, MA 02111-1307, USA. */ #define __BIT_TYPES_DEFINED__ #include #ifndef __FreeBSD__ +#if !HAVE_U_INT8_T typedef uint8_t u_int8_t; +#endif +#if !HAVE_U_INT16_T typedef uint16_t u_int16_t; +#endif +#if !HAVE_U_INT32_T typedef uint32_t u_int32_t; +#endif #ifdef WE_DONT_NEED_QUADS +#if !HAVE_U_INT64_T typedef uint64_t u_int64_t; #endif #endif /* WE_DONT_NEED_QUADS */ +#endif /* !defined(__FreeBSD__) */ #endif /* HAVE_INTTYPES_H */ #endif /* !(defined __GLIBC__ && __GLIBC_MINOR__ >=3D 1) */ /* Berkeley DB wants __STDC__ to be defined; else if does `#define const' = */ 1.2.2.5 +3 -3 XEmacs/xemacs/src/glyphs-gtk.c Index: glyphs-gtk.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-gtk.c,v retrieving revision 1.2.2.4 retrieving revision 1.2.2.5 diff -u -p -r1.2.2.4 -r1.2.2.5 --- glyphs-gtk.c 2005/01/31 02:55:17 1.2.2.4 +++ glyphs-gtk.c 2005/11/25 02:01:57 1.2.2.5 @@ -2999,7 +2999,7 @@ complex_vars_of_glyphs_gtk (void) = /* shared data for the image read/parse logic */ static short hexTable[256]; /* conversion value */ -static int initialized =3D FALSE; /* easier to fill in at run time */ +static int hexTable_initialized =3D FALSE; /* easier to fill in at run tim= e */ = /* * Table index for the hex values. Initialized once, first time. @@ -3032,7 +3032,7 @@ static void initHexTable() hexTable['}'] =3D -1; hexTable['\n'] =3D -1; hexTable['\t'] =3D -1; = - initialized =3D TRUE; + hexTable_initialized =3D TRUE; } = /* @@ -3089,7 +3089,7 @@ int read_bitmap_data (fstream, width, he #define Xmalloc(size) malloc(size) = /* first time initialization */ - if (initialized =3D=3D FALSE) initHexTable(); + if (hexTable_initialized =3D=3D FALSE) initHexTable(); = /* error cleanup and return macro */ #define RETURN(code) { if (data) free (data); return code; } 1.20.2.10 +1 -1 XEmacs/xemacs/src/process-unix.c Index: process-unix.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/process-unix.c,v retrieving revision 1.20.2.9 retrieving revision 1.20.2.10 diff -u -p -r1.20.2.9 -r1.20.2.10 --- process-unix.c 2005/02/12 02:56:50 1.20.2.9 +++ process-unix.c 2005/11/25 02:01:57 1.20.2.10 @@ -1684,13 +1684,13 @@ unix_open_network_stream (Lisp_Object na volatile int xerrno =3D 0; volatile int failed_connect =3D 0; char *ext_host; + char portbuf[sizeof(long)*3 + 2]; /* * Caution: service can either be a string or int. * Convert to a C string for later use by getaddrinfo. */ if (INTP (service)) { - char portbuf[128]; snprintf (portbuf, sizeof (portbuf), "%ld", (long) XINT (service)); portstring =3D portbuf; port =3D htons ((unsigned short) XINT (service)); 1.7.2.7 +14 -2 XEmacs/xemacs/src/sysdll.c Index: sysdll.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/sysdll.c,v retrieving revision 1.7.2.6 retrieving revision 1.7.2.7 diff -u -p -r1.7.2.6 -r1.7.2.7 --- sysdll.c 2004/03/25 21:08:19 1.7.2.6 +++ sysdll.c 2005/11/25 02:01:58 1.7.2.7 @@ -263,11 +263,23 @@ dll_handle dll_open (const char *fname) { NSObjectFileImage file; - NSObjectFileImageReturnCode ret =3D = - NSCreateObjectFileImageFromFile(fname, &file); + NSObjectFileImageReturnCode ret; + + /* + * MacOS X dll support is for bundles, not the current executable, so re= turn + * NULL is this case. However, dll_function() uses a special hack where= a + * NULL handle can be used to find executable symbols. This satisfies t= he + * needs of ui-gtk.c but is not a general solution. + */ + if (fname =3D=3D NULL) + return NULL; + + ret =3D NSCreateObjectFileImageFromFile(fname, &file); + if (ret !=3D NSObjectFileImageSuccess) { return NULL; } + return (dll_handle)NSLinkModule(file, fname, = NSLINKMODULE_OPTION_BINDNOW | NSLINKMODULE_OPTION_PRIVATE | --===============5340826111153244020==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============4866911168989107889==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs ... Date: 2005-11-25 03:16:47 +0000 Message-ID: <20051125031647.13767.qmail@sunsite.dk> --===============4866911168989107889== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/11/25 04:16:47 Branch: xemacs release-21-4 Modified: xemacs ChangeLog Log: Added ChangeLog entry to announce re-builder, xetla. Revision Changes Path 1.241.2.78 +4 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.241.2.77 retrieving revision 1.241.2.78 diff -u -p -r1.241.2.77 -r1.241.2.78 --- ChangeLog 2005/11/25 01:59:59 1.241.2.77 +++ ChangeLog 2005/11/25 03:16:45 1.241.2.78 @@ -1,3 +1,7 @@ +2005-04-11 Norbert Koch + + * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla. + 2005-11-15 Dr. Volker Zell = * configure.in: Avoid using Motif also for cygwin --===============4866911168989107889==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============1250031183485875931==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/viper, ChangeLog ... Date: 2005-11-25 07:20:47 +0000 Message-ID: <20051125072047.8378.qmail@sunsite.dk> --===============1250031183485875931== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/25 08:20:47 Modified: packages/xemacs-packages/viper viper.el viper-keym.el ChangeLog Log: * viper-keym.el (viper-ESC-key): use different values in terminal and window modes. * viper.el (viper-emacs-state-mode-list): delete mail-mode, add jde-javadoc-checker-report-mode. Revision Changes Path 1.36 +3 -2 XEmacs/packages/xemacs-packages/viper/viper.el Index: viper.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/viper.el,v retrieving revision 1.35 retrieving revision 1.36 diff -u -p -r1.35 -r1.36 --- viper.el 2005/11/15 18:53:49 1.35 +++ viper.el 2005/11/25 07:20:46 1.36 @@ -9,7 +9,7 @@ ;; Author: Michael Kifer ;; Keywords: emulations = -(defconst viper-version "3.11.5 of October 5, 2005" +(defconst viper-version "3.11.5 of November 25, 2005" "The current version of Viper") = ;; This file is part of GNU Emacs. @@ -429,7 +429,6 @@ widget." occur-mode = mh-folder-mode - mail-mode gnus-group-mode gnus-summary-mode = @@ -441,6 +440,8 @@ widget." compilation-mode = rcirc-mode + + jde-javadoc-checker-report-mode = view-mode vm-mode 1.13 +3 -2 XEmacs/packages/xemacs-packages/viper/viper-keym.el Index: viper-keym.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/viper-keym.= el,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- viper-keym.el 2005/08/06 17:05:11 1.12 +++ viper-keym.el 2005/11/25 07:20:46 1.13 @@ -200,9 +200,10 @@ Enter as a sexp. Examples: \"\\C-z\", [( :type 'string :group 'viper) = -(defcustom viper-ESC-key [(escape)] ; "\e" +(defcustom viper-ESC-key (if (viper-window-display-p) [(escape)] "\e") "Key used to ESC. -Enter as a sexp. Examples: \"\\e\", [(escape)]." +Enter as a sexp. Examples: \"\\e\", [(escape)]. +If running in a terminal, [(escape)] is not understood, so must use \"\\e\= "." :type 'sexp :group 'viper :set (lambda (symbol value) 1.70 +9 -1 XEmacs/packages/xemacs-packages/viper/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog,v retrieving revision 1.69 retrieving revision 1.70 diff -u -p -r1.69 -r1.70 --- ChangeLog 2005/11/16 07:53:18 1.69 +++ ChangeLog 2005/11/25 07:20:46 1.70 @@ -1,7 +1,15 @@ +2005-11-25 Michael Kifer + = + * viper-keym.el (viper-ESC-key): use different values in terminal and + window modes. + = + * viper.el (viper-emacs-state-mode-list): delete mail-mode, add + jde-javadoc-checker-report-mode. + = 2005-11-16 Norbert Koch = * Makefile (VERSION): XEmacs package 1.46 released. - + = 2005-11-15 Michael Kifer = * viper-utils (viper-non-word-characters-reformed-vi): quote `-' in --===============1250031183485875931==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============0142523342184338522==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/ediff, ChangeLog ... Date: 2005-11-25 07:31:39 +0000 Message-ID: <20051125073139.9072.qmail@sunsite.dk> --===============0142523342184338522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/25 08:31:39 Modified: packages/xemacs-packages/ediff ediff.el ediff-wind.el ChangeLog Log: * ediff-wind (ediff-make-wide-display): Slight simplification. * ediff.el (ediff-date): Changed the date of last update. Revision Changes Path 1.32 +1 -1 XEmacs/packages/xemacs-packages/ediff/ediff.el Index: ediff.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff.el,v retrieving revision 1.31 retrieving revision 1.32 diff -u -p -r1.31 -r1.32 --- ediff.el 2005/10/06 00:17:44 1.31 +++ ediff.el 2005/11/25 07:31:38 1.32 @@ -8,7 +8,7 @@ ;; Keywords: comparing, merging, patching, tools, unix = (defconst ediff-version "2.80.1" "The current version of Ediff") -(defconst ediff-date "October 5, 2005" "Date of last update") +(defconst ediff-date "November 25, 2005" "Date of last update") = = ;; This file is part of GNU Emacs. 1.21 +1 -3 XEmacs/packages/xemacs-packages/ediff/ediff-wind.el Index: ediff-wind.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff-wind.= el,v retrieving revision 1.20 retrieving revision 1.21 diff -u -p -r1.20 -r1.21 --- ediff-wind.el 2005/10/06 00:17:44 1.20 +++ ediff-wind.el 2005/11/25 07:31:38 1.21 @@ -1135,9 +1135,7 @@ It assumes that it is called from within (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params))))) (cons 'width (cdr (assoc 'width frame-A-params)))) ediff-wide-display-frame frame-A) - (modify-frame-parameters frame-A (list (cons 'left cw) - (cons 'width wd))))) - + (modify-frame-parameters frame-A `((left . ,cw) (width . ,wd))))) = = ;; Revise the mode line to display which difference we have selected 1.96 +7 -1 XEmacs/packages/xemacs-packages/ediff/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog,v retrieving revision 1.95 retrieving revision 1.96 diff -u -p -r1.95 -r1.96 --- ChangeLog 2005/11/16 07:52:56 1.95 +++ ChangeLog 2005/11/25 07:31:38 1.96 @@ -1,7 +1,13 @@ +2005-11-25 Michael Kifer + = + * ediff-wind (ediff-make-wide-display): Slight simplification. + = + * ediff.el (ediff-date): Changed the date of last update. + = 2005-11-16 Norbert Koch = * Makefile (VERSION): XEmacs package 1.58 released. - + = 2005-11-15 Michael Kifer = * ediff-util (ediff-make-temp-file): use proper file-name-handler --===============0142523342184338522==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============0499506641047236366==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages ... Date: 2005-11-25 08:14:25 +0000 Message-ID: <20051125081425.16364.qmail@sunsite.dk> --===============0499506641047236366== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 09:14:25 Modified: packages ChangeLog Log: Package release Revision Changes Path 1.586 +4 -0 XEmacs/packages/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/ChangeLog,v retrieving revision 1.585 retrieving revision 1.586 diff -u -p -r1.585 -r1.586 --- ChangeLog 2005/11/21 07:41:47 1.585 +++ ChangeLog 2005/11/25 08:14:25 1.586 @@ -1,3 +1,7 @@ +2005-11-25 Norbert Koch + + * Packages released: ediff edit-utils viper. + 2005-11-21 Norbert Koch = * Packages released: edit-utils riece. --===============0499506641047236366==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============6323845872152608596==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/ediff ... Date: 2005-11-25 08:14:43 +0000 Message-ID: <20051125081443.16398.qmail@sunsite.dk> --===============6323845872152608596== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 09:14:43 Modified: packages/xemacs-packages/ediff ChangeLog Makefile Log: Increment VERSION in Makefile Revision Changes Path 1.97 +4 -0 XEmacs/packages/xemacs-packages/ediff/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog,v retrieving revision 1.96 retrieving revision 1.97 diff -u -p -r1.96 -r1.97 --- ChangeLog 2005/11/25 07:31:38 1.96 +++ ChangeLog 2005/11/25 08:14:43 1.97 @@ -1,3 +1,7 @@ +2005-11-25 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.59 released. + 2005-11-25 Michael Kifer = * ediff-wind (ediff-make-wide-display): Slight simplification. 1.71 +1 -1 XEmacs/packages/xemacs-packages/ediff/Makefile Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/Makefile,v retrieving revision 1.70 retrieving revision 1.71 diff -u -p -r1.70 -r1.71 --- Makefile 2005/11/16 07:52:56 1.70 +++ Makefile 2005/11/25 08:14:43 1.71 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.58 +VERSION =3D 1.59 AUTHOR_VERSION =3D 2.75 MAINTAINER =3D Michael Kifer PACKAGE =3D ediff --===============6323845872152608596==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============5130604480502844296==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/edit-utils ... Date: 2005-11-25 08:15:15 +0000 Message-ID: <20051125081515.16506.qmail@sunsite.dk> --===============5130604480502844296== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 09:15:15 Modified: packages/xemacs-packages/edit-utils ChangeLog Makefile Log: Increment VERSION in Makefile Revision Changes Path 1.214 +4 -0 XEmacs/packages/xemacs-packages/edit-utils/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Change= Log,v retrieving revision 1.213 retrieving revision 1.214 diff -u -p -r1.213 -r1.214 --- ChangeLog 2005/11/21 07:59:42 1.213 +++ ChangeLog 2005/11/25 08:15:15 1.214 @@ -1,3 +1,7 @@ +2005-11-25 Norbert Koch + + * Makefile (VERSION): XEmacs package 2.31 released. + 2005-11-21 Adrian Aichner = * Makefile (ELCS): Add crm.elc. 1.144 +1 -1 XEmacs/packages/xemacs-packages/edit-utils/Makefile Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/edit-utils/Makefi= le,v retrieving revision 1.143 retrieving revision 1.144 diff -u -p -r1.143 -r1.144 --- Makefile 2005/11/21 07:59:42 1.143 +++ Makefile 2005/11/25 08:15:15 1.144 @@ -19,7 +19,7 @@ = # This XEmacs package contains independent single file lisp packages = -VERSION =3D 2.30 +VERSION =3D 2.31 AUTHOR_VERSION =3D MAINTAINER =3D XEmacs Development Team PACKAGE =3D edit-utils --===============5130604480502844296==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============7363486919660269282==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno packages/xemacs-packages/viper ... Date: 2005-11-25 08:15:38 +0000 Message-ID: <20051125081538.16551.qmail@sunsite.dk> --===============7363486919660269282== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 09:15:38 Modified: packages/xemacs-packages/viper ChangeLog Makefile Log: Increment VERSION in Makefile Revision Changes Path 1.71 +4 -0 XEmacs/packages/xemacs-packages/viper/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/ChangeLog,v retrieving revision 1.70 retrieving revision 1.71 diff -u -p -r1.70 -r1.71 --- ChangeLog 2005/11/25 07:20:46 1.70 +++ ChangeLog 2005/11/25 08:15:37 1.71 @@ -1,3 +1,7 @@ +2005-11-25 Norbert Koch + + * Makefile (VERSION): XEmacs package 1.47 released. + 2005-11-25 Michael Kifer = * viper-keym.el (viper-ESC-key): use different values in terminal and 1.55 +1 -1 XEmacs/packages/xemacs-packages/viper/Makefile Index: Makefile =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/viper/Makefile,v retrieving revision 1.54 retrieving revision 1.55 diff -u -p -r1.54 -r1.55 --- Makefile 2005/11/16 07:53:18 1.54 +++ Makefile 2005/11/25 08:15:37 1.55 @@ -17,7 +17,7 @@ # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, # Boston, MA 02111-1307, USA. = -VERSION =3D 1.46 +VERSION =3D 1.47 AUTHOR_VERSION =3D 3.09 MAINTAINER =3D Michael Kifer PACKAGE =3D viper --===============7363486919660269282==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============5238541056646661878==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs-builds/viteno ... Date: 2005-11-25 09:09:08 +0000 Message-ID: <20051125090908.27552.qmail@sunsite.dk> --===============5238541056646661878== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 10:09:08 Modified: xemacs-builds/viteno package-index setup-packages.ini Log: Package database backup: - ediff-1.59 - edit-utils-2.31 - viper-1.47 Revision Changes Path 1.263 +21 -21 XEmacs/xemacs-builds/viteno/package-index Index: package-index =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/package-index,v retrieving revision 1.262 retrieving revision 1.263 diff -u -p -r1.262 -r1.263 --- package-index 2005/11/21 07:56:07 1.262 +++ package-index 2005/11/25 09:09:07 1.263 @@ -789,19 +789,19 @@ (package-get-update-base-entry (quote (edit-utils (standards-version 1.1 - version "2.30" + version "2.31" author-version "No-Upstream-Ver" - date "2005-11-21" - build-date "2005-11-21" + date "2005-11-25" + build-date "2005-11-25" maintainer "XEmacs Development Team " distribution xemacs priority high category "standard" dump nil description "Miscellaneous editor extensions, you probably need this." - filename "edit-utils-2.30-pkg.tar.gz" - md5sum "2e80b10a989834108fbf5ef67472655d" - size 934695 + filename "edit-utils-2.31-pkg.tar.gz" + md5sum "0ed9c6f5009d9606a4f9841dc3a4b30d" + size 944605 provides (abbrevlist after-save-commands atomic-extents avoid backup-di= r balloon-help big-menubar blink-cursor blink-paren bookmark compare-w comp= letion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part fl= oating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select i= nfo-look iswitchb lazy-lock lazy-shot live-icon makesum man mic-paren paren= mode-motion+ outl-mouse outln-18 page-ext blink-paren paren permanent-buff= ers popper power-macros recent-files redo reportmail resume rsz-minibuf sav= econf savehist saveplace scroll-in-place setnu shell-font tempo toolbar-uti= ls tree-menu uniquify vertical-mode where-was-i-db winring autorevert align= allout outline narrow-stack highline) requires (xemacs-base xemacs-devel fsf-compat dired mail-lib) type single @@ -1581,19 +1581,19 @@ (package-get-update-base-entry (quote (viper (standards-version 1.1 - version "1.46" + version "1.47" author-version "3.09" - date "2005-11-16" - build-date "2005-11-16" + date "2005-11-25" + build-date "2005-11-25" maintainer "Michael Kifer " distribution xemacs priority low category "standard" dump nil description "VI emulation support." - filename "viper-1.46-pkg.tar.gz" - md5sum "e7f1ded79c43ee94ebb8c780572ba4f3" - size 334931 + filename "viper-1.47-pkg.tar.gz" + md5sum "66e3556c2421cf81083406bc92ad9f88" + size 335017 provides (viper-cmd viper-ex viper-init viper-keym viper-macs viper-mou= s viper-util viper) requires (xemacs-base) type regular @@ -1738,7 +1738,7 @@ version "1.46" author-version "11.55" date "2005-02-12" - build-date "2005-02-12" + build-date "2005-11-22" maintainer "Uwe Brauer " distribution xemacs priority medium @@ -1746,8 +1746,8 @@ dump nil description "Basic TeX/LaTeX support." filename "auctex-1.46-pkg.tar.gz" - md5sum "63b795e9ee4773d4220bf7c84295ff5e" - size 709415 + md5sum "5fd90caa65342e6afea5c50f46938fb5" + size 709284 provides (auc-old auc-tex bib-cite font-latex latex multi-prompt tex-bu= f tex-info tex-jp tex-mik tex-site tex texmathp hilit-LaTeX tex-font tex-fp= tex) requires (xemacs-base) type regular @@ -1955,19 +1955,19 @@ (package-get-update-base-entry (quote (ediff (standards-version 1.1 - version "1.58" + version "1.59" author-version "2.75" - date "2005-11-16" - build-date "2005-11-16" + date "2005-11-25" + build-date "2005-11-25" maintainer "Michael Kifer " distribution xemacs priority medium category "standard" dump nil description "Interface over GNU patch." - filename "ediff-1.58-pkg.tar.gz" - md5sum "b5e6dfc0cab30974bc3686e136cf2cf3" - size 313930 + filename "ediff-1.59-pkg.tar.gz" + md5sum "01abed5a49c99c41cbcc22c5b9414afe" + size 313940 provides (ediff-diff ediff-help ediff-hook ediff-init ediff-merg ediff-= mult ediff-ptch ediff-tbar ediff-util ediff-vers ediff-wind ediff) requires (pcl-cvs elib dired xemacs-base edebug prog-modes) type regular 1.251 +7 -7 XEmacs/xemacs-builds/viteno/setup-packages.ini Index: setup-packages.ini =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs-builds/viteno/setup-packages.ini,v retrieving revision 1.250 retrieving revision 1.251 diff -u -p -r1.250 -r1.251 --- setup-packages.ini 2005/11/21 07:56:07 1.250 +++ setup-packages.ini 2005/11/25 09:09:07 1.251 @@ -140,8 +140,8 @@ version: 1.17 install: packages/debug-1.17-pkg.tar.gz 108073 = @ ediff -version: 1.58 -install: packages/ediff-1.58-pkg.tar.gz 313930 +version: 1.59 +install: packages/ediff-1.59-pkg.tar.gz 313940 = @ emerge version: 1.11 @@ -181,7 +181,7 @@ install: packages/vhdl-1.20-pkg.tar.gz 3 = @ auctex version: 1.46 -install: packages/auctex-1.46-pkg.tar.gz 709415 +install: packages/auctex-1.46-pkg.tar.gz 709284 = @ crisp version: 1.15 @@ -208,8 +208,8 @@ version: 1.14 install: packages/tpu-1.14-pkg.tar.gz 59529 = @ viper -version: 1.46 -install: packages/viper-1.46-pkg.tar.gz 334931 +version: 1.47 +install: packages/viper-1.47-pkg.tar.gz 335017 = @ eterm version: 1.17 @@ -320,8 +320,8 @@ version: 1.11 install: packages/ps-print-1.11-pkg.tar.gz 156222 = @ edit-utils -version: 2.30 -install: packages/edit-utils-2.30-pkg.tar.gz 934695 +version: 2.31 +install: packages/edit-utils-2.31-pkg.tar.gz 944605 = @ fsf-compat version: 1.15 --===============5238541056646661878==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============1267245313408900031==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-25 22:51:38 +0000 Message-ID: <20051125225138.10573.qmail@sunsite.dk> --===============1267245313408900031== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/25 23:51:38 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1355 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1354 retrieving revision 1.1355 diff -u -p -r1.1354 -r1.1355 --- version.sh 2005/11/24 22:51:25 1.1354 +++ version.sh 2005/11/25 22:51:38 1.1355 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051124)" +xemacs_extra_name=3D"(+CVS-20051125)" xemacs_release_date=3D"2005-10-26" --===============1267245313408900031==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============0958454775966922554==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs/src ... Date: 2005-11-26 03:47:49 +0000 Message-ID: <20051126034749.23387.qmail@sunsite.dk> --===============0958454775966922554== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/11/26 04:47:49 Branch: xemacs/lisp release-21-4 xemacs/lwlib release-21-4 xemacs/man release-21-4 xemacs/man/lispref release-21-4 xemacs/src release-21-4 Modified: xemacs/src ChangeLog callproc.c depend unexelf.c Log: More (old) patches for 21.4.18. Revision Changes Path 1.266.2.84 +18 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.266.2.83 retrieving revision 1.266.2.84 diff -u -p -r1.266.2.83 -r1.266.2.84 --- ChangeLog 2005/11/25 02:01:48 1.266.2.83 +++ ChangeLog 2005/11/26 03:47:23 1.266.2.84 @@ -1,3 +1,21 @@ +2002-05-13 Adrian Aichner + + * code-process.el (call-process): Process-related docstring + improvements spurred by Norbert Koch. + * code-process.el (call-process-region): Ditto. + * code-process.el (start-process): Ditto. + +2005-10-09 Adrian Aichner + + * finder.el (finder-find-library): Return filename actually + searched for. + +2005-10-10 Steve Youngs + + * help.el (view-emacs-news): Use `expand-file-name' instead of + `locate-data-file' as the latter will find any "NEWS" files that + might exist in packages _before_ the one in core. + 2005-06-06 Adrian Aichner = * package-get.el (package-get-init-package): 1.6.2.2 +8 -4 XEmacs/xemacs/lisp/code-process.el Index: code-process.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/code-process.el,v retrieving revision 1.6.2.1 retrieving revision 1.6.2.2 diff -u -p -r1.6.2.1 -r1.6.2.2 --- code-process.el 2003/08/14 23:42:50 1.6.2.1 +++ code-process.el 2005/11/26 03:47:25 1.6.2.2 @@ -50,6 +50,8 @@ or a cons of coding systems which are us The program's input comes from file INFILE (nil means `/dev/null'). Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -100,6 +102,8 @@ Delete the text if fourth arg DELETEP is = Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. @@ -158,10 +162,10 @@ found, they default to `nil' for both in Args are NAME BUFFER PROGRAM &rest PROGRAM-ARGS NAME is name for process. It is modified if necessary to make it unique. BUFFER is the buffer or (buffer-name) to associate with the process. - Process output goes at end of that buffer, unless you specify - an output stream or filter function to handle the output. - BUFFER may be also nil, meaning that this process is not associated - with any buffer +Process output goes at end of that buffer, unless you specify +an output stream or filter function to handle the output. +BUFFER may also be nil, meaning that this process is not associated +with any buffer. Third arg is program file name. It is searched for as in the shell. Remaining arguments are strings to give program as arguments. = 1.5.2.1 +1 -1 XEmacs/xemacs/lisp/finder.el Index: finder.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/finder.el,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -p -r1.5 -r1.5.2.1 --- finder.el 2001/04/12 18:21:19 1.5 +++ finder.el 2005/11/26 03:47:25 1.5.2.1 @@ -287,7 +287,7 @@ arguments compiles from `load-path'." found) (while (and dirs (not found)) (if (file-exists-p (expand-file-name (concat file ".el") (car dirs))) - (setq found (expand-file-name file (car dirs))) + (setq found (expand-file-name (concat file ".el") (car dirs))) (if (file-exists-p (expand-file-name file (car dirs))) (setq found (expand-file-name file (car dirs))))) (setq dirs (cdr dirs))) 1.30.2.5 +1 -1 XEmacs/xemacs/lisp/help.el Index: help.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/help.el,v retrieving revision 1.30.2.4 retrieving revision 1.30.2.5 diff -u -p -r1.30.2.4 -r1.30.2.5 --- help.el 2004/09/23 03:02:31 1.30.2.4 +++ help.el 2005/11/26 03:47:25 1.30.2.5 @@ -736,7 +736,7 @@ of the key sequence that ran this comman (defun view-emacs-news () "Display info on recent changes to XEmacs." (interactive) - (Help-find-file (locate-data-file "NEWS"))) + (Help-find-file (expand-file-name "NEWS" data-directory))) = (defun xemacs-www-page () "Go to the XEmacs World Wide Web page." 1.23.2.27 +6 -0 XEmacs/xemacs/lwlib/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.23.2.26 retrieving revision 1.23.2.27 diff -u -p -r1.23.2.26 -r1.23.2.27 --- ChangeLog 2005/02/06 19:23:40 1.23.2.26 +++ ChangeLog 2005/11/26 03:47:33 1.23.2.27 @@ -1,3 +1,9 @@ +2005-03-07 Stephen J. Turnbull + + * lwlib-Xlw.c (build_tabs_in_widget): Correctly disable geometry + negotiation for tab children. + (xlw_create_tab_control): Don't set nonexistent resizable resource. + 2005-02-06 Vin Shelton = * XEmacs 21.4.17 is released 1.8.2.2 +20 -6 XEmacs/xemacs/lwlib/lwlib-Xlw.c Index: lwlib-Xlw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-Xlw.c,v retrieving revision 1.8.2.1 retrieving revision 1.8.2.2 diff -u -p -r1.8.2.1 -r1.8.2.2 --- lwlib-Xlw.c 2001/10/23 08:35:22 1.8.2.1 +++ lwlib-Xlw.c 2005/11/26 03:47:33 1.8.2.2 @@ -324,13 +324,21 @@ xlw_update_scrollbar (widget_instance *i #ifdef LWLIB_TABS_LUCID /* tab control = - lwlib is such an incredible hairy crock. I just cannot believe + [[ lwlib is such an incredible hairy crock. I just cannot believe it! There are random dependencies between functions, there is a total lack of genericity, even though it initially appears to be generic. It should all be junked and begun again. Building tabs are an example - in theory we should be able to reuse a lot of the general stuff because we want to put labels of whatever toolkit we - are using in the tab. Instead we have to hack it by hand. */ + are using in the tab. Instead we have to hack it by hand. ]] + While lwlib is a hairy crock, whoever wrote that seems to misunderstand + Falk's tab control widget. The tab control widget has *two* kinds of + children: *widgets*, which all occupy a *single* pane below the row of + tabs---this is where the labels created in build_tabs_in_widget go, and + *gadgets*, the tabs themselves, which do *not* draw themselves, but + rather are drawn by the control. In fact, in XEmacs the true widget + children are *never* visible! So this case is not a problem in the + design of lwlib, but rather of Falk's widget. -- sjt */ static void xlw_tab_control_callback (Widget w, XtPointer client_data, XtPointer call_= data) { @@ -380,9 +388,8 @@ xlw_create_tab_control (widget_instance = widget_value* val =3D instance->info->val; = XtSetArg (al [ac], XtNsensitive, val->enabled); ac++; - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; + XtSetArg (al [ac], XtNmappedWhenManaged, False); ac++; XtSetArg (al [ac], XtNorientation, XtorientHorizontal); ac++; - XtSetArg (al [ac], XtNresizable, False); ac++; = /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); @@ -401,15 +408,22 @@ static void build_tabs_in_widget (widget widget_value* val) { widget_value* cur =3D val; + Arg al[1]; + + /* Children are always invisible, don't permit resizing. */ + XtSetArg (al[0], XtNresizable, False); + for (cur =3D val; cur; cur =3D cur->next) { if (cur->value) { + Widget w; #ifdef LWLIB_WIDGETS_MOTIF - xm_create_label (widget, cur); + w =3D xm_create_label (widget, cur); #else - xaw_create_label (widget, cur); + w =3D xaw_create_label (widget, cur); #endif + XtSetValues (w, al, 1); } cur->change =3D NO_CHANGE; } 1.116.2.58 +5 -0 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.116.2.57 retrieving revision 1.116.2.58 diff -u -p -r1.116.2.57 -r1.116.2.58 --- ChangeLog 2005/02/24 03:06:17 1.116.2.57 +++ ChangeLog 2005/11/26 03:47:34 1.116.2.58 @@ -1,3 +1,8 @@ +2005-01-19 Aidan Kehoe + + * lispref/mule.texi (CCL Example): Detail an implementation of the + web's URL encoding as a CCL coding system example. = + 2005-02-23 Aidan Kehoe = * lispref/searching.texi (Syntax of Regexps): 1.4.2.3 +271 -5 XEmacs/xemacs/man/lispref/mule.texi Index: mule.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/mule.texi,v retrieving revision 1.4.2.2 retrieving revision 1.4.2.3 diff -u -p -r1.4.2.2 -r1.4.2.3 --- mule.texi 2002/08/20 11:35:49 1.4.2.2 +++ mule.texi 2005/11/26 03:47:36 1.4.2.3 @@ -1723,7 +1723,7 @@ depends on the keyword). * CCL Statements:: Semantics of CCL statements. * CCL Expressions:: Operators and expressions in CCL. * Calling CCL:: Running CCL programs. -* CCL Examples:: The encoding functions for Big5 and KOI-8. +* CCL Example:: A trivial program to transform the Web's URL encod= ing. @end menu = @node CCL Syntax, CCL Statements, , CCL @@ -1942,7 +1942,7 @@ complicated transformation of the Japane Shift JIS. CCL_DECODE_SJIS is its inverse.) It is somewhat odd to represent the SJIS operations in infix form. = -(a)node Calling CCL, CCL Examples, CCL Expressions, CCL +(a)node Calling CCL, CCL Example, CCL Expressions, CCL @comment Node, Next, Previous, Up @subsection Calling CCL = @@ -2008,11 +2008,277 @@ value and 0. Resets the CCL interpreter's internal elapsed time registers. @end defun = -(a)node CCL Examples, , Calling CCL, CCL +(a)node CCL Example, , Calling CCL, CCL @comment Node, Next, Previous, Up -(a)subsection CCL Examples +(a)subsection CCL Example = - This section is not yet written. + In this section, we describe the implementation of a trivial coding +system to transform from the Web's URL encoding to XEmacs' internal +coding. Many people will have been first exposed to URL encoding when +they saw ``%20'' where they expected a space in a file's name on their +local hard disk; this can happen when a browser saves a file from the +web and doesn't encode the name, as passed from the server, properly. + + URL encoding itself is underspecified with regard to encodings beyond +ASCII. The relevant document, RFC 1738, explicitly doesn't give any +information on how to encode non-ASCII characters, and the ``obvious'' +way---use the %xx values for the octets of the eight bit MIME character +set in which the page was served---breaks when a user types a character +outside that character set. Best practice for web development is to +serve all pages as UTF-8 and treat incoming form data as using that +coding system. (Oh, and gamble that your clients won't ever want to +type anything outside Unicode. But that's not so much of a gamble with +today's client operating systems.) We don't treat non-ASCII in this +example, as dealing with @samp{(read-multibyte-character ...)} and +errors therewith would make it much harder to understand. + + Since CCL isn't a very rich language, we move much of the logic that +would ordinarily be computed from operations like @code{(member ..)}, +(a)code{(and ...)} and @code{(or ...)} into tables, from which register +values are read and written, and on which @code{if} statements are +predicated. Much more of the implementation of this coding system is +occupied with constructing these tables---in normal Emacs Lisp---than it +is with actual CCL code. + + All the @code{defvar} statements we deal with in the next few sections +are surrounded by a @code{(eval-and-compile ...)}, which means that the +logic which initializes these variables executes at compile time, and if +XEmacs loads the compiled version of the file, these variables are +initialized as constants. + +(a)menu +* Four bits to ASCII:: Two tables used for getting hex digits from ASCII. +* URI Encoding constants:: Useful predefined characters. = +* Numeric to ASCII-hexadecimal conversion:: Trivial in Lisp, not so in CCL. +* Characters to be preserved:: No transformation needed for these characte= rs. +* The program to decode to internal format:: . +* The program to encode from internal format:: . = + +(a)end menu + +(a)node Four bits to ASCII, URI Encoding constants, , CCL Example +(a)subsubsection Four bits to ASCII + + The first @code{defvar} is for +(a)code{url-coding-high-order-nybble-as-ascii}, a 256-entry table that +maps from an octet's value to the ASCII encoding for the hex value of +its most significant four bits. That might sound complex, but it isn't; +for decimal 65, hex value @samp{#x41}, the entry in the table is the +ASCII encoding of `4'. For decimal 122, ASCII `z', hex value +(a)code{#x7a}, @code{(elt url-coding-high-order-nybble-as-ascii #x7a)} +after this file is loaded gives the ASCII encoding of 7. + +(a)example +(defvar url-coding-high-order-nybble-as-ascii + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + (aset val i (char-int (aref (format "%02X" i) 0))) + (setq i (1+ i))) + val) + "Table to find an ASCII version of an octet's most significant 4 bits.") +(a)end example + + The next table, @code{url-coding-low-order-nybble-as-ascii} is almost +the same thing, but this time it has a map for the hex encoding of the +low-order four bits. So the sixty-fifth entry (offset @samp{#x51}) is +the ASCII encoding of `1', the hundred-and-twenty-second (offset +(a)samp{#x7a}) is the ASCII encoding of `A'. + +(a)example +(defvar url-coding-low-order-nybble-as-ascii = + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + (aset val i (char-int (aref (format "%02X" i) 1))) + (setq i (1+ i))) + val) + "Table to find an ASCII version of an octet's least significant 4 bits.") +(a)end example + +(a)node URI Encoding constants, Numeric to ASCII-hexadecimal conversion, F= our bits to ASCII, CCL Example +(a)subsubsection URI Encoding constants + + Next, we have a couple of variables that make the CCL code more +readable. The first is the ASCII encoding of the percentage sign; this +character is used as an escape code, to start the encoding of a +non-printable character. For historical reasons, URL encoding allows +the space character to be encoded as a plus sign--it does make typing +URLs like @samp{http://google.com/search?q=3DXEmacs+home+page} easier--and +as such, we have to check when decoding for this value, and map it to +the space character. When doing this in CCL, we use the +(a)code{url-coding-escaped-space-code} variable. = + = +(a)example +(defvar url-coding-escape-character-code (char-int ?%) + "The code point for the percentage sign, in ASCII.") + +(defvar url-coding-escaped-space-code (char-int ?+) + "The URL-encoded value of the space character, that is, +.") +(a)end example + +(a)node Numeric to ASCII-hexadecimal conversion +(a)subsubsection Numeric to ASCII-hexadecimal conversion + + Now, we have a couple of utility tables that wouldn't be necessary in +a more expressive programming language than is CCL. The first is sixteen +in length, and maps a hexadecimal number to the ASCII encoding of that +number; so zero maps to ASCII `0', ten maps to ASCII `A.' The second +does the reverse; that is, it maps an ASCII character to its value when +interpreted as a hexadecimal digit. ('A' =3D> 10, 'c' =3D> 12, '2' =3D> 2,= as +a few examples.) + +(a)example +(defvar url-coding-hex-digit-table = + (let ((i 0) + (val (make-vector 16 0))) + (while (< i 16) + (aset val i (char-int (aref (format "%X" i) 0))) + (setq i (1+ i))) + val) + "A map from a hexadecimal digit's numeric value to its encoding in ASCII= .") + +(defvar url-coding-latin-1-as-hex-table + (let ((val (make-vector 256 0)) + (i 0)) + (while (< i (length val)) + ;; Get a hex val for this ASCII character. + (aset val i (string-to-int (format "%c" i) 16)) + (setq i (1+ i))) + val) + "A map from Latin 1 code points to their values as hexadecimal digits.") +(a)end example + +(a)node Characters to be preserved +(a)subsubsection Characters to be preserved + + And finally, the last of these tables. URL encoding says that +alphanumeric characters, the underscore, hyphen and the full stop +(a)footnote{That's what the standards call it, though my North American +readers will be more familiar with it as the period character.} retain +their ASCII encoding, and don't undergo transformation. +(a)code{url-coding-should-preserve-table} is an array in which the entries +are one if the corresponding ASCII character should be left as-is, and +zero if they should be transformed. So the entries for all the control +and most of the punctuation charcters are zero. Lisp programmers will +observe that this initialization is particularly inefficient, but +they'll also be aware that this is a long way from an inner loop where +every nanosecond counts. + +(a)example +(defvar url-coding-should-preserve-table = + (let ((preserve = + (list ?- ?_ ?. ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o = + ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z ?A ?B ?C ?D ?E ?F ?G + ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y + ?Z ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9)) + (i 0) + (res (make-vector 256 0))) + (while (< i 256) + (when (member (int-char i) preserve) + (aset res i 1)) + (setq i (1+ i))) + res) + "A 256-entry array of flags, indicating whether or not to preserve an +octet as its ASCII encoding.") +(a)end example + +(a)node The program to decode to internal format +(a)subsubsection The program to decode to internal format + + After the almost interminable tables, we get to the CCL. The first +CCL program, @code{ccl-decode-urlcoding} decodes from the URL coding to +our internal format; since this version of CCL doesn't have support for +error checking on the input, we don't do any verification on it. + +The buffer magnification--approximate ratio of the size of the output +buffer to the size of the input buffer--is declared as one, because +fractional values aren't allowed. (Since all those %20's will map to = +` ', the length of the output text will be less than that of the input +text.) = + +So, first we read an octet from the input buffer into register +(a)samp{r0}, to set up the loop. Next, we start the loop, with a +(a)code{(loop ...)} statement, and we check if the value in @samp{r0} is a +percentage sign. (Note the comma before +(a)code{url-coding-escape-character-code}; since CCL is a Lisp macro +language, we can break out of the macro evaluation with a comman, and as +such, ``@code{,url-coding-escape-character-code}'' will be evaluated as a +literal `37.') = + +If it is a percentage sign, we read the next two octets into @samp{r2} +and @samp{r3}, and convert them into their hexadecimal numeric values, +using the @code{url-coding-latin-1-as-hex-table} array declared above. +(But again, it'll be interpreted as a literal array.) We then left +shift the first by four bits, mask the two together, and write the +result to the output buffer. + +If it isn't a percentage sign, and it is a `+' sign, we write a +space--hexadecimal 20--to the output buffer. = + +If none of those things are true, we pass the octet to the output buffer +untransformed. (This could be a place to put error checking, in a more +expressive language.) We then read one more octet from the input +buffer, and move to the next iteration of the loop. = + +(a)example +(define-ccl-program ccl-decode-urlcoding + `(1 = + ((read r0) + (loop + (if (r0 =3D=3D ,url-coding-escape-character-code) + ((read r2 r3) + ;; Assign the value at offset r2 in the url-coding-hex-digit-table + ;; to r3. + (r2 =3D r2 ,url-coding-latin-1-as-hex-table) + (r3 =3D r3 ,url-coding-latin-1-as-hex-table) + (r2 <<=3D 4) + (r3 |=3D r2) + (write r3)) + (if (r0 =3D=3D ,url-coding-escaped-space-code) + (write #x20) + (write r0))) + (read r0) + (repeat)))) + "CCL program to take URI-encoded ASCII text and transform it to our +internal encoding. ") +(a)end example + +(a)node The program to encode from internal format +(a)subsubsection The program to encode from internal format + + Next, we see the CCL program to encode ASCII text as URL coded text. +Here, the buffer magnification is specified as three, to account for ` ' +mapping to %20, etc. As before, we read an octet from the input into +(a)samp{r0}, and move into the body of the loop. Next, we check if we +should preserve the value of this octet, by reading from offset +(a)samp{r0} in the @code{url-coding-should-preserve-table} into @samp{r1}. +Then we have an @samp{if} statement predicated on the value in +(a)samp{r1}; for the true branch, we write the input octet directly. For +the false branch, we write a percentage sign, the ASCII encoding of the +high four bits in hex, and then the ASCII encoding of the low four bits +in hex. = + +We then read an octet from the input into @samp{r0}, and repeat the loop. + +(a)example +(define-ccl-program ccl-encode-urlcoding + `(3 + ((read r0) + (loop + (r1 =3D r0 ,url-coding-should-preserve-table) + ;; If we should preserve the value, just write the octet directly. + (if r1 + (write r0) + ;; else, write a percentage sign, and the hex value of the octet, in + ;; an ASCII-friendly format. + ((write ,url-coding-escape-character-code) + (write r0 ,url-coding-high-order-nybble-as-ascii) + (write r0 ,url-coding-low-order-nybble-as-ascii))) + (read r0) + (repeat)))) + "CCL program to encode octets (almost) according to RFC 1738") +(a)end example = @node Category Tables, , CCL, MULE @section Category Tables 1.290.2.97 +9 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.290.2.96 retrieving revision 1.290.2.97 diff -u -p -r1.290.2.96 -r1.290.2.97 --- ChangeLog 2005/11/25 02:01:53 1.290.2.96 +++ ChangeLog 2005/11/26 03:47:38 1.290.2.97 @@ -1,3 +1,12 @@ +2002-05-13 Adrian Aichner + + * callproc.c: Process-related docstring improvements spurred by + Norbert Koch. + +2005-11-25 Vin Shelton + + * depend: Regenerated. + 2005-07-11 Malcolm Purvis = * glyphs-gtk.c: Rename a local static variable because gcc 4.0 1.37.2.4 +2 -0 XEmacs/xemacs/src/Attic/callproc.c Index: callproc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/callproc.c,v retrieving revision 1.37.2.3 retrieving revision 1.37.2.4 diff -u -p -r1.37.2.3 -r1.37.2.4 --- callproc.c 2005/11/25 02:01:56 1.37.2.3 +++ callproc.c 2005/11/26 03:47:42 1.37.2.4 @@ -170,6 +170,8 @@ Arguments are The program's input comes from file INFILE (nil means `/dev/null'). Insert output in BUFFER before point; t means current buffer; nil for BUFFER means discard it; 0 means discard and don't wait. +If BUFFER is a string, then find or create a buffer with that name, +then insert the output in that buffer, before point. BUFFER can also have the form (REAL-BUFFER STDERR-FILE); in that case, REAL-BUFFER says what to do with standard output, as above, while STDERR-FILE says what to do with standard error in the child. 1.22.2.4 +1 -1 XEmacs/xemacs/src/depend Index: depend =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/depend,v retrieving revision 1.22.2.3 retrieving revision 1.22.2.4 diff -u -p -r1.22.2.3 -r1.22.2.4 --- depend 2004/12/05 03:26:23 1.22.2.3 +++ depend 2005/11/26 03:47:43 1.22.2.4 @@ -91,7 +91,7 @@ blocktype.o: $(LISP_H) blocktype.h buffer.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h con= slots.h console.h device.h elhash.h extents.h faces.h file-coding.h frame.h= frameslots.h glyphs.h gui.h insdel.h lstream.h mule-charset.h process.h re= display.h scrollbar.h select.h specifier.h syntax.h sysdep.h sysfile.h tool= bar.h window.h winslots.h bytecode.o: $(LISP_H) backtrace.h buffer.h bufslots.h bytecode.h casetab.h= chartab.h mule-charset.h opaque.h syntax.h callint.o: $(LISP_H) buffer.h bufslots.h bytecode.h casetab.h chartab.h co= mmands.h events.h insdel.h mule-charset.h redisplay.h scrollbar.h systime.h= window.h winslots.h -callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h f= ile-coding.h insdel.h lstream.h mule-charset.h nt.h process.h redisplay.h s= crollbar.h sysdep.h sysfile.h sysproc.h syssignal.h systime.h systty.h sysw= indows.h window.h winslots.h +callproc.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h commands.h f= ile-coding.h insdel.h lstream.h mule-charset.h ndir.h nt.h process.h redisp= lay.h scrollbar.h sysdep.h sysdir.h sysfile.h sysproc.h syssignal.h systime= .h systty.h syswindows.h window.h winslots.h casefiddle.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h insdel.h m= ule-charset.h syntax.h casetab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.= h opaque.h chartab.o: $(LISP_H) buffer.h bufslots.h casetab.h chartab.h mule-charset.= h syntax.h 1.15.2.3 +1 -1 XEmacs/xemacs/src/unexelf.c Index: unexelf.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/unexelf.c,v retrieving revision 1.15.2.2 retrieving revision 1.15.2.3 diff -u -p -r1.15.2.2 -r1.15.2.3 --- unexelf.c 2005/01/11 02:02:38 1.15.2.2 +++ unexelf.c 2005/11/26 03:47:43 1.15.2.3 @@ -475,7 +475,7 @@ typedef struct { # include #endif = -#if defined(__FreeBSD__) && (defined(__alpha__) || defined(__amd64__)) +#if defined(__FreeBSD__) && (defined(__alpha__) || defined(_LP64)) # ifdef __STDC__ # define ElfW(type) Elf64_##type # else --===============0958454775966922554==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============0449510479679402564==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/tests/autoconf ... Date: 2005-11-26 11:46:25 +0000 Message-ID: <20051126114625.25679.qmail@sunsite.dk> --===============0449510479679402564== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 12:46:25 Modified: xemacs/tests/autoconf regressiontest.pl Added: xemacs/lisp fontconfig.el xemacs/lwlib lwlib-colors.c lwlib-colors.h lwlib-fonts.c lwlib-fonts.h xemacs/src xft-fonts.c xft-fonts.h Log: Xft merge. <87k6ev4p8q.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.474 +158 -1 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.473 retrieving revision 1.474 diff -u -p -r1.473 -r1.474 --- ChangeLog 2005/11/25 01:41:31 1.473 +++ ChangeLog 2005/11/26 11:45:47 1.474 @@ -1,3 +1,155 @@ +2005-11-26 Stephen J. Turnbull + + Merge Xft. + + 2005-03-05 Malcolm Purvis + + * configure.ac: Correct the filename of the old copy of configure. + + 2005-03-05 Malcolm Purvis + + * config.guess: + * config.sub: Sync with the latest upstream versions. + * configure.ac: Use --verbose for --extra-verbose. Better + quoting of arguments. Internal shell vars statr with '_' to avoid + name clashes. Pick up the latest changes to configure.in. + Improve the testing of Athena 3d widgets. + + 2005-02-20 Stephen J. Turnbull + + * configure.ac (athena): Spells as 3d, not xaw3d, in declaration. + (sound): quickfix: AC_DEFINE, not AC_DEFINE_UNQUOTED, at top level. + + 2005-02-19 Stephen J. Turnbull + + * configure.ac (XE_EXPAND_COMPLEX_OPTION): Use same name in comment. + (XEmacs keyword option support): + (XEmacs complex option support): + Move long header comments to internals.texi(The configure Script). + + 2005-02-03 Stephen J. Turnbull + + * configure.ac: Trap --with-style flags, now --enable. + + 2005-02-03 Stephen J. Turnbull + + * configure.ac (Autodetect native sound): + Handle NetBSD per Aidan's patch. + + 2005-02-11 Malcolm Purvis + + * configure.ac: Added keyword option support. Converted database, + sound, athena, xim, bignum, error-checking, menubars, scrollbars, + dialogs and widgets command line arguments to use keyword option + and complex option macros. + + 2005-02-09 Malcolm Purvis + + * configure.ac (XE_COMPLEX_OPTION): + * configure.ac (XE_COMPLEX_OPTION_HELP_STRING): + * configure.ac (XE_COMPLEX_ARG_WITH): + * configure.ac (XE_COMPLEX_ARG_ENABLE): + Rewritten complex option support with a simpler API and support + for --enable as well a --with. + + 2005-02-02 Malcolm Purvis + + * configure.ac Align with the current mainline version of + configure.in. + + 2005-02-01 Stephen J. Turnbull + + * configure.ac (Xrender, fontconfig, and Xft): + Check /usr/include/freetype2. + + 2005-01-30 Stephen J. Turnbull + + * configure.ac (AC_COPYRIGHT): Update. + (progname): Restore and improve documentation. + + (XE_INIT_COMPLEX_OPTION): + (XE_APPEND_COMPLEX_OPTION_DEFAULT): + (XE_PARSE_COMPLEX_OPTION): + (XE_CLEANUP_COMPLEX_OPTION): + (XE_COMPLEX_OPTION_HELP_STRING): Support complex options. + (--with-xft): Add Xft support using the complex option support. + + (--with-xface): + (--with-zlib): + (--with-xmu): + (--with-purify): + (--with-quantify): + (--with-toolbars): + (--with-tty): + (--with-xfs): + (--with-canna): + (--with-wnn): + (--with-wnn6): + (--with-ldap): + (--with-postgresql): + (--with-infodock): + (--with-native-sound-lib): + (--with-netinstall): + (--with-site-includes): + (--with-site-libraries): + (--with-site-prefixes): + (--with-package-prefix): + (--with-package-path): + (--enable-external-widget): + (--enable-kkcc): + (--enable-union-type): + (--enable-pdump): + (--enable-debug): + (--enable-memory-usage-stats): + (--enable-error-checking): + (--with-rel-alloc): + (--with-dlmalloc): + (--with-debug-malloc): + (--with-system-malloc): + Improve (including add) help strings. + + (--with-athena): + (--with-xim): + (--with-mail-locking): + (--enable-bignum): + (--enable-menubars): + (--enable-scrollbars): + (--enable-dialogs): + (--enable-widgets): + Fix `eval "$FEATURE=3D\"$val\"" bug. + = + 2005-01-29 Stephen J. Turnbull + + * INSTALL (CONFIGURATION OPTIONS): + Insert Malcolm's notes on autoconf 2.59 support. + + 2005-01-04 Malcolm Purvis + + * aclocal.m4: Changes to support autoconf 2.59 + * config.guess: + * config.sub: Upgraded to the version in from automake 1.9 + * configure.ac: Rewritten for autoconf 2.59 support. + + 2004-12-10 Stephen J. Turnbull + + * configure.usage: Various minor improvements. + + 2004-12-09 Stephen J. Turnbull + + * configure.in: Update FSF's copyright. Support --with-xft=3DLIST + syntax. Try to find a directory containing freetype/ftheader.h. + + * configure.usage (--with-xft): Update. + + 2004-11-20 Stephen J. Turnbull + + Xft branch based on "Xft reloaded #3" patch by Eric Knauel and + Mathias Neuebaur, and other contributors. + + * configure.in: + * configure.usage: + Implement and document switches for configuring Xft. + 2005-11-21 Marcus Crestani = Incremental Garbage Collector @@ -274,8 +426,13 @@ 2005-02-21 Stephen J. Turnbull = * version.sh (XEMACS_RELEASE_DATE): New version info variable. + + * configure.in (XEMACS_RELEASE_DATE): + * configure.ac (XEMACS_RELEASE_DATE): + Use it. = - * configure.in (XEMACS_RELEASE_DATE): Use it. + * configure.ac (sound): + AC_DEFINE_UNQUOTED seems OK, if it's not m4-quoted. = 2005-02-18 Stephen J. Turnbull = 1.23 +122 -1 XEmacs/xemacs/configure.ac Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.22 retrieving revision 1.23 diff -u -p -r1.22 -r1.23 --- configure.ac 2005/11/25 01:41:36 1.22 +++ configure.ac 2005/11/26 11:45:48 1.23 @@ -630,6 +630,20 @@ XE_MERGED_ARG([infopath], [AC_DEFINE(INFOPATH_USER_DEFINED)], []) dnl XE_HELP_SUBSECTION([Window-system options]) +dnl if you change defaults, make sure to fix arg 6 of the OPTION_HELP macr= o. +XE_COMPLEX_ARG([xft], + [XE_COMPLEX_OPTION_HELP_STRING([--with-xft], + [Xft client-side font rendering and anti-aliasing], + [Xft], + [`emacs' (buffers), `menubars', `tabs', and `gauges'], + [X11, Xft, Xrender, freetype, and fontconfig], + [`emacs,menubars,tabs,gauges'])], + [],[], + [XE_COMPLEX_OPTION([emacs],[yes]), + XE_COMPLEX_OPTION([menubars],[yes]), + XE_COMPLEX_OPTION([tabs],[yes]), + XE_COMPLEX_OPTION([gauges],[yes])]) + [], []) XE_MERGED_ARG([gtk], AC_HELP_STRING([--with-gtk],[Support GTK on the X Window System. (EXPERIM= ENTAL)]), [true], [with_gtk=3Dno]) @@ -777,7 +791,7 @@ XE_MERGED_ARG([wnn6], [], []) XE_MERGED_ARG([xfs], AC_HELP_STRING([--with-xfs],[Enable XFontSet support for internationalized - menubar. Incompatible with `--with-xim=3Dmotif'. + menubar. Incompatible with `--with-xim=3Dmotif' a= nd `--with-xft'. `--enable-menubars=3Dlucid' (the default) is desir= able.]), [], []) dnl @@ -967,6 +981,20 @@ fi dnl CDE requires tooltalk XE_CHECK_FEATURE_DEPENDENCY(cde, tooltalk) = +dnl Xft sanity checking +dnl #### Maybe we should XE_DIE here instead? Or fix the UI so that +dnl emacs is always implicit? (I worry that --without-xft would be weird.) +if test \( "$with_xft_menubars" =3D "yes" -o "$with_xft_tabs" =3D "yes" \ + -o "$with_xft_gauges" =3D "yes" \) -a "$with_xft_emacs" =3D "no= "; then + AC_MSG_WARN([Forcing --with-xft=3Demacs because Xft is enabled]) + with_xft_emacs=3Dyes +fi + +dnl XFS and Xft in menubars conflict +if test "$with_xfs" =3D "yes" -a "$with_xft_menubars" =3D "yes"; then + USAGE_ERROR("XFS and Xft in the menubars are incompatible!") +fi + dnl ----------------------------------------------------------------------= --- dnl Local paths test "x$prefix" =3D xNONE && prefix=3D$ac_default_prefix @@ -3362,6 +3390,50 @@ extern Bool XRegisterIMInstantiateCallba fi fi = + dnl include xft/AA support? + dnl #### need to check for includes here (especially, freetype.h for v.2) + + if test "$with_xft_emacs" =3D "yes"; then + AC_CHECKING([for Xrender, fontconfig, and Xft]) + xft_includes_found=3Dno + AC_CHECK_HEADERS([freetype/config/ftheader.h], + [xft_includes_found=3Dyes], + [ + dnl #### How about /sw/include, and /opt/local/include? + dnl these directories need to be the parent of the freetype directory + for freetype_include_top in "/usr/X11R6/include/freetype2" \ + "/usr/include/freetype2" + do + if test -d $freetype_include_top; then + AC_CHECKING([in ${freetype_include_top}/freetype2]) + dnl disable autoconf's fucking cache; why these fuckheads think it + dnl is better to be broken than to be slow, I don't know! + dnl #### there's gotta be a better-looking way to do this!! + unset "$as_ac_Header" + save_c_switch_site=3D"$c_switch_site" + c_switch_site=3D"$c_switch_site -I${freetype_include_top}" + AC_CHECK_HEADERS([freetype/config/ftheader.h], + [xft_includes_found=3Dyes], + [c_switch_site=3D$save_c_switch_site]) + fi + done + if test "$xft_includes_found" !=3D "yes"; then + XE_DIE(["Unable to find headers for --with-xft"]) + else + AC_CHECK_LIB(Xrender, XRenderQueryExtension, XE_PREPEND(-lXrender,= libs_x), + [XE_DIE(["Unable to find libXrender for --with-xft"])]) + AC_CHECK_LIB(fontconfig, FcPatternCreate, XE_PREPEND(-lfontconfig,= libs_x), + [XE_DIE(["Unable to find libfontconfig for --with-xft"])]) + AC_CHECK_LIB(Xft, XftFontOpen, XE_PREPEND(-lXft, libs_x), + [XE_DIE(["Unable to find libXft for --with-xft"])]) + AC_DEFINE(USE_XFT) + dnl Due to interactions with other libraries, must postpone AC_DEF= INE + dnl of USE_XFT_MENUBARS, USE_XFT_TABS, and USE_XFT_GAUGE. + unset xft_includes_found + fi +]) + fi + fi dnl $with_x11 =3D yes = if test "$with_msw" !=3D "no"; then @@ -4186,6 +4258,14 @@ esac case "$enable_menubars" in "" | "yes" | "athena" ) enable_menubars=3D"lucid" ;; esac +dnl this is not in xft reloaded #3 +if test "$with_xft_menubars" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$with_menubars" !=3D "no" ; then + with_xft_menubars=3D"yes" + else + with_xft_menubars=3D"no" + fi +fi case "$enable_dialogs" in "" | "yes" | "lucid" ) if test "$lucid_prefers_motif" =3D "yes"; then if test "$have_motif" =3D "yes"; then enable_dialogs=3D"motif" @@ -4219,6 +4299,22 @@ case "$enable_widgets" in "" | "yes" | " fi fi ;; esac +dnl this is not in xft reloaded #3 +if test "$with_xft_tabs" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$enable_widgets" !=3D "no" ; then + with_xft_tabs=3D"yes" + else + with_xft_tabs=3D"no" + fi +fi +dnl this is not in xft reloaded #3 +if test "$with_xft_gauge" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$enable_widgets" !=3D "no" ; then + with_xft_gauge=3D"yes" + else + with_xft_gauge=3D"no" + fi +fi = all_widgets=3D"$enable_menubars $enable_scrollbars $enable_dialogs $enable= _toolbars $enable_widgets" = @@ -4307,6 +4403,12 @@ test "$enable_scrollbars" =3D "motif" && = test "$enable_dialogs" =3D "motif" && AC_DEFINE(LWLIB_DIALOGS_MOTIF) test "$enable_widgets" =3D "motif" && AC_DEFINE(LWLIB_WIDGETS_MOTIF) = +dnl this is not in xft reloaded #3 +test "$with_xft_menubars" =3D "yes" && AC_DEFINE(USE_XFT_MENUBARS) +dnl these are new in sjt-xft +test "$with_xft_tabs" =3D "yes" && AC_DEFINE(USE_XFT_TABS) +test "$with_xft_gauge" =3D "yes" && AC_DEFINE(USE_XFT_GAUGE) + dnl ---------------------- dnl Mule-dependent options dnl ---------------------- @@ -5782,6 +5884,9 @@ if test "$with_x11" =3D "yes"; then if test "$with_wmcommand" !=3D no; then echo " - Handling WM_COMMAND properly." fi + if test "$with_xft" =3D "yes"; then = + echo " - Compiling in support for Xft antialiased fonts (EXPERIMENT= AL)." + fi fi if test "$need_motif" =3D "yes" ; then echo " Compiling in support for Motif." @@ -5807,6 +5912,11 @@ case "$enable_menubars" in echo " Re-run configure with --enable-menubars=3D'lu= cid'." ;; msw ) echo " Using MS-Windows menubars." ;; esac +dnl this is not in xft reloaded #3 +if test "$with_xft_menubars" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in menubars." + echo " WARNING: This feature will be replaced with a face." +fi case "$enable_scrollbars" in gtk ) echo " Using GTK scrollbars." ;; lucid ) echo " Using Lucid scrollbars." ;; @@ -5832,6 +5942,17 @@ case "$enable_widgets" in athena ) echo " Using Athena native widgets." ;; msw ) echo " Using MS-Windows native widgets." ;; esac +dnl this is not in xft reloaded #3 +if test "$with_xft_tabs" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in tab controls." + echo " WARNING: This feature will be replaced with a face." +fi +dnl this is not in xft reloaded #3 +if test "$with_xft_gauge" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in progress bars." + echo " WARNING: This feature will be replaced with a face." + echo " WARNING: This feature not yet implemented; setting ignored." +fi if test "$with_dragndrop" =3D yes; then echo " Compiling in support for Drag'n'Drop (EXPERIMENTAL)." echo " - Drag'n'Drop prototype: $dragndr= op_proto." 1.700 +88 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.699 retrieving revision 1.700 diff -u -p -r1.699 -r1.700 --- ChangeLog 2005/11/25 01:41:45 1.699 +++ ChangeLog 2005/11/26 11:45:53 1.700 @@ -1,3 +1,91 @@ +2005-11-26 Stephen J. Turnbull + + Merge Xft. + + 2005-09-07 Clemens Fruhwirth + + * font.el (font-default-font-for-device): Remove vestigial code + from incomplete removal of conditional. + + 2005-08-17 Stephen J. Turnbull + + * fontconfig.el (fc-try-font): Improve docstring, add todo comment. + (make-fc-pattern): Use defalias, not defun. + + 2005-08-04 Stephen J. Turnbull + + * fontconfig.el (make-fc-pattern): Don't add finalizer, now + finalizer is in lrecord implementation. + + 2005-08-02 Stephen J. Turnbull + + `fc-list-fonts-pattern-objects' now returns a LISP list. + + * fontconfig.el (fc-try-font): + (fc-find-available-font-families): + (fc-find-available-weights-for-family): + Adapt to it. + + (fc-try-font): Return list of pattern objects. + + (fc-fontset-list): Remove. + + 2005-03-02 Stephen J. Turnbull + + * font.el (font-running-xemacs): Remove definition. + (font-x-font-regexp): + (font-x-registry-and-encoding-regexp): + (font-default-font-for-device): + (x-font-create-name-core): + (mswindows-font-create-name): + (font-set-face-font): + (font-blink-callback): + Remove references. + + (define-font-keywords): Remove definition and top-level references. + + (set-font-style-by-keywords): + (font-properties-from-style): + Comment out. + + 2005-03-01 Aidan Kehoe + + General cleanup of references to functions Eric has deleted = + and renamed in the C core. = + * font.el (x-font-create-object): = + xft-xlfd-font-name-p -> xlfd-font-name-p + * font.el (x-font-create-object-xft): + xft-pattern-* -> fc-pattern-*, return the created font. = + * font.el (x-font-create-name-xft): + xft* -> fc* + * fontconfig.el (fc-font-name-weight-regular): New. + * fontconfig.el (fc-font-name-weight-mapping): + * fontconfig.el (fc-font-name-weight-mapping-string): + * fontconfig.el (fc-font-name-weight-mapping-string-reverse): + * fontconfig.el (fc-font-name-weight-mapping-reverse): + * fontconfig.el (fc-font-weight-translate-from-symbol): + Add information on the "regular" font weight, taken from + fontconfig.h, which is the weight my local system returns by + default. + = + 2005-02-03 Eric Knauel + + * fontconfig.el (fc-try-font): = + (fc-find-available-font-families): = + (fc-find-available-weights-for-family): adapt to new representation of + FcObjectSets + + 2004-11-20 Stephen J. Turnbull + + Xft branch based on "Xft reloaded #3" patch by Eric Knauel and + Mathias Neuebaur, and other contributors. + + * fontconfig.el: New file implementing fontconfig interfaces. + + * font.el: + * face.el: + Use fontconfig to access Xft fonts. + 2005-11-21 Marcus Crestani = Incremental Garbage Collector 1.57 +2 -0 XEmacs/xemacs/lisp/dumped-lisp.el Index: dumped-lisp.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/dumped-lisp.el,v retrieving revision 1.56 retrieving revision 1.57 diff -u -p -r1.56 -r1.57 --- dumped-lisp.el 2005/10/04 17:51:20 1.56 +++ dumped-lisp.el 2005/11/26 11:45:53 1.57 @@ -53,6 +53,8 @@ in dumped-lisp.el and is not itself list "obsolete" "specifier" "frame" ; needed by faces + ;; #### this should be (featurep 'xft) + (when (featurep 'x) "fontconfig") ; needed by x-faces (when (featurep 'x) "x-faces") ; needed by faces (when (featurep 'gtk) "gtk-faces") (when (valid-console-type-p 'mswindows) "msw-faces") 1.37 +2 -1 XEmacs/xemacs/lisp/faces.el Index: faces.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/faces.el,v retrieving revision 1.36 retrieving revision 1.37 diff -u -p -r1.36 -r1.37 --- faces.el 2005/10/25 11:28:24 1.36 +++ faces.el 2005/11/26 11:45:54 1.37 @@ -49,7 +49,8 @@ ;; To elude the warnings for font functions. (Normally autoloaded when ;; font-create-object is called) (eval-when-compile - (require 'font)) + (require 'font) + (load "cl-macs")) = (defgroup faces nil "Support for multiple text attributes (fonts, colors, ...) 1.18 +239 -135 XEmacs/xemacs/lisp/font.el Index: font.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font.el,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- font.el 2005/03/25 15:58:03 1.17 +++ font.el 2005/11/26 11:45:54 1.18 @@ -29,6 +29,18 @@ = ;;; Commentary: = +;; This file is totally bogus in the context of Emacs. Much of what it do= es +;; is really in the provice of faces (for example all the style parameters= ), +;; and that's the way it is in GNU Emacs. +;; +;; What is needed for fonts at the Lisp level is a consistent way to access +;; face properties that are actually associated with fonts for some render= ing +;; engine, in other words, the kinds of facilities provided by fontconfig +;; patterns. We just need to provide an interface to looking up, storing, +;; and manipulating font specifications with certain properties. There wi= ll +;; be some engine-specific stuff, like the bogosity of X11's character set +;; registries. + ;;; Code: = (globally-declare-fboundp @@ -42,6 +54,7 @@ (globally-declare-boundp '(global-face-data x-font-regexp x-font-regexp-foundry-and-family + fc-font-regexp mswindows-font-regexp)) = (require 'cl) @@ -89,23 +102,16 @@ ;;; Lots of variables / keywords for use later in the program ;;; Not much should need to be modified ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; -(defconst font-running-xemacs (string-match "XEmacs" (emacs-version)) - "Whether we are running in XEmacs or not.") - -(defmacro define-font-keywords (&rest keys) - `(eval-and-compile - (let ((keywords (quote ,keys))) - (while keywords - (or (boundp (car keywords)) - (set (car keywords) (car keywords))) - (setq keywords (cdr keywords)))))) - +;; #### These aren't window system mappings (defconst font-window-system-mappings '((x . (x-font-create-name x-font-create-object)) (gtk . (x-font-create-name x-font-create-object)) + ;; #### FIXME should this handle fontconfig font objects? + (fc . (fc-font-create-name fc-font-create-object)) (ns . (ns-font-create-name ns-font-create-object)) (mswindows . (mswindows-font-create-name mswindows-font-create-object)) (pm . (x-font-create-name x-font-create-object)) ; Change? FIXME + ;; #### what is this bogosity? (tty . (tty-font-create-plist tty-font-create-object))) "An assoc list mapping device types to a list of translations. = @@ -148,12 +154,11 @@ for use in the 'weight' field of an X fo "How much a font is allowed to vary from the desired size.") = ;; Canonical (internal) sizes are in points. -;; Registry -(define-font-keywords:family :style :size :registry :encoding) = -(define-font-keywords -:weight :extra-light :light :demi-light :medium :normal :demi-bold -:bold :extra-bold) +;; Property keywords: :family :style :size :registry :encoding :weight +;; Weight keywords: :extra-light :light :demi-light :medium +;;:normal :demi-bold :bold :extra-bold +;; See GNU Emacs 21.4 for more properties and keywords we should support = (defvar font-style-keywords nil) = @@ -248,6 +253,7 @@ for use in the 'weight' field of an X fo (aset table (+ i ?a) (+ i ?A)) (setq i (1+ i))) ;; Now ISO translations + ;; #### FIXME what's this for?? (setq i 224) (while (< i 247) ;; Agrave - Ouml (aset table i (- i 32)) @@ -261,27 +267,31 @@ for use in the 'weight' field of an X fo ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; ;;; Utility functions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; -(defun set-font-style-by-keywords (fontobj styles) - (make-local-variable 'font-func) - (declare (special font-func)) - (if (listp styles) - (while styles - (setq font-func (car-safe (cdr-safe (assq (car styles) font-style-keyword= s))) - styles (cdr styles)) - (and (fboundp font-func) (funcall font-func fontobj t))) - (setq font-func (car-safe (cdr-safe (assq styles font-style-keywords))= )) - (and (fboundp font-func) (funcall font-func fontobj t)))) - -(defun font-properties-from-style (fontobj) - (let ((todo font-style-keywords) - type func retval) - (while todo - (setq func (cdr (cdr (car todo))) - type (car (pop todo))) - (if (funcall func fontobj) - (setq retval (cons type retval)))) - retval)) +;; #### unused? +; (defun set-font-style-by-keywords (fontobj styles) +; (make-local-variable 'font-func) +; (declare (special font-func)) +; (if (listp styles) +; (while styles +; (setq font-func (car-safe (cdr-safe (assq (car styles) +; font-style-keywords))) +; styles (cdr styles)) +; (and (fboundp font-func) (funcall font-func fontobj t))) +; (setq font-func (car-safe (cdr-safe (assq styles font-style-keywords= )))) +; (and (fboundp font-func) (funcall font-func fontobj t)))) + +;; #### unused? +; (defun font-properties-from-style (fontobj) +; (let ((todo font-style-keywords) +; type func retval) +; (while todo +; (setq func (cdr (cdr (car todo))) +; type (car (pop todo))) +; (if (funcall func fontobj) +; (setq retval (cons type retval)))) +; retval)) = +;; #### only used in this file; maybe there's a cl.el function? (defun font-unique (list) (let ((retval) (cur)) @@ -329,8 +339,8 @@ The type may be the strings \"px\", \"pi (mm-width (float (or (device-mm-width device) 293))) (retval nil)) (cond - ;; the following string-match is broken, there will never be a - ;; left operand detected + ;; #### this is pretty bogus and should probably be made gone + ;; or supported at a higher level ((string-match "^ *\\([-+*/]\\) *" spec) ; math! whee! (let ((math-func (intern (match-string 1 spec))) (other (font-spatial-to-canonical @@ -361,7 +371,7 @@ The type may be the strings \"px\", \"pi ((string=3D type "mm") (setq retval (* num (/ 72.0 25.4)))) ((string=3D type "cm") - (setq retval (* num 10 (/ 72.0 25.4)))) + (setq retval (* num (/ 72.0 2.54)))) (t (setq retval num)) ) @@ -445,6 +455,42 @@ The type may be the strings \"px\", \"pi args (cdr args))) retval)))) = +(defvar font-default-cache nil) + +;;;###autoload +(defun font-default-font-for-device (&optional device) + (or device (setq device (selected-device))) + (font-truename + (make-font-specifier + (face-font-name 'default device)))) + +;;;###autoload +(defun font-default-object-for-device (&optional device) + (let ((font (font-default-font-for-device device))) + (or (cdr-safe (assoc font font-default-cache)) + (let ((object (font-create-object font))) + (push (cons font object) font-default-cache) + object)))) + +;;;###autoload +(defun font-default-family-for-device (&optional device) + (font-family (font-default-object-for-device (or device (selected-device= ))))) + +;;;###autoload +(defun font-default-registry-for-device (&optional device) + (font-registry (font-default-object-for-device (or device (selected-devi= ce))))) + +;;;###autoload +(defun font-default-encoding-for-device (&optional device) + (font-encoding (font-default-object-for-device (or device (selected-devi= ce))))) + +;;;###autoload +(defun font-default-size-for-device (&optional device) + ;; face-height isn't the right thing (always 1 pixel too high?) + ;; (if font-running-xemacs + ;; (format "%dpx" (face-height 'default device)) + (font-size (font-default-object-for-device (or device (selected-device))= ))) + =0C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; ;;; The window-system dependent code (TTY-style) @@ -468,9 +514,8 @@ The type may be the strings \"px\", \"pi ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; ;;; The window-system dependent code (X-style) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; -(defvar font-x-font-regexp (or (and font-running-xemacs - (boundp 'x-font-regexp) - x-font-regexp) +(defvar font-x-font-regexp (when (and (boundp 'x-font-regexp) + x-font-regexp) (let ((- "[-?]") (foundry "[^-]*") @@ -497,13 +542,12 @@ The type may be the strings \"px\", \"pi )))) = (defvar font-x-registry-and-encoding-regexp - (or (and font-running-xemacs - (boundp 'x-font-regexp-registry-and-encoding) - (symbol-value 'x-font-regexp-registry-and-encoding)) - (let ((- "[-?]") - (registry "[^-]*") - (encoding "[^-]+")) - (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'")))) + (when (and (boundp 'x-font-regexp-registry-and-encoding) + (symbol-value 'x-font-regexp-registry-and-encoding)) + (let ((- "[-?]") + (registry "[^-]*") + (encoding "[^-]+")) + (concat - "\\(" registry "\\)" - "\\(" encoding "\\)\\'")))) = (defvar font-x-family-mappings '( @@ -600,47 +644,6 @@ The type may be the strings \"px\", \"pi (sort (font-unique (nconc scaled normal)) 'string-lessp)))) (cons "monospace" (mapcar 'car font-x-family-mappings)))) = -(defvar font-default-cache nil) - -;;;###autoload -(defun font-default-font-for-device (&optional device) - (or device (setq device (selected-device))) - (if font-running-xemacs - (font-truename - (make-font-specifier - (face-font-name 'default device))) - (let ((font (cdr-safe (assq 'font (frame-parameters device))))) - (if (and (fboundp 'fontsetp) (fontsetp font)) - (aref (get-font-info (aref (cdr (get-fontset-info font)) 0)) 2) - font)))) - -;;;###autoload -(defun font-default-object-for-device (&optional device) - (let ((font (font-default-font-for-device device))) - (or (cdr-safe (assoc font font-default-cache)) - (let ((object (font-create-object font))) - (push (cons font object) font-default-cache) - object)))) - -;;;###autoload -(defun font-default-family-for-device (&optional device) - (font-family (font-default-object-for-device (or device (selected-device= ))))) - -;;;###autoload -(defun font-default-registry-for-device (&optional device) - (font-registry (font-default-object-for-device (or device (selected-devi= ce))))) - -;;;###autoload -(defun font-default-encoding-for-device (&optional device) - (font-encoding (font-default-object-for-device (or device (selected-devi= ce))))) - -;;;###autoload -(defun font-default-size-for-device (&optional device) - ;; face-height isn't the right thing (always 1 pixel too high?) - ;; (if font-running-xemacs - ;; (format "%dpx" (face-height 'default device)) - (font-size (font-default-object-for-device (or device (selected-device))= ))) - (defun x-font-create-name (fontobj &optional device) "Return a font name constructed from FONTOBJ, appropriate for X devices." (if (and (not (or (font-family fontobj) @@ -656,8 +659,7 @@ The type may be the strings \"px\", \"pi (font-family default) (x-font-families-for-device device))) (weight (or (font-weight fontobj) :medium)) - (size (or (if font-running-xemacs - (font-size fontobj)) + (size (or (font-size fontobj) (font-size default))) (registry (or (font-registry fontobj) (font-registry default) @@ -714,6 +716,134 @@ The type may be the strings \"px\", \"pi (if done font-name))))) = =0C +;;; Cache building code +;;;###autoload +(defun x-font-build-cache (&optional device) + (let ((hash-table (make-hash-table :test 'equal :size 15)) + (fonts (mapcar 'x-font-create-object + (font-list "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"))) + (plist nil) + (cur nil)) + (while fonts + (setq cur (car fonts) + fonts (cdr fonts) + plist (cl-gethash (car (font-family cur)) hash-table)) + (if (not (memq (font-weight cur) (plist-get plist 'weights))) + (setq plist (plist-put plist 'weights (cons (font-weight cur) + (plist-get plist 'weights))))) + (if (not (member (font-size cur) (plist-get plist 'sizes))) + (setq plist (plist-put plist 'sizes (cons (font-size cur) + (plist-get plist 'sizes))))) + (if (and (font-oblique-p cur) + (not (memq 'oblique (plist-get plist 'styles)))) + (setq plist (plist-put plist 'styles (cons 'oblique (plist-get plist 's= tyles))))) + (if (and (font-italic-p cur) + (not (memq 'italic (plist-get plist 'styles)))) + (setq plist (plist-put plist 'styles (cons 'italic (plist-get plist 'st= yles))))) + (cl-puthash (car (font-family cur)) plist hash-table)) + hash-table)) + +=0C +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; +;;; The rendering engine-dependent code (Xft-style) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; + +;;; #### FIXME actually, this section should be fc-*, right? + +(defvar font-xft-font-regexp + ;; #### FIXME what the fuck?!? + (when (and (boundp 'xft-font-regexp) xft-font-regexp) + (concat "\\`" + "[^:-]*" ; optional foundry and family + ; incorrect, escaping exists + "\\(-[0-9]*\\(\\.[0-9]*\\)?\\)?" ; optional size (points) + "\\(:[^:]*\\)*" ; optional properties + ; not necessarily key=3Dvalue!! + "\\'" + ))) + +(defvar font-xft-family-mappings + ;; #### FIXME this shouldn't be needed or used for Xft + '(("serif" . ("new century schoolbook" + "utopia" + "charter" + "times" + "lucidabright" + "garamond" + "palatino" + "times new roman" + "baskerville" + "bookman" + "bodoni" + "computer modern" + "rockwell" + )) + ("sans-serif" . ("lucida" + "helvetica" + "gills-sans" + "avant-garde" + "univers" + "optima")) + ("elfin" . ("tymes")) + ("monospace" . ("courier" + "fixed" + "lucidatypewriter" + "clean" + "terminal")) + ("cursive" . ("sirene" + "zapf chancery")) + ) + "A list of font family mappings on Xft devices.") + +(defun xft-font-create-object (fontname &optional device) + "Return a font descriptor object for FONTNAME, appropriate for Xft." + (let* ((name fontname) + (device (or device (default-x-device))) + (pattern (fc-font-real-pattern name device)) + (font-obj (make-font)) + (family (fc-pattern-get-family pattern 0)) + (size (fc-pattern-get-size pattern 0)) + (weight (fc-pattern-get-weight pattern 0))) + (set-font-family font-obj = + (and (not (equal family 'fc-result-no-match)) = + family)) + (set-font-size font-obj = + (and (not (equal size 'fc-result-no-match)) + size)) + (set-font-weight font-obj = + (and (not (equal weight 'fc-result-no-match)) + (fc-font-weight-translate-from-constant weight))) + font-obj)) + +;; #### FIXME Xft fonts are not defined by the device. +;; ... Does that mean the whole model here is bogus? +(defun xft-font-families-for-device (&optional device no-resetp) + (ignore-errors (require 'x-font-menu)) ; #### FIXME xft-font-menu? + (or device (setq device (selected-device))) + (if (boundp 'device-fonts-cache) ; #### FIXME does this make sense? + (let ((menu (or (cdr-safe (assq device device-fonts-cache))))) + (if (and (not menu) (not no-resetp)) + (progn + (reset-device-font-menus device) + (xft-font-families-for-device device t)) + ;; #### FIXME clearly bogus for Xft + (let ((scaled (mapcar #'(lambda (x) (if x (aref x 0))) + (aref menu 0))) + (normal (mapcar #'(lambda (x) (if x (aref x 0))) + (aref menu 1)))) + (sort (font-unique (nconc scaled normal)) 'string-lessp)))) + ;; #### FIXME clearly bogus for Xft + (cons "monospace" (mapcar 'car font-xft-family-mappings)))) + +(defun xft-font-create-name (fontobj &optional device) + (let* ((pattern (make-fc-pattern))) + (if (font-family fontobj) + (fc-pattern-add-family pattern (font-family fontobj))) + (if (font-size fontobj) + (fc-pattern-add-size pattern (font-size fontobj))) + (fc-name-unparse pattern))) + +=0C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; ;;; The window-system dependent code (NS-style) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; @@ -870,8 +1000,7 @@ for use in the 'weight' field of an mswi (family (or (font-family fontobj) (font-family default))) (weight (or (font-weight fontobj) :regular)) - (size (or (if font-running-xemacs - (font-size fontobj)) + (size (or (font-size fontobj) (font-size default))) (underline-p (font-underline-p fontobj)) (strikeout-p (font-strikethru-p fontobj)) @@ -920,34 +1049,6 @@ for use in the 'weight' field of an mswi (if done font-name))))) = =0C -;;; Cache building code -;;;###autoload -(defun x-font-build-cache (&optional device) - (let ((hash-table (make-hash-table :test 'equal :size 15)) - (fonts (mapcar 'x-font-create-object - (font-list "-*-*-*-*-*-*-*-*-*-*-*-*-*-*"))) - (plist nil) - (cur nil)) - (while fonts - (setq cur (car fonts) - fonts (cdr fonts) - plist (cl-gethash (car (font-family cur)) hash-table)) - (if (not (memq (font-weight cur) (plist-get plist 'weights))) - (setq plist (plist-put plist 'weights (cons (font-weight cur) - (plist-get plist 'weights))))) - (if (not (member (font-size cur) (plist-get plist 'sizes))) - (setq plist (plist-put plist 'sizes (cons (font-size cur) - (plist-get plist 'sizes))))) - (if (and (font-oblique-p cur) - (not (memq 'oblique (plist-get plist 'styles)))) - (setq plist (plist-put plist 'styles (cons 'oblique (plist-get plist 's= tyles))))) - (if (and (font-italic-p cur) - (not (memq 'italic (plist-get plist 'styles)))) - (setq plist (plist-put plist 'styles (cons 'italic (plist-get plist 'st= yles))))) - (cl-puthash (car (font-family cur)) plist hash-table)) - hash-table)) - -=0C ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;;; ;;; Now overwrite the original copy of set-face-font with our own copy that ;;; can deal with either syntax. @@ -967,7 +1068,7 @@ for use in the 'weight' field of an mswi (setq cur (car font-name) font-name (cdr font-name)) (apply 'set-face-property face (car cur) (cdr cur) args)))) - (font-running-xemacs + (t (apply 'set-face-font face font-name args) (apply 'set-face-underline-p face (font-underline-p font) args) (if (and (or (font-smallcaps-p font) (font-bigcaps-p font)) @@ -978,16 +1079,18 @@ for use in the 'weight' field of an mswi (font-linethrough-p font) (font-strikethru-p font)) args)) - (t - (condition-case nil - (apply 'set-face-font face font-name args) - (error - (let ((args (car-safe args))) - (and (or (font-bold-p font) - (memq (font-weight font) '(:bold :demi-bold))) - (make-face-bold face args t)) - (and (font-italic-p font) (make-face-italic face args t))))) - (apply 'set-face-underline-p face (font-underline-p font) args))))) +;;; this used to be default with preceding conditioned on font-running-xem= acs +; (t +; (condition-case nil +; (apply 'set-face-font face font-name args) +; (error +; (let ((args (car-safe args))) +; (and (or (font-bold-p font) +; (memq (font-weight font) '(:bold :demi-bold))) +; (make-face-bold face args t)) +; (and (font-italic-p font) (make-face-italic face args t))))) +; (apply 'set-face-underline-p face (font-underline-p font) args)) + ))) (t ;; Let the original set-face-font signal any errors (set-face-property face 'font-specification nil) @@ -1362,13 +1465,14 @@ is returned." (defun font-blink-callback () ;; Optimized to never invert the face unless one of the visible windows ;; is showing it. - (let ((faces (if font-running-xemacs (face-list t) (face-list))) + (let ((faces (face-list t)) (obj nil)) (while faces (if (and (setq obj (face-property (car faces) 'font-specification)) (font-blink-p obj) (memq t - (font-map-windows 'font-face-visible-in-window-p (car faces)))) + (font-map-windows 'font-face-visible-in-window-p + (car faces)))) (invert-face (car faces))) (pop faces)))) = 1.9 +16 -11 XEmacs/xemacs/lisp/font-menu.el Index: font-menu.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font-menu.el,v retrieving revision 1.8 retrieving revision 1.9 diff -u -p -r1.8 -r1.9 --- font-menu.el 2005/01/28 02:58:39 1.8 +++ font-menu.el 2005/11/26 11:45:54 1.9 @@ -264,7 +264,9 @@ or if you change your font path, you can (member 0 (aref entry 2)))) (enable-menu-item item) (disable-menu-item item)) - (if (eq size s) + ;; #### God save the Queen! + ;; well, if this fails because s or size is non-numeric, fuck 'em + (if (=3D size (if (featurep 'xft-fonts) (float s) s)) (select-toggle-menu-item item) (deselect-toggle-menu-item item)) item) @@ -345,6 +347,7 @@ or if you change your font path, you can (or weight from-weight) (or size from-size)) (error + (message "Error updating font of `%s'" face) (display-error c nil) (sit-for 1))))) ;; Set the default face's font after hacking the other faces, so that @@ -356,16 +359,18 @@ or if you change your font path, you can (set-face-font 'default new-default-face-font (and font-menu-this-frame-only-p (selected-frame))) ;; OK Let Customize do it. - (custom-set-face-update-spec 'default - (list (list 'type (device-type))) - (list :family (or family from-family) - :size (concat - (int-to-string - (/ (or size from-size) - (specifier-instance font-menu-size-scaling - (selected-device)))) - "pt"))) - (message "Font %s" (face-font-name 'default))))) + (let ((fsize (if (featurep 'xft-fonts) + (int-to-string (or size from-size)) + (concat (int-to-string + (/ (or size from-size) + (specifier-instance font-menu-size-scaling + (selected-device)))) + "pt")))) + (custom-set-face-update-spec 'default + (list (list 'type (device-type))) + (list :family (or family from-family) + :size fsize)))) + (message "Font %s" (face-font-name 'default)))) = = ;; #### This should be called `font-menu-maybe-change-face' 1.22 +189 -0 XEmacs/xemacs/lisp/x-faces.el Index: x-faces.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/x-faces.el,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 --- x-faces.el 2005/03/31 11:28:44 1.21 +++ x-faces.el 2005/11/26 11:45:54 1.22 @@ -66,6 +66,8 @@ '(x-get-resource-and-maybe-bogosity-check x-get-resource x-init-pointer-shape)) = +(require 'fontconfig) + (defconst x-font-regexp nil) (defconst x-font-regexp-head nil) (defconst x-font-regexp-head-2 nil) @@ -78,6 +80,7 @@ (defconst x-font-regexp-spacing nil) = ;;; Regexps matching font names in "Host Portable Character Representation= ." +;;; #### But more recently Latin-1 is permitted, and Xft needs it in C (?). ;;; (let ((- "[-?]") (foundry "[^-]*") @@ -134,6 +137,11 @@ - registry - encoding "\\'")) ) = +(defun x-font-xlfd-font-name-p (font) + "Check if FONT is an XLFD font name" + (and (stringp font) + (string-match x-font-regexp font))) + ;; A "loser font" is something like "8x13" -> "8x13bold". ;; These are supported only through extreme generosity. (defconst x-loser-font-regexp "\\`[0-9]+x[0-9]+\\'") @@ -167,6 +175,46 @@ (defun x-make-font-bold (font &optional device) "Given an X font specification, this attempts to make a `bold' font. If it fails, it returns nil." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-make-font-bold-core font device) + (x-make-font-bold-xft font device)) + (x-make-font-bold-core font device))) + +(defun x-make-font-bold-xft (font &optional device) + (let ((pattern (fc-font-real-pattern = + font (or device (default-x-device))))) + (if pattern + (let ((size (fc-pattern-get-size pattern 0)) + (copy (fc-copy-pattern-partial = + pattern (list fc-font-name-property-family)))) + (fc-pattern-del copy fc-font-name-property-weight) + (fc-pattern-del copy fc-font-name-property-style) + (when copy + (or = + ;; try bold font + (let ((copy-2 (fc-pattern-duplicate copy))) + (fc-pattern-add copy-2 fc-font-name-property-weight + fc-font-name-weight-bold) + (when (fc-try-font copy-2 device) + (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-name-unparse copy-2))) + ;; try black font + (let ((copy-2 (fc-pattern-duplicate copy))) + (fc-pattern-add copy-2 fc-font-name-property-weight + fc-font-name-weight-black) + (when (fc-try-font copy-2 device) + (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-name-unparse copy-2))) + ;; try demibold font + (let ((copy-2 (fc-pattern-duplicate copy))) + (fc-pattern-add copy-2 fc-font-name-property-weight + fc-font-name-weight-demibold) + (when (fc-try-font copy-2 device) + (fc-pattern-add copy-2 fc-font-name-property-size size) + (fc-name-unparse copy-2))))))))) + = +(defun x-make-font-bold-core (font &optional device) ;; Certain Type1 fonts know "bold" as "black"... (or (try-font-name (x-frob-font-weight font "bold") device) (try-font-name (x-frob-font-weight font "black") device) @@ -175,6 +223,23 @@ If it fails, it returns nil." (defun x-make-font-unbold (font &optional device) "Given an X font specification, this attempts to make a non-bold font. If it fails, it returns nil." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-make-font-unbold-core font device) + (x-make-font-unbold-xft font device)) + (x-make-font-unbold-core font device))) + = +(defun x-make-font-unbold-xft (font &optional device) + (let ((pattern (fc-font-real-pattern = + font (or device (default-x-device))))) + (when pattern + (fc-pattern-del pattern fc-font-name-property-weight) + (fc-pattern-add pattern fc-font-name-property-weight + fc-font-name-weight-medium) + (if (fc-try-font pattern device) + (fc-name-unparse pattern))))) + +(defun x-make-font-unbold-core (font &optional device) (try-font-name (x-frob-font-weight font "medium") device)) = (defcustom try-oblique-before-italic-fonts nil @@ -189,6 +254,53 @@ applicable to adobe-courier fonts" (defun x-make-font-italic (font &optional device) "Given an X font specification, this attempts to make an `italic' font. If it fails, it returns nil." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-make-font-italic-core font device) + (x-make-font-italic-xft font device)) + (x-make-font-italic-core font device))) + +(defun x-make-font-italic-xft (font &optional device) + (let ((pattern (fc-font-real-pattern = + font (or device (default-x-device))))) + (if pattern + (let ((size (fc-pattern-get-size pattern 0)) + (copy (fc-copy-pattern-partial + pattern (list fc-font-name-property-family)))) + (when copy + (fc-pattern-del copy fc-font-name-property-slant) + (fc-pattern-del copy fc-font-name-property-style) + (let ((pattern-oblique (fc-pattern-duplicate copy)) + (pattern-italic (fc-pattern-duplicate copy))) + (fc-pattern-add pattern-oblique fc-font-name-property-slant + fc-font-name-slant-oblique) + (fc-pattern-add pattern-italic fc-font-name-property-slant + fc-font-name-slant-italic) + (let ((have-oblique (fc-try-font pattern-oblique device)) + (have-italic (fc-try-font pattern-italic device))) + (if try-oblique-before-italic-fonts + (if have-oblique + (progn = + (if size + (fc-pattern-add pattern-oblique fc-font-name-property-size size)) + (fc-name-unparse pattern-oblique)) + (if have-italic + (progn + (if size + (fc-pattern-add pattern-italic fc-font-name-property-size size)) + (fc-name-unparse pattern-italic)))) + (if have-italic + (progn + (if size + (fc-pattern-add pattern-italic fc-font-name-property-size size)) + (fc-name-unparse pattern-italic)) + (if have-oblique + (progn + (if size + (fc-pattern-add pattern-oblique fc-font-name-property-size size)) + (fc-name-unparse pattern-oblique)))))))))))) + = +(defun x-make-font-italic-core (font &optional device) (if try-oblique-before-italic-fonts (or (try-font-name (x-frob-font-slant font "o") device) (try-font-name (x-frob-font-slant font "i") device)) @@ -198,11 +310,40 @@ If it fails, it returns nil." (defun x-make-font-unitalic (font &optional device) "Given an X font specification, this attempts to make a non-italic font. If it fails, it returns nil." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-make-font-unitalic-core font device) + (x-make-font-unitalic-xft font device)) + (x-make-font-unitalic-core font device))) + = +(defun x-make-font-unitalic-xft (font &optional device) + (let ((pattern (fc-font-real-pattern = + font (or device (default-x-device))))) + (when pattern + (fc-pattern-del pattern fc-font-name-property-slant) + (fc-pattern-add pattern fc-font-name-property-slant + fc-font-name-slant-roman) + (if (fc-try-font pattern device) + (fc-name-unparse pattern))))) + +(defun x-make-font-unitalic-core (font &optional device) (try-font-name (x-frob-font-slant font "r") device)) = (defun x-make-font-bold-italic (font &optional device) "Given an X font specification, this attempts to make a `bold-italic' fo= nt. If it fails, it returns nil." + (if (featurep 'xft-fonts) = + (if (x-font-xlfd-font-name-p font) + (x-make-font-bold-italic-core font device) + (x-make-font-bold-italic-xft font device)) + (x-make-font-bold-italic-core font device))) + +(defun x-make-font-bold-italic-xft (font &optional device) + (let ((italic (x-make-font-italic-xft font device))) + (if italic + (x-make-font-bold-xft italic device)))) + +(defun x-make-font-bold-italic-core (font &optional device) ;; This is haired up to avoid loading the "intermediate" fonts. (if try-oblique-before-italic-fonts (or (try-font-name @@ -236,6 +377,21 @@ This is done by parsing its name, so it' X fonts can be specified (by the user) in either pixels or 10ths of points, and this returns the first one it finds, so you have to decide which units the returned value is measured in yourself..." + (if (featurep 'xft-fonts) = + (if (x-font-xlfd-font-name-p font) + (x-font-size-core font) + (x-font-size-xft font)) + (x-font-size-core font))) + +;; this is unbelievable &*@# +(defun x-font-size-xft (font) + (let ((pattern (fc-font-real-pattern = + font (default-x-device)))) + (when pattern + (let ((pixelsize (fc-pattern-get-pixelsize pattern 0))) + (if (floatp pixelsize) (round pixelsize)))))) + +(defun x-font-size-core (font) (if (font-instance-p font) (setq font (font-instance-name font))) (cond ((or (string-match x-font-regexp font) (string-match x-font-regexp-head-2 font)) @@ -354,6 +510,29 @@ X fonts can be specified (by the user) i Returns the font if it succeeds, nil otherwise. If scalable fonts are available, this returns a font which is 1 point smal= ler. Otherwise, it returns the next smaller version of this font that is define= d." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-find-smaller-font-core font device) + (x-find-smaller-font-xft font device)) + (x-find-smaller-font-core font device))) + +(defun x-find-xft-font-of-size (font new-size-proc &optional device) + (let* ((pattern (fc-font-real-pattern = + font (or device (default-x-device))))) + (when pattern + (let ((size (fc-pattern-get-size pattern 0))) + (if (floatp size) + (let ((copy (fc-pattern-duplicate pattern))) + (fc-pattern-del copy fc-font-name-property-size) + (fc-pattern-add copy fc-font-name-property-size = + (funcall new-size-proc size)) + (if (fc-try-font font device) + (fc-name-unparse copy)))))))) + +(defun x-find-smaller-font-xft (font &optional device) + (x-find-xft-font-of-size font '(lambda (old-size) (- old-size 1.0)) devi= ce)) + +(defun x-find-smaller-font-core (font &optional device) (x-frob-font-size font nil device)) = (defun x-find-larger-font (font &optional device) @@ -361,6 +540,16 @@ Otherwise, it returns the next smaller v Returns the font if it succeeds, nil otherwise. If scalable fonts are available, this returns a font which is 1 point larg= er. Otherwise, it returns the next larger version of this font that is defined= ." + (if (featurep 'xft-fonts) + (if (x-font-xlfd-font-name-p font) + (x-find-larger-font-core font device) + (x-find-larger-font-xft font device)) + (x-find-larger-font-core font device))) + +(defun x-find-larger-font-xft (font &optional device) + (x-find-xft-font-of-size font '(lambda (old-size) (+ old-size 1.0)) devi= ce)) + +(defun x-find-larger-font-core (font &optional device) (x-frob-font-size font t device)) = (defalias 'x-make-face-bold 'make-face-bold) 1.14 +130 -1 XEmacs/xemacs/lisp/x-font-menu.el Index: x-font-menu.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/x-font-menu.el,v retrieving revision 1.13 retrieving revision 1.14 diff -u -p -r1.13 -r1.14 --- x-font-menu.el 2005/01/28 02:58:41 1.13 +++ x-font-menu.el 2005/11/26 11:45:55 1.14 @@ -34,6 +34,10 @@ = (require 'font-menu) = +(when (featurep 'xft-fonts) + (require 'xft) + (require 'fontconfig)) + (globally-declare-boundp '(x-font-regexp x-font-regexp-foundry-and-family @@ -80,8 +84,70 @@ E.g. cursor fonts.") "This is used to filter out font families that can't display ASCII text. It must be set at run-time.") = +;; #### move these to font-menu.el, and maybe make them defcustoms +(defvar font-menu-common-sizes + '(60 80 100 110 120 130 140 150 160 170 180 200 220 240 300 360) + "List of commonly desired font sizes in decipoints.") + ;;;###autoload (defun x-reset-device-font-menus (device &optional debug) + (if (featurep 'xft-fonts) + (x-reset-device-font-menus-xft device debug) + (x-reset-device-font-menus-core device debug))) + +(defun fc-make-font-menu-entry (family) + (let ((weights (fc-find-available-weights-for-family family))) + (vector + family + (mapcar = + '(lambda (weight-symbol) = + (let ((pair (assoc weight-symbol + '((:light "Light") + (:medium "Medium") + (:demibold "Demibold") + (:bold "Bold") + (:black "Black"))))) + (if pair (cadr pair)))) + weights) + '(0) + nil))) + +(defun x-reset-device-font-menus-xft (device &optional debug) + (let* ((families-1 (fc-find-available-font-families device)) + (families (delete-if (lambda (x) + (string-match x-fonts-menu-junk-families x)) + (sort families-1 'string-lessp))) + (data + (vector + (mapcar 'fc-make-font-menu-entry families) + (mapcar = + '(lambda (family) + (vector family `(font-menu-set-font ,family nil nil) + :style 'radio :active nil :selected nil)) + families) + (mapcar + '(lambda (size) + (vector + (number-to-string size) + `(font-menu-set-font nil nil ,size) + :style 'radio :active nil :selected nil)) + ;; common size list in decipoints, fontconfig wants points + (mapcar (lambda (x) (/ x 10)) font-menu-common-sizes)) + (mapcar + '(lambda (weight) + (vector + weight + `(font-menu-set-font nil ,weight nil) + :style 'radio :active nil :selected nil)) + '("Light" "Medium" "Demibold" "Bold" "Black")))) + ;; get or initialize the entry for device + (dev-cache (or (assq device device-fonts-cache) + (car (push (list device) device-fonts-cache))))) + ;; update the device-fonts-cache entry for device in place + (setcdr dev-cache data) + data)) + +(defun x-reset-device-font-menus-core (device &optional debug) "Generates the `Font', `Size', and `Weight' submenus for the Options men= u. This is run the first time that a font-menu is needed for each device. If you don't like the lazy invocation of this function, you can add it to @@ -136,7 +202,7 @@ or if you change your font path, you can ;; up not getting mentioned explicitly. ;; (if (member 0 sizes) - (let ((common '(60 80 100 120 140 160 180 240))) + (let ((common font-menu-common-sizes)) (while common (or;;(member (car common) sizes) ; not enough slack (let ((rest sizes) @@ -195,6 +261,51 @@ or if you change your font path, you can ;; get the truename and use the possibly suboptimal data from that. ;;;###autoload (defun x-font-menu-font-data (face dcache) + (let* ((case-fold-search t) + (domain (if font-menu-this-frame-only-p + (selected-frame) + (selected-device))) + (name (font-instance-name (face-font-instance face domain)))) + (if (featurep 'xft-fonts) + (if (xlfd-font-name-p name) + ;; #### this call to x-font-menu-font-data-core originally + ;; had 4 args, and that's probably the right way to go + (x-font-menu-font-data-core face dcache) + (x-font-menu-font-data-xft face dcache name domain)) + ;; #### this one, too + (x-font-menu-font-data-core face dcache)))) + +(defun x-font-menu-font-data-xft (face dcache name domain) + (let* ((truename (font-instance-truename + (face-font-instance face domain + (if (featurep 'mule) 'ascii)))) + entry) + (if (xlfd-font-name-p truename) + (progn + nil) + (progn + (let* ((pattern (fc-font-real-pattern name domain)) + (family (and pattern + (fc-pattern-get-family pattern 0)))) + (if (fc-pattern-get-successp family) + (setq entry (vassoc family (aref dcache 0)))) + (if (null entry) + (make-vector 5 nil) + (let ((weight (fc-pattern-get-weight pattern 0)) + (size (fc-pattern-get-size pattern 0)) + (slant (fc-pattern-get-slant pattern 0))) + (vector + entry + (if (fc-pattern-get-successp family) = + family) + (if (fc-pattern-get-successp size) + size) + (if (fc-pattern-get-successp weight) + (fc-font-weight-translate-to-string weight)) + (if (fc-pattern-get-successp slant) + (fc-font-slant-translate-to-string slant)))))))))) + +(defun x-font-menu-font-data-core (face dcache) (let* ((case-fold-search t) (domain (if font-menu-this-frame-only-p (selected-frame) @@ -229,6 +340,24 @@ or if you change your font path, you can (vector entry family size weight slant)))) = (defun x-font-menu-load-font (family weight size slant resolution) + (if (featurep 'xft-fonts) + (x-font-menu-load-font-xft family weight size slant resolution) + (x-font-menu-load-font-core family weight size slant resolution))) + +(defun x-font-menu-load-font-xft (family weight size slant resolution) + (let ((pattern (make-fc-pattern))) + (fc-pattern-add pattern fc-font-name-property-family family) + (if weight = + (fc-pattern-add pattern fc-font-name-property-weight + (fc-font-weight-translate-from-string weight))) + (if size + (fc-pattern-add pattern fc-font-name-property-size size)) + (if slant + (fc-pattern-add pattern fc-font-name-property-slant + (fc-font-slant-translate-from-string slant))) + (make-font-instance (fc-name-unparse pattern)))) + +(defun x-font-menu-load-font-core (family weight size slant resolution) "Try to load a font with the requested properties. The weight, slant and resolution are only hints." (when (integerp size) (setq size (int-to-string size))) 1.2 +534 -0 XEmacs/xemacs/lisp/fontconfig.el Index: fontconfig.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: fontconfig.el diff -N fontconfig.el --- /dev/null Sat Nov 26 12:45:38 2005 +++ /tmp/cvsAAAG2ayKX Sat Nov 26 12:45:57 2005 @@ -0,0 +1,534 @@ +;;; fontconfig.el --- New font model, NG + +;; Copyright (c) 2003 Eric Knauel and Matthias Neubauer +;; Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +;; Authors: Eric Knauel +;; Matthias Neubauer +;; Stephen J. Turnbull +;; Created: 27 Oct 2003 +;; Updated: 05 Mar 2005 by Stephen J. Turnbull +;; Keywords: faces + +;; XEmacs is free software; you can redistribute it and/or modify it +;; under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 2, or (at your option) +;; any later version. + +;; XEmacs is distributed in the hope that it will be useful, but +;; WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +;; General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with XEmacs; see the file COPYING. If not, write to the Free +;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA +;; 02111-1307, USA. + +;;; Synched up with: Not in GNU + +;;; Commentary: + +;; This file is one of the pillars of the face refactoring effort +;; (another will be colorconfig.el, and there may be others). + +;; The overall plan is to have a sensible modern model for values of +;; each of the components of a face (starting with fonts and colors), +;; implemented in a single module. Of course we must be able to +;; convert such values to appropriate descriptors for any device type +;; on the one hand, but on the other it seems unreasonable to force +;; users to deal with a large number of different (and arcane, in the +;; case of XLFD) naming formats. + +;; This file implements font specification. We call a specification a +;; *pattern* to conform to fontconfig usage. The internal +;; representation of a pattern will have Keith Packard's fontconfig +;; API. For one, there is a robust and free C implementation, which +;; is available as a package for all platforms supported by X.org or +;; XFree86. For another, it seems to be capable of representing any +;; specification of any of the font models I know. Third, on X +;; platforms that internal representation can be passed verbatim to +;; libXft to get high quality TrueType fonts rendered with +;; anti-aliasing and hinting. + +;; We will support the following user interfaces: + +;; 1. fontconfig font names +;; 2. X Logical Font Descriptions (XLFD) +;; 3. MS Windows font names +;; 4. Mac OS X font names + +;; and possibly others (such as ad hoc abbreviations used in older X11 +;; implementations). This is called the *fontname UI* (for the +;; platform) to distinguish it from XEmacs's internal model +;; (fontconfig patterns) and the API for rendering engines (called the +;; *font API* for the engine). + +;; We will support the following rendering engine APIs: + +;; 1. fontconfig patterns (the native language of Xft); to emphasize +;; the engine-specific nature, we will call these *Xft fonts* +;; 2. XLFD strings +;; 3. MS Windows font names + +;; and possibly others (such as Mac OS X font names). This is called +;; the *font API* (for the platform) to distinguish it from XEmacs's +;; internal model (fontconfig *patterns*) and the names used by users +;; (called the *fontname UI* for the platform). + + +;; TODO (possible enhancements) +;; 1. add a more complete docstring for properties as such (would be a +;; hash table?) to describe things like special symbolic values, and +;; Emacs-relevant semantics +;; 2. add a special value defining macro for constants + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; +;; +;; The fontconfig pattern API +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-pattern-". These are +;; +;; fc-pattern-p +;; fc-pattern-create +;; fc-pattern-duplicate +;; fc-pattern-add +;; fc-pattern-del +;; fc-pattern-get +;; fc-pattern-destroy + +;; We provide a LISP-y alias, `make-fc-pattern' for the pattern +;; constructor function `fc-pattern-create'. #### It might make sense +;; to generalize `make-fc-pattern' by allowing a plist of properties +;; as an optional argument. We also provide accessors +;; `fc-pattern-get-PROPERTY' and mutators `fc-pattern-add-PROPERTY' +;; for each of the standard properties used by Xft, which overlap +;; substantially with the properties defined by X11. #### We probably +;; should provide `fc-pattern-delete-PROPERTY', too. + +(defalias 'make-fc-pattern 'fc-pattern-create) + +(defmacro fc-define-property (property type docfrag &optional obsolete-p) + "Define PROPERTY as a fontconfig font property of type TYPE using DOCFRA= G. + +A font property is a key in a fontconfig pattern and is associated with +one or more values of a given type. This macro creates wrappers around +`fc-pattern-get' and `fc-pattern-add' for PROPERTY. Wrappers are +preferred to use of primitives with a string as the OBJECT argument because +typos in wrappers result in \"not fboundp\" errors, while a typo in a stri= ng +produces a silent null return. + +PROPERTY is a string. +TYPE is a symbol indicating the type of the property value. It is used on= ly +to modify formatting of the wrapper function docstrings. +DOCFRAG is a string which briefly describes the use of the property, and is +interpolated into a format to create the doctstrings. +OBSOLETE-P if non-nil marks the property as pertaining only to older versi= ons +of fontconfig or Xft. This merely adds a deprecation to the docstrings. + +This macro defines an accessor named `fc-pattern-get-PROPERTY' which takes +a fontconfig pattern object and an integer as arguments, and returns the +value associated with PROPERTY and ID in the pattern object. Since it is +not possible to associate a value to PROPERTY for a particular ID, it is +not very useful to interpret the values associated with a given id for +different properties as being linked to each other in some way. + +A mutator `fc-pattern-add-PROPERTY' which takes a fontconfig pattern object +and a value as arguments, and adds the value to the property with the next +id. The type of the value is recognized by `fc-pattern-add', and the id +is chosen by the fontconfig implementation." + + `(progn + (defsubst ,(intern (concat "fc-pattern-get-" property)) + (pattern id) + ,(format "\ +Return %s %s fc pattern PATTERN %s.%s + +This function is a convenience wrapper for `fc-pattern-get'. +See `fc-pattern-get' for documentation of patterns, ids, and error returns= ." + (if (eq type 'boolean) + "t" + docfrag) + (if (eq type 'boolean) + "if" + "associated with id ID in") + (if (eq type 'boolean) + docfrag + (format "as a%s %s" (if (eq type 'integer) "n" "") type)) + (if obsolete-p " +\(Obsolete, only available on systems using Xft version 1.)" + "")) + (fc-pattern-get pattern ,property id)) + + (defsubst ,(intern (concat "fc-pattern-add-" property)) + (pattern value) + ,(format "\ +Add VALUE to the %s property of fontconfig pattern PATTERN.%s + +The type of VALUE should be %s. + +This function is a convenience wrapper for `fc-pattern-add'. +See `fc-pattern-add' for documentation of patterns, values, and error retu= rns." + property + (if obsolete-p " +\(Obsolete, only available on systems using Xft version 1.)" + "") + type) + (fc-pattern-add pattern ,property value)) + ,property)) + +;; define the standard properties for Xft v.2 here +(fc-define-property "antialias" boolean "the font supports antialiasing") +(fc-define-property "dpi" float "the design resolution") +(fc-define-property "family" string "the font family") +(fc-define-property "file" string "the file containing glyph data") +(fc-define-property "foundry" string "the vendor") +(fc-define-property "index" integer "the index of the glyph set") +(fc-define-property "minspace" boolean "has a minimum spacing") +(fc-define-property "outline" boolean "is an outline font") +(fc-define-property "pixelsize" float "the size in pixels") +(fc-define-property "rasterizer" string "the name of the rasterizing engin= e") +(fc-define-property "rgba" integer "the subpixel rendering capabilities") +(fc-define-property "scalable" boolean "is scalable") +(fc-define-property "scale" float "the scale factor") +(fc-define-property "size" float "the size in points") +(fc-define-property "slant" integer "the slant") +(fc-define-property "spacing" integer "the spacing model") +(fc-define-property "style" string "the typographic face or style") +(fc-define-property "weight" integer "the weight") +(fc-define-property "xlfd" string "the XLFD (full name in X11)") + +;; Xft v.1 properties (marked as obsolete) +(fc-define-property "encoding" string "the encoding" t) +(fc-define-property "charwidth" integer "the average character width" t) +(fc-define-property "charheight" integer "the average character height" t) +(fc-define-property "core" boolean "represents a core font" t) +(fc-define-property "render" boolean "represents a render (Xft) font" t) + + +(defconst fc-font-name-property-family "family") +(defconst fc-font-name-property-style "style") +(defconst fc-font-name-property-slant "slant") +(defconst fc-font-name-property-weight "weight") +(defconst fc-font-name-property-size "size") +(defconst fc-font-name-property-pixelsize "pixelsize") +(defconst fc-font-name-property-spacing "spacing") +(defconst fc-font-name-property-foundry "foundry") +(defconst fc-font-name-property-antialias "antialias") +(defconst fc-font-name-property-xlfd "xlfd") +(defconst fc-font-name-property-file "file") +(defconst fc-font-name-property-index "index") +(defconst fc-font-name-property-rasterizer "rasterizer") +(defconst fc-font-name-property-outline "outline") +(defconst fc-font-name-property-scalable "scalable") +(defconst fc-font-name-property-rgba "rgba") +(defconst fc-font-name-property-minspace "minspace") +(defconst fc-font-name-property-dpi "dpi") + +;; Xft version 1 only +;;(defconst fc-font-name-property-encoding "encoding") +;;(defconst fc-font-name-property-charwidth "charwidth") +;;(defconst fc-font-name-property-charheight "charheight") +;;(defconst fc-font-name-property-core "core") +;;(defconst fc-font-name-property-render "render") + + +(defconst fc-pattern-selector-mapping + `((,fc-font-name-property-family . fc-pattern-get-family) + (,fc-font-name-property-style . fc-pattern-get-style) + (,fc-font-name-property-slant . fc-pattern-get-slant) + (,fc-font-name-property-weight . fc-pattern-get-weight) + (,fc-font-name-property-size . fc-pattern-get-size) + (,fc-font-name-property-pixelsize . fc-pattern-get-pixelsize) + (,fc-font-name-property-spacing . fc-pattern-get-spacing) + (,fc-font-name-property-foundry . fc-pattern-get-foundry) + (,fc-font-name-property-antialias . fc-pattern-get-antialias) + (,fc-font-name-property-xlfd . fc-pattern-get-xlfd) + (,fc-font-name-property-file . fc-pattern-get-file) + (,fc-font-name-property-index . fc-pattern-get-index) + (,fc-font-name-property-rasterizer . fc-pattern-get-rasterizer) + (,fc-font-name-property-outline . fc-pattern-get-outline) + (,fc-font-name-property-scalable . fc-pattern-get-scalable) + (,fc-font-name-property-rgba . fc-pattern-get-rgba) + (,fc-font-name-property-minspace . fc-pattern-get-minspace) + (,fc-font-name-property-dpi . fc-pattern-get-dpi) + ;; Xft version 1 only + ;; (,fc-font-name-property-encoding . fc-pattern-get-encoding) + ;; (,fc-font-name-property-charwidth . fc-pattern-get-char-width) + ;; (,fc-font-name-property-charheight . fc-pattern-get-char-height) + ;; (,fc-font-name-property-core . fc-pattern-get-core) + ;; (,fc-font-name-property-render . fc-pattern-get-render) + )) + +(defvar fc-find-available-font-families-fc-fonts-only t + "If `fc-find-available-font-families-fc-fonts-only' is set to `t', +`fc-find-available-font-families' will ignore core fonts.") + +(defconst fc-font-name-slant-roman 0) +(defconst fc-font-name-slant-italic 100) +(defconst fc-font-name-slant-oblique 110) + +(defconst fc-font-name-slant-mapping + `((,fc-font-name-slant-roman . :roman) + (,fc-font-name-slant-italic . :italic) + (,fc-font-name-slant-oblique . :oblique))) + +(defconst fc-font-name-slant-mapping-string + `((,fc-font-name-slant-roman . "R") + (,fc-font-name-slant-roman . "I") + (,fc-font-name-slant-roman . "O"))) + +(defconst fc-font-name-slant-mapping-string-reverse + `(("R" . ,fc-font-name-slant-roman) + ("I" . ,fc-font-name-slant-italic) + ("O" . ,fc-font-name-slant-oblique))) + +(defconst fc-font-name-slant-mapping-reverse + `((:roman . ,fc-font-name-slant-roman) + (:italic . ,fc-font-name-slant-italic) + (:oblique . ,fc-font-name-slant-oblique))) + +(defun fc-font-slant-translate-from-constant (number) + "Translate the Xft font slant constant NUMBER to symbol." + (let ((pair (assoc number fc-font-name-slant-mapping))) + (if pair (cdr pair)))) + +(defun fc-font-slant-translate-from-symbol (symbol) + "Translate SYMBOL (`:roman', `:italic' or `:oblique') to the +corresponding Xft font slant constant." + (let ((pair (assoc symbol fc-font-name-slant-mapping-reverse))) + (if pair (cdr pair)))) + +(defun fc-font-slant-translate-to-string (num-or-sym) + (let* ((constant (if (symbolp num-or-sym) + (cdr (assoc num-or-sym fc-font-name-slant-mapping-reverse)) + num-or-sym)) + (pair (assoc constant fc-font-name-slant-mapping-string))) + (if pair (cdr pair)))) + +(defun fc-font-slant-translate-from-string (str) + (let ((pair (assoc str fc-font-name-slant-mapping-string-reverse))) + (if pair (cdr pair)))) + +(defconst fc-font-name-weight-light 0) +(defconst fc-font-name-weight-regular 80) +(defconst fc-font-name-weight-medium 100) +(defconst fc-font-name-weight-demibold 180) +(defconst fc-font-name-weight-bold 200) +(defconst fc-font-name-weight-black 210) + +(defconst fc-font-name-weight-mapping + `((,fc-font-name-weight-light . :light) + (,fc-font-name-weight-regular . :regular) + (,fc-font-name-weight-medium . :medium) + (,fc-font-name-weight-demibold . :demibold) + (,fc-font-name-weight-bold . :bold) + (,fc-font-name-weight-black . :black))) + +(defconst fc-font-name-weight-mapping-string + `((,fc-font-name-weight-light . "Light") + (,fc-font-name-weight-regular . "Regular") + (,fc-font-name-weight-medium . "Medium") + (,fc-font-name-weight-demibold . "Demibold") + (,fc-font-name-weight-bold . "Bold") + (,fc-font-name-weight-black . "Black"))) + +(defconst fc-font-name-weight-mapping-string-reverse + `(("Light" . ,fc-font-name-weight-light) + ("Regular" . ,fc-font-name-weight-regular) + ("Medium" . ,fc-font-name-weight-medium) + ("Demibold" . ,fc-font-name-weight-demibold) + ("Bold" . ,fc-font-name-weight-bold) + ("Black" . ,fc-font-name-weight-black))) + +(defconst fc-font-name-weight-mapping-reverse + `((:light . ,fc-font-name-weight-light) + (:regular . ,fc-font-name-weight-regular) + (:medium . ,fc-font-name-weight-medium) + (:demibold . ,fc-font-name-weight-demibold) + (:bold . ,fc-font-name-weight-bold) + (:black . ,fc-font-name-weight-black))) + +(defun fc-font-weight-translate-from-constant (number) + "Translate a Xft font weight constant NUMBER to symbol." + (let ((pair (assoc number fc-font-name-weight-mapping))) + (if pair (cdr pair)))) + +(defun fc-font-weight-translate-from-symbol (symbol) = + "Translate SYMBOL (`:light', `:regular', `:medium', `:demibold', +`:bold' or `:black') to the corresponding Xft font weight constant." + (let ((pair (assoc symbol fc-font-name-weight-mapping-reverse))) + (if pair (cdr pair)))) + +(defun fc-font-weight-translate-to-string (num-or-sym) + (let* ((constant (if (symbolp num-or-sym) + (cdr (assoc num-or-sym fc-font-name-weight-mapping-reverse)) + num-or-sym)) + (pair (assoc constant fc-font-name-weight-mapping-string))) + (if pair (cdr pair)))) + +(defun fc-font-weight-translate-from-string (str) + (let ((pair (assoc str fc-font-name-weight-mapping-string-reverse))) + (if pair (cdr pair)))) + +(defun fc-copy-pattern-partial (pattern attribute-list) + "Return a copy of PATTERN restricted to ATTRIBUTE-LIST. + +PATTERN is a fontconfig pattern object. +ATTRIBUTE-LIST is a list of strings denoting font properties. +A new object is allocated and returned." + (let ((new (make-fc-pattern)) + (attrs attribute-list)) + ;;; We demand proper tail recursion! + (while (not (null attrs)) + (let ((get (intern (concat "fc-pattern-get-" (car attrs)))) + (set (intern (concat "fc-pattern-add-" (car attrs))))) + (if (and (fboundp get) (fboundp set)) + (funcall set new (funcall get pattern 0)) + (warn "property '%s' not defined, ignoring" (car attrs)))) + (setq attrs (cdr attrs))) + new)) + +(defun fc-pattern-get-all-attributes (fc-pattern fc-pattern-get-function) + (let ((count 0) + res end val) + (while (not end) + (setq val (funcall fc-pattern-get-function fc-pattern count)) + (if (or (equal val 'fc-result-no-id) + (equal val 'fc-result-no-match)) + (setq end t) + (setq res (append res (list val)) + count (+ count 1)))) + res)) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; +;; +;; The fontconfig fontname UI +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-name-". These are +;; +;; fc-name-parse +;; fc-name-unparse +;; xft-name-unparse + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; +;; +;; The fontconfig font API +;; +;; The basic interfaces are defined as API wrappers in C in xft-font.c +;; #### which should be renamed to fontconfig.c. These are prefixed +;; with "fc-font-". These are +;; +;; fc-font-match +;; fc-list-fonts-pattern-objects +;; fc-font-sort +;; fc-font-real-pattern + +;; #### it might make sense to generalize `fc-try-font' by having a +;; global variable that contains a list of font name parsers. They are +;; tried in order, and the first one to return an fc-pattern is matched. + +(defun fc-try-font (font &optional device) + "Return list of pattern objects matching FONT on DEVICE. + +FONT may be a fontconfig pattern object or a fontconfig font name (a strin= g). +Optional DEVICE is the device object to query, defaulting to the currently +selected device." + (fc-list-fonts-pattern-objects (or device (default-x-device)) + (if (fc-pattern-p font) = + font + (fc-name-parse font)) + nil)) + +(defun fc-find-available-font-families (&optional device filter-fun) + "Find all available font families." + (let ((device (or device (default-x-device))) + (pattern (make-fc-pattern)) + (objectset '("family" "style"))) +; Xft2: does not work anymore +; (if (not fc-find-available-font-families-fc-fonts-only) +; (fc-pattern-add pattern fc-font-name-property-core t)) +; (fc-objectset-add objectset fc-font-name-property-encoding) + (let* ((all-fonts + (fc-list-fonts-pattern-objects device pattern objectset))) + (fc-delete-duplicates + (mapcar + '(lambda (pattern) + (fc-pattern-get-family pattern 0)) + (if filter-fun + (fc-filter all-fonts filter-fun) + all-fonts)))))) + +; Xft2: does not work anymore +; (defun fc-find-available-font-families-non-mule (&optional device) +; (fc-find-available-font-families +; device +; '(lambda (pattern) +; (let ((encodings (fc-pattern-get-all-attributes = +; pattern 'fc-pattern-get-encoding))) +; ;; Be sure that the font support ISO-8859-1 +; (member "iso8859-1" encodings))))) + +(defun fc-find-available-weights-for-family (family &optional style device) + "Find available weights for font FAMILY." + (let* ((device (or device (default-x-device))) + (pattern (make-fc-pattern)) + (objectset '("weight"))) + (fc-pattern-add pattern fc-font-name-property-family family) + (if style + (fc-pattern-add pattern fc-font-name-property-style style)) + (mapcar + '(lambda (pattern) + (let ((fc-weight-constant (fc-pattern-get-weight pattern 0))) + (if fc-weight-constant + (fc-font-weight-translate-from-constant fc-weight-constant)))) + (fc-list-fonts-pattern-objects device pattern objectset)))) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; +;; +;; The XLFD fontname UI +;; + +;; xlfd-font-name-p + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;= ;;;; +;; +;; Utility functions +;; + +(defun fc-pattern-get-successp (result) + (and (not (equal result 'fc-result-no-match)) + (not (equal result 'fc-result-no-id)) + (not (equal result 'fc-internal-error)))) + +;;; DELETE-DUPLICATES and REMOVE-DUPLICATES from cl-seq.el do not +;;; seem to work on list of strings... +;;; #### Presumably just use :test 'equal! +(defun fc-delete-duplicates (l) + (let ((res nil) + (in l)) + (while (not (null in)) + (if (not (member (car in) res)) + (setq res (append res (list (car in))))) + (setq in (cdr in))) + res)) + +;; #### Use delete-if with :test 'equal. +(defun fc-filter (l fun) + (let ((res nil) + (in l)) + (while (not (null in)) + (if (funcall fun (car in)) + (setq res (append res (list (car in))))) + (setq in (cdr in))) + res)) + +(provide 'fontconfig) + +;;; fontconfig.el ends here 1.76 +113 -0 XEmacs/xemacs/lwlib/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.75 retrieving revision 1.76 diff -u -p -r1.75 -r1.76 --- ChangeLog 2005/11/22 07:14:40 1.75 +++ ChangeLog 2005/11/26 11:45:58 1.76 @@ -1,3 +1,116 @@ +2005-11-26 Stephen J. Turnbull + + Merge Xft. + + 2005-11-25 Stephen J. Turnbull + + * lwlib-colors: Improve comments. + = + 2005-11-25 Stephen J. Turnbull + + * lwlib-colors: Remove or comment out dead code. + = + 2005-09-26 Olivier Galibert + + * xlwmenu.c: + * xlwmenuP.h: + Give USE_XFT_MENUBARS priority over USE_MOTIF. + + 2005-09-06 Stephen J. Turnbull + + * lwlib-fonts.c (xft_open_font_by_name): Fix heuristic for XLFDs. + + * xlwmenu.c (string_draw_range): Recommend persistent xftDraw. + + 2005-09-02 Daniel Pittman + + * lwlib-fonts.c (xft_open_font_by_name): Eliminate code to avoid + use of scaled fonts (probably bogus, anyway). Add error message + in case of fatal failure to find any fonts at all. + <87ll2fucw1.fsf(a)rimspace.net> + + * xlwmenu.c (string_draw_range): Plug leak of XftDraw. + + 2005-03-09 Stephen J. Turnbull + + * xlwtabs.c (TabsGeometryManager): Fix "fat fingers" mistake. + + 2005-03-07 Stephen J. Turnbull + + * lwlib-Xaw.c (debug_gauge): Fix and suppress gauge debug message. + + * xlwtabs.c (TabsGeometryManager): Suppress "kludging" message, too. + (TabsGeometryManager): Make straight the paths of the layout, or + at least improve the approximation to Xt conventions by 50%. + + 2005-02-22 Stephen J. Turnbull + + * xlwtabs.c(debug_tabs): Suppress debug output for now. + + 2005-02-18 Stephen J. Turnbull + + * xlwtabs.c (TabsGeometryManager,TabsQueryGeometry): Improve comments. + (debug_tabs): New variable, substitute for debug_xft globally. + (TabsGeometryManager): Substitute "request" for "req". + + 2005-02-11 Stephen J. Turnbull + + * xlwtabs.c (PreferredSize3): Let TabLayout choose constraints. + (TabLayout): Default size to current size. Fix header comment. + (TabsGeometryManager): Comment on redesigning internal API. + (TabsGeometryManager): Fix typo in format string. + + 2005-01-27 Stephen J. Turnbull + + * xlwtabs.c (DrawTab): + Correct geometry when clearing rectangle. + Remove some "check me" comments. + Deemphasize a lot of debugging output. + (TabLayout): Add debugging fprintf. + (TabWidth): Deemphasize some debugging output. + + 2004-12-10 Stephen J. Turnbull + + * lwlib-Xaw.c (xaw_create_button): + (xaw_create_progress): + (xaw_create_text_field): + Changed XtCreateManagedWidget to XtCreateWidget when child is + managed later in the same function. + + (debug_gauge): New variable. + (lw_debug_print_xt_arglist): + (lw_debug_print_class_resources): + New debug functions. + + 2004-12-09 Stephen J. Turnbull + + * xlwmenu.c (xlwMenuResources): Use "redundant" XftFont resource. + + * xlwtabs.c: + * xlwtabsP.h: + Use USE_XFT_TABS consistently. + + 2004-12-01 Stephen J. Turnbull + + * xlwtabs.c: Move debug_xft to ../src/xft-fonts.c. + + 2004-11-20 Stephen J. Turnbull + + Xft branch based on "Xft reloaded #3" patch by Eric Knauel and + Mathias Neuebaur, and other contributors. + + * lwlib-fonts.h: + * lwlib-colors.h: + Declare common facilities use by Xft. + * lwlib-fonts.c: + * lwlib-colors.c: + Implement them. + * xlwtabs.c: + * xlwtabsP.h: + * xlwmenu.c: + * xlwmenuP.h: + Implement Xft text drawing. + 2005-11-22 Ben Wing = * Makefile.in.in: 1.21 +3 -1 XEmacs/xemacs/lwlib/Makefile.in.in Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/Makefile.in.in,v retrieving revision 1.20 retrieving revision 1.21 diff -u -p -r1.20 -r1.21 --- Makefile.in.in 2005/11/22 07:14:40 1.20 +++ Makefile.in.in 2005/11/26 11:45:58 1.21 @@ -49,7 +49,7 @@ vpath %.h @srcdir@ VPATH=3D@srcdir@ #endif = -objs =3D lwlib.o lwlib-utils.o @lwlib_objs@ +objs =3D lwlib.o lwlib-utils.o lwlib-colors.o lwlib-fonts.o @lwlib_objs@ = all: liblw.a = @@ -110,6 +110,8 @@ lwlib-Xlw.o: $(CONFIG_H) lwlib-Xlw.h lwl xlwtabs.h xlwgcs.h lwlib-Xm.o: $(CONFIG_H) lwlib-Xm.h lwlib-internal.h lwlib-utils.h lwlib.h = xlwmenu.h lwlib-utils.o: $(CONFIG_H) lwlib-utils.h +lwlib-colors.o: $(CONFIG_H) lwlib-colors.h +lwlib-fonts.o: $(CONFIG_H) lwlib-fonts.h lwlib.o: $(CONFIG_H) lwlib-Xaw.h lwlib-Xlw.h lwlib-Xm.h lwlib-internal.h l= wlib-utils.h lwlib.h xlwmenu.h xlwmenu.o: $(CONFIG_H) lwlib.h xlwmenu.h xlwmenuP.h xlwscrollbar.o: $(CONFIG_H) xlwscrollbar.h xlwscrollbarP.h 1.12 +73 -8 XEmacs/xemacs/lwlib/lwlib-Xaw.c Index: lwlib-Xaw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-Xaw.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -p -r1.11 -r1.12 --- lwlib-Xaw.c 2004/09/20 19:19:16 1.11 +++ lwlib-Xaw.c 2005/11/26 11:45:59 1.12 @@ -52,6 +52,7 @@ Boston, MA 02111-1307, USA. */ = static void xaw_generic_callback (Widget, XtPointer, XtPointer); = +extern int debug_xft; = Boolean lw_xaw_widget_p (Widget widget) @@ -738,7 +739,7 @@ xaw_create_button (widget_instance *inst lw_add_value_args_to_args (val, al, &ac); = if (!val->call_data) - button =3D XtCreateManagedWidget (val->name, labelWidgetClass, = + button =3D XtCreateWidget (val->name, labelWidgetClass, = instance->parent, al, ac); = else = @@ -746,20 +747,21 @@ xaw_create_button (widget_instance *inst if (val->type =3D=3D TOGGLE_TYPE || val->type =3D=3D RADIO_TYPE) { XtSetArg (al [ac], XtNstate, val->selected); ac++; - button =3D XtCreateManagedWidget = + button =3D XtCreateWidget = (val->name, = val->type =3D=3D TOGGLE_TYPE ? checkboxWidgetClass : radioWidgetClas= s, instance->parent, al, ac); } else = { - button =3D XtCreateManagedWidget (val->name, commandWidgetClass, + button =3D XtCreateWidget (val->name, commandWidgetClass, instance->parent, al, ac); } XtRemoveAllCallbacks (button, XtNcallback); XtAddCallback (button, XtNcallback, xaw_generic_callback, (XtPointer= )instance); } = + /* #### this maybe can be folded into the XtCreateWidget calls above */ XtManageChild (button); = return button; @@ -788,7 +790,8 @@ xaw_create_label (Widget parent, widget_ label =3D XtCreateManagedWidget (val->name, labelWidgetClass, = parent, al, ac); = - /* Do it again for arguments that have no effect until the widget is rea= lized. */ + /* Do it again for arguments that have no effect until the widget is rea= lized. + #### Uh, but the widget isn't realized until later? Do we mean "crea= ted"? */ ac =3D 0; lw_add_value_args_to_args (val, al, &ac); if (ac > 20) @@ -798,6 +801,60 @@ xaw_create_label (Widget parent, widget_ return label; } = +static int debug_gauge =3D 0; + +static void +lw_debug_print_xt_arglist (ArgList al, int ac) +{ + int i; + for (i =3D 0; i < ac; i++) + fprintf (stderr, "Widget has arg %s with value %lu.\n", + al[i].name, (unsigned long) al[i].value); +} + +static void +lw_debug_print_class_resources (WidgetClass class_) +{ + Cardinal i; + do { + Cardinal m, n =3D class_->core_class.num_resources; + XtResourceList rl; + fprintf (stderr, "Class is %s (%p/%p) with %d resources.\n", + class_->core_class.class_name, class_, &(class_->core_class), n); + fprintf (stderr, " Class's resources are at %p. Converting...\n", + class_->core_class.resources); + /* resources may be compiled to an internal format */ + XtGetResourceList (class_, &rl, &m); + for (i =3D 0; i < m; i++) + fprintf (stderr, + " Class has a %s resource of type %s initialized from %s.\n", + rl[i].resource_class, rl[i].resource_type, rl[i].default_type); + /* special cases for commonly problematic resources */ + for (i =3D 0; i < m; i++) + { + if (!strcmp (rl[i].resource_class, "Font")) + { + fprintf (stderr, " Class has a Font resource.\n"); + fprintf (stderr, " Font resource is %s.\n", + (char *) rl[i].default_addr); + } + if (!strcmp (rl[i].resource_class, "FontSet")) + { + fprintf (stderr, " Class has a FontSet resource.\n"); + fprintf (stderr, " FontSet resource is %s.\n", + (char *) rl[i].default_addr); + } + if (!strcmp (rl[i].resource_class, "International")) + { + fprintf (stderr, " Class has an International resource.\n"); + fprintf (stderr, " International resource is %d.\n", + (int) rl[i].default_addr); + } + } + class_ =3D class_->core_class.superclass; + } while (class_ !=3D NULL); +} + static Widget xaw_create_progress (widget_instance *instance) { @@ -825,13 +882,21 @@ xaw_create_progress (widget_instance *in = /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); + + if (debug_gauge > 1) + lw_debug_print_class_resources (gaugeWidgetClass); + if (debug_gauge > 0) + lw_debug_print_xt_arglist (al, ac); + + scale =3D XtCreateWidget (val->name, gaugeWidgetClass, + instance->parent, al, ac); = - scale =3D XtCreateManagedWidget (val->name, gaugeWidgetClass, - instance->parent, al, ac); /* add the callback */ if (val->call_data) - XtAddCallback (scale, XtNgetValue, xaw_generic_callback, (XtPointer)in= stance); + XtAddCallback (scale, XtNgetValue, xaw_generic_callback, + (XtPointer) instance); = + /* #### this maybe can be folded into the XtCreateWidget call above */ XtManageChild (scale); = return scale; @@ -864,7 +929,7 @@ xaw_create_text_field (widget_instance * /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); = - text =3D XtCreateManagedWidget (val->name, asciiTextWidgetClass, + text =3D XtCreateWidget (val->name, asciiTextWidgetClass, instance->parent, al, ac); = /* add the callback */ 1.15 +2 -2 XEmacs/xemacs/lwlib/lwlib-Xlw.c Index: lwlib-Xlw.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/lwlib-Xlw.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -p -r1.14 -r1.15 --- lwlib-Xlw.c 2005/03/09 05:58:54 1.14 +++ lwlib-Xlw.c 2005/11/26 11:45:59 1.15 @@ -479,8 +479,8 @@ xlw_create_clip_window (widget_instance = Widget clip =3D 0; widget_value* val =3D instance->info->val; = - XtSetArg (al [ac], XtNmappedWhenManaged, FALSE); ac++; - XtSetArg (al [ac], XtNsensitive, TRUE); ac++; + XtSetArg (al [ac], XtNmappedWhenManaged, False); ac++; + XtSetArg (al [ac], XtNsensitive, True); ac++; /* add any args the user supplied for creation time */ lw_add_value_args_to_args (val, al, &ac); = 1.38 +317 -107 XEmacs/xemacs/lwlib/xlwmenu.c Index: xlwmenu.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwmenu.c,v retrieving revision 1.37 retrieving revision 1.38 diff -u -p -r1.37 -r1.38 --- xlwmenu.c 2004/09/20 19:19:17 1.37 +++ xlwmenu.c 2005/11/26 11:45:59 1.38 @@ -45,6 +45,11 @@ Boston, MA 02111-1307, USA. */ #define XmFONTLIST_DEFAULT_TAG XmSTRING_DEFAULT_CHARSET #endif /* XmVersion < 1.2 */ #endif + +/* #### we may want to turn off USE_XFT here if !USE_XFT_MENUBARS + In fact, maybe that's the right interface overall? */ +#include "lwlib-fonts.h" +#include "lwlib-colors.h" #include "xlwmenuP.h" = #ifdef USE_DEBUG_MALLOC @@ -69,7 +74,7 @@ extern Widget lw_menubar_widget; static XtResource xlwMenuResources[] =3D { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) /* There are three font list resources, so that we can accept either of the resources *fontList: or *font:, and so that we can tell the difference between them being specified, and being defaulted to a @@ -87,6 +92,11 @@ xlwMenuResources[] =3D #else {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(menu.font), XtRString, (XtPointer) "XtDefaultFont"}, +#ifdef USE_XFT_MENUBARS + {XtNxftFont, XtCXftFont, XtRString, sizeof (String), + offset(menu.renderFontSpec), = + XtRString, (XtPointer) "Helvetica-12:bold"}, +#endif # ifdef USE_XFONTSET /* #### Consider using the same method as for Motif; see the comment in XlwMenuInitialize(). */ @@ -165,7 +175,7 @@ static void Start (Widget w, XEvent *ev, static void Drag (Widget w, XEvent *ev, String *params, Cardinal *num_par= ams); static void Select(Widget w, XEvent *ev, String *params, Cardinal *num_par= ams); = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) static XFontStruct *default_font_of_font_list (XmFontList); #endif = @@ -241,57 +251,6 @@ safe_strdup (char *s) = #endif /* 0 */ = -/* Replacement for XAllocColor() that tries to return the nearest - available color if the colormap is full. From FSF Emacs. */ - -static int -allocate_nearest_color (Display *display, Colormap screen_colormap, - XColor *color_def) -{ - int status =3D XAllocColor (display, screen_colormap, color_def); - if (status) - return status; - - { - /* If we got to this point, the colormap is full, so we're - going to try to get the next closest color. - The algorithm used is a least-squares matching, which is - what X uses for closest color matching with StaticColor visuals. */ - - int nearest, x; - unsigned long nearest_delta =3D ULONG_MAX; - - int no_cells =3D XDisplayCells (display, XDefaultScreen (display)); - /* Don't use alloca here because lwlib doesn't have the - necessary configuration information that src does. */ - XColor *cells =3D (XColor *) malloc (sizeof (XColor) * no_cells); - - for (x =3D 0; x < no_cells; x++) - cells[x].pixel =3D x; - - XQueryColors (display, screen_colormap, cells, no_cells); - - for (nearest =3D 0, x =3D 0; x < no_cells; x++) - { - long dred =3D (color_def->red >> 8) - (cells[x].red >> 8); - long dgreen =3D (color_def->green >> 8) - (cells[x].green >> 8); - long dblue =3D (color_def->blue >> 8) - (cells[x].blue >> 8); - unsigned long delta =3D dred * dred + dgreen * dgreen + dblue * dblue; - - if (delta < nearest_delta) - { - nearest =3D x; - nearest_delta =3D delta; - } - } - color_def->red =3D cells[nearest].red; - color_def->green =3D cells[nearest].green; - color_def->blue =3D cells[nearest].blue; - free (cells); - return XAllocColor (display, screen_colormap, color_def); - } -} - static void push_new_stack (XlwMenuWidget mw, widget_value *val) { @@ -355,14 +314,14 @@ close_to_reference_time (Widget w, Time = =0C/* Size code */ static int string_width (XlwMenuWidget mw, -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString s #else char *s #endif ) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) Dimension width, height; XmStringExtent (mw->menu.font_list, s, &width, &height); return width; @@ -372,10 +331,17 @@ string_width (XlwMenuWidget mw, XmbTextExtents (mw->menu.font_set, s, strlen (s), &ri, &rl); return rl.width; # else +#ifdef USE_XFT_MENUBARS + XGlyphInfo glyphinfo; + XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, s, strlen (s), + &glyphinfo); + return glyphinfo.xOff; +#else XCharStruct xcs; int drop; XTextExtents (mw->menu.font, s, strlen (s), &drop, &drop, &drop, &xcs); return xcs.width; +#endif # endif /* USE_XFONTSET */ #endif } @@ -402,22 +368,26 @@ initialize_massaged_resource_char (void) = static int string_width_u (XlwMenuWidget mw, -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString string #else char *string #endif ) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) Dimension width, height; XmString newstring; #else # ifdef USE_XFONTSET XRectangle ri, rl; # else /* ! USE_XFONTSET */ +#ifdef USE_XFT_MENUBARS + XGlyphInfo glyphinfo; +#else XCharStruct xcs; int drop; +#endif # endif #endif char* newchars; @@ -425,7 +395,7 @@ string_width_u (XlwMenuWidget mw, char *chars; int i, j; = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) chars =3D ""; if (!XmStringGetLtoR (string, XmFONTLIST_DEFAULT_TAG, &chars)) chars =3D ""; @@ -442,7 +412,7 @@ string_width_u (XlwMenuWidget mw, newchars[j++] =3D chars[i]; newchars[j] =3D '\0'; = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) newstring =3D XmStringLtoRCreate (newchars, XmFONTLIST_DEFAULT_TAG); XmStringExtent (mw->menu.font_list, newstring, &width, &height); XmStringFree (newstring); @@ -453,8 +423,14 @@ string_width_u (XlwMenuWidget mw, XmbTextExtents (mw->menu.font_set, newchars, j, &ri, &rl); return rl.width; # else /* ! USE_XFONTSET */ +#ifdef USE_XFT_MENUBARS + XftTextExtents8 (XtDisplay (mw), mw->menu.renderFont, newchars, j, = + &glyphinfo); + return glyphinfo.xOff; +#else XTextExtents (mw->menu.font, newchars, j, &drop, &drop, &drop, &xcs); return xcs.width; +#endif # endif /* USE_XFONTSET */ #endif } @@ -621,7 +597,7 @@ parameterize_string (const char *string, return result; } = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) = static XmString resource_widget_value (XlwMenuWidget mw, widget_value *val) @@ -769,20 +745,41 @@ resource_widget_value (XlwMenuWidget mw, = #endif /* !Motif */ = +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) + +#ifdef USE_XFT_MENUBARS +static int +x_xft_text_width (Display *dpy, XftFont *xft_font, char *run, int len) +{ + static XGlyphInfo glyphinfo; + + XftTextExtents8 (dpy, + xft_font, + run, len, &glyphinfo); + return glyphinfo.xOff; +} +#endif + /* Code for drawing strings. */ static void string_draw (XlwMenuWidget mw, Window window, int x, int y, +#ifdef USE_XFT_MENUBARS + XftColor *color, + XftColor *colorBg, +#else GC gc, -#ifdef NEED_MOTIF +#endif +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString string #else char *string #endif ) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmStringDraw (XtDisplay (mw), window, mw->menu.font_list, string, gc, @@ -792,15 +789,31 @@ string_draw (XlwMenuWidget mw, 0, /* ???? layout_direction */ 0); #else -# ifdef USE_XFONTSET +# ifdef USE_XFT_MENUBARS + Display *display =3D XtDisplay (mw); + Visual *visual =3D DefaultVisualOfScreen (XtScreen (mw)); + Colormap cmap =3D mw->core.colormap; + XftDraw *xftDraw =3D XftDrawCreate (display, window, visual, cmap); + XftFont *renderFont =3D mw->menu.renderFont; + /* draw background rect */ + XftDrawRect (xftDraw, colorBg, + x, y, + x_xft_text_width (display, renderFont, string, strlen (string)), + renderFont->ascent + renderFont->descent); /* XXX */ + /* draw text */ + XftDrawString8 (xftDraw, color, renderFont, + x, y + mw->menu.font_ascent, string, strlen (string)); + XftDrawDestroy (xftDraw); +# else +# ifdef USE_XFONTSET XmbDrawString (XtDisplay (mw), window, mw->menu.font_set, gc, x, y + mw->menu.font_ascent, string, strlen (string)); -# else +# else XDrawString (XtDisplay (mw), window, gc, x, y + mw->menu.font_ascent, string, strlen (string)); -# endif /* USE_XFONTSET */ - -#endif +# endif /* USE_XFONTSET */ +# endif /* USE_XFT_MENUBARS */ +#endif /* NEED_MOTIF */ } = static int @@ -808,13 +821,18 @@ string_draw_range ( XlwMenuWidget mw, Window window, int x, int y, +#ifdef USE_XFT_MENUBARS + XftColor *color, + XftColor *colorBg, +#else GC gc, +#endif char *string, int start, int end ) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) Dimension width, height; XmString newstring; int c; @@ -851,18 +869,50 @@ string_draw_range ( mw->menu.font_set, &string[start], end - start, &ri, &rl); return rl.width; # else +#ifdef USE_XFT_MENUBARS + if (end <=3D start) + return 0; + else + { + XGlyphInfo glyphinfo; + Display *display =3D XtDisplay (mw); + Visual *visual =3D DefaultVisualOfScreen (XtScreen (mw)); + Colormap cmap =3D mw->core.colormap; + XftFont *renderFont =3D mw->menu.renderFont; + /* #### should use parent frame's .xftDraw? */ + XftDraw *xftDraw =3D XftDrawCreate (display, window, visual, cmap); + /* draw background rect */ + XftDrawRect (xftDraw, colorBg, + x, y, + x_xft_text_width (display, = + renderFont, &string[start], end - start), + renderFont->ascent + renderFont->descent); /* XXX */ + /* draw text */ + XftDrawString8 (xftDraw, color, renderFont, + x, y + mw->menu.font_ascent, + &string[start], end - start); + = + XftTextExtents8 (display, renderFont, &string[start], end - start, + &glyphinfo); + + /* #### should use parent frame's .xftDraw */ + XftDrawDestroy (xftDraw); + return glyphinfo.xOff; + } = +#else XCharStruct xcs; int drop; = if (end <=3D start) return 0; - XDrawString ( + XDrawString ( /* XXX */ XtDisplay (mw), window, gc, x, y + mw->menu.font_ascent, &string[start], end - start); XTextExtents ( mw->menu.font, &string[start], end - start, &drop, &drop, &drop, &xcs); return xcs.width; +#endif # endif #endif } @@ -871,8 +921,12 @@ static void string_draw_u (XlwMenuWidget mw, Window window, int x, int y, +#ifdef USE_XFT_MENUBARS + XftColor *color, XftColor *colorBg, GC gc, +#else GC gc, -#ifdef NEED_MOTIF +#endif +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString string #else char *string @@ -882,7 +936,7 @@ string_draw_u (XlwMenuWidget mw, int i, s =3D 0; char *chars; = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) chars =3D ""; if (!XmStringGetLtoR (string, XmFONTLIST_DEFAULT_TAG, &chars)) chars =3D ""; @@ -893,8 +947,13 @@ string_draw_u (XlwMenuWidget mw, if (chars[i] =3D=3D '%' && chars[i+1] =3D=3D '_') { int w; = +#ifdef USE_XFT_MENUBARS + x +=3D string_draw_range (mw, window, x, y, color, colorBg, chars, s, i= ); + w =3D string_draw_range (mw, window, x, y, color, colorBg, chars, i+2, = i+3); +#else x +=3D string_draw_range (mw, window, x, y, gc, chars, s, i); w =3D string_draw_range (mw, window, x, y, gc, chars, i+2, i+3); +#endif = /* underline next character */ XDrawLine (XtDisplay (mw), window, gc, x - 1, @@ -905,22 +964,37 @@ string_draw_u (XlwMenuWidget mw, i +=3D 2; } } +#ifdef USE_XFT_MENUBARS + x +=3D string_draw_range (mw, window, x, y, color, colorBg, chars, s, i); +#else x +=3D string_draw_range (mw, window, x, y, gc, chars, s, i); -#ifdef NEED_MOTIF +#endif +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XtFree (chars); #endif } = -static void -binding_draw (XlwMenuWidget mw, Window w, int x, int y, GC gc, char *value) +static void /* XXX */ +binding_draw (XlwMenuWidget mw, Window w, int x, int y, +#ifdef USE_XFT_MENUBARS + XftColor *color, + XftColor *colorBg, +#else + GC gc, +#endif + char *value) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString xm_value =3D XmStringCreateLtoR(value, XmSTRING_DEFAULT_CHARSET= ); string_draw (mw, w, x, y, gc, xm_value); XmStringFree (xm_value); #else +#ifdef USE_XFT_MENUBARS + string_draw (mw, w, x, y, color, colorBg, value); +#else string_draw (mw, w, x, y, gc, value); #endif +#endif } = /* Low level code for drawing 3-D edges. */ @@ -1562,21 +1636,57 @@ label_button_draw (XlwMenuWidget mw, int y_offset =3D mw->menu.shadow_thickness + mw->menu.vertical_margin; GC gc; = +#ifdef USE_XFT_MENUBARS + XftColor color, colorBg; + Display *display =3D XtDisplay (mw); + Colormap cmap =3D mw->core.colormap; + Visual *visual; + int ignored, pixel, pixelBg; + + visual_info_from_widget ((Widget) mw, &visual, &ignored); +#endif + if (!label_offset) label_offset =3D mw->menu.shadow_thickness + mw->menu.horizontal_margi= n; = - if (highlighted && (in_menubar || val->contents)) - gc =3D mw->menu.highlight_gc; + if (highlighted && (in_menubar || val->contents)) = + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.highlight_foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.highlight_gc; + } else if (in_menubar || val->contents) - gc =3D mw->menu.foreground_gc; + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.foreground_gc; + } else - gc =3D mw->menu.title_gc; + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.title_foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.title_gc; + } +#ifdef USE_XFT_MENUBARS + color =3D xft_convert_color (display, cmap, visual, pixel, 0); + colorBg =3D xft_convert_color (display, cmap, visual, pixelBg, 0); +#endif = /* Draw the label string. */ - string_draw_u (mw, - window, - x + label_offset, y + y_offset, + string_draw_u (mw, /* XXX */ + window, + x + label_offset, y + y_offset, +#ifdef USE_XFT_MENUBARS + &color, &colorBg, gc, +#else gc, +#endif resource_widget_value (mw, val)); } = @@ -1598,7 +1708,7 @@ push_button_size (XlwMenuWidget mw, if (!in_menubar && val->key) { int w; -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmString key =3D XmStringCreateLtoR (val->key, XmSTRING_DEFAULT_CHAR= SET); w =3D string_width (mw, key); XmStringFree (key); @@ -1627,6 +1737,16 @@ push_button_draw (XlwMenuWidget mw, shadow_type type; Boolean menu_pb =3D in_menubar && (menu_item_type (val) =3D=3D BUTTON_TY= PE); = +#ifdef USE_XFT_MENUBARS + XftColor color, colorBg; + Display *display =3D XtDisplay (mw); + Colormap cmap =3D mw->core.colormap; + Visual *visual; + int ignored, pixel, pixelBg, dim =3D 0; + + visual_info_from_widget ((Widget) mw, &visual, &ignored); +#endif + /* Draw the label string. */ if (!label_offset) label_offset =3D mw->menu.shadow_thickness + mw->menu.horizontal_margi= n; @@ -1634,29 +1754,77 @@ push_button_draw (XlwMenuWidget mw, if (highlighted) { if (val->enabled) - gc =3D mw->menu.highlight_gc; + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.highlight_foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.highlight_gc; + } else - gc =3D mw->menu.inactive_gc; + { +#ifdef USE_XFT_MENUBARS + dim =3D 1; + pixel =3D mw->menu.foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.inactive_gc; } + } else if (menu_pb) { if (val->enabled) - gc =3D mw->menu.button_gc; + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.button_foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.button_gc; + } else - gc =3D mw->menu.inactive_button_gc; + { +#ifdef USE_XFT_MENUBARS + dim =3D 1; + pixel =3D mw->menu.button_foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.inactive_button_gc; + } } else { if (val->enabled) - gc =3D mw->menu.foreground_gc; + { +#ifdef USE_XFT_MENUBARS + pixel =3D mw->menu.foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.foreground_gc; + } else - gc =3D mw->menu.inactive_gc; + { +#ifdef USE_XFT_MENUBARS + dim =3D 1; + pixel =3D mw->menu.foreground; + pixelBg =3D mw->core.background_pixel; +#endif + gc =3D mw->menu.inactive_gc; + } } = +#ifdef USE_XFT_MENUBARS + color =3D xft_convert_color (display, cmap, visual, pixel, dim); + colorBg =3D xft_convert_color (display, cmap, visual, pixelBg, 0); +#endif + string_draw_u (mw, - window, - x + label_offset, y + y_offset, - gc, + window, + x + label_offset, y + y_offset, +#ifdef USE_XFT_MENUBARS + &color, &colorBg, gc, +#else + gc, +#endif resource_widget_value (mw, val)); = /* Draw the keybindings */ @@ -1670,7 +1838,13 @@ push_button_draw (XlwMenuWidget mw, } binding_draw (mw, window, x + binding_offset + mw->menu.column_spacing, - y + y_offset, gc, val->key); + y + y_offset, = +#ifdef USE_XFT_MENUBARS + &color, &colorBg, +#else + gc, +#endif + val->key); } = /* Draw the shadow */ @@ -2336,6 +2510,7 @@ make_windows_if_needed (XlwMenuWidget mw return; = root =3D RootWindowOfScreen (XtScreen(mw)); + /* use visual_info_from_widget() from lwlib-colors.c */ /* grab the visual and depth from the nearest shell ancestor */ visual =3D CopyFromParent; depth =3D CopyFromParent; @@ -2615,13 +2790,19 @@ static void make_drawing_gcs (XlwMenuWidget mw) { XGCValues xgcv; +#ifdef USE_XFT_MENUBARS + unsigned long flags =3D (GCForeground | GCBackground); +#else unsigned long flags =3D (GCFont | GCForeground | GCBackground); +#endif = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) xgcv.font =3D default_font_of_font_list (mw->menu.font_list)->fid; #else +#ifndef USE_XFT_MENUBARS xgcv.font =3D mw->menu.font->fid; #endif +#endif = xgcv.foreground =3D mw->core.background_pixel; xgcv.background =3D mw->menu.foreground; @@ -2645,18 +2826,21 @@ make_drawing_gcs (XlwMenuWidget mw) else { /* color */ XColor xcolor; + Visual *visual; + int ignore; + visual_info_from_widget ((Widget) mw, &visual, &ignore); Colormap cmap =3D mw->core.colormap; xcolor.pixel =3D mw->core.background_pixel; XQueryColor (dpy, cmap, &xcolor); xcolor.red =3D (xcolor.red * 17) / 20; xcolor.green =3D (xcolor.green * 17) / 20; xcolor.blue =3D (xcolor.blue * 17) / 20; - if (allocate_nearest_color (dpy, cmap, &xcolor)) + if (x_allocate_nearest_color (dpy, cmap, visual, &xcolor)) xgcv.foreground =3D xcolor.pixel; } } xgcv.background =3D mw->core.background_pixel; - mw->menu.select_gc =3D XtGetGC ((Widget)mw, flags, &xgcv); + mw->menu.select_gc =3D XtGetGC ((Widget) mw, flags, &xgcv); = xgcv.foreground =3D mw->menu.foreground; xgcv.background =3D mw->core.background_pixel; @@ -2688,6 +2872,7 @@ make_drawing_gcs (XlwMenuWidget mw) static void release_drawing_gcs (XlwMenuWidget mw) { + = XtReleaseGC ((Widget) mw, mw->menu.foreground_gc); XtReleaseGC ((Widget) mw, mw->menu.button_gc); XtReleaseGC ((Widget) mw, mw->menu.highlight_gc); @@ -2707,9 +2892,6 @@ release_drawing_gcs (XlwMenuWidget mw) mw->menu.select_gc =3D (GC) -1; } = -#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ - ? ((unsigned long) (x)) : ((unsigned long) (y))) - static void make_shadow_gcs (XlwMenuWidget mw) { @@ -2717,9 +2899,20 @@ make_shadow_gcs (XlwMenuWidget mw) unsigned long pm =3D 0; Display *dpy =3D XtDisplay ((Widget) mw); Colormap cmap =3D mw->core.colormap; + Visual *visual; + int ignored; XColor topc, botc; int top_frobbed =3D 0, bottom_frobbed =3D 0; = + visual_info_from_widget ((Widget) mw, &visual, &ignored); + /* #### Apparently this is called before any shell has a visual? + or maybe the widget doesn't have a parent yet? */ + if (visual =3D=3D CopyFromParent) + { + Screen *screen =3D DefaultScreenOfDisplay (dpy); + visual =3D DefaultVisualOfScreen (screen); + } + if (mw->menu.top_shadow_color =3D=3D (Pixel) (-1)) mw->menu.top_shadow_color =3D mw->core.background_pixel; if (mw->menu.bottom_shadow_color =3D=3D (Pixel) (-1)) @@ -2734,7 +2927,7 @@ make_shadow_gcs (XlwMenuWidget mw) topc.red =3D MINL (65535, topc.red * 1.2); topc.green =3D MINL (65535, topc.green * 1.2); topc.blue =3D MINL (65535, topc.blue * 1.2); - if (allocate_nearest_color (dpy, cmap, &topc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &topc)) { if (topc.pixel =3D=3D mw->core.background_pixel) { @@ -2742,7 +2935,7 @@ make_shadow_gcs (XlwMenuWidget mw) topc.red =3D MINL (65535, topc.red + 0x8000); topc.green =3D MINL (65535, topc.green + 0x8000); topc.blue =3D MINL (65535, topc.blue + 0x8000); - if (allocate_nearest_color (dpy, cmap, &topc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &topc)) { mw->menu.top_shadow_color =3D topc.pixel; } @@ -2763,7 +2956,7 @@ make_shadow_gcs (XlwMenuWidget mw) botc.red =3D (botc.red * 3) / 5; botc.green =3D (botc.green * 3) / 5; botc.blue =3D (botc.blue * 3) / 5; - if (allocate_nearest_color (dpy, cmap, &botc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &botc)) { if (botc.pixel =3D=3D mw->core.background_pixel) { @@ -2771,7 +2964,7 @@ make_shadow_gcs (XlwMenuWidget mw) botc.red =3D MINL (65535, botc.red + 0x4000); botc.green =3D MINL (65535, botc.green + 0x4000); botc.blue =3D MINL (65535, botc.blue + 0x4000); - if (allocate_nearest_color (dpy, cmap, &botc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &botc)) { mw->menu.bottom_shadow_color =3D botc.pixel; } @@ -2854,7 +3047,7 @@ release_shadow_gcs (XlwMenuWidget mw) static void extract_font_extents (XlwMenuWidget mw) { -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) /* Find the maximal ascent/descent of the fonts in the font list so that all menu items can be the same height... */ mw->menu.font_ascent =3D 0; @@ -2939,13 +3132,18 @@ extract_font_extents (XlwMenuWidget mw) mw->menu.font_descent =3D font->descent; } # else /* ! USE_XFONTSET */ +#ifdef USE_XFT_MENUBARS + mw->menu.font_ascent =3D mw->menu.renderFont->ascent; + mw->menu.font_descent =3D mw->menu.renderFont->descent; +#else mw->menu.font_ascent =3D mw->menu.font->ascent; mw->menu.font_descent =3D mw->menu.font->descent; +#endif # endif #endif /* NEED_MOTIF */ } = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) static XFontStruct * default_font_of_font_list (XmFontList font_list) { @@ -3015,7 +3213,7 @@ XlwMenuInitialize (Widget UNUSED (reques XCreatePixmapFromBitmapData (display, window, (char *) gray_bits, gray_width, gray_height, 1, 0, 1); = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) /* #### Even if it's a kludge!!!, we should consider doing the same for X Font Sets. */ /* The menu.font_list slot came from the *fontList resource (Motif stand= ard.) @@ -3037,6 +3235,14 @@ XlwMenuInitialize (Widget UNUSED (reques mw->menu.font_list =3D mw->menu.fallback_font_list; #endif = +#ifdef USE_XFT_MENUBARS + /* to do this right, we should add a new Xt Resource type + + conversion function + */ + mw->menu.renderFont =3D + xft_open_font_by_name (XtDisplay (mw), mw->menu.renderFontSpec); +#endif + make_drawing_gcs (mw); make_shadow_gcs (mw); extract_font_extents (mw); @@ -3179,12 +3385,16 @@ XlwMenuSetValues (Widget current, Widget if (newmw->core.background_pixel !=3D oldmw->core.background_pixel || newmw->menu.foreground !=3D oldmw->menu.foreground /* For the XEditResource protocol, which may want to change the font= . */ -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) || newmw->menu.font_list !=3D oldmw->menu.font_list || newmw->menu.font_list_2 !=3D oldmw->menu.font_list_2 || newmw->menu.fallback_font_list !=3D oldmw->menu.fallback_font_list #else +#ifdef USE_XFT_MENUBARS + || newmw->menu.renderFont !=3D oldmw->menu.renderFont +#else || newmw->menu.font !=3D oldmw->menu.font +#endif #endif ) { 1.5 +13 -1 XEmacs/xemacs/lwlib/xlwmenuP.h Index: xlwmenuP.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwmenuP.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- xlwmenuP.h 2001/04/12 18:21:55 1.4 +++ xlwmenuP.h 2005/11/26 11:46:00 1.5 @@ -4,6 +4,11 @@ #include "xlwmenu.h" #include = +#ifdef USE_XFT_MENUBARS +#include +#endif + + /* Elements in the stack arrays. */ typedef struct _window_state { @@ -22,12 +27,17 @@ typedef struct _XlwMenu_part = { /* slots set by the resources */ = -#ifdef NEED_MOTIF +#if defined(NEED_MOTIF) && !defined(USE_XFT_MENUBARS) XmFontList font_list; XmFontList font_list_2; XmFontList fallback_font_list; #else XFontStruct * font; +#ifdef USE_XFT_MENUBARS + /* #### Fix naming convention here */ + String renderFontSpec; + XftFont *renderFont; +#endif # ifdef USE_XFONTSET XFontSet font_set; # endif @@ -47,6 +57,8 @@ typedef struct _XlwMenu_part = Pixel top_shadow_color; Pixel bottom_shadow_color; Pixel select_color; +#ifdef USE_XFT_MENUBARS +#endif Pixmap top_shadow_pixmap; Pixmap bottom_shadow_pixmap; Cursor cursor_shape; 1.18 +31 -57 XEmacs/xemacs/lwlib/xlwscrollbar.c Index: xlwscrollbar.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwscrollbar.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- xlwscrollbar.c 2004/09/20 19:19:18 1.17 +++ xlwscrollbar.c 2005/11/26 11:46:00 1.18 @@ -78,6 +78,8 @@ Boston, MA 02111-1307, USA. */ #include #include = +#include "lwlib-colors.h" + #include "xlwscrollbarP.h" #include "xlwscrollbar.h" = @@ -523,66 +525,26 @@ get_gc (XlwScrollBarWidget w, Pixel fg, = return XtGetGC((Widget) w, mask, &values); } = -/* Replacement for XAllocColor() that tries to return the nearest - available color if the colormap is full. From FSF Emacs. */ - -static int -allocate_nearest_color (Display *display, Colormap screen_colormap, - XColor *color_def) -{ - int status =3D XAllocColor (display, screen_colormap, color_def); - if (status) - return status; - - { - /* If we got to this point, the colormap is full, so we're - going to try to get the next closest color. - The algorithm used is a least-squares matching, which is - what X uses for closest color matching with StaticColor visuals. */ - - int nearest, x; - unsigned long nearest_delta =3D ULONG_MAX; - - int no_cells =3D XDisplayCells (display, XDefaultScreen (display)); - /* Don't use alloca here because lwlib doesn't have the - necessary configuration information that src does. */ - XColor *cells =3D (XColor *) malloc (sizeof (XColor) * no_cells); - - for (x =3D 0; x < no_cells; x++) - cells[x].pixel =3D x; - - XQueryColors (display, screen_colormap, cells, no_cells); - - for (nearest =3D 0, x =3D 0; x < no_cells; x++) - { - long dred =3D (color_def->red >> 8) - (cells[x].red >> 8); - long dgreen =3D (color_def->green >> 8) - (cells[x].green >> 8); - long dblue =3D (color_def->blue >> 8) - (cells[x].blue >> 8); - unsigned long delta =3D dred * dred + dgreen * dgreen + dblue * dblue; - - if (delta < nearest_delta) - { - nearest =3D x; - nearest_delta =3D delta; - } - } - color_def->red =3D cells[nearest].red; - color_def->green =3D cells[nearest].green; - color_def->blue =3D cells[nearest].blue; - free (cells); - return XAllocColor (display, screen_colormap, color_def); - } -} - static void make_shadow_pixels (XlwScrollBarWidget w) { - Display *dpy =3D XtDisplay((Widget) w); + Display *dpy =3D XtDisplay ((Widget) w); Colormap cmap =3D w->core.colormap; XColor topc, botc; int top_frobbed, bottom_frobbed; Pixel bg, fg; + Visual *visual; + int ignored; = + visual_info_from_widget ((Widget) w, &visual, &ignored); + /* #### Apparently this is called before any shell has a visual? + or maybe the widget doesn't have a parent yet? */ + if (visual =3D=3D CopyFromParent) + { + Screen *screen =3D DefaultScreenOfDisplay (dpy); + visual =3D DefaultVisualOfScreen (screen); + } + top_frobbed =3D bottom_frobbed =3D 0; = bg =3D w->core.background_pixel; @@ -595,11 +557,12 @@ make_shadow_pixels (XlwScrollBarWidget w { topc.pixel =3D bg; XQueryColor (dpy, cmap, &topc); + /* #### can we use a (generalized) xft_convert_color here? */ /* don't overflow/wrap! */ topc.red =3D MINL(65535, topc.red * 1.2); topc.green =3D MINL(65535, topc.green * 1.2); topc.blue =3D MINL(65535, topc.blue * 1.2); - if (allocate_nearest_color (dpy, cmap, &topc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &topc)) { if (topc.pixel =3D=3D bg) { @@ -607,7 +570,7 @@ make_shadow_pixels (XlwScrollBarWidget w topc.red =3D MINL(65535, topc.red + 0x8000); topc.green =3D MINL(65535, topc.green + 0x8000); topc.blue =3D MINL(65535, topc.blue + 0x8000); - if (allocate_nearest_color (dpy, cmap, &topc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &topc)) { w->sb.topShadowColor =3D topc.pixel; } @@ -628,7 +591,7 @@ make_shadow_pixels (XlwScrollBarWidget w botc.red =3D (botc.red * 3) / 5; botc.green =3D (botc.green * 3) / 5; botc.blue =3D (botc.blue * 3) / 5; - if (allocate_nearest_color (dpy, cmap, &botc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &botc)) { if (botc.pixel =3D=3D bg) { @@ -636,7 +599,7 @@ make_shadow_pixels (XlwScrollBarWidget w botc.red =3D MINL(65535, botc.red + 0x4000); botc.green =3D MINL(65535, botc.green + 0x4000); botc.blue =3D MINL(65535, botc.blue + 0x4000); - if (allocate_nearest_color (dpy, cmap, &botc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &botc)) { w->sb.bottomShadowColor =3D botc.pixel; } @@ -703,6 +666,17 @@ make_trough_pixel (XlwScrollBarWidget w) Display *dpy =3D XtDisplay((Widget) w); Colormap cmap =3D w->core.colormap; XColor troughC; + Visual *visual; + int ignored; + + visual_info_from_widget ((Widget) w, &visual, &ignored); + /* #### Apparently this is called before any shell has a visual? + or maybe the widget doesn't have a parent yet? */ + if (visual =3D=3D CopyFromParent) + { + Screen *screen =3D DefaultScreenOfDisplay (dpy); + visual =3D DefaultVisualOfScreen (screen); + } = if (w->sb.troughColor =3D=3D (Pixel)~0) w->sb.troughColor =3D w->core.ba= ckground_pixel; = @@ -713,7 +687,7 @@ make_trough_pixel (XlwScrollBarWidget w) troughC.red =3D (troughC.red * 4) / 5; troughC.green =3D (troughC.green * 4) / 5; troughC.blue =3D (troughC.blue * 4) / 5; - if (allocate_nearest_color (dpy, cmap, &troughC)) + if (x_allocate_nearest_color (dpy, cmap, visual, &troughC)) w->sb.troughColor =3D troughC.pixel; } } 1.6 +538 -174 XEmacs/xemacs/lwlib/xlwtabs.c Index: xlwtabs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwtabs.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- xlwtabs.c 2005/10/25 11:16:49 1.5 +++ xlwtabs.c 2005/11/26 11:46:00 1.6 @@ -18,13 +18,6 @@ the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ = - /* Synched up with: Tabs.c 1.27. = - - #### This file contains essential XEmacs related fixes to the original - verison of the Tabs widget. Be VERY careful about syncing if you ever - update to a more recent version. In general this is probably now a - bad idea. */ - /* * Tabs.c - Index Tabs composite widget * @@ -56,6 +49,18 @@ * the frame. */ = + /* Synched up with: Tabs.c 1.27. = + + This file contains essential XEmacs-related fixes to the original + version of the Tabs widget. Be VERY careful about syncing if you ever + update to a more recent version. In general this is probably now a + bad idea. + + #### We need to check that various windows (the whole widget, or a single + tab) are of "reasonable" size, ie, we need to try for more sanity in the + geometry management routines. + */ + /* * TODO: min child height =3D tab height */ @@ -67,11 +72,17 @@ #include #include = +/* #### This may be risky, lwlib-internal.h redefines abort() */ +#include "lwlib-fonts.h" +#include "lwlib-colors.h" #include "lwlib-internal.h" #include "../src/xmu.h" #include "xlwtabsP.h" #include "xlwgcs.h" = +#define XFT_USE_HEIGHT_NOT_ASCENT_DESCENT 0 + +/* #### These should probably be resources. */ #define MIN_WID 10 #define MIN_HGT 10 #define INDENT 3 /* tabs indented from edge by this much */ @@ -138,6 +149,12 @@ static XtResource resources[] =3D { offset(selectInsensitive), XtRImmediate, (XtPointer) True}, {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *), offset(font), XtRString, (XtPointer) XtDefaultFont}, +#ifdef USE_XFT_TABS + /* #### Maybe use "-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1" here= ? */ + {XtNxftFont, XtCXftFont, XtRString, sizeof (String), + offset(renderFontSpec), XtRString, + (XtPointer) "AirCut-16" /* XtDefaultFont */}, +#endif {XtNinternalWidth, XtCWidth, XtRDimension, sizeof(Dimension), offset(internalWidth), XtRImmediate, (XtPointer)4 }, {XtNinternalHeight, XtCHeight, XtRDimension, sizeof(Dimension), @@ -400,6 +417,27 @@ WidgetClass tabsWidgetClass =3D (WidgetCla ((TabsConstraints)((tab)->core.constraints))->tabs.visible) =0C = + +static int debug_tabs =3D 0; /* increase for more verbosity */ + +#ifdef USE_XFT_TABS +/* #### duplicated from xlwmenu.c -- CLEAN THIS SHIT UP! + Undeclared so define at top. */ +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) + +static int +x_xft_text_width (Display *dpy, XftFont *xft_font, FcChar8 *run, int len) +{ + static XGlyphInfo glyphinfo; /* #### static? */ + + XftTextExtents8 (dpy, + xft_font, + run, len, &glyphinfo); + return glyphinfo.xOff; +} +#endif + /**************************************************************** * * Member Procedures @@ -436,12 +474,27 @@ TabsInit(Widget request, Widget new_, Ar */ newTw->tabs.tab_height =3D 2 * newTw->tabs.internalHeight + SHADWID ; = - if( newTw->tabs.font !=3D NULL ) +#ifdef USE_XFT_TABS + /* must get font here + to do this right, we should add a new Xt Resource type + + conversion function + */ + newTw->tabs.renderFont =3D + xft_open_font_by_name (XtDisplay ((Widget) newTw), + newTw->tabs.renderFontSpec); + if (newTw->tabs.renderFont !=3D NULL) = +#if XFT_USE_HEIGHT_NOT_ASCENT_DESCENT + newTw->tabs.tab_height +=3D newTw->tabs.renderFont->height; +#else + newTw->tabs.tab_height +=3D newTw->tabs.renderFont->ascent + + newTw->tabs.renderFont->descent; +#endif /* XFT_USE_HEIGHT_NOT_ASCENT_DESCENT */ +#else /* ! USE_XFT_TABS */ + if (newTw->tabs.font !=3D NULL) newTw->tabs.tab_height +=3D newTw->tabs.font->max_bounds.ascent + - newTw->tabs.font->max_bounds.descent ; + newTw->tabs.font->max_bounds.descent; +#endif /* ! USE_XFT_TABS */ = - /* GC allocation is deferred until XtRealize() */ - /* if size not explicitly set, set it to our preferred size now. */ = if( request->core.width =3D=3D 0 || request->core.height =3D=3D 0 ) @@ -613,17 +666,31 @@ TabsSetValues(Widget current, Widget UNU Boolean needRedraw =3D False ; Widget *childP ; int i ; - = - if( tw->tabs.font !=3D curtw->tabs.font || - tw->tabs.internalWidth !=3D curtw->tabs.internalWidth || - tw->tabs.internalHeight !=3D curtw->tabs.internalHeight ) + if( +#ifdef USE_XFT_TABS + tw->tabs.renderFont !=3D curtw->tabs.renderFont || +#else + tw->tabs.font !=3D curtw->tabs.font || +#endif + tw->tabs.internalWidth !=3D curtw->tabs.internalWidth || + tw->tabs.internalHeight !=3D curtw->tabs.internalHeight) { - tw->tabs.tab_height =3D 2 * tw->tabs.internalHeight + SHADWID ; + tw->tabs.tab_height =3D 2 * tw->tabs.internalHeight + SHADWID; = - if( tw->tabs.font !=3D NULL ) +#ifdef USE_XFT_TABS + if (tw->tabs.renderFont !=3D NULL) +#if XFT_USE_HEIGHT_NOT_ASCENT_DESCENT + tw->tabs.tab_height +=3D tw->tabs.renderFont->height; +#else + tw->tabs.tab_height +=3D tw->tabs.renderFont->ascent + + tw->tabs.renderFont->descent; +#endif /* XFT_USE_HEIGHT_NOT_ASCENT_DESCENT */ +#else /* ! USE_XFT_TABS */ + if (tw->tabs.font !=3D NULL) tw->tabs.tab_height +=3D tw->tabs.font->max_bounds.ascent + - tw->tabs.font->max_bounds.descent ; + tw->tabs.font->max_bounds.descent; +#endif /* ! USE_XFT_TABS */ = /* Tab size has changed. Resize all tabs and request a new size */ for(i=3D0, childP=3Dtw->composite.children; @@ -640,7 +707,12 @@ TabsSetValues(Widget current, Widget UNU = if( tw->core.background_pixel !=3D curtw->core.background_pixel || tw->core.background_pixmap !=3D curtw->core.background_pixmap || - tw->tabs.font !=3D curtw->tabs.font ) +#ifdef USE_XFT_TABS + tw->tabs.renderFont !=3D curtw->tabs.renderFont +#else + tw->tabs.font !=3D curtw->tabs.font +#endif + ) if( XtIsRealized(new_) ) { TabsFreeGCs(tw) ; @@ -755,83 +827,167 @@ TabsAcceptFocus(Widget w, Time *UNUSED ( = = /* - * Return preferred size. Happily accept anything >=3D our preferred size. - * (TODO: is that the right thing to do? Should we always return "almost" - * if offered more than we need?) + * Return status, with preferred size in PREFERRED. + * + * According to the X Toolkit Intrinsics manual + * XtGeometryYes =3D accept INTENDED without change + * XtGeometryNo =3D request to stay _exactly_ the same + * XtGeometryAlmost =3D suggest PREFERRED as a compromise + * and the PREFERRED argument must be filled in completely (ie, any fields + * whose bits are set in the request_mode mask must correspond to the + * preferred geometry, which must be consistent with the return value). + * + * Assuming horizontal orientation, in XEmacs, we should always accept if + * the width is more than we need. There's no problem if there are only a + * couple of tabs packed to the left. OTOH there's probably something wro= ng + * if we're offered a height more than 1.5x or 2x the preferred height. + * (#### Do tab controls do vertical?) */ - -static XtGeometryResult -TabsQueryGeometry(Widget w, - XtWidgetGeometry *intended, XtWidgetGeometry *preferred) -{ - register TabsWidget tw =3D (TabsWidget)w ; - XtGeometryMask mode =3D intended->request_mode ; = - preferred->request_mode =3D CWWidth | CWHeight ; - PreferredSize(tw, &preferred->width, &preferred->height, NULL,NULL) ; +/* compute the height above which we complain */ +#define TAB_HEIGHT_TOLERANCE(x) (2*x) = - if( (!(mode & CWWidth) || intended->width =3D=3D w->core.width) && - (!(mode & CWHeight) || intended->height =3D=3D w->core.height) ) - return XtGeometryNo ; - - if( (!(mode & CWWidth) || intended->width >=3D preferred->width) && - (!(mode & CWHeight) || intended->height >=3D preferred->height) ) +static XtGeometryResult +TabsQueryGeometry (Widget w, + XtWidgetGeometry *intended, + XtWidgetGeometry *preferred) /* RETURN */ +{ + TabsWidget tw =3D (TabsWidget) w; + XtGeometryMask mode =3D intended->request_mode; + = + preferred->request_mode =3D CWWidth | CWHeight; + PreferredSize (tw, &preferred->width, &preferred->height, NULL, NULL); + + /* If width is big enough, accept it. */ + if ((mode & CWWidth) && intended->width >=3D preferred->width) + preferred->width =3D intended->width; + + /* If height is within range, accept it. + #### If too tall, we could offer a compromise at TAB_HEIGHT_TOLERAN= CE. + Should we? */ + if ((mode & CWHeight) && intended->height >=3D preferred->height + && intended->height <=3D TAB_HEIGHT_TOLERANCE (preferred->height)) + preferred->height =3D intended->height; + + /* Compute return value. */ + if (preferred->width =3D=3D ((mode & CWWidth) ? intended->width + : w->core.width) + && preferred->height =3D=3D ((mode & CWHeight) ? intended->height + : w->core.height)) return XtGeometryYes; - - return XtGeometryAlmost; + else if (preferred->width =3D=3D w->core.width + && preferred->height =3D=3D w->core.height) + return XtGeometryNo; + else + return XtGeometryAlmost; } = = = /* - * Geometry Manager; called when a child wants to be resized. + * Geometry Manager; called when TAB (a child) wants to be resized. + * + * According to the X Toolkit Intrinsics manual + * XtGeometryDone =3D accept REQUEST and do it (#### check this) + * XtGeometryYes =3D accept REQUEST without change + * XtGeometryNo =3D refuse REQUEST (ie, stay _exactly_ the same) + * XtGeometryAlmost =3D suggest REPLY as a compromise */ = static XtGeometryResult -TabsGeometryManager(Widget w, XtWidgetGeometry *req, XtWidgetGeometry *rep= ly) -{ - TabsWidget tw =3D (TabsWidget) XtParent(w); - Dimension s =3D SHADWID ; - TabsConstraints tab =3D (TabsConstraints)w->core.constraints; - XtGeometryResult result ; - Dimension rw, rh ; +TabsGeometryManager (Widget tab, + XtWidgetGeometry *request, + XtWidgetGeometry *reply) /* RETURN */ +{ + TabsWidget control =3D (TabsWidget) XtParent(tab); + Dimension s =3D SHADWID; + TabsConstraints constraint =3D (TabsConstraints) tab->core.constraints; + XtGeometryResult result, best_offer =3D XtGeometryYes; + Dimension rw, rh; + + static int debug_count =3D 0; + static int debug_mask =3D 1; + + /* Position request cannot be satisfied, so if tabs are not resizable, + no nontrivial request can be satisfied: return XGeometryNo. */ + if (!constraint->tabs.resizable) + return XtGeometryNo; + + fprintf (stderr, "Urk! label is resizable!\n"); + + /* Assume we will refuse these; toggle iff we accept them. + Reply won't specify any fields not in the request. */ + reply->request_mode =3D request->request_mode; + reply->x =3D tab->core.x; + reply->y =3D tab->core.y; + + /* If a position request would result in a change, best offer is + XtGeometryAlmost. Otherwise toggle reply->request_mode. */ + if ((request->request_mode & CWX) && request->x !=3D tab->core.x) + best_offer =3D XtGeometryAlmost; + else + reply->request_mode &=3D ~CWX; + if ((request->request_mode & CWY) && request->y !=3D tab->core.y) + best_offer =3D XtGeometryAlmost; + else + reply->request_mode &=3D ~CWY; = - /* Position request always denied */ + /* Make all three fields in the reply valid */ + reply->width =3D (request->request_mode & CWWidth) + ? request->width : tab->core.width; + reply->height =3D (request->request_mode & CWHeight) + ? request->height : tab->core.height; + reply->border_width =3D (request->request_mode & CWBorderWidth) + ? request->border_width : tab->core.border_width; + + /* check if we can already offer a compromise */ + if (best_offer =3D=3D XtGeometryAlmost && + reply->width =3D=3D tab->core.width && + reply->height =3D=3D tab->core.height && + reply->border_width =3D=3D tab->core.border_width) + { + reply->request_mode &=3D ~(CWWidth | CWHeight | CWBorderWidth); + return best_offer; + } = - if( ((req->request_mode & CWX) && req->x !=3D w->core.x) || - ((req->request_mode & CWY) && req->y !=3D w->core.y) || - !tab->tabs.resizable ) - return XtGeometryNo ; - - /* Make all three fields in the request valid */ - if( !(req->request_mode & CWWidth) ) - req->width =3D w->core.width; - if( !(req->request_mode & CWHeight) ) - req->height =3D w->core.height; - if( !(req->request_mode & CWBorderWidth) ) - req->border_width =3D w->core.border_width; - - if( req->width =3D=3D w->core.width && - req->height =3D=3D w->core.height && - req->border_width =3D=3D w->core.border_width ) - return XtGeometryNo ; +#ifndef DONT_DEBUG_REQUESTS +#define DBG_REQUEST_PRINT(name,field,size) \ +do { \ + if (reply->field > size) \ + { \ + if (++debug_count =3D=3D debug_mask) \ + { \ + debug_mask <<=3D 1; \ + fprintf (stderr, "ridiculous %s request #%d: %d > %d\n", \ + name, debug_count, reply->field, size); \ + } \ + reply->field =3D tab->core.field; \ + } \ +} while (0) + + DBG_REQUEST_PRINT ("width",width,1024); + DBG_REQUEST_PRINT ("height",height,768); + DBG_REQUEST_PRINT ("border_width",border_width,30); +#undef DBG_REQUEST_PRINT +#endif = - rw =3D req->width + 2 * req->border_width ; - rh =3D req->height + 2 * req->border_width ; + rw =3D reply->width + 2 * reply->border_width; + rh =3D reply->height + 2 * reply->border_width; = /* find out how big the children want to be now */ - MaxChild(tw, w, rw, rh) ; + MaxChild (control, tab, rw, rh); = = /* Size changes must see if the new size can be accommodated. - * The Tabs widget keeps all of its children the same - * size. A request to shrink will be accepted only if the + * The Tabs widget keeps all of its children the same height, but + * widths may vary. + * A request to shrink will be accepted only if the * new size is still big enough for all other children. A * request to shrink that is not big enough for all children * returns an "almost" response with the new proposed size * or a "no" response if unable to shrink at all. * - * A request to grow will be accepted only if the Tabs parent can + * A request to grow will be accepted only if the Tabs control can * grow to accommodate. * * TODO: @@ -840,25 +996,33 @@ TabsGeometryManager(Widget w, XtWidgetGe * for another day. */ = - if (req->request_mode & (CWWidth | CWHeight | CWBorderWidth)) + if (request->request_mode & (CWWidth | CWHeight | CWBorderWidth)) { Dimension cw,ch ; /* children's preferred size */ Dimension aw,ah ; /* available size we can give child */ Dimension th ; /* space used by tabs */ Dimension wid,hgt ; /* Tabs widget size */ + int check_nrows; = - cw =3D tw->tabs.max_cw ; - ch =3D tw->tabs.max_ch ; + cw =3D control->tabs.max_cw ; + ch =3D control->tabs.max_ch ; = /* find out what *my* resulting preferred size would be */ - - PreferredSize2(tw, cw, ch, &wid, &hgt) ; + /* #### this whole API is wrong; what should happen is + 1. app should hint as to #rows and/or aspect ratio + 2. tab control should attempt to layout in current space + 3. if not all tabs fit, should request resize to achieve + layout hints + Probably can and should cache preferred size in widget, with + cache cleared when labels or core size changes. */ + PreferredSize2(control, cw, ch, &wid, &hgt) ; = /* Would my size change? If so, ask to be resized. */ = - if( wid !=3D tw->core.width || hgt !=3D tw->core.height ) + if (wid !=3D control->core.width || hgt !=3D control->core.height) { - Dimension oldWid =3D tw->core.width, oldHgt =3D tw->core.height ; + Dimension oldWid =3D control->core.width, + oldHgt =3D control->core.height; XtWidgetGeometry myrequest, myreply ; = myrequest.width =3D wid ; @@ -870,10 +1034,11 @@ TabsGeometryManager(Widget w, XtWidgetGe * offer the child a compromise, then make this a query only. */ = - if( (req->request_mode & XtCWQueryOnly) || rw < cw || rh < ch ) - myrequest.request_mode |=3D XtCWQueryOnly ; + if ((request->request_mode & XtCWQueryOnly) || rw < cw || rh < ch) + myrequest.request_mode |=3D XtCWQueryOnly; = - result =3D XtMakeGeometryRequest((Widget)tw, &myrequest, &myreply) ; + result =3D XtMakeGeometryRequest ((Widget) control, + &myrequest, &myreply); = /* !$@# Athena Box widget changes the core size even if QueryOnly * is set. I'm convinced this is a bug. At any rate, to work @@ -881,81 +1046,104 @@ TabsGeometryManager(Widget w, XtWidgetGe * query geometry request. This is only partly effective, * as there may be other boxes further up the tree. */ - if( myrequest.request_mode & XtCWQueryOnly ) { - tw->core.width =3D oldWid ; - tw->core.height =3D oldHgt ; + if (myrequest.request_mode & XtCWQueryOnly) { + control->core.width =3D oldWid; + control->core.height =3D oldHgt; } = /* based on the parent's response, determine what the * resulting Tabs widget size would be. */ = - switch( result ) { + switch (result) { case XtGeometryYes: case XtGeometryDone: - tw->tabs.needs_layout =3D True ; - break ; + control->tabs.needs_layout =3D True; + break; = case XtGeometryNo: - wid =3D tw->core.width ; - hgt =3D tw->core.height ; - break ; + wid =3D control->core.width; + hgt =3D control->core.height; + break; = case XtGeometryAlmost: - wid =3D myreply.width ; - hgt =3D myreply.height ; - tw->tabs.needs_layout =3D True ; - break ; + wid =3D myreply.width; + hgt =3D myreply.height; + control->tabs.needs_layout =3D True; + break; } } = /* Within the constraints imposed by the parent, what is * the max size we can give the child? */ - (void) TabLayout(tw, wid, hgt, &th, True) ; - aw =3D wid - 2*s ; - ah =3D hgt - th - 2*s ; + check_nrows =3D TabLayout (control, wid, hgt, &th, True); + aw =3D wid - 2*s; + if (check_nrows =3D=3D 1) + { + ah =3D hgt - th - 2*s; + } + else + { + /* this rarely gets triggered, but when it does it seems to + get triggered forever after */ + int n =3D control->composite.num_children; + ah =3D control->tabs.tab_height; + if (debug_tabs > 0) + fprintf (stderr, "Kludging around %d !=3D 1 rows," + " #children =3D %d, total height %d, using %d.\n", + check_nrows, n, th, ah); + } = /* OK, make our decision. If requested size is >=3D max sibling * preferred size, AND requested size <=3D available size, then * we accept. Otherwise, we offer a compromise. */ = - if( rw =3D=3D aw && rh =3D=3D ah ) + if (rw =3D=3D aw && rh =3D=3D ah) { /* Acceptable. If this wasn't a query, change *all* children * to this size. */ - if( req->request_mode & XtCWQueryOnly ) - return XtGeometryYes ; + if (request->request_mode & XtCWQueryOnly) + { + control->tabs.needs_layout =3D False; + return XtGeometryYes ; + } else { - Widget *childP =3D tw->composite.children ; - int i,bw ; - w->core.border_width =3D req->border_width ; - for(i=3DTabsNumChildren (tw); --i >=3D 0; ++childP) - if( TabVisible(*childP) ) + Widget *childP =3D control->composite.children; + int i, bw; + tab->core.border_width =3D request->border_width; + for (i =3D TabsNumChildren (control); --i >=3D 0; ++childP) + if (TabVisible (*childP)) { - bw =3D (*childP)->core.border_width ; - XtConfigureWidget(*childP, s,tw->tabs.tab_total+s, - rw-2*bw, rh-2*bw, bw) ; + bw =3D (*childP)->core.border_width; + XtConfigureWidget (*childP, s, control->tabs.tab_total+s, + rw-2*bw, rh-2*bw, bw); } #ifdef COMMENT /* TODO: under what conditions will we need to redraw? */ - XClearWindow(XtDisplay((Widget)tw), XtWindow((Widget)tw)) ; - XtClass(tw)->core_class.expose((Widget)tw,NULL,NULL) ; + XClearWindow (XtDisplay ((Widget) control), + XtWindow ((Widget) control)); + XtClass (control)->core_class.expose ((Widget)control, + NULL, NULL); #endif /* COMMENT */ - return XtGeometryDone ; + return XtGeometryDone; } } = /* Cannot grant child's request. Describe what we *can* do * and return counter-offer. */ - reply->width =3D aw - 2 * req->border_width ; - reply->height =3D ah - 2 * req->border_width ; - reply->border_width =3D req->border_width ; - reply->request_mode =3D CWWidth | CWHeight | CWBorderWidth ; + control->tabs.needs_layout =3D False; + reply->width =3D aw - 2 * request->border_width ; + reply->height =3D ah - 2 * request->border_width ; + reply->request_mode &=3D + ~((reply->border_width =3D=3D tab->core.border_width + ? CWBorderWidth : 0) + |(reply->width =3D=3D tab->core.width ? CWWidth : 0) + |(reply->height =3D=3D tab->core.height ? CWHeight : 0)); return XtGeometryAlmost ; } = @@ -1428,6 +1616,8 @@ DrawTab(TabsWidget tw, Widget child, Boo GC gc ; int x,y ; = + if (debug_tabs > 1) fprintf (stderr, "DrawTab called.\n"); + if( !XtIsRealized((Widget)tw)) return ; = @@ -1440,55 +1630,142 @@ DrawTab(TabsWidget tw, Widget child, Boo Window win =3D XtWindow((Widget)tw) ; String lbl =3D tab->tabs.label !=3D NULL ? tab->tabs.label : XtName(child) ; +#ifdef USE_XFT_TABS + XftColor color; + XftColor colorBG; + Colormap cmap =3D tw->core.colormap; + Visual *visual; + int ignored; + + visual_info_from_widget ((Widget) tw, &visual, &ignored); + colorBG =3D xft_convert_color (dpy, cmap, visual, + tw->core.background_pixel, 0); +#endif + + if (debug_tabs > 2) + fprintf (stderr, "(Re)drawing labels.\n"); = - if( XtIsSensitive(child) ) + if (XtIsSensitive(child)) { - gc =3D tw->tabs.foregroundGC ; - XSetForeground(dpy, gc, tab->tabs.foreground) ; + gc =3D tw->tabs.foregroundGC; +#ifdef USE_XFT_TABS + color =3D xft_convert_color (dpy, cmap, visual, + tab->tabs.foreground, 0); +#else + XSetForeground(dpy, gc, tab->tabs.foreground); +#endif } else { /* grey pixel allocation deferred until now */ - if( !tab->tabs.greyAlloc ) + if (!tab->tabs.greyAlloc) { - if( tw->tabs.be_nice_to_cmap || tw->core.depth =3D=3D 1 ) - tab->tabs.grey =3D tab->tabs.foreground ; + if (tw->tabs.be_nice_to_cmap || tw->core.depth =3D=3D 1) + tab->tabs.grey =3D tab->tabs.foreground; else - tab->tabs.grey =3D AllocGreyPixel((Widget)tw, + tab->tabs.grey =3D AllocGreyPixel ((Widget) tw, tab->tabs.foreground, tw->core.background_pixel, - tw->tabs.insensitive_contrast ) ; - tab->tabs.greyAlloc =3D True ; + tw->tabs.insensitive_contrast); + tab->tabs.greyAlloc =3D True; } - gc =3D tw->tabs.greyGC ; - XSetForeground(dpy, gc, tab->tabs.grey) ; + gc =3D tw->tabs.greyGC; +#ifdef USE_XFT_TABS + color =3D xft_convert_color (dpy, cmap, visual, tab->tabs.grey, 0); +#else + XSetForeground(dpy, gc, tab->tabs.grey); +#endif } = - x =3D tab->tabs.x ; - y =3D tab->tabs.y ; - if( child =3D=3D tw->tabs.topWidget ) - y -=3D TABLDELTA ; + x =3D tab->tabs.x; + y =3D tab->tabs.y; + if (child =3D=3D tw->tabs.topWidget) + y -=3D TABLDELTA; = - if( tab->tabs.left_bitmap !=3D None && tab->tabs.lbm_width > 0 ) + if (tab->tabs.left_bitmap !=3D None && tab->tabs.lbm_width > 0) { - if( tab->tabs.lbm_depth =3D=3D 1 ) + if (tab->tabs.lbm_depth =3D=3D 1) XCopyPlane(dpy, tab->tabs.left_bitmap, win,gc, 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height, - x+tab->tabs.lbm_x, y+tab->tabs.lbm_y, 1L) ; + x+tab->tabs.lbm_x, y+tab->tabs.lbm_y, 1L); else XCopyArea(dpy, tab->tabs.left_bitmap, win,gc, 0,0, tab->tabs.lbm_width, tab->tabs.lbm_height, - x+tab->tabs.lbm_x, y+tab->tabs.lbm_y) ; + x+tab->tabs.lbm_x, y+tab->tabs.lbm_y); } = - if( lbl !=3D NULL && tw->tabs.font !=3D NULL ) - XDrawString(dpy,win,gc, - x+tab->tabs.l_x, y+tab->tabs.l_y, - lbl, (int)strlen(lbl)) ; + if (lbl !=3D NULL && +#ifdef USE_XFT_TABS + tw->tabs.renderFont !=3D NULL +#else + tw->tabs.font !=3D NULL +#endif + ) + { +#ifdef USE_XFT_TABS + XftDraw *xftDraw =3D XftDrawCreate (dpy, win, visual, cmap); + XftFont *renderFont =3D tw->tabs.renderFont; + XGlyphInfo glyphinfo; + XftColor colorDBG; + XftColorAllocName (dpy, visual, cmap, "wheat", &colorDBG); + XftTextExtents8 (dpy, renderFont, lbl, (int) strlen (lbl), + &glyphinfo); + /* #### unnecessary? for the moment, give visual extent */ + /* draw background rect */ +#if 1 + if (debug_tabs > 2) + { + fprintf (stderr, "background color: pixel=3D%08lx, r=3D%04x," + " g=3D%04x, b=3D%04x, alpha=3D%04x.\n", + colorDBG.pixel, colorDBG.color.red, + colorDBG.color.green, colorDBG.color.blue, + colorDBG.color.alpha); + fprintf (stderr, "label geometry: x=3D%d, y=3D%d, xOff=3D%d," + " yOff=3D%d, width=3D%d, height=3D%d\n", + glyphinfo.x, glyphinfo.y, glyphinfo.xOff, + glyphinfo.yOff, glyphinfo.width, glyphinfo.height); + } + XftDrawRect (xftDraw, &colorDBG, + /* left, top, width, height */ + x+tab->tabs.l_x-glyphinfo.x, + y+tab->tabs.l_y-glyphinfo.y, + glyphinfo.width, glyphinfo.height); +#endif + /* draw text */ + if (debug_tabs > 2) + { + FcValue name; + FcValue size; + FcPatternGet (renderFont->pattern, FC_FAMILY, 0, &name); + FcPatternGet (renderFont->pattern, FC_SIZE, 0, &size); + fprintf (stderr, "label: %s.\n", lbl); + fprintf (stderr, "foreground color: pixel=3D%08lx, r=3D%04x," + " g=3D%04x, b=3D%04x, alpha=3D%04x.\n", + color.pixel, color.color.red, color.color.green, + color.color.blue, color.color.alpha); + fprintf (stderr, "extent: x=3D%d, y=3D%d, xOffset=3D%d," + " yOffset=3D%d, height=3D%d, width=3D%d.\n", + glyphinfo.x, glyphinfo.y, glyphinfo.xOff, + glyphinfo.yOff, glyphinfo.height, glyphinfo.width); + fprintf (stderr, "font: name=3D%s-%.1f," + " height=3D%d, ascent=3D%d, descent=3D%d.\n", + name.u.s, size.u.d, renderFont->height, + renderFont->ascent, renderFont->descent); + } + XftDrawString8 (xftDraw, &color, renderFont, + x+tab->tabs.l_x, y+tab->tabs.l_y, + lbl, (int) strlen (lbl)); + XftDrawDestroy (xftDraw); +#else + XDrawString(dpy,win,gc, + x+tab->tabs.l_x, y+tab->tabs.l_y, + lbl, (int)strlen(lbl)); +#endif + } } = - if( child =3D=3D tw->tabs.hilight ) - DrawHighlight(tw, child, False) ; + if (child =3D=3D tw->tabs.hilight) + DrawHighlight(tw, child, False); } = = @@ -1689,9 +1966,13 @@ TabWidth(Widget w) TabsConstraints tab =3D (TabsConstraints) w->core.constraints ; TabsWidget tw =3D (TabsWidget)XtParent(w) ; String lbl =3D tab->tabs.label !=3D NULL ? - tab->tabs.label : XtName(w) ; - XFontStruct *font =3D tw->tabs.font ; - int iw =3D tw->tabs.internalWidth ; + tab->tabs.label : XtName(w); +#ifdef USE_XFT_TABS + XftFont *font =3D tw->tabs.renderFont; +#else + XFontStruct *font =3D tw->tabs.font; +#endif + int iw =3D tw->tabs.internalWidth; = tab->tabs.width =3D iw + SHADWID*2 ; tab->tabs.l_x =3D tab->tabs.lbm_x =3D SHADWID + iw ; @@ -1705,10 +1986,27 @@ TabWidth(Widget w) = if( lbl !=3D NULL && font !=3D NULL ) { - tab->tabs.width +=3D XTextWidth( font, lbl, (int)strlen(lbl) ) + iw ; +#ifdef USE_XFT_TABS + tab->tabs.width +=3D x_xft_text_width (XtDisplay(tw), font, + lbl, (int)strlen(lbl)) + iw; + tab->tabs.l_y =3D (tw->tabs.tab_height + + tw->tabs.renderFont->ascent + /* #### how can this subtraction be correct? */ + - tw->tabs.renderFont->descent)/2; + if (debug_tabs > 2) + fprintf (stderr, "tab: height=3D%d, width=3D%d, baseline=3D%d.\n", + tw->tabs.tab_height, tab->tabs.width, tab->tabs.l_y); + if (debug_tabs > 1) + fprintf (stderr, "font: height=3D%d, ascent=3D%d, descent=3D%d.\n", + tw->tabs.renderFont->height, + tw->tabs.renderFont->ascent, + tw->tabs.renderFont->descent); +#else + tab->tabs.width +=3D XTextWidth (font, lbl, (int)strlen(lbl)) + iw; tab->tabs.l_y =3D (tw->tabs.tab_height + tw->tabs.font->max_bounds.ascent - - tw->tabs.font->max_bounds.descent)/2 ; + tw->tabs.font->max_bounds.descent)/2; +#endif } } = @@ -1723,19 +2021,32 @@ TabWidth(Widget w) * * TODO: if they require more than two rows and the total height:width * ratio is more than 2:1, then try something else. + * Gaak! This is actually already done in PreferredSize()! + * + * TODO SOONER: for reasons unclear, some applications (specifically + * XEmacs) give a nominal geometry (in the core record) which doesn't + * make much sense (eg, may be smaller than some of the tab children). + * This results in bizarre values for DISPLAY_ROWS and REPLY_HEIGHT. + * Specify a way to say "tell me what you really want" (eg, with WID + * and/or HGT =3D=3D 0 or =3D=3D Dimension_MAX), and use it where appropr= iate. + * LATE-BREAKING LOSE: This happens in PreferredSize(), not XEmacs! + * + * TODO EVEN SOONER: some applications lay out the tab control by + * repeatedly querying until a fixed width and height has been filled + * by the tabs (XEmacs). There should be an API to cache this? */ = static int TabLayout(TabsWidget tw, = - Dimension wid, = - Dimension hgt, = + Dimension wid, /* if 0, use core.width as guess */ + Dimension hgt, /* if 0, use core.height as guess */ Dimension *reply_height, Bool query_only) { int i, row, done =3D 0, display_rows =3D 0 ; int num_children =3D tw->composite.num_children ; Widget *childP ; Dimension w ; - Position x,y ; + Position x,y ; /* #### gaak, these are dimensions! */ TabsConstraints tab ; = /* Algorithm: loop through children, assign X positions. If a tab @@ -1750,22 +2061,33 @@ TabLayout(TabsWidget tw, = row =3D 0 ; x =3D INDENT ; y =3D 0 ; - wid -=3D INDENT ; + /* If wid or hgt is 0, we want to guess our own dimensions. + Currently the guessing functions are broken.... + #### When PreferredSize*() get fixed, fix this too. */ + if (debug_tabs > 0) + fprintf (stderr, "arg=3D%d,", wid); + wid =3D (wid ? wid : tw->core.width) - INDENT ; + hgt =3D hgt ? hgt : tw->core.height; + if (debug_tabs > 0) + fprintf (stderr, "wid=3D%d: x,w,y=3D", wid); for(i=3Dnum_children, childP=3Dtw->composite.children; --i >=3D 0; ++ch= ildP) if( XtIsManaged(*childP) ) { tab =3D (TabsConstraints) (*childP)->core.constraints ; w =3D tab->tabs.width ; = + if (debug_tabs > 0) + fprintf (stderr, "%d,%d,%d;", x, w, y); if( x + w > wid ) { /* new row */ - if (y + tw->tabs.tab_height > hgt && !done) + /* #### algorithm is not robust to wid < child's width */ + ++row; + x =3D INDENT ; + y +=3D tw->tabs.tab_height ; + if (y > hgt && !done) { display_rows =3D row; done =3D 1; } - ++row; - x =3D INDENT ; - y +=3D tw->tabs.tab_height ; } if( !query_only ) { tab->tabs.x =3D x ; @@ -1777,10 +2099,11 @@ TabLayout(TabsWidget tw, = tab->tabs.visible =3D 1; = } + if (debug_tabs > 0) + fprintf (stderr, "\n"); /* If there was only one row, increase the height by TABDELTA */ if( ++display_rows =3D=3D 1 ) { - row++; y =3D TABDELTA ; if( !query_only ) for(i=3Dnum_children, childP=3Dtw->composite.children; @@ -1791,6 +2114,7 @@ TabLayout(TabsWidget tw, = tab->tabs.y =3D y ; } } + row++; y +=3D tw->tabs.tab_height ; } else @@ -1802,6 +2126,12 @@ TabLayout(TabsWidget tw, = tw->tabs.realRows =3D row; } = + if (debug_tabs > 0 && (row > 1 || display_rows > 1)) + fprintf (stderr, "tab: %d display rows, #children =3D %d," + " total height %d, total rows %d%s.\n", + display_rows, num_children, y, row, + query_only ? " (query)" : ""); + if( reply_height !=3D NULL ) *reply_height =3D y ; = @@ -1822,8 +2152,8 @@ GetPreferredSizes(TabsWidget tw) = = = - /* Find max preferred child size. Returned sizes include child - * border widths. If except is non-null, don't ask that one. + /* Find max preferred child size and store in control widget. + * If except is non-null, don't ask that one. */ = static void @@ -2009,7 +2339,10 @@ PreferredSize3( int nrows ; = if( tw->composite.num_children > 0 ) - nrows =3D TabLayout(tw, wid, hgt, &th, True) ; + /* used to be wid, hgt not 0, 0 but that's obviously wrong + since TabLayout wants dimensions of control parent but + wid, hgt are dimensions of some child */ + nrows =3D TabLayout(tw, 0, 0, &th, True) ; else { th =3D 0 ; nrows =3D 0 ; @@ -2091,17 +2424,29 @@ TabsAllocFgGC(TabsWidget tw) Widget w =3D (Widget) tw; XGCValues values ; = - values.background =3D tw->core.background_pixel ; - values.font =3D tw->tabs.font->fid ; - values.line_style =3D LineOnOffDash ; - values.line_style =3D LineSolid ; + values.background =3D tw->core.background_pixel; + values.font =3D +#ifdef USE_XFT_TABS + None; +#else + tw->tabs.font->fid; +#endif + values.line_style =3D LineOnOffDash; + values.line_style =3D LineSolid; = tw->tabs.foregroundGC =3D XtAllocateGC(w, w->core.depth, - GCBackground|GCFont|GCLineStyle, &values, - GCForeground, - GCSubwindowMode|GCGraphicsExposures|GCDashOffset| - GCDashList|GCArcMode) ; +#ifndef USE_XFT_TABS + GCFont| +#endif + GCBackground|GCLineStyle, + &values, + GCForeground, +#ifdef USE_XFT_TABS + GCFont| +#endif + GCSubwindowMode|GCGraphicsExposures|GCDashOffset| + GCDashList|GCArcMode); } = static void @@ -2110,30 +2455,49 @@ TabsAllocGreyGC(TabsWidget tw) Widget w =3D (Widget) tw; XGCValues values ; = - values.background =3D tw->core.background_pixel ; - values.font =3D tw->tabs.font->fid ; + values.background =3D tw->core.background_pixel; + values.font =3D +#ifdef USE_XFT_TABS + None; +#else + tw->tabs.font->fid; +#endif #ifdef HAVE_XMU - if( tw->tabs.be_nice_to_cmap || w->core.depth =3D=3D 1) + if (tw->tabs.be_nice_to_cmap || w->core.depth =3D=3D 1) { - values.fill_style =3D FillStippled ; + values.fill_style =3D FillStippled; tw->tabs.grey50 =3D - values.stipple =3D XmuCreateStippledPixmap(XtScreen(w), 1L, 0L, 1) ; + values.stipple =3D XmuCreateStippledPixmap(XtScreen(w), 1L, 0L, 1); = tw->tabs.greyGC =3D XtAllocateGC(w, w->core.depth, - GCBackground|GCFont|GCStipple|GCFillStyle, &values, +#ifndef USE_XFT_TABS + GCFont| +#endif + GCBackground|GCStipple|GCFillStyle, &values, GCForeground, +#ifdef USE_XFT_TABS + GCFont| +#endif GCSubwindowMode|GCGraphicsExposures|GCDashOffset| - GCDashList|GCArcMode) ; + GCDashList|GCArcMode); } else #endif { tw->tabs.greyGC =3D XtAllocateGC(w, w->core.depth, - GCFont, &values, +#ifdef USE_XFT_TABS + 0L, +#else + GCFont, +#endif + &values, GCForeground, +#ifdef USE_XFT_TABS + GCFont| +#endif GCBackground|GCSubwindowMode|GCGraphicsExposures|GCDashOffset| - GCDashList|GCArcMode) ; + GCDashList|GCArcMode); } } 1.3 +7 -0 XEmacs/xemacs/lwlib/xlwtabsP.h Index: xlwtabsP.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/xlwtabsP.h,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- xlwtabsP.h 2001/04/12 18:21:57 1.2 +++ xlwtabsP.h 2005/11/26 11:46:00 1.3 @@ -41,6 +41,9 @@ Boston, MA 02111-1307, USA. */ #endif = #include "xlwtabs.h" +#ifdef USE_XFT_TABS +#include +#endif = /* New fields for the Tabs widget class record */ typedef struct {XtPointer extension;} TabsClassPart; @@ -70,6 +73,10 @@ extern TabsClassRec tabsClassRec; typedef struct { /* resources */ XFontStruct *font ; +#ifdef USE_XFT_TABS + String renderFontSpec; + XftFont *renderFont; +#endif Dimension internalHeight, internalWidth ; Widget topWidget ; XtCallbackList callbacks ; 1.2 +361 -0 XEmacs/xemacs/lwlib/lwlib-colors.c Index: lwlib-colors.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: lwlib-colors.c diff -N lwlib-colors.c --- /dev/null Sat Nov 26 12:46:01 2005 +++ /tmp/cvsAAANcaWRX Sat Nov 26 12:46:02 2005 @@ -0,0 +1,361 @@ +/* Color data structures for X and Xft. + +Copyright (C) 2004 Free Software Foundation, Inc. + +Author: Stephen J. Turnbull +Created: 24 Jul 2004 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +#include +#include /* for ULONG_MAX */ +#include /* for malloc() */ +#include +#include +#include +#include /* for ShellWidget */ +#include "lwlib-colors.h" + +static int debug_colors =3D 1; + +#ifdef __cplusplus +#define X_CLASSFIELD c_class +#else +#define X_CLASSFIELD class +#endif + +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) + +/* WIDGET is an Xt widget, VISUAL and DEPTH are return values */ +void +visual_info_from_widget (Widget widget, Visual **visual, int *depth) +{ + /* grab the visual and depth from the nearest shell ancestor */ + Widget p =3D XtParent(widget); + + *visual =3D CopyFromParent; + *depth =3D -1; + while (*visual =3D=3D CopyFromParent && p) + { + if (XtIsShell(p)) + { + *visual =3D ((ShellWidget)p)->shell.visual; + *depth =3D p->core.depth; + } + p =3D XtParent(p); + } + if (*visual =3D=3D CopyFromParent || !*visual) + { + if (debug_colors > 1) + fprintf (stderr, "\nvisual_info_from_widget:" + " failed, using DefaultVisualOfScreen"); + *visual =3D DefaultVisualOfScreen (XtScreen (widget)); + *depth =3D DefaultDepthOfScreen (XtScreen (widget)); + } + else if (debug_colors > 1) + fprintf (stderr, "\nvisual_info_from_widget: succeeded"); +} + +/* Do we need all this hair on modern hardware? */ + +/* Replacement for XAllocColor() that tries to return the nearest + available color if the colormap is full. Original was from FSFmacs, + but rewritten by Jareth Hein 97/11/25 + Modified by Lee Kindness 31/08/99 to handle pre= vious + total failure which was due to a read/write colorcell being the nearest + match - tries the next nearest... + + Return value is 1 for normal success, 2 for nearest color success, + 3 for Non-deallocable success. */ +int +x_allocate_nearest_color (Display *display, Colormap colormap, + Visual *visual, XColor *color_def) +{ + int status; + + /* #### [[Apparently this is often called with data derived from a widget + with no ShellWidget ancestor, or before the shell has a visual. + Currently this recovery code is in xlwmenu.c and xlwscrollbar.c, but + likely should come here.]] + I suspect the problem is that the visual-tracing code was improperly + written, missing a level of indirection. + CopyFromParent =3D=3D NULL in XFree86/Darwin. + */ + if (visual =3D=3D CopyFromParent || !visual) + { + Screen *screen =3D DefaultScreenOfDisplay (display); + fprintf (stderr, "\nx_allocate_nearest_color: bad visual (%08lx)", + (unsigned long) visual); + visual =3D DefaultVisualOfScreen (screen); + } + + if (visual->X_CLASSFIELD =3D=3D DirectColor || visual->X_CLASSFIELD =3D= =3D TrueColor) + { + if (XAllocColor (display, colormap, color_def) !=3D 0) + { + status =3D 1; + } + else + { + /* We're dealing with a TrueColor/DirectColor visual, so play games + with the RGB values in the XColor struct. */ + /* #### JH: I'm not sure how a call to XAllocColor can fail in a + TrueColor or DirectColor visual, so I will just reformat the + request to match the requirements of the visual, and re-issue + the request. If this fails for anybody, I wanna know about it + so I can come up with a better plan */ + + unsigned long rshift,gshift,bshift,rbits,gbits,bbits,junk; + junk =3D visual->red_mask; + rshift =3D 0; + while ((junk & 0x1) =3D=3D 0) { + junk =3D junk >> 1; + rshift ++; + } + rbits =3D 0; + while (junk !=3D 0) { + junk =3D junk >> 1; + rbits++; + } + junk =3D visual->green_mask; + gshift =3D 0; + while ((junk & 0x1) =3D=3D 0) { + junk =3D junk >> 1; + gshift ++; + } + gbits =3D 0; + while (junk !=3D 0) { + junk =3D junk >> 1; + gbits++; + } + junk =3D visual->blue_mask; + bshift =3D 0; + while ((junk & 0x1) =3D=3D 0) { + junk =3D junk >> 1; + bshift ++; + } + bbits =3D 0; + while (junk !=3D 0) { + junk =3D junk >> 1; + bbits++; + } + + color_def->red =3D color_def->red >> (16 - rbits); + color_def->green =3D color_def->green >> (16 - gbits); + color_def->blue =3D color_def->blue >> (16 - bbits); + if (XAllocColor (display, colormap, color_def) !=3D 0) + status =3D 1; + else + { + int rd, gr, bl; + /* #### JH: I'm punting here, knowing that doing this will at + least draw the color correctly. However, unless we convert + all of the functions that allocate colors (graphics + libraries, etc) to use this function doing this is very + likely to cause problems later... */ + + if (rbits > 8) + rd =3D color_def->red << (rbits - 8); + else + rd =3D color_def->red >> (8 - rbits); + if (gbits > 8) + gr =3D color_def->green << (gbits - 8); + else + gr =3D color_def->green >> (8 - gbits); + if (bbits > 8) + bl =3D color_def->blue << (bbits - 8); + else + bl =3D color_def->blue >> (8 - bbits); + color_def->pixel =3D (rd << rshift) | (gr << gshift) | (bl << + bshift); + status =3D 3; + } + } + } + else + { + XColor *cells =3D NULL; + /* JH: I can't believe there's no way to go backwards from a + colormap ID and get its visual and number of entries, but X + apparently isn't built that way... */ + int no_cells =3D visual->map_entries; + status =3D 0; + + if (XAllocColor (display, colormap, color_def) !=3D 0) + status =3D 1; + else while( status !=3D 2 ) + { + /* If we got to this point, the colormap is full, so we're + going to try and get the next closest color. The algorithm used + is a least-squares matching, which is what X uses for closest + color matching with StaticColor visuals. */ + int nearest; + long nearest_delta, trial_delta; + int x; + + if( cells =3D=3D NULL ) + { + /* #### this could be annoyingly slow + tell me again why lwlib can't use alloca & friends? */ + cells =3D (XColor *) malloc (sizeof(XColor)*no_cells); + for (x =3D 0; x < no_cells; x++) + cells[x].pixel =3D x; + + /* read the current colormap */ + XQueryColors (display, colormap, cells, no_cells); + } + + nearest =3D 0; + /* I'm assuming CSE so I'm not going to condense this. */ + nearest_delta =3D ((((color_def->red >> 8) - (cells[0].red >> 8)) + * ((color_def->red >> 8) - (cells[0].red >> 8))) + + + (((color_def->green >> 8) - (cells[0].green >> 8)) + * ((color_def->green >> 8) - (cells[0].green >> + 8))) + + + (((color_def->blue >> 8) - (cells[0].blue >> 8)) + * ((color_def->blue >> 8) - (cells[0].blue >> + 8)))); + for (x =3D 1; x < no_cells; x++) + { + trial_delta =3D ((((color_def->red >> 8) - (cells[x].red >> 8)) + * ((color_def->red >> 8) - (cells[x].red >> 8))) + + + (((color_def->green >> 8) - (cells[x].green >> 8)) + * ((color_def->green >> 8) - (cells[x].green >> + 8))) + + + (((color_def->blue >> 8) - (cells[x].blue >> 8)) + * ((color_def->blue >> 8) - (cells[x].blue >> + 8)))); + + /* less? Ignore cells marked as previously failing */ + if( (trial_delta < nearest_delta) && + (cells[x].pixel !=3D ULONG_MAX) ) + { + nearest =3D x; + nearest_delta =3D trial_delta; + } + } + color_def->red =3D cells[nearest].red; + color_def->green =3D cells[nearest].green; + color_def->blue =3D cells[nearest].blue; + if (XAllocColor (display, colormap, color_def) !=3D 0) + status =3D 2; + else + /* LSK: Either the colour map has changed since + * we read it, or the colour is allocated + * read/write... Mark this cmap entry so it's + * ignored in the next iteration. + */ + cells[nearest].pixel =3D ULONG_MAX; + } + } + return status; +} + +#if 0 +/* Replacement for XAllocColor() that tries to return the nearest + available color if the colormap is full. From GNU Emacs. + #### Review this to see if there's anything our hairy version could use= . */ + +int +FIXME_allocate_nearest_color (Display *display, Colormap screen_colormap, + XColor *color_def) +{ + int status =3D XAllocColor (display, screen_colormap, color_def); + if (status) + return status; + + { + /* If we got to this point, the colormap is full, so we're + going to try to get the next closest color. + The algorithm used is a least-squares matching, which is + what X uses for closest color matching with StaticColor visuals. */ + + int nearest, x; + unsigned long nearest_delta =3D ULONG_MAX; + + int no_cells =3D XDisplayCells (display, XDefaultScreen (display)); + /* Don't use alloca here because lwlib doesn't have the + necessary configuration information that src does. */ + XColor *cells =3D (XColor *) malloc (sizeof (XColor) * no_cells); + + for (x =3D 0; x < no_cells; x++) + cells[x].pixel =3D x; + + XQueryColors (display, screen_colormap, cells, no_cells); + + for (nearest =3D 0, x =3D 0; x < no_cells; x++) + { + long dred =3D (color_def->red >> 8) - (cells[x].red >> 8); + long dgreen =3D (color_def->green >> 8) - (cells[x].green >> 8); + long dblue =3D (color_def->blue >> 8) - (cells[x].blue >> 8); + unsigned long delta =3D dred * dred + dgreen * dgreen + dblue * dblue; + + if (delta < nearest_delta) + { + nearest =3D x; + nearest_delta =3D delta; + } + } + color_def->red =3D cells[nearest].red; + color_def->green =3D cells[nearest].green; + color_def->blue =3D cells[nearest].blue; + free (cells); + return XAllocColor (display, screen_colormap, color_def); + } +} +#endif + + +#ifdef USE_XFT + +XftColor +xft_convert_color (Display *dpy, Colormap cmap, Visual *visual, int c, int= dim) +{ + static XColor color; /* #### why is this static ?? */ + XftColor result; + = + color.pixel =3D c; + XQueryColor(dpy, cmap, &color); + + if (dim) + { + color.red =3D MINL (65535, color.red * 1.5); + color.green =3D MINL (65535, color.green * 1.5); + color.blue =3D MINL (65535, color.blue * 1.5); + x_allocate_nearest_color (dpy, cmap, visual, &color); + } = + + result.pixel =3D color.pixel; + result.color.red =3D color.red; + result.color.green =3D color.green; + result.color.blue =3D color.blue; + result.color.alpha =3D 0xffff; + = + return result; +} + +#endif /* USE_XFT */ + +/* end of lwlib-colors.c */ 1.2 +59 -0 XEmacs/xemacs/lwlib/lwlib-colors.h Index: lwlib-colors.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: lwlib-colors.h diff -N lwlib-colors.h --- /dev/null Sat Nov 26 12:46:01 2005 +++ /tmp/cvsAAAHeaiSX Sat Nov 26 12:46:02 2005 @@ -0,0 +1,59 @@ +/* Color data structures for X and Xft. + +Copyright (C) 2004 Free Software Foundation, Inc. + +Author: Stephen J. Turnbull +Created: 24 Jul 2004 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +#ifndef INCLUDED_lwlib_colors_h_ +#define INCLUDED_lwlib_colors_h_ + +#include + +/* WIDGET is an Xt widget, VISUAL and DEPTH are return values */ +void visual_info_from_widget (Widget widget, Visual **visual, int *depth); + +/* basic version from xlwmenu.c */ +int FIXME_allocate_nearest_color (Display *display, Colormap screen_colorm= ap, + XColor *color_def); +/* haired-up version from ../src/objects-x.c */ +int x_allocate_nearest_color (Display *display, Colormap screen_colormap, + Visual *visual, XColor *color_def); + +#ifdef USE_XFT +#define _XFT_NO_COMPAT_ +/* shut up GCC */ +#define face_index face_index_arg +#define glyph_index glyph_index_arg +#include +#undef glyph_index +#undef face_index + +#if XFT_MAJOR < 2 +#error Xft versions < 2 not supported +#endif + +XftColor xft_convert_color (Display *dpy, Colormap cmap, Visual *visual, + int c, int dim); +#endif /* USE_XFT */ + +#endif /* INCLUDED_lwlib_colors_h_ */ 1.2 +115 -0 XEmacs/xemacs/lwlib/lwlib-fonts.c Index: lwlib-fonts.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: lwlib-fonts.c diff -N lwlib-fonts.c --- /dev/null Sat Nov 26 12:46:01 2005 +++ /tmp/cvsAAA1faGSX Sat Nov 26 12:46:02 2005 @@ -0,0 +1,115 @@ +/* Font handling code for X and Xft. + +Copyright (C) 2003 Eric Knauel +Copyright (C) 2004 Free Software Foundation, Inc. + +Author: Stephen J. Turnbull +Created: 24 Jul 2004 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +#include +#include +#include +#include "lwlib-fonts.h" + +#if 0 +/* these are all from ../src; if we need them move the code */ +#include "lisp.h" +#include "device.h" +#include "device-impl.h" +#include "console-x-impl.h" +#include "xft-fonts.h" +#endif + +/* + * code for handling Xft + */ + +#ifdef USE_XFT + +/* helper function to correctly open Xft/core fonts by name + #### Can't we use FcParseName here? + #### Is this done so often that the logic needs to be hard-coded in C? + + Daniel Pittman sez: Older code tried to enforce that an XLFD font was + not scaled, while this version just doesn't care. I think that is a + better behavior, since if someone really wants a scaled font we should + oblige them. + + Stephen sez: This whole function was ill-conceived, and I'm not sure it + succeeds at any of the things it attempts to do. First, we should be + using fontconfig directly. I'm not sure what Xft (or fontconfig) will + try to do if passed an XLFD. As for scaled fonts, both options are + equally bad. The problem is that the X server will often scale bitmap + fonts willy-nilly; it's worth trying to avoid that, but I can't say + whether that's worth overriding somebody who knows what they're doing. + In any case, I think we should find out what Xft (fontconfig?) is able + and willing to do with XLFDs, and probably move the logic to LISP. +*/ +XftFont * +xft_open_font_by_name (Display *dpy, char *name) +{ + XftFont *res =3D NULL; + + /* if (!NILP (Fxft_xlfd_font_name_p (make_string (name, strlen (name))))= ) */ + /* #### this is bogus but ... */ + int count =3D 0; + char *pos =3D name; + /* extra parens shut up gcc */ + while ((pos =3D index (pos, '-'))) + { + count++; + pos++; + } + + /* #### hard-coding DefaultScreen is evil! */ + if (count =3D=3D 14 /* fully-qualified XLFD */ + || (count < 14 /* heuristic for wildcarded XLFD */ + && count >=3D 5 + && index (name, '*'))) + res =3D XftFontOpenXlfd (dpy, DefaultScreen (dpy), name); + else + res =3D XftFontOpenName (dpy, DefaultScreen (dpy), name); + + /* Try for a generic monospace font + #### Why? Menus don't need to line up in columns! */ + if (!res) = + res =3D XftFontOpenName (dpy, DefaultScreen (dpy), "monospace"); + /* Try for anything we can get */ + if (!res) + res =3D XftFontOpenName (dpy, DefaultScreen (dpy), ""); + + if (!res) + { + /* #### This is Just So Wrong ... ! */ + /* sorry folks ... */ + fprintf (stderr, + "Unable to find any usable XFT font, even the defaults!\n"); + abort (); + return 0; + } + + return res; +} + +#endif /* USE_XFT */ + +/* End of lwlib-fonts.c */ 1.2 +67 -0 XEmacs/xemacs/lwlib/lwlib-fonts.h Index: lwlib-fonts.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: lwlib-fonts.h diff -N lwlib-fonts.h --- /dev/null Sat Nov 26 12:46:01 2005 +++ /tmp/cvsAAAgha4SX Sat Nov 26 12:46:02 2005 @@ -0,0 +1,67 @@ +/* Font data structures for X and Xft. + +Copyright (C) 2004 Free Software Foundation, Inc. + +Author: Stephen J. Turnbull +Created: 24 Jul 2004 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +#ifndef INCLUDED_lwlib_fonts_h_ +#define INCLUDED_lwlib_fonts_h_ + +/* get headers */ + +#ifdef USE_XFT +#define _XFT_NO_COMPAT_ +/* shut up GCC */ +#define face_index face_index_arg +#define glyph_index glyph_index_arg +#include +#undef glyph_index +#undef face_index + +#if XFT_MAJOR < 2 +#error Xft versions < 2 not supported +#endif +#endif /* USE_XFT */ + +/* Xt name macros */ + +#ifdef USE_XFT +#ifndef XtNxftFont +#define XtNxftFont "xftFont" +#endif +#ifndef XtCXftFont +#define XtCXftFont "XftFont" +#endif +#endif /* USE_XFT */ + +/* code 'n' stuff */ + +#ifdef USE_XFT +#define FCSTRLEN 512 + +/* non-Lisp prototypes */ +/* #### change this back to _open_name */ +XftFont *xft_open_font_by_name (Display *dpy, char *name); +#endif /* USE_XFT */ + +#endif /* INCLUDED_lwlib_fonts_h_ */ 1.324 +5 -0 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.323 retrieving revision 1.324 diff -u -p -r1.323 -r1.324 --- ChangeLog 2005/11/16 11:54:06 1.323 +++ ChangeLog 2005/11/26 11:46:03 1.324 @@ -1,3 +1,8 @@ +2005-11-22 Stephen J. Turnbull + + * internals/internals.texi (Working with Lisp Objects): Explain + better why DEFSYMBOL is usually preferable to intern. + 2005-11-08 Malcolm Purvis = * internals/internals.texi (The configure Script): Added the 1.893 +542 -1 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.892 retrieving revision 1.893 diff -u -p -r1.892 -r1.893 --- ChangeLog 2005/11/25 01:41:53 1.892 +++ ChangeLog 2005/11/26 11:46:05 1.893 @@ -1,3 +1,542 @@ +2005-11-26 Stephen J. Turnbull + + Merge Xft. + + 2005-11-25 Stephen J. Turnbull + + * objects-x.c: Improve comments. + = + 2005-11-25 Stephen J. Turnbull + + * xft-fonts.h: + * xft-fonts.c: + * redisplay-x.c: + Remove or comment out dead code. + + 2005-11-25 Stephen J. Turnbull + + * objects-x.c (x_find_charset_font): Encapsulate debug print in macro. + + 2005-11-25 Stephen J. Turnbull + + * xft-fonts.h: + * xft-fonts.c: + * objects-x.c: + Xft font names are encoded in UTF-8 (Qxft_font_name_encoding). + + 2005-11-06 Stephen J. Turnbull + + * xft-fonts.h: + * xft-fonts.c: + Substitute new *LCRECORD* macros for #ifdef MC_ALLOC. + + 2005-09-10 Clemens Fruhwirth + + * glyphs-x.c (update_widget_face): Wrap error checking of rf in an + #ifdef USE_XFT. + + 2005-09-25 Stephen J. Turnbull + + * objects-x.c (x_initialize_font_instance): Must encode extname + twice, Qxft_font_name_encoding !=3D Qx_font_name_encoding. + + 2005-09-25 Stephen J. Turnbull + + * objects-x.c (x_finalize_font_instance): Add newline to message. + + 2005-09-24 Stephen J. Turnbull + + * objects-x.c (x_find_charset_font): Give user more control of + debug verbosity. Reduce verbosity at debug_xft=3D1. Reduce + verbosity of truename by removing properties that are rarely + specified from fontconfig font name. + + 2005-09-24 Stephen J. Turnbull + + * objects-x.c (x_find_charset_font): Work around buggy return + value in FcInit(). + + 2005-09-24 Stephen J. Turnbull + + * objects-x.c: Improve various header comments. + (x_font_instance_truename): Remove obsolete #ifdef 0 code. + + 2005-09-06 Stephen J. Turnbull + + * console-x-impl.h (struct x_frame): Rewrite comment. + + * redisplay-x.c (x_output_string): + * frame-x.c (x_delete_frame): + Improve style, let compiler optimize. + + 2005-09-05 Daniel Pittman + + * console-x-impl.h (struct x_frame): New member xftDraw. + (FRAME_X_XFTDRAW): Accessor for xftDraw member. + + * redisplay-x.c (x_output_string): Lazily initialize frame's + xftDraw member, and don't destroy it here. + + * frame-x.c (x_delete_frame): Destroy xftDraw here. + + 2005-08-17 Stephen J. Turnbull + + * xft-fonts.c (Ffc_pattern_create): Improve docstring, remove todo. + (fc_intern): Add todo. + + 2005-08-04 Stephen J. Turnbull + + * xft-fonts.c (finalize_fc_pattern): New static function. + Add it to lcrecord implementation of fc_pattern. + + * xft-fonts.c (Ffc_pattern_destroy): Disable with #if 0. + + 2005-08-03 Stephen J. Turnbull + + -- Minor cleanups. -- + + * xft-fonts.c (Ffc_font_real_pattern): + Update FIXME at top. + (Ffc_font_sort): + (Ffc_font_match): + Improve docstrings. + + * xft-fonts.c (Ffc_pattern_destroy): + Partially protect against double frees. + + -- Eliminate Lisp fc_fontset objects. -- + + * xft-fonts.c (fontset_to_list): New helper function. + (Ffc_list_fonts_pattern_objects): + (Ffc_font_sort): + Made to use `fontset_to_list' and return list. Updated docstrings. + + * xft-fonts.h (struct fc_pattern): Removed fc_fontset member. + (fc_fontset): Removed struct and lrecord declarations and typedef. + (XFCFONTSET): + (wrap_fcfontset): + (FCFONTSETP): + (CHECK_FCFONTSET): + (CONCHECK_FCFONTSET): + (XFCFONTSET_PTR): + Removed macros. + + * xft-fonts.c (fcfontset_description): + (fc_fontset): + (Ffc_fontset_p): + (Ffc_fontset_count): + (Ffc_fontset_destroy): + (Ffc_fontset_ref): + Removed unused functions. + (fcpattern_description): Removed fc_fontset member. + (Ffc_pattern_create): + (Ffc_name_parse): + (Ffc_pattern_duplicate): + (Ffc_pattern_destroy): + (Ffc_font_match): + (Ffc_font_real_pattern): + Removed reference to fc_fontset member. + (syms_of_xft_fonts): Removed DEFSYMBOLs, DEFSUBRs for fc_fontset. + + * lrecord.h (enum lrecord_type): Removed lrecord_fc_fontset. + Removed indicies, which depended on #ifdefs so can't be accurate. + + 2005-07-31 Daniel Pittman + + * xft-fonts.c: Update Ffc_list_fonts_pattern_objects to use the = + FontConfig API nicely, preventing it from rebuilding the list of + available fonts on *every* access. + + 2005-06-16 Stephen J. Turnbull + + * xft-fonts.c: MC_ALLOC-ify. + * xft-fonts.h: MC_ALLOC-ify. + + 2005-04-16 Stephen J. Turnbull + + * xft-fonts.c: Improve comment on property name hash table. + + (Ffc_list_fonts_pattern_objects): + (Ffc_font_sort): + (reinit_vars_of_xft_fonts): + Call FcInit only once in reinit_vars_of_xft_fonts. + + (Ffc_list_fonts_pattern_objects): + (Ffc_font_sort): + Signal error if returned FcFontSet object is NULL. + + (string_list_to_fcobjectset): Use fc_intern. + + * objects-x.c (): Move declaration of `name' out of #ifdef. + + 2005-04-14 Stephen J. Turnbull + + * xft-fonts.c (fc_intern): val is const. + (xft_get_color): Use dead_wrong_type_argument. + + * objects-x.c (Qxft_font_name_encoding): New documentary #define. + (truename_via_XListFonts): Improve comments. + + Followup on Aidan's partial cleanup/Mulization. + + * objects-x.c (DEBUG_XFT0): + (DEBUG_XFT1): + (DEBUG_XFT2): + (PRINT_XFT_PATTERN): + (CHECKING_LANG): + Move to top of font object block. + (DEBUG_XFT3): + (DEBUG_XFT4): + New. + (x_initialize_font_instance): + (x_finalize_font_instance): + Use them. + + (x_font_instance_truename): Comment complaint about structure. + Clarify variable usage by moving declaration inside block. + + (x_find_charset_font): Clarify block structure by eliminating + early returns. Remove bogus "must free" comments. Free FcPattern + objects that were leaking. Use block structure to indicate + lifetimes of FcPattern objects. Use "font" rather than "pattern" + in names of FcPatterns that name fonts rather than search + criteria. Use shortnames more consistently in debug messages. + #ifdef shortname vs longname return values. Correct comment to + note that FcCharSets are Unparsed to ASCII. Don't ever fall + through to X core fonts if we had an Xft font (it should be NULL + anyway). Use Qxft_font_name_encoding; this means we have to parse + FONT separately for Qx_font_name_encoding. + + 2005-04-10 Stephen J. Turnbull + + Xft/fontconfig assumes that strings used as object names are + statically allocated. Implement a hash table to keep track of + them: + + * xft-fonts.c (reinit_vars_of_xft_fonts): Initialize hash table. + (fc_intern): + New static functions. + + (fc_property_name_hash_table): + (fc_standard_properties): + New static variables. + + * symsinit.h (reinit_vars_of_xft_fonts): Declare it. + + * emacs.c (main_1): Call it. Reorder complex_vars_of_xft_fonts. + + Renaming and reorganization: + + * xft-fonts.c: Group FcPattern stuff separately from FcFontSet in + preparation for removing latter from LISP visibility. Use + "pattern" for Lisp_Objects, reserve "fcpat" for FcPatterns. + Similarly change "object" to "property". + + (Ffc_pattern_destroy): + (Ffc_fontset_destroy): + Deprecate these; they should not be LISP-visible. + + (Ffc_pattern_print): Removed. + + (extract_fcapi_string): Make this a macro, because + in C "inline" is a hint. But this _must_ be a macro because it + implicitly uses alloca. + + 2005-04-09 Stephen J. Turnbull + + * xft-fonts.c (fc-pattern-get-antialias): + (fc-pattern-get-dpi): + (fc-pattern-get-family): + (fc-pattern-get-file): + (fc-pattern-get-foundry): + (fc-pattern-get-minspace): + (fc-pattern-get-outline): + (fc-pattern-get-pixelsize): + (fc-pattern-get-rasterizer): + (fc-pattern-get-scalable): + (fc-pattern-get-scale): + (fc-pattern-get-size): + (fc-pattern-get-style): + (fc-pattern-get-xlfd): + (xft-pattern-get-core): + (xft-pattern-get-encoding): + (xft-pattern-get-render): + (fc_get_pattern_bool): + (fc_get_pattern_double): + (fc_get_pattern_integer): + (fc_get_pattern_string): + (xft_font_open_name): + Delete definitions of long-unused functions. + + (syms_of_xft_fonts): + Delete references. + + * xft-fonts.h (fc_get_pattern_bool): + (fc_get_pattern_double): + (fc_get_pattern_integer): + (fc_get_pattern_string): + Delete declarations of long-unused helper functions. + + * xft-fonts.c (Ffc_font_match): s/poosible/possible/ in docstring. + + 2005-04-01 Aidan Kehoe + + * objects-x.c: + * objects-x.c (x_initialize_font_instance): + * objects-x.c (CHECKING_LANG): + General mule-sanity cleanup for the debug messages, to eliminate + the issue Giacomo Boffi saw in + 16970.44359.621213.994821(a)boffi95.stru.polimi.it. = + + * objects-x.c (x_find_charset_font): + Font names are also treated as UTF-8; relatedly, when passing back + the font's full name, the character coverage bitmap isn't included + any more, because that would make it an invalid UTF-8 string. + = + 2005-03-10 Stephen J. Turnbull + + * objects-x.c (charset_table): Fix ISO 639 code for Greek. Reported + by Stefan Holst . + (charset_table): Add information for Hebrew, whine about ISO prices. + + 2005-03-09 Stephen J. Turnbull + + * objects-x.c (x_font_instance_truename): Try to fix XListFonts + crash by not handing random Xft results to core Xlib functions. + Replace bizarre gymnastics with simple FcNameUnparse. + + 2005-03-07 Stephen J. Turnbull + + * objects-x-impl.h: Include lwlib-fonts.h + + * objects-x.c (x_font_instance_truename): = + * glyphs-x.c (update_widget_face): + * frame-x.c (x_update_frame_external_traits): + Use the correct variant of FONT_INSTANCE_{X,XFT}_FONT. + Protect against access of uninitialized objects. + + * redisplay-x.c (x_get_gc): Fix typo. + * (x_output_string): Add comments, clarify logic slightly. + + 2005-03-05 Stephen J. Turnbull + + Refactor language/charset checking in Xft. + + * objects-x.c (struct charset_reporter): New type. + (charset_table): New internal table. + (DEBUG_XFT0): + (DEBUG_XFT1): + (DEBUG_XFT2): + (PRINT_XFT_PATTERN): + (CHECKING_LANG): + New debugging macros. + (mule_to_fc_charset): New function. + (x_find_charset_font): Completely rewrite Xft part using the above. + + Cache knowledge of charset in font instances. + + * objects-impl.h (struct Lisp_Font_Instance): New member charset. + Update comment on use of truename. + * objects.c (syms_of_objects): DEFSUBR Ffont_instance_charset. + (Ffont_instance_charset): New accessor. + (Fmake_font_instance): New argument CHARSET, update charset member. + (font_instantiate): Update call to Fmake_font_instance. + (font_instance_description): Add charset member. + * objects.h (Fmake_font_instance): Update EXFUN. + (Ffont_instance_charset): New EXFUN. + + Make Xft debug level adjustable from Lisp. + + * xft-fonts.c (vars_of_xft_fonts): New DEFVAR_INT + xft-debug-level (from debug_xft), adjust style of xft-version. + * xft-fonts.h (debug_xft): Now Lisp-visible, change declaration. + + Miscellaneous. + + * lisp.h (Vcharset_iso8859_15): Export it. + * faces.h (struct face_cachel): Update comment on space usage. + * faces.c: Comment proposed changes to improve font handling. + * frame-x.c: + * EmacsShell-sub.c: + Disable geometry debugging. + + 2005-02-24 Stephen J. Turnbull + + * xft-fonts.h: + * xft-fonts.c: + Update copyright notices. + + * xft.fonts.h (string_list_to_fcobjectset): + (extract_fcapi_string): + Delete; static function declarations don't belong in headers. + + * xft.fonts.c (string_list_to_fcobjectset): + (extract_fcapi_string): + Declare. + + 2005-02-24 Stephen J. Turnbull + + * objects-x.c (x_find_charset_font): ConfigSubstitute in the + _pattern_ before matching. + + 2005-02-24 Stephen J. Turnbull + + * faces.c (complex_vars_of_faces): Default to monospace-12 for + Xft. (Suggestion by Aidan Kehoe.) + + 2005-02-24 Hrvoje Niksic + + * xgccache.h (XE_GCONTEXT): Move out of DEBUG_XEMACS block. + + 2005-02-22 Stephen J. Turnbull + + * xft-fonts.c (debug_xft): Suppress all debug output for now. + + 2005-02-21 Stephen J. Turnbull + + * emacs.c (xemacs-release-date): New version info variable. + * config.h.in (XEMACS_RELEASE_DATE): New config.h macro. + + * emacs.c (inhibit-early-packages): + (inhibit-all-packages): + (xemacs-extra-name): Improve docstrings. + + 2005-02-21 Stephen J. Turnbull + + * objects-x.c (x_finalize_font_instance): Improve debug message. + + 2005-02-20 Stephen J. Turnbull + + * objects-x.c (x_initialize_font_instance): Estimate average cell + width based on dimensions of "representative" string. Suppress + some excessive debug output. Get rid of spurious tests. + + 2005-02-11 Eric Knauel + + * xft-fonts.c: throw away old code that was wrapped inside + comments + + 2005-02-11 Eric Knauel + + * xft-fonts.h: New prototype + + * xft-fonts.c (Ffc_name_parse, Ffc_pattern_add, Ffc_pattern_del) + (Ffc_pattern_get, fc_font_real_pattern) + (string_list_to_fcobjectset): Use extract_fcapi_string() + (extract_fcapi_string): New function + + 2005-02-09 Eric Knauel + + * xft-fonts.c (string_list_to_fcobjectset): Use loop macro instead + of for. + + 2005-02-03 Eric Knauel + + * lrecord.h (enum lrecord_type): remove lrecord for FcObjectSets = + = + * xft-fonts.h (struct fc_fontset): remove lrecord for FcObjectSets = + + * xft-fonts.c (DEFINE_LRECORD_IMPLEMENTATION): = + (Ffc_objectset_create, Ffc_objectset_p, Ffc_objectset_add) + (Ffc_objectset_destroy): remove lrecord for FcObjectSets + (Ffc_list_fonts_pattern_objects): adapt for new representation of + FcObjectSets + (string_list_to_fcobjectset): New utility function + + 2005-02-01 Stephen J. Turnbull + + * redisplay-x.c (separate_textual_runs): Check for MULE properly. + + 2005-01-28 Stephen J. Turnbull + + * glyphs-widget.c (Fwidget_logical_to_character_height): + (Fwidget_logical_to_character_width): + (layout_query_geometry): + (widget_update): + Fix typos in docstrings and preceding comments. + + 2005-01-26 Stephen J. Turnbull + + * redisplay-x.c (x_output_string): Position strikethru by dl + geometry. Kludge to fix remnants from antialiased underscores. + + 2004-12-19 Stephen J. Turnbull + + * compiler.h (UNUSED): Document make-docfile.c hack. + + 2004-12-19 Stephen J. Turnbull + + * glyphs-x.c,objects-x.c: Deemphasize warnings (to debug or alert). + + * redisplay-x.c: Don't abort() when ichar_to_unicode returns error. + + 2004-12-19 Stephen J. Turnbull + + * keymap.c (Fwhere_is_internal): Rewrite docstring. + + 2004-12-17 Stephen J. Turnbull + + * regex.c (re_match_2_internal): DEBUG_PRINT "can match null". + + 2004-12-10 Stephen J. Turnbull + + * redisplay-x.c (x_text_width_single_run): Whitespace improvement. + + 2004-12-09 Stephen J. Turnbull + + * glyphs-widget.c (image_instantiator_progress_gauge): + (image_instantiator_format_create_glyphs_widget): + Fix typo guage->gauge. + + * emacs.c (main_1): Casting out devils (size_t). + + * compiler.h (USED_IF_XFT): New variant. + * objects-x.c (x_font_spec_matches_charset): + * redisplay-x.c (x_text_width_single_run): + Use it. + + * config.h.in: Support USE_XFT_TABS and USE_XFT_GAUGE. + + 2004-11-28 Stephen J. Turnbull + + * objects-x.c (x_initialize_font_instance): Make sure + FONT_INSTANCE_X_FONT is cleared for Xft fonts. Add comments. + Fiddle whitespace. + (x_print_font_instance): Clarify printed font instance. + + 2004-11-27 Stephen J. Turnbull + + * xft-fonts.h: Declare debug_xft. + + * objects-x.c (x_font_instance_truename): + Convert Xft* identifiers to Fc* versions. + + (x_initialize_font_instance): + (x_find_charset_font): + Condition debugging on debug_xft. Get rid of unneeded "#### + debug" markers. Change fprintf to stderr_out. + + (x_find_charset_font): Restore missing argument to + DebugFcTypeOfValue. Remove nonworking debug cruft. + + (FcResultToString): + (FcTypeOfValueToString): + (x_find_charset_font): + Change DebugFc* to Fc*ToString. + + 2004-11-20 Stephen J. Turnbull + + Xft branch based on "Xft reloaded #3" patch by Eric Knauel and + Mathias Neuebaur, and other contributors. + + * xft-fonts.h: New file. Declares new Lisp objects wrapping + FcPattern, FcFontSet, and FcObjectSet. + * xft-fonts.c: New file. Implements new Lisp objects wrapping + FcPattern, FcFontSet, and FcObjectSet. + * objects-x-impl.h: Declare XftFont component of font instance. + * objects-x.c: Implement XftFont component of font instance. + * redisplay-x.c: Implement drawing via Xft. + 2005-11-21 Marcus Crestani = Incremental Garbage Collector @@ -2805,7 +3344,9 @@ = 2004-12-15 Stephen J. Turnbull = - * EmacsManager.c (EmacsManagerChangeSize): Respect XtGeometryNo. + * EmacsManager.c (EmacsManagerChangeSize): + Respect XtGeometryNo, and exit immediately if geometry change + refused. Fixes notorious metacity maximize bug. = 2004-12-07 Malcolm Purvis = 1.123 +3 -0 XEmacs/xemacs/src/Makefile.in.in Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Makefile.in.in,v retrieving revision 1.122 retrieving revision 1.123 diff -u -p -r1.122 -r1.123 --- Makefile.in.in 2005/11/25 01:41:55 1.122 +++ Makefile.in.in 2005/11/26 11:46:06 1.123 @@ -133,6 +133,9 @@ gui_objs +=3D toolbar.o #ifdef HAVE_X_WINDOWS x_objs=3Dconsole-x.o device-x.o event-Xt.o frame-x.o \ glyphs-x.o objects-x.o redisplay-x.o select-x.o xgccache.o intl-x.o +#ifdef USE_XFT +x_objs +=3D xft-fonts.o +#endif x_gui_objs=3D$(gui_objs:.o=3D-x.o) #ifdef HAVE_TOOLBARS x_gui_objs +=3D toolbar-common.o 1.11 +12 -0 XEmacs/xemacs/src/compiler.h Index: compiler.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/compiler.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- compiler.h 2005/10/25 11:16:21 1.10 +++ compiler.h 2005/11/26 11:46:07 1.11 @@ -211,6 +211,13 @@ Boston, MA 02111-1307, USA. */ #endif /* ATTRIBUTE_CONST */ = /* Unused declarations; g++ and icc do not support this. */ +/* + NOTE: These macros MUST be named UNUSED (exactly) or something + prefixed with USED_IF_, or DEFUN docstrings will be parsed incorrectly. + See comments in make_docfile.c (write_c_args). You'd think that this + wouldn't happen, but unfortunately we do indeed have some arguments + of DEFUNs unused for GNU compatibility or because features are missing. +*/ #ifndef UNUSED_ARG # define UNUSED_ARG(decl) unused_##decl #endif @@ -230,6 +237,11 @@ Boston, MA 02111-1307, USA. */ # define USED_IF_MULE_OR_CHECK_TEXT(decl) decl # else # define USED_IF_MULE_OR_CHECK_TEXT(decl) UNUSED (decl) +# endif +# ifdef USE_XFT +# define USED_IF_XFT(decl) decl +# else +# define USED_IF_XFT(decl) UNUSED (decl) # endif #endif /* UNUSED */ = 1.104 +7 -0 XEmacs/xemacs/src/config.h.in Index: config.h.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/config.h.in,v retrieving revision 1.103 retrieving revision 1.104 diff -u -p -r1.103 -r1.104 --- config.h.in 2005/11/25 01:41:56 1.103 +++ config.h.in 2005/11/26 11:46:07 1.104 @@ -206,6 +206,13 @@ things are arranged in config.h.in. In = /* Compile in support for the X window system? */ #undef HAVE_X_WINDOWS = +/* Compile with support for Xft? */ +#undef USE_XFT +/* Per-widget stuff will go away? */ +#undef USE_XFT_MENUBARS +#undef USE_XFT_TABS +#undef USE_XFT_GAUGE + /* Defines for building X applications */ #ifdef HAVE_X_WINDOWS /* The following will be defined if xmkmf thinks they are necessary */ 1.5 +15 -0 XEmacs/xemacs/src/console-x-impl.h Index: console-x-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-x-impl.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- console-x-impl.h 2005/11/25 01:41:58 1.4 +++ console-x-impl.h 2005/11/26 11:46:07 1.5 @@ -308,6 +308,17 @@ struct x_frame #endif /* XIM_XLIB */ #endif /* HAVE_XIM */ = +#ifdef USE_XFT + /* The Xft Drawable wrapper for this device. + #### Should this be per-device, or per-frame? */ + /* This is persistent to take advantage of the ability of Xft's glyph + cache in the server, and avoid rendering the font again and again... = + + This is created the first time through redisplay, and destroyed when = our = + connection to the X display is destroyed. */ + XftDraw *xftDraw; +#endif + /* 1 if the frame is completely visible on the display, 0 otherwise. if 0 the frame may have been iconified or may be totally or partially hidden by another X window */ @@ -366,6 +377,10 @@ DECLARE_LRECORD (x_frame, Lisp_X_Frame); #endif /* HAVE_TOOLBARS */ = #define FRAME_X_GEOM_FREE_ME_PLEASE(f) (FRAME_X_DATA (f)->geom_free_me_ple= ase) + +#ifdef USE_XFT +#define FRAME_X_XFTDRAW(f) (FRAME_X_DATA (f)->xftDraw) +#endif = #define FRAME_X_TOTALLY_VISIBLE_P(f) (FRAME_X_DATA (f)->totally_visible_p) #define FRAME_X_TOP_LEVEL_FRAME_P(f) (FRAME_X_DATA (f)->top_level_frame_p) 1.22 +13 -0 XEmacs/xemacs/src/console-x.h Index: console-x.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-x.h,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 --- console-x.h 2005/01/17 10:10:18 1.21 +++ console-x.h 2005/11/26 11:46:07 1.22 @@ -51,6 +51,19 @@ Boston, MA 02111-1307, USA. */ #include #endif = +#ifdef USE_XFT +/* shut up GCC */ +#define face_index face_index_arg +#define glyph_index glyph_index_arg +#include +#undef glyph_index +#undef face_index +/* #### this should be made gone */ +#ifndef XFT_VERSION +#define XFT_VERSION 1 +#endif +#endif + /* R5 defines the XPointer type, but R4 doesn't. R4 also doesn't define a version number, but R5 does. */ #if (XlibSpecificationRelease < 5) 1.162 +23 -1 XEmacs/xemacs/src/emacs.c Index: emacs.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/emacs.c,v retrieving revision 1.161 retrieving revision 1.162 diff -u -p -r1.161 -r1.162 --- emacs.c 2005/11/25 01:42:00 1.161 +++ emacs.c 2005/11/26 11:46:07 1.162 @@ -1021,7 +1021,10 @@ main_1 (int argc, Wexttext **argv, Wextt if (argmatch (argv, argc, "-si", "--show-inline-info", 0, NULL, &skip_ar= gs)) { #if defined (PDUMP) && defined (DUMP_IN_EXEC) && !defined (WIN32_NATIVE) - printf ("%u %u\n", dumped_data_max_size (), dumped_data_align_offset= ()); + /* #### We really should check for sizeof (size_t) > sizeof (long) */ + printf ("%lu %lu\n", (unsigned long) dumped_data_max_size (), + (unsigned long) dumped_data_align_offset ()); + #else printf ("Portable dumper not configured for dumping into executable = or windows native; -si just forces exit.\n"); #endif @@ -1612,6 +1615,11 @@ main_1 (int argc, Wexttext **argv, Wextt syms_of_input_method_xlib (); #endif #endif /* HAVE_XIM */ + +#ifdef USE_XFT + syms_of_xft_fonts(); +#endif + #endif /* HAVE_X_WINDOWS */ = #ifdef HAVE_MS_WINDOWS @@ -2192,6 +2200,11 @@ main_1 (int argc, Wexttext **argv, Wextt #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_= X_DIALOGS) || defined (HAVE_TOOLBARS) vars_of_gui_x (); #endif + +#ifdef USE_XFT + vars_of_xft_fonts (); +#endif + #endif /* HAVE_X_WINDOWS */ = = @@ -2318,6 +2331,9 @@ main_1 (int argc, Wexttext **argv, Wextt #if defined (HAVE_MENUBARS) || defined (HAVE_SCROLLBARS) || defined (HAVE_= X_DIALOGS) || defined (HAVE_TOOLBARS) reinit_vars_of_gui_x (); #endif +#ifdef USE_XFT + reinit_vars_of_xft_fonts (); +#endif #endif /* HAVE_X_WINDOWS */ = #ifdef MULE @@ -2384,6 +2400,12 @@ main_1 (int argc, Wexttext **argv, Wextt just-previous complex-vars calls). We will in fact do conversion quite soon, e.g. in complex_vars_of_glyphs_x(). */ inhibit_non_essential_conversion_operations =3D 0; + +#ifdef USE_XFT + /* This uses coding systems. Must be done before faces are init'ed.= */ + /* not in xft reloaded #3 */ + complex_vars_of_xft_fonts (); +#endif = /* Depends on specifiers. */ complex_vars_of_faces (); 1.89 +1 -1 XEmacs/xemacs/src/event-Xt.c Index: event-Xt.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/event-Xt.c,v retrieving revision 1.88 retrieving revision 1.89 diff -u -p -r1.88 -r1.89 --- event-Xt.c 2005/11/16 07:22:46 1.88 +++ event-Xt.c 2005/11/26 11:46:07 1.89 @@ -2986,7 +2986,7 @@ Boolean EmacsXtCvtStringToPixel ( } else { status =3D XParseColor (dpy, colormap, (char*)str, &screenColor); if (status) { - status =3D allocate_nearest_color (dpy, colormap, visual, &screenColor); + status =3D x_allocate_nearest_color (dpy, colormap, visual, &screenColor); } } } else { 1.49 +69 -1 XEmacs/xemacs/src/faces.c Index: faces.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.c,v retrieving revision 1.48 retrieving revision 1.49 diff -u -p -r1.48 -r1.49 --- faces.c 2005/10/24 10:07:36 1.48 +++ faces.c 2005/11/26 11:46:08 1.49 @@ -1060,8 +1060,11 @@ mark_face_cachels (face_cachel_dynarr *e } = /* ensure that the given cachel contains an updated font value for - the given charset. Return the updated font value. */ + the given charset. Return the updated font value (which can be + Qunbound, so this value must not be passed unchecked to Lisp). = + #### Xft: This function will need to be updated for new font model. */ + Lisp_Object ensure_face_cachel_contains_charset (struct face_cachel *cachel, Lisp_Object domain, Lisp_Object charset) @@ -1411,6 +1414,7 @@ merge_face_cachel_data (struct window *w } = /* Initialize a cachel. */ +/* #### Xft: this function will need to be changed for new font model. */ = void reset_face_cachel (struct face_cachel *cachel) @@ -1492,6 +1496,7 @@ mark_face_cachels_as_clean (struct windo Dynarr_atp (w->face_cachels, elt)->dirty =3D 0; } = +/* #### Xft: this function will need to be changed for new font model. */ void mark_face_cachels_as_not_updated (struct window *w) { @@ -1686,6 +1691,43 @@ get_extent_fragment_face_cache_index (st } } = +/* Return a cache index for window W from merging the faces in FACE_LIST. + COUNT is the number of faces in the list. + + The default face should not be included in the list, as it is always + implicitly merged into the cachel. + + WARNING: this interface may change. */ + +face_index +merge_face_list_to_cache_index (struct window *w, + Lisp_Object *face_list, int count) +{ + int i; + face_index findex =3D 0; + struct face_cachel cachel; + + reset_face_cachel (&cachel); + + for (i =3D 0; i < count; i++) + { + Lisp_Object face =3D face_list[i]; + + if (!NILP (face)) + { + CHECK_FACE(face); /* #### presumably unnecessary */ + findex =3D get_builtin_face_cache_index (w, face); + merge_face_cachel_data (w, findex, &cachel); + } + } + + /* Now finally merge in the default face. */ + findex =3D get_builtin_face_cache_index (w, Vdefault_face); + merge_face_cachel_data (w, findex, &cachel); + + return get_merged_face_cache_index (w, &cachel); +} + =0C /*************************************************************************= **** interface functions @@ -2006,9 +2048,24 @@ complex_vars_of_faces (void) = const Ascbyte *fonts[] =3D { +#ifdef USE_XFT + /************** Xft fonts *************/ + + /* Note that fontconfig can search for several font families in one + call. We should use this facility. */ + "monospace-12", /* Western #### add encoding info? */ + /* do we need to worry about non-Latin characters for monospace? + No, at least in Debian's implementation of Xft. + We should recommend that "gothic" and "mincho" aliases be created? */ + "Sazanami Mincho-12", /* Japanese #### add encoding info? */ + /* Arphic for Chinese? */ + /* Korean */ +#else + /************** ISO-8859 fonts *************/ = "-*-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-*", + /* under USE_XFT, we always succeed, so let's not waste the effort */ "-*-fixed-medium-r-*-*-*-120-*-*-*-*-iso8859-*", "-*-courier-*-r-*-*-*-120-*-*-*-*-iso8859-*", "-*-fixed-*-r-*-*-*-120-*-*-*-*-iso8859-*", @@ -2086,6 +2143,13 @@ complex_vars_of_faces (void) check whether we have support for some of the chars in the charset. (#### Bogus, but that's the way it currently works) = + sjt sez: With Xft/fontconfig that information is available as a + language support property. The character set (actually a bit + vector) is also available. So what we need to do is to map chars= et + -> language (Mule redesign Phase 1) and eventually use language + information in the buffer, then map to charsets (Phase 2) at font + instantiation time. + (2) Record in the font instance a flag indicating when we're dealing with a Unicode font. = @@ -2133,6 +2197,7 @@ complex_vars_of_faces (void) "-*-*-*-*-*-*-*-120-*-*-*-*-*-*", "-*-*-*-*-*-*-*-*-*-*-*-*-*-*", "*" +#endif }; const Ascbyte **fontptr; = @@ -2212,6 +2277,8 @@ complex_vars_of_faces (void) { Lisp_Object fg_fb =3D Qnil, bg_fb =3D Qnil; = + /* #### gui-element face doesn't have a font property? + But it gets referred to later! */ #ifdef HAVE_GTK /* We need to put something in there, or error checking gets #%!@#ed up before the styles are set, which override the @@ -2283,6 +2350,7 @@ complex_vars_of_faces (void) Vwidget_face =3D Fmake_face (Qwidget, build_msg_string ("widget face"), Qnil); + /* #### weird ... the gui-element face doesn't have its own font yet */ set_specifier_fallback (Fget (Vwidget_face, Qfont, Qunbound), Fget (Vgui_element_face, Qfont, Qunbound)); set_specifier_fallback (Fget (Vwidget_face, Qforeground, Qunbound), 1.16 +7 -1 XEmacs/xemacs/src/faces.h Index: faces.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/faces.h,v retrieving revision 1.15 retrieving revision 1.16 diff -u -p -r1.15 -r1.16 --- faces.h 2005/11/25 01:42:02 1.15 +++ faces.h 2005/11/26 11:46:08 1.16 @@ -164,7 +164,9 @@ struct face_cachel of them. This avoids messing with Dynarrs. = #### We should look into this and probably clean it up - to use Dynarrs. This may be a big space hog as is. */ + to use Dynarrs. This may be a big space hog as is. + sjt sez: doesn't look like it, my total face cache is 170KB. + Could be reduced to maybe 50KB. */ Lisp_Object font[NUM_LEADING_BYTES]; = Lisp_Object display_table; @@ -263,6 +265,10 @@ void reset_face_cachel (struct face_cach void reset_face_cachels (struct window *w); face_index get_builtin_face_cache_index (struct window *w, Lisp_Object face); +/* WARNING: this interface may change. */ +face_index merge_face_list_to_cache_index (struct window *w, + Lisp_Object *face_list, int count); + #ifdef MEMORY_USAGE_STATS int compute_face_cachel_usage (face_cachel_dynarr *face_cachels, struct overhead_stats *ovstats); 1.72 +33 -3 XEmacs/xemacs/src/frame-x.c Index: frame-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/frame-x.c,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- frame-x.c 2005/11/25 01:42:02 1.71 +++ frame-x.c 2005/11/26 11:46:08 1.72 @@ -2625,6 +2625,19 @@ x_delete_frame (struct frame *f) DtDndDropUnregister (FRAME_X_TEXT_WIDGET (f)); #endif /* HAVE_CDE */ = +#ifdef USE_XFT + /* If we have an XftDraw structure, we need to free it here. + We can't ever have an XftDraw without a Display, so we are safe + to free it in here, and we avoid too much playing around with the = + malloc checking hooks this way. */ + if (FRAME_X_XFTDRAW (f)) = + { + XftDrawDestroy (FRAME_X_XFTDRAW (f)); + FRAME_X_XFTDRAW (f) =3D NULL; + } +#endif + + assert (FRAME_X_SHELL_WIDGET (f) !=3D 0); dpy =3D XtDisplay (FRAME_X_SHELL_WIDGET (f)); = @@ -2702,11 +2715,28 @@ x_update_frame_external_traits (struct f { Lisp_Object font =3D FACE_FONT (Vdefault_face, frame, Vcharset_ascii); = + /* #### what to do about Xft? I don't think the font is actually used + to compute cell size for computing frame pixel dimensions (see call + to EmacsFrameRecomputeCellSize() below); where is it used? -- sjt + What does XtSetValues() do if that resource isn't present? */ if (!EQ (font, Vthe_null_font_instance)) { - XtSetArg (al[ac], XtNfont, - (void *) FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font))); - ac++; + if (0) + ; +#ifdef USE_XFT + else if (FONT_INSTANCE_X_XFTFONT (XFONT_INSTANCE (font))) + { + XtSetArg (al[ac], XtNxftFont, + (void *) FONT_INSTANCE_X_XFTFONT (XFONT_INSTANCE (font))); + ac++; + } +#endif + else if (FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font))) + { + XtSetArg (al[ac], XtNfont, + (void *) FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font))); + ac++; + } } } else 1.27 +1 -0 XEmacs/xemacs/src/glyphs-eimage.c Index: glyphs-eimage.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-eimage.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -p -r1.26 -r1.27 --- glyphs-eimage.c 2005/09/27 05:48:25 1.26 +++ glyphs-eimage.c 2005/11/26 11:46:08 1.27 @@ -36,6 +36,7 @@ Boston, MA 02111-1307, USA. */ TIFF code by Jareth Hein for 21.0 TODO: Convert images.el to C and stick it in here? + This file is really repetitious; can we refactor? */ = #include 1.18 +7 -7 XEmacs/xemacs/src/glyphs-widget.c Index: glyphs-widget.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-widget.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -p -r1.17 -r1.18 --- glyphs-widget.c 2004/11/04 23:06:33 1.17 +++ glyphs-widget.c 2005/11/26 11:46:08 1.18 @@ -346,7 +346,7 @@ widget_property (Lisp_Object image_insta #### property is still a valid function since we have to be able to extract information from the actual widget. = - #### update_widget should probably be re-written to use the + #### widget_update should probably be re-written to use the instantiator. We probably want to keep a record of the differences also to make this easy. We would also need a pending_instantiator so that changes could be delayed. */ @@ -1296,7 +1296,7 @@ layout_post_instantiate (Lisp_Object UNU allow users to stack widgets vertically or horizontally. These layouts also allow the widgets to be centered (space evenly distributed), left or right justified (fixed spacing widgets - stacked against the left, righ, top or bottom edge). Unfortunately + stacked against the left, right, top or bottom edge). Unfortunately this doesn't allow widgets in different layouts to be aligned. For instance how should the search dialog be organized for alignment? The obvious choice of two vertical columns does not work since the @@ -1642,8 +1642,8 @@ native_layout_layout (Lisp_Object image_ = DEFUN ("widget-logical-to-character-width", Fwidget_logical_to_character_w= idth, 1, 3, 0, /* Convert the width in logical widget units to characters. -Logical widget units do not take into account adjusments made for -layout borders, so this adjusment is approximated. +Logical widget units do not take into account adjustments made for +layout borders, so this adjustment is approximated. */ (width, UNUSED (face), domain)) { @@ -1668,7 +1668,7 @@ layout borders, so this adjusment is app = DEFUN ("widget-logical-to-character-height", Fwidget_logical_to_character_= height, 1, 3, 0, /* Convert the height in logical widget units to characters. -Logical widget units do not take into account adjusments made for +Logical widget units do not take into account adjustments made for layout borders, so this adjustment is approximated. = If the components of a widget layout are justified to the top or the @@ -1819,7 +1819,7 @@ static void image_instantiator_scrollbar IIFORMAT_VALID_KEYWORD (scrollbar, Q_face, check_valid_face); } = -static void image_instantiator_progress_guage (void) +static void image_instantiator_progress_gauge (void) { INITIALIZE_IMAGE_INSTANTIATOR_FORMAT (progress_gauge, "progress-gauge"); IIFORMAT_HAS_SHARED_METHOD (progress_gauge, validate, widget); @@ -1927,7 +1927,7 @@ image_instantiator_format_create_glyphs_ image_instantiator_edit_fields(); image_instantiator_combo_box(); image_instantiator_scrollbar(); - image_instantiator_progress_guage(); + image_instantiator_progress_gauge(); image_instantiator_tree_view(); image_instantiator_tab_control(); image_instantiator_labels(); 1.84 +34 -14 XEmacs/xemacs/src/glyphs-x.c Index: glyphs-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/glyphs-x.c,v retrieving revision 1.83 retrieving revision 1.84 diff -u -p -r1.83 -r1.84 --- glyphs-x.c 2005/09/27 05:48:26 1.83 +++ glyphs-x.c 2005/11/26 11:46:08 1.84 @@ -239,7 +239,7 @@ convert_EImage_to_XImage (Lisp_Object de color.green =3D qtable->gm[i] ? qtable->gm[i] << 8 : 0; color.blue =3D qtable->bm[i] ? qtable->bm[i] << 8 : 0; color.flags =3D DoRed | DoGreen | DoBlue; - res =3D allocate_nearest_color (dpy, cmap, vis, &color); + res =3D x_allocate_nearest_color (dpy, cmap, vis, &color); if (res > 0 && res < 3) { DO_REALLOC(*pixtbl, pixcount, n+1, unsigned long); @@ -2364,21 +2364,41 @@ update_widget_face (widget_value* wv, Li bcolor =3D COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (pixel)); lw_add_widget_value_arg (wv, XtNbackground, bcolor.pixel); = + { + Lisp_Object face =3D IMAGE_INSTANCE_WIDGET_FACE (ii); + Lisp_Font_Instance *fi =3D + XFONT_INSTANCE (query_string_font (IMAGE_INSTANCE_WIDGET_TEXT (ii), + face, + domain)); + XFontStruct *fs =3D FONT_INSTANCE_X_FONT (fi); +#ifdef USE_XFT + XftFont *rf =3D FONT_INSTANCE_X_XFTFONT (fi); + + if (rf) + { + /* #### What to do about Motif? */ + lw_add_widget_value_arg (wv, XtNxftFont, (XtArgVal) rf); + } +#endif + + if (fs) + { #ifdef LWLIB_WIDGETS_MOTIF - fontList =3D XmFontListCreate - (FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (query_string_font - (IMAGE_INSTANCE_WIDGET_TEXT (ii), - IMAGE_INSTANCE_WIDGET_FACE (ii), - domain))), XmSTRING_DEFAULT_CHARSET); - lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal)fontList); + fontList =3D XmFontListCreate (fs, XmSTRING_DEFAULT_CHARSET); + lw_add_widget_value_arg (wv, XmNfontList, (XtArgVal) fontList); #endif - lw_add_widget_value_arg - (wv, XtNfont, (XtArgVal)FONT_INSTANCE_X_FONT - (XFONT_INSTANCE (query_string_font - (IMAGE_INSTANCE_WIDGET_TEXT (ii), - IMAGE_INSTANCE_WIDGET_FACE (ii), - domain)))); + lw_add_widget_value_arg (wv, XtNfont, (XtArgVal) fs); + } + +#ifdef USE_XFT + /* #### sanity check, should wrap in appropriate ERROR_CHECK macro */ + if (!rf && !fs) + warn_when_safe_lispobj + (intern ("xft"), Qdebug, + Fcons (build_string ("missing font in update_widget_face"), + Fface_name (face))); +#endif + } wv->change =3D VISIBLE_CHANGE; /* #### Megahack - but its just getting too complicated to do this in the right place. */ 1.22 +3 -0 XEmacs/xemacs/src/inline.c Index: inline.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/inline.c,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 --- inline.c 2005/11/07 08:49:25 1.21 +++ inline.c 2005/11/26 11:46:09 1.22 @@ -100,6 +100,9 @@ Boston, MA 02111-1307, USA. */ = #ifdef HAVE_X_WINDOWS #include "glyphs-x.h" +#ifdef USE_XFT +#include "xft-fonts.h" +#endif #endif = #ifdef HAVE_MS_WINDOWS 1.136 +1 -0 XEmacs/xemacs/src/lisp.h Index: lisp.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lisp.h,v retrieving revision 1.135 retrieving revision 1.136 diff -u -p -r1.135 -r1.136 --- lisp.h 2005/11/25 01:42:04 1.135 +++ lisp.h 2005/11/26 11:46:09 1.136 @@ -5415,6 +5415,7 @@ extern Lisp_Object Vcharset_katakana_jis extern Lisp_Object Vcharset_latin_jisx0201; extern Lisp_Object Vcharset_cyrillic_iso8859_5; extern Lisp_Object Vcharset_latin_iso8859_9; +extern Lisp_Object Vcharset_latin_iso8859_15; extern Lisp_Object Vcharset_japanese_jisx0208_1978; extern Lisp_Object Vcharset_chinese_gb2312; extern Lisp_Object Vcharset_japanese_jisx0208; 1.45 +1 -0 XEmacs/xemacs/src/lrecord.h Index: lrecord.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lrecord.h,v retrieving revision 1.44 retrieving revision 1.45 diff -u -p -r1.44 -r1.45 --- lrecord.h 2005/11/25 01:42:05 1.44 +++ lrecord.h 2005/11/26 11:46:09 1.45 @@ -281,6 +281,7 @@ enum lrecord_type lrecord_type_image_instance, lrecord_type_glyph, lrecord_type_face, + lrecord_type_fc_pattern, lrecord_type_database, lrecord_type_tooltalk_message, lrecord_type_tooltalk_pattern, 1.6 +9 -2 XEmacs/xemacs/src/objects-impl.h Index: objects-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-impl.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- objects-impl.h 2005/10/24 10:07:39 1.5 +++ objects-impl.h 2005/11/26 11:46:09 1.6 @@ -125,8 +125,13 @@ struct Lisp_Font_Instance call them to get the truename (#### in reality, they all probably just store the truename here if they know it, and nil otherwise; we should - check this and enforce it as a general policy) */ + check this and enforce it as a general policy + X and GTK do this, except that when they don't + know they return NAME and don't update TRUENAME. + MS Windows initializes TRUENAME when the font is + initialized. TTY doesn't do truename.) */ Lisp_Object device; + Lisp_Object charset; /* Mule charset, or whatever */ = /* See comment in struct console about console variants. */ enum console_variant font_instance_type; @@ -142,7 +147,8 @@ struct Lisp_Font_Instance }; = #define FONT_INSTANCE_NAME(f) ((f)->name) -#define FONT_INSTANCE_TRUENAME(f) ((f)->name) +#define FONT_INSTANCE_TRUENAME(f) ((f)->truename) +#define FONT_INSTANCE_CHARSET(f) ((f)->charset) #define FONT_INSTANCE_DEVICE(f) ((f)->device) #define FONT_INSTANCE_ASCENT(f) ((f)->ascent) #define FONT_INSTANCE_DESCENT(f) ((f)->descent) @@ -151,6 +157,7 @@ struct Lisp_Font_Instance = #define XFONT_INSTANCE_NAME(f) FONT_INSTANCE_NAME (XFONT_INSTANCE (f)) #define XFONT_INSTANCE_TRUENAME(f) FONT_INSTANCE_TRUENAME (XFONT_INSTANCE = (f)) +#define XFONT_INSTANCE_CHARSET(f) FONT_INSTANCE_CHARSET (XFONT_INSTANCE (= f)) #define XFONT_INSTANCE_DEVICE(f) FONT_INSTANCE_DEVICE (XFONT_INSTANCE (f= )) #define XFONT_INSTANCE_ASCENT(f) FONT_INSTANCE_ASCENT (XFONT_INSTANCE (f= )) #define XFONT_INSTANCE_DESCENT(f) FONT_INSTANCE_DESCENT (XFONT_INSTANCE (= f)) 1.2 +23 -1 XEmacs/xemacs/src/objects-x-impl.h Index: objects-x-impl.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x-impl.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- objects-x-impl.h 2002/06/20 21:18:40 1.1 +++ objects-x-impl.h 2005/11/26 11:46:09 1.2 @@ -29,6 +29,10 @@ Boston, MA 02111-1307, USA. */ = #include "objects-impl.h" #include "objects-x.h" +#ifdef USE_XFT +/* for resource name definitions, etc */ +#include "../lwlib/lwlib-fonts.h" +#endif = #ifdef HAVE_X_WINDOWS = @@ -39,11 +43,19 @@ Boston, MA 02111-1307, USA. */ struct x_color_instance_data { XColor color; + /* Yes, it looks crazy to have both the XColor and the XftColor, but + pragmatically both are used. */ +#ifdef USE_XFT + XftColor xftColor; +#endif char dealloc_on_gc; }; = #define X_COLOR_INSTANCE_DATA(c) ((struct x_color_instance_data *) (c)->da= ta) #define COLOR_INSTANCE_X_COLOR(c) (X_COLOR_INSTANCE_DATA (c)->color) +#ifdef USE_XFT +#define COLOR_INSTANCE_X_XFTCOLOR(c) (X_COLOR_INSTANCE_DATA (c)->xftColor) +#endif #define COLOR_INSTANCE_X_DEALLOC(c) (X_COLOR_INSTANCE_DATA (c)->dealloc_on= _gc) = /*************************************************************************= **** @@ -53,11 +65,21 @@ struct x_color_instance_data struct x_font_instance_data { /* X-specific information */ - XFontStruct *font; + /* Yes, it looks crazy to have both the XFontStruct and the XftFont, but + pragmatically both are used (lwlib delegates labels to the widget set= s, + which internally use XFontStructs). */ + XFontStruct * font; +#ifdef USE_XFT + XftFont *xftFont; +#endif + }; = #define X_FONT_INSTANCE_DATA(f) ((struct x_font_instance_data *) (f)->data) #define FONT_INSTANCE_X_FONT(f) (X_FONT_INSTANCE_DATA (f)->font) +#ifdef USE_XFT +#define FONT_INSTANCE_X_XFTFONT(f) (X_FONT_INSTANCE_DATA (f)->xftFont) +#endif = #endif /* HAVE_X_WINDOWS */ = 1.29 +756 -269 XEmacs/xemacs/src/objects-x.c Index: objects-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x.c,v retrieving revision 1.28 retrieving revision 1.29 diff -u -p -r1.28 -r1.29 --- objects-x.c 2005/01/28 02:58:52 1.28 +++ objects-x.c 2005/11/26 11:46:09 1.29 @@ -38,6 +38,10 @@ Boston, MA 02111-1307, USA. */ #include "console-x-impl.h" #include "objects-x-impl.h" = +#ifdef USE_XFT +#include "xft-fonts.h" +#endif + int x_handle_non_fully_specified_fonts; = =0C @@ -45,185 +49,6 @@ int x_handle_non_fully_specified_fonts; /* color instances */ /************************************************************************/ = -/* Replacement for XAllocColor() that tries to return the nearest - available color if the colormap is full. Original was from FSFmacs, - but rewritten by Jareth Hein 97/11/25 - Modified by Lee Kindness 31/08/99 to handle pre= vious - total failure which was due to a read/write colorcell being the nearest - match - tries the next nearest... - - Return value is 1 for normal success, 2 for nearest color success, - 3 for Non-deallocable success. */ -int -allocate_nearest_color (Display *display, Colormap colormap, Visual *visua= l, - XColor *color_def) -{ - int status; - - if (visual->X_CLASSFIELD =3D=3D DirectColor || visual->X_CLASSFIELD =3D= =3D TrueColor) - { - if (XAllocColor (display, colormap, color_def) !=3D 0) - { - status =3D 1; - } - else - { - /* We're dealing with a TrueColor/DirectColor visual, so play games - with the RGB values in the XColor struct. */ - /* #### JH: I'm not sure how a call to XAllocColor can fail in a - TrueColor or DirectColor visual, so I will just reformat the - request to match the requirements of the visual, and re-issue - the request. If this fails for anybody, I wanna know about it - so I can come up with a better plan */ - - unsigned long rshift,gshift,bshift,rbits,gbits,bbits,junk; - junk =3D visual->red_mask; - rshift =3D 0; - while ((junk & 0x1) =3D=3D 0) { - junk =3D junk >> 1; - rshift ++; - } - rbits =3D 0; - while (junk !=3D 0) { - junk =3D junk >> 1; - rbits++; - } - junk =3D visual->green_mask; - gshift =3D 0; - while ((junk & 0x1) =3D=3D 0) { - junk =3D junk >> 1; - gshift ++; - } - gbits =3D 0; - while (junk !=3D 0) { - junk =3D junk >> 1; - gbits++; - } - junk =3D visual->blue_mask; - bshift =3D 0; - while ((junk & 0x1) =3D=3D 0) { - junk =3D junk >> 1; - bshift ++; - } - bbits =3D 0; - while (junk !=3D 0) { - junk =3D junk >> 1; - bbits++; - } - - color_def->red =3D color_def->red >> (16 - rbits); - color_def->green =3D color_def->green >> (16 - gbits); - color_def->blue =3D color_def->blue >> (16 - bbits); - if (XAllocColor (display, colormap, color_def) !=3D 0) - status =3D 1; - else - { - int rd, gr, bl; - /* #### JH: I'm punting here, knowing that doing this will at - least draw the color correctly. However, unless we convert - all of the functions that allocate colors (graphics - libraries, etc) to use this function doing this is very - likely to cause problems later... */ - - if (rbits > 8) - rd =3D color_def->red << (rbits - 8); - else - rd =3D color_def->red >> (8 - rbits); - if (gbits > 8) - gr =3D color_def->green << (gbits - 8); - else - gr =3D color_def->green >> (8 - gbits); - if (bbits > 8) - bl =3D color_def->blue << (bbits - 8); - else - bl =3D color_def->blue >> (8 - bbits); - color_def->pixel =3D (rd << rshift) | (gr << gshift) | (bl << - bshift); - status =3D 3; - } - } - } - else - { - XColor *cells =3D NULL; - /* JH: I can't believe there's no way to go backwards from a - colormap ID and get its visual and number of entries, but X - apparently isn't built that way... */ - int no_cells =3D visual->map_entries; - status =3D 0; - - if (XAllocColor (display, colormap, color_def) !=3D 0) - status =3D 1; - else while( status !=3D 2 ) - { - /* If we got to this point, the colormap is full, so we're - going to try and get the next closest color. The algorithm used - is a least-squares matching, which is what X uses for closest - color matching with StaticColor visuals. */ - int nearest; - long nearest_delta, trial_delta; - int x; - - if( cells =3D=3D NULL ) - { - cells =3D alloca_array (XColor, no_cells); - for (x =3D 0; x < no_cells; x++) - cells[x].pixel =3D x; - - /* read the current colormap */ - XQueryColors (display, colormap, cells, no_cells); - } - - nearest =3D 0; - /* I'm assuming CSE so I'm not going to condense this. */ - nearest_delta =3D ((((color_def->red >> 8) - (cells[0].red >> 8)) - * ((color_def->red >> 8) - (cells[0].red >> 8))) - + - (((color_def->green >> 8) - (cells[0].green >> 8)) - * ((color_def->green >> 8) - (cells[0].green >> - 8))) - + - (((color_def->blue >> 8) - (cells[0].blue >> 8)) - * ((color_def->blue >> 8) - (cells[0].blue >> - 8)))); - for (x =3D 1; x < no_cells; x++) - { - trial_delta =3D ((((color_def->red >> 8) - (cells[x].red >> 8)) - * ((color_def->red >> 8) - (cells[x].red >> 8))) - + - (((color_def->green >> 8) - (cells[x].green >> 8)) - * ((color_def->green >> 8) - (cells[x].green >> - 8))) - + - (((color_def->blue >> 8) - (cells[x].blue >> 8)) - * ((color_def->blue >> 8) - (cells[x].blue >> - 8)))); - - /* less? Ignore cells marked as previously failing */ - if( (trial_delta < nearest_delta) && - (cells[x].pixel !=3D ULONG_MAX) ) - { - nearest =3D x; - nearest_delta =3D trial_delta; - } - } - color_def->red =3D cells[nearest].red; - color_def->green =3D cells[nearest].green; - color_def->blue =3D cells[nearest].blue; - if (XAllocColor (display, colormap, color_def) !=3D 0) - status =3D 2; - else - /* LSK: Either the colour map has changed since - * we read it, or the colour is allocated - * read/write... Mark this cmap entry so it's - * ignored in the next iteration. - */ - cells[nearest].pixel =3D ULONG_MAX; - } - } - return status; -} - static int x_parse_nearest_color (struct device *d, XColor *color, Lisp_Object name, Error_Behavior errb) @@ -246,7 +71,7 @@ x_parse_nearest_color (struct device *d, name, Qcolor, errb); return 0; } - result =3D allocate_nearest_color (dpy, cmap, visual, color); + result =3D x_allocate_nearest_color (dpy, cmap, visual, color); if (!result) { maybe_signal_error (Qgui_error, "Couldn't allocate color", @@ -262,6 +87,9 @@ x_initialize_color_instance (Lisp_Color_ Lisp_Object device, Error_Behavior errb) { XColor color; +#ifdef USE_XFT + XftColor xftColor; +#endif int result; = result =3D x_parse_nearest_color (XDEVICE (device), &color, name, errb); @@ -277,6 +105,17 @@ x_initialize_color_instance (Lisp_Color_ else COLOR_INSTANCE_X_DEALLOC (c) =3D 1; COLOR_INSTANCE_X_COLOR (c) =3D color; + +#ifdef USE_XFT + xftColor.pixel =3D color.pixel; + xftColor.color.red =3D color.red; + xftColor.color.green =3D color.green; + xftColor.color.blue =3D color.blue; + xftColor.color.alpha =3D 0xffff; + + COLOR_INSTANCE_X_XFTCOLOR (c) =3D xftColor; +#endif + return 1; } = @@ -366,96 +205,248 @@ x_color_list (void) /* font instances */ /************************************************************************/ = +#ifdef USE_XFT +/* #### all these #defines should probably move to xft-fonts.h */ + +/* + The format of a fontname (as returned by fontconfig) is not well-documen= ted, + But the character repertoire is represented in an ASCII-compatible way. = See + fccharset.c (FcCharSetUnparse). So we can use UTF-8 for long names. + + Currently we have a hack where different versions of the unparsed name a= re + used in different contexts fairly arbitrarily. I don't think this is cl= ose + to coherency; even without the charset and lang properties fontconfig na= mes + are too unwieldy to use. We need to rethink the approach here. I think + probably Lisp_Font_Instance.name should contain the font name as specifi= ed + to Lisp (almost surely much shorter than shortname, even, and most likely + wildcarded), while Lisp_Font_Instance.truename should contain the longna= me. + For now, I'm going to #ifdef the return values defaulting to short. -- s= jt +*/ + +/* DEBUGGING STUFF */ + +/* print message to stderr: one internal-format string argument */ +#define DEBUG_XFT0(level,s) \ + if (debug_xft > level) stderr_out (s) + +/* print message to stderr: one formatted argument */ +#define DEBUG_XFT1(level,format,x1) \ + if (debug_xft > level) stderr_out (format, x1) + +/* print message to stderr: two formatted arguments */ +#define DEBUG_XFT2(level,format,x1,x2) \ + if (debug_xft > level) stderr_out (format, x1, x2) + +/* print message to stderr: three formatted arguments */ +#define DEBUG_XFT3(level,format,x1,x2,x3) \ + if (debug_xft > level) stderr_out (format, x1, x2, x3) + +/* print message to stderr: four formatted arguments */ +#define DEBUG_XFT4(level,format,x1,x2,x3,x4) \ + if (debug_xft > level) stderr_out (format, x1, x2, x3, x4) + +/* print an Xft pattern to stderr + LEVEL is the debug level (to compare to debug_xft) + FORMAT is a newline-terminated printf format with one %s for the pattern + and must be internal format (eg, pure ASCII) + PATTERN is an FcPattern *. */ +#define PRINT_XFT_PATTERN(level,format,pattern) \ + do { \ + DECLARE_EISTRING (eistrpxft_name); \ + FcChar8 *name =3D FcNameUnparse (pattern); \ + \ + eicpy_ext(eistrpxft_name, name, Qxft_font_name_encoding); \ + DEBUG_XFT1 (level, format, eidata(eistrpxft_name)); \ + free (name); \ + } while (0) + +/* print a progress message + LEVEL is the debug level (to compare to debug_xft) + FONT is the Xft font name in UTF-8 (the native encoding of Xft) + LANG is the language being checked for support (must be ASCII). */ +#define CHECKING_LANG(level,font,lang) \ + do { \ + DECLARE_EISTRING (eistrcl_name); \ + eicpy_ext(eistrcl_name, font, Qxft_font_name_encoding); \ + DEBUG_XFT2 (level, "checking if %s handles %s\n", \ + eidata(eistrcl_name), lang); \ + } while (0) + +#endif /* USE_XFT */ + static int x_initialize_font_instance (Lisp_Font_Instance *f, Lisp_Object UNUSED (nam= e), Lisp_Object device, Error_Behavior errb) { Display *dpy =3D DEVICE_X_DISPLAY (XDEVICE (device)); - XFontStruct *xf; - const Extbyte *extname; + Extbyte *extname; + XFontStruct *fs =3D NULL; /* _F_ont _S_truct */ +#ifdef USE_XFT + XftFont *rf =3D NULL; /* _R_ender _F_ont (X Render extension) */ +#else +#define rf (0) +#endif = +#ifdef USE_XFT + DEBUG_XFT1 (2, "attempting to initialize font spec %s\n", + XSTRING_DATA(f->name)); + /* #### serialize (optimize) these later... */ + /* #### This function really needs to go away. + The problem is that the fontconfig/Xft functions work much too hard + to ensure that something is returned; but that something need not be + at all close to what we asked for. */ + LISP_STRING_TO_EXTERNAL (f->name, extname, Qxft_font_name_encoding); + rf =3D xft_open_font_by_name (dpy, extname); +#endif LISP_STRING_TO_EXTERNAL (f->name, extname, Qx_font_name_encoding); - xf =3D XLoadQueryFont (dpy, extname); - - if (!xf) + fs =3D XLoadQueryFont (dpy, extname); + = + if (!fs && !rf) { - maybe_signal_error (Qgui_error, "Couldn't load font", f->name, Qfont, - errb); + /* #### should this refer to X and/or Xft? */ + maybe_signal_error (Qgui_error, "Couldn't load font", f->name, + Qfont, errb); return 0; } = - if (!xf->max_bounds.width) + if (fs && !fs->max_bounds.width) { /* yes, this has been known to happen. */ - XFreeFont (dpy, xf); + XFreeFont (dpy, fs); + fs =3D NULL; maybe_signal_error (Qgui_error, "X font is too small", f->name, Qfon= t, errb); - return 0; + if (!rf) + return 0; } = - /* Don't allocate the data until we're sure that we will succeed, - or the finalize method may get fucked. */ + /* Now that we're sure that we will succeed, we can allocate data without + fear that the finalize method may get fucked. */ f->data =3D xnew (struct x_font_instance_data); - FONT_INSTANCE_X_FONT (f) =3D xf; - f->ascent =3D xf->ascent; - f->descent =3D xf->descent; - f->height =3D xf->ascent + xf->descent; - { - /* following change suggested by Ted Phelps */ - int def_char =3D 'n'; /*xf->default_char;*/ - int byte1, byte2; - - once_more: - byte1 =3D def_char >> 8; - byte2 =3D def_char & 0xFF; + +#ifdef USE_XFT + FONT_INSTANCE_X_XFTFONT (f) =3D rf; + if (rf) + /* Have an Xft font, initialize font info from it. */ + { + DEBUG_XFT4 (2, "pre-initial ascent %d descent %d width %d height %d\= n", + f->ascent, f->descent, f->width, f->height); = - if (xf->per_char) + /* #### This shit is just plain wrong unless we have a character cell + font. It really hoses us on large repertoire Unicode fonts with + "double-width" characters. */ + f->ascent =3D rf->ascent; + f->descent =3D rf->descent; { - /* Old versions of the R5 font server have garbage (>63k) as - def_char. 'n' might not be a valid character. */ - if (byte1 < (int) xf->min_byte1 || - byte1 > (int) xf->max_byte1 || - byte2 < (int) xf->min_char_or_byte2 || - byte2 > (int) xf->max_char_or_byte2) - f->width =3D 0; - else - f->width =3D xf->per_char[(byte1 - xf->min_byte1) * - (xf->max_char_or_byte2 - - xf->min_char_or_byte2 + 1) + - (byte2 - xf->min_char_or_byte2)].width; + /* This is an approximation that AFAIK only gets used to compute + cell size for estimating window dimensions. The test_string8 + is an ASCII string whose characters should approximate the + distribution of widths expected in real text. */ + static const char test_string8[] =3D "Mmneei"; + static const int len =3D sizeof (test_string8) - 1; + XGlyphInfo glyphinfo; + + XftTextExtents8 (dpy, rf, test_string8, len, &glyphinfo); + /* #### maybe should be glyphinfo.xOff - glyphinfo.x? */ + f->width =3D (2*glyphinfo.width + len)/(2*len); } - else - f->width =3D xf->max_bounds.width; + f->height =3D rf->height; + f->proportional_p =3D 1; /* we can't recognize monospaced fonts! */ + + DEBUG_XFT4 (0, "initialized metrics ascent %d descent %d width %d he= ight %d\n", + f->ascent, f->descent, f->width, f->height); + /* we also output on initialization of any font below */ + DEBUG_XFT1 (2, "initialized Xft font %s\n", XSTRING_DATA(f->name)); + fs =3D NULL; /* we don' need no steenkin' X font */ + } = + else + { + DEBUG_XFT1 (0, "couldn't initialize Xft font %s\n", + XSTRING_DATA(f->name)); + } +#endif = - /* Some fonts have a default char whose width is 0. This is no good. - If that's the case, first try 'n' as the default char, and if n has - 0 width too (unlikely) then just use the max width. */ - if (f->width =3D=3D 0) + FONT_INSTANCE_X_FONT (f) =3D fs; + if (fs) + /* Have to use a core font, initialize font info from it. */ + { + f->ascent =3D fs->ascent; + f->descent =3D fs->descent; + f->height =3D fs->ascent + fs->descent; { - if (def_char =3D=3D (int) xf->default_char) - f->width =3D xf->max_bounds.width; + /* following change suggested by Ted Phelps */ + int def_char =3D 'n'; /*fs->default_char;*/ + int byte1, byte2; + + once_more: + byte1 =3D def_char >> 8; + byte2 =3D def_char & 0xFF; + + if (fs->per_char) + { + /* Old versions of the R5 font server have garbage (>63k) as + def_char. 'n' might not be a valid character. */ + if (byte1 < (int) fs->min_byte1 || + byte1 > (int) fs->max_byte1 || + byte2 < (int) fs->min_char_or_byte2 || + byte2 > (int) fs->max_char_or_byte2) + f->width =3D 0; + else + f->width =3D fs->per_char[(byte1 - fs->min_byte1) * + (fs->max_char_or_byte2 - + fs->min_char_or_byte2 + 1) + + (byte2 - fs->min_char_or_byte2)].width; + } else + f->width =3D fs->max_bounds.width; + + /* Some fonts have a default char whose width is 0. This is no good. + If that's the case, first try 'n' as the default char, and if n has + 0 width too (unlikely) then just use the max width. */ + if (f->width =3D=3D 0) { - def_char =3D xf->default_char; - goto once_more; + if (def_char =3D=3D (int) fs->default_char) + f->width =3D fs->max_bounds.width; + else + { + def_char =3D fs->default_char; + goto once_more; + } } } - } - /* If all characters don't exist then there could potentially be - 0-width characters lurking out there. Not setting this flag - trips an optimization that would make them appear to have width - to redisplay. This is bad. So we set it if not all characters - have the same width or if not all characters are defined. - */ - /* #### This sucks. There is a measurable performance increase - when using proportional width fonts if this flag is not set. - Unfortunately so many of the fucking X fonts are not fully - defined that we could almost just get rid of this damn flag and - make it an assertion. */ - f->proportional_p =3D (xf->min_bounds.width !=3D xf->max_bounds.width || - (x_handle_non_fully_specified_fonts && - !xf->all_chars_exist)); = + /* If all characters don't exist then there could potentially be + 0-width characters lurking out there. Not setting this flag + trips an optimization that would make them appear to have width + to redisplay. This is bad. So we set it if not all characters + have the same width or if not all characters are defined. */ + /* #### This sucks. There is a measurable performance increase + when using proportional width fonts if this flag is not set. + Unfortunately so many of the fucking X fonts are not fully + defined that we could almost just get rid of this damn flag and + make it an assertion. */ + f->proportional_p =3D (fs->min_bounds.width !=3D fs->max_bounds.widt= h || + (x_handle_non_fully_specified_fonts && + !fs->all_chars_exist)); + } + +#ifdef USE_XFT + if (debug_xft > 0) + { + int n =3D 3, d =3D 5; + /* check for weirdness */ + if (n * f->height < d * f->width) + stderr_out ("font %s: width:height is %d:%d, larger than %d:%d\n", + XSTRING_DATA(f->name), f->width, f->height, n, d); + if (f->height <=3D 0 || f->width <=3D 0) + stderr_out ("bogus dimensions of font %s: width =3D %d, height =3D %d\n", + XSTRING_DATA(f->name), f->width, f->height); + stderr_out ("initialized font %s\n", XSTRING_DATA(f->name)); + } +#else +#undef rf +#endif + return 1; } = @@ -464,21 +455,39 @@ x_print_font_instance (Lisp_Font_Instanc Lisp_Object printcharfun, int UNUSED (escapeflag)) { - write_fmt_string (printcharfun, " 0x%lx", - (unsigned long) FONT_INSTANCE_X_FONT (f)->fid); + if (FONT_INSTANCE_X_FONT (f)) + write_fmt_string (printcharfun, " font id: 0x%lx", + (unsigned long) FONT_INSTANCE_X_FONT (f)->fid); +#ifdef USE_XFT + /* #### What should we do here? For now, print the address. */ + if (FONT_INSTANCE_X_XFTFONT (f)) + write_fmt_string (printcharfun, " xft font: 0x%lx", + (unsigned long) FONT_INSTANCE_X_XFTFONT (f)); +#endif } = static void x_finalize_font_instance (Lisp_Font_Instance *f) { = +#ifdef USE_XFT + DEBUG_XFT1 (0, "finalizing %s\n", (STRINGP (f->name) + ? (char *) XSTRING_DATA (f->name) + : "(unnamed font)")); +#endif + if (f->data) { if (DEVICE_LIVE_P (XDEVICE (f->device))) { Display *dpy =3D DEVICE_X_DISPLAY (XDEVICE (f->device)); = - XFreeFont (dpy, FONT_INSTANCE_X_FONT (f)); + if (FONT_INSTANCE_X_FONT (f)) + XFreeFont (dpy, FONT_INSTANCE_X_FONT (f)); +#ifdef USE_XFT + if (FONT_INSTANCE_X_XFTFONT (f)) + XftFontClose (dpy, FONT_INSTANCE_X_XFTFONT (f)); +#endif } xfree (f->data, void *); f->data =3D 0; @@ -487,6 +496,13 @@ x_finalize_font_instance (Lisp_Font_Inst = /* Determining the truename of a font is hard. (Big surprise.) = + This is not true for fontconfig. Each font has a (nearly) canonical + representation up to permutation of the order of properties. It is + possible to construct a name which exactly identifies the properties of + the current font. However, it is theoretically possible that there exi= sts + another font with a super set of those properties that would happen to = get + selected. -- sjt + By "truename" we mean an XLFD-form name which contains no wildcards, yet which resolves to *exactly* the same font as the one which we already h= ave the (probably wildcarded) name and `XFontStruct' of. @@ -695,10 +711,12 @@ truename_via_XListFonts (Display *dpy, E #else /* But the world I live in is much more perverse. */ names =3D XListFonts (dpy, font_name, MAX_FONT_COUNT, &count); + /* Find the lexicographic minimum of names[]. + (#### Should we be comparing case-insensitively?) */ while (count--) - /* !!#### Not Mule-friendly */ - /* If names[count] is lexicographically less than result, use it. - (#### Should we be comparing case-insensitively?) */ + /* [[ !!#### Not Mule-friendly ]] + Doesn't matter, XLFDs are HPC (old) or Latin1 (modern). If they + aren't, who knows what they are? -- sjt */ if (result =3D=3D 0 || (strcmp (result, names [count]) < 0)) result =3D names [count]; #endif @@ -773,29 +791,61 @@ static Lisp_Object x_font_instance_truename (Lisp_Font_Instance *f, Error_Behavior errb) { struct device *d =3D XDEVICE (f->device); + Display *dpy =3D DEVICE_X_DISPLAY (d); + Extbyte *nameext; + char* xlfd; = - if (NILP (FONT_INSTANCE_TRUENAME (f))) + /* #### restructure this so that we return a valid truename at the end, + and otherwise only return when we return something desperate that + doesn't get stored for future use. */ + +#ifdef USE_XFT + /* First, try an Xft font. */ + if (NILP (FONT_INSTANCE_TRUENAME (f)) && FONT_INSTANCE_X_XFTFONT (f)) { - Display *dpy =3D DEVICE_X_DISPLAY (d); - { - Extbyte *nameext; - - LISP_STRING_TO_EXTERNAL (f->name, nameext, Qx_font_name_encoding); - FONT_INSTANCE_TRUENAME (f) =3D - x_font_truename (dpy, nameext, FONT_INSTANCE_X_FONT (f)); - } - if (NILP (FONT_INSTANCE_TRUENAME (f))) + /* The font is already open, we just unparse. */ + FcChar8 *res =3D FcNameUnparse (FONT_INSTANCE_X_XFTFONT (f)->pattern= ); + if (res) { - Lisp_Object font_instance =3D wrap_font_instance (f); + FONT_INSTANCE_TRUENAME (f) =3D make_string (res, strlen (res)); + free (res); + return FONT_INSTANCE_TRUENAME (f); + } + else + { + maybe_signal_error (Qgui_error, + "Couldn't unparse Xft font to truename", + Qnil, Qfont, errb); + /* used to return Qnil here */ + } + } +#endif /* USE_XFT */ = + /* OK, fall back to core font. */ + if (NILP (FONT_INSTANCE_TRUENAME (f)) + && FONT_INSTANCE_X_FONT (f)) + { + nameext =3D &xlfd[0]; + LISP_STRING_TO_EXTERNAL (f->name, nameext, Qx_font_name_encoding); = - maybe_signal_error (Qgui_error, "Couldn't determine font truename", - font_instance, Qfont, errb); - /* Ok, just this once, return the font name as the truename. - (This is only used by Fequal() right now.) */ - return f->name; - } + FONT_INSTANCE_TRUENAME (f) =3D + x_font_truename (dpy, nameext, FONT_INSTANCE_X_FONT (f)); } + + if (NILP (FONT_INSTANCE_TRUENAME (f))) + { + /* Urk, no luck. Whine about our bad luck and exit. */ + Lisp_Object font_instance =3D wrap_font_instance (f); + = + = + maybe_signal_error (Qgui_error, "Couldn't determine font truename", + font_instance, Qfont, errb); + /* Ok, just this once, return the font name as the truename. + (This is only used by Fequal() right now.) */ + return f->name; + } + + /* Return what we found. */ return FONT_INSTANCE_TRUENAME (f); } = @@ -806,8 +856,13 @@ x_font_instance_properties (Lisp_Font_In int i; Lisp_Object result =3D Qnil; Display *dpy =3D DEVICE_X_DISPLAY (d); - XFontProp *props =3D FONT_INSTANCE_X_FONT (f)->properties; + XFontProp *props =3D NULL; + + /* #### really should hack Xft fonts, too + Strategy: fontconfig must have an iterator for this purpose. */ + if (! FONT_INSTANCE_X_FONT (f)) return result; = + props =3D FONT_INSTANCE_X_FONT (f)->properties; for (i =3D FONT_INSTANCE_X_FONT (f)->n_properties - 1; i >=3D 0; i--) { Lisp_Object name, value; @@ -887,13 +942,31 @@ x_font_list (Lisp_Object pattern, Lisp_O #ifdef MULE = static int -x_font_spec_matches_charset (struct device *UNUSED (d), Lisp_Object charse= t, +x_font_spec_matches_charset (struct device * USED_IF_XFT (d), + Lisp_Object charset, const Ibyte *nonreloc, Lisp_Object reloc, Bytecount offset, Bytecount length, int stage) { if (stage) +#ifdef USE_XFT + { + Display *dpy =3D DEVICE_X_DISPLAY (d); + Extbyte *extname; + XftFont *rf; + const Ibyte *the_nonreloc; + + if (!NILP(reloc)) + { + the_nonreloc =3D XSTRING_DATA (reloc); + LISP_STRING_TO_EXTERNAL (reloc, extname, Qx_font_name_encoding); + rf =3D xft_open_font_by_name (dpy, extname); + return 0; /* #### maybe this will compile and run ;) */ + } + } +#else return 0; +#endif = if (UNBOUNDP (charset)) return 1; @@ -901,6 +974,12 @@ x_font_spec_matches_charset (struct devi so we just assume the user knows what they're doing in the case of ASCII. For other charsets, you gotta give the long form; sorry buster. + #### FMH: this screws fontconfig/Xft? + STRATEGY: use fontconfig's ability to hack languages and character + sets (lang and charset properties). + #### Maybe we can use the fontconfig model to eliminate the difference + between faces and fonts? No - it looks like that would be an abuse + (fontconfig doesn't know about colors, although Xft does). */ if (EQ (charset, Vcharset_ascii)) { @@ -939,6 +1018,151 @@ x_font_spec_matches_charset (struct devi ERROR_ME, 0) >=3D 0); } = +#ifdef USE_XFT +/* #### debug functions: find a better place for us */ +const char *FcResultToString (FcResult r); +const char * +FcResultToString (FcResult r) +{ + static char buffer[256]; + switch (r) + { + case FcResultMatch: + return "FcResultMatch"; + case FcResultNoMatch: + return "FcResultNoMatch"; + case FcResultTypeMismatch: + return "FcResultTypeMismatch"; + case FcResultNoId: + return "FcResultNoId"; + default: + snprintf (buffer, 255, "FcResultUndocumentedValue (%d)", r); + return buffer; + } +} + +const char *FcTypeOfValueToString (FcValue v); +const char * +FcTypeOfValueToString (FcValue v) +{ + static char buffer[256]; + switch (v.type) + { + case FcTypeMatrix: + return "FcTypeMatrix"; + case FcTypeString: + return "FcTypeString"; + case FcTypeVoid: + return "FcTypeVoid"; + case FcTypeDouble: + return "FcTypeDouble"; + case FcTypeInteger: + return "FcTypeInteger"; + case FcTypeBool: + return "FcTypeBool"; + case FcTypeCharSet: + return "FcTypeCharSet"; + case FcTypeLangSet: + return "FcTypeLangSet"; + /* #### There is no union member of this type, but there are void* and + FcPattern* members, as of fontconfig.h FC_VERSION 10002 */ + case FcTypeFTFace: + return "FcTypeFTFace"; + default: + snprintf (buffer, 255, "FcTypeUndocumentedType (%d)", v.type); + return buffer; + } +} + +static FcCharSet * +mule_to_fc_charset (Lisp_Object cs) +{ + int ucode, i, j; + FcCharSet *fccs; + + CHECK_CHARSET (cs); + fccs =3D FcCharSetCreate (); + /* #### do we also need to deal with 94 vs. 96 charsets? + ie, how are SP and DEL treated in ASCII? non-graphic should return -= 1 */ + if (1 =3D=3D XCHARSET_DIMENSION (cs)) + /* Unicode tables are indexed by offsets from ASCII SP, not by ASCII */ + for (i =3D 0; i < 96; i++) + { + ucode =3D ((int *) XCHARSET_TO_UNICODE_TABLE (cs))[i]; + if (ucode >=3D 0) + /* #### should check for allocation failure */ + FcCharSetAddChar (fccs, (FcChar32) ucode); + } + else if (2 =3D=3D XCHARSET_DIMENSION (cs)) + /* Unicode tables are indexed by offsets from ASCII SP, not by ASCII */ + for (i =3D 0; i < 96; i++) + for (j =3D 0; j < 96; j++) + { + ucode =3D ((int **) XCHARSET_TO_UNICODE_TABLE (cs))[i][j]; + if (ucode >=3D 0) + /* #### should check for allocation failure */ + FcCharSetAddChar (fccs, (FcChar32) ucode); + } + else + { + FcCharSetDestroy (fccs); + fccs =3D NULL; + } + return fccs; +} + +struct charset_reporter { + Lisp_Object *charset; + /* This is a debug facility, require ASCII. */ + Extbyte *language; /* ASCII, please */ + FcChar8 *rfc3066; /* ASCII, please */ +}; + +static struct charset_reporter charset_table[] =3D + { + /* #### It's my branch, my favorite charsets get checked first! + That's a joke, Son. + Ie, I don't know what I'm doing, so my charsets first is as good as + any other arbitrary order. If you have a better idea, speak up! */ + { &Vcharset_ascii, "English", "en" }, + { &Vcharset_japanese_jisx0208, "Japanese", "ja" }, + { &Vcharset_japanese_jisx0212, "Japanese", "ja" }, + { &Vcharset_katakana_jisx0201, "Japanese", "ja" }, + { &Vcharset_latin_jisx0201, "Japanese", "ja" }, + { &Vcharset_japanese_jisx0208_1978, "Japanese", "ja" }, + { &Vcharset_greek_iso8859_7, "Greek", "el" }, + /* #### all the Chinese need checking + Damn the blood-sucking ISO anyway. */ + { &Vcharset_chinese_gb2312, "simplified Chinese", "zh-CN" }, + { &Vcharset_korean_ksc5601, "Korean", "ko" }, + { &Vcharset_chinese_cns11643_1, "traditional Chinese", "zh-TW" }, + { &Vcharset_chinese_cns11643_2, "traditional Chinese", "zh-TW" }, + { &Vcharset_latin_iso8859_1, NULL, NULL }, + { &Vcharset_latin_iso8859_2, NULL, NULL }, + { &Vcharset_latin_iso8859_3, NULL, NULL }, + { &Vcharset_latin_iso8859_4, NULL, NULL }, + { &Vcharset_latin_iso8859_9, NULL, NULL }, + { &Vcharset_latin_iso8859_15, NULL, NULL }, + { &Vcharset_thai_tis620, NULL, NULL }, + { &Vcharset_arabic_iso8859_6, NULL, NULL }, + { &Vcharset_hebrew_iso8859_8, "Hebrew", "he" }, + { &Vcharset_cyrillic_iso8859_5, NULL, NULL }, + /* #### these probably are not quite right */ + { &Vcharset_chinese_big5_1, "traditional Chinese", "zh-TW" }, + { &Vcharset_chinese_big5_2, "traditional Chinese", "zh-TW" }, + { NULL, NULL, NULL } + }; + +/* Choose appropriate font name for debug messages. + Use only in the top half of next function (enforced with #undef). */ +#define SET_DEBUG_FONTNAME(name) \ + do { name =3D \ + debug_xft > 2 ? eistr_fullname \ +: debug_xft > 1 ? eistr_longname \ +: eistr_shortname } while (0) + +#endif /* USE_XFT */ + /* find a font spec that matches font spec FONT and also matches (the registry of) CHARSET. */ static Lisp_Object @@ -947,18 +1171,277 @@ x_find_charset_font (Lisp_Object device, { Extbyte **names; int count =3D 0; - Lisp_Object result =3D Qnil; const Extbyte *patternext; + Lisp_Object result =3D Qunbound; int i; = + /* #### with Xft need to handle second stage here -- sjt + Hm. Or maybe not. That would be cool. :-) */ if (stage) return Qnil; = - LISP_STRING_TO_EXTERNAL (font, patternext, Qx_font_name_encoding); +#ifdef USE_XFT + /* Fontconfig converts all FreeType names to UTF-8 before passing them + back to callers---see fcfreetype.c (FcFreeTypeQuery). + I don't believe this is documented. */ + + DEBUG_XFT1 (1, "confirming charset for font instance %s\n", = + XSTRING_DATA(font)); + + /* #### this looks like a fair amount of work, but the basic design + has never been rethought, and it should be + + what really should happen here is that we use FcFontSort (FcFontList?) + to get a list of matching fonts, then pick the first (best) one that + gives language or repertoire coverage. + */ + + FcInit (); /* No-op if already initialized. + In fontconfig 2.3.2, this cannot return + failure, but that looks like a bug. We + check for it with FcGetCurrentConfig(), + which *can* fail. */ + if (!FcConfigGetCurrent()) /* #### We should expose FcInit* interfaces + to LISP and decide when to reinitialize + intelligently. */ + stderr_out ("Failed fontconfig initialization\n"); + else + { + FcPattern *fontxft; /* long-lived, freed at end of this block */ + FcResult fcresult; + FcConfig *fcc; + FcChar8 *lang =3D "en"; /* #### fix this bogus hack! */ + FcCharSet *fccs =3D NULL; + DECLARE_EISTRING (eistr_shortname); /* user-friendly nickname */ + DECLARE_EISTRING (eistr_longname); /* omit FC_LANG and FC_CHARSET */ + DECLARE_EISTRING (eistr_fullname); /* everything */ + + LISP_STRING_TO_EXTERNAL (font, patternext, Qxft_font_name_encoding); + fcc =3D FcConfigGetCurrent (); + + /* parse the name, do the substitutions, and match the font */ + + { + FcPattern *p =3D FcNameParse (patternext); + PRINT_XFT_PATTERN (3, "FcNameParse'ed name is %s\n", p); + /* #### Next two return FcBool, but what does the return mean? */ + /* The order is correct according the fontconfig docs. */ + FcConfigSubstitute (fcc, p, FcMatchPattern); + PRINT_XFT_PATTERN (2, "FcConfigSubstitute'ed name is %s\n", p); + FcDefaultSubstitute (p); + PRINT_XFT_PATTERN (3, "FcDefaultSubstitute'ed name is %s\n", p); + /* #### check fcresult of following match? */ + fontxft =3D FcFontMatch (fcc, p, &fcresult); + /* this prints the long fontconfig name */ + PRINT_XFT_PATTERN (1, "FcFontMatch'ed name is %s\n", fontxft); + FcPatternDestroy (p); + } + + /* heuristic to give reasonable-length names for debug reports + + I considered #ifdef SUPPORT_FULL_FONTCONFIG_NAME etc but that's + pointless. We're just going to remove this code once the font/ + face refactoring is done, but until then it could be very useful. + */ + { + FcPattern *p =3D FcFontRenderPrepare (fcc, fontxft, fontxft); + FcChar8 *name; + + /* full name, including language coverage and repertoire */ + name =3D FcNameUnparse (p); + eicpy_ext (eistr_fullname, name, Qxft_font_name_encoding); + free (name); + + /* long name, omitting coverage and repertoire, plus a number + of rarely useful properties */ + FcPatternDel (p, FC_CHARSET); + FcPatternDel (p, FC_LANG); + FcPatternDel (p, FC_WIDTH); + FcPatternDel (p, FC_SPACING); + FcPatternDel (p, FC_HINTING); + FcPatternDel (p, FC_VERTICAL_LAYOUT); + FcPatternDel (p, FC_AUTOHINT); + FcPatternDel (p, FC_GLOBAL_ADVANCE); + FcPatternDel (p, FC_INDEX); + FcPatternDel (p, FC_SCALE); + FcPatternDel (p, FC_FONTVERSION); + name =3D FcNameUnparse (p); + eicpy_ext (eistr_longname, name, Qxft_font_name_encoding); + free (name); + + /* nickname, just family and size, but + "family" names usually have style, slant, and weight */ + FcPatternDel (p, FC_FOUNDRY); + FcPatternDel (p, FC_STYLE); + FcPatternDel (p, FC_SLANT); + FcPatternDel (p, FC_WEIGHT); + FcPatternDel (p, FC_PIXEL_SIZE); + FcPatternDel (p, FC_OUTLINE); + FcPatternDel (p, FC_SCALABLE); + FcPatternDel (p, FC_DPI); + name =3D FcNameUnparse (p); + eicpy_ext (eistr_shortname, name, Qxft_font_name_encoding); + free (name); + + FcPatternDestroy (p); + } + + /* The language approach may better in the long run, but we can't use + it based on Mule charsets; fontconfig doesn't provide a way to test + for unions of languages, etc. That will require support from the + text module. + + Optimization: cache the generated FcCharSet in the Mule charset. + Don't forget to destroy it if the Mule charset gets deallocated. = */ + + struct charset_reporter *cr; + for (cr =3D charset_table; + cr->charset && !EQ (*(cr->charset), charset); + cr++) + ; + + if (cr->rfc3066) + { + if (debug_xft > 0) + { + SET_DEBUG_FONTNAME (name); + CHECKING_LANG (0, eidata(name), cr->language); + } + lang =3D cr->rfc3066; + } + else if (cr->charset) + { + /* what the hey, build 'em on the fly */ + /* #### in the case of error this could return NULL! */ + fccs =3D mule_to_fc_charset (charset); + lang =3D XSTRING_DATA (XSYMBOL (XCHARSET_NAME (charset))-> name); + } + else + { + /* OK, we fell off the end of the table */ + warn_when_safe_lispobj (intern ("xft"), intern ("alert"), + list2 (build_string ("unchecked charset"), + charset)); + /* default to "en" + #### THIS IS WRONG, WRONG, WRONG!! + It is why we never fall through to XLFD-checking. */ + } + + ASSERT_ASCTEXT_ASCII(lang); + + if (fccs) + { + /* check for character set coverage */ + int i =3D 0; + FcCharSet *v; + FcResult r =3D FcPatternGetCharSet (fontxft, FC_CHARSET, i, &v); + + if (r =3D=3D FcResultTypeMismatch) + { + DEBUG_XFT0 (0, "Unexpected type return in charset value\n"); + result =3D Qnil; + } + else if (r =3D=3D FcResultMatch && FcCharSetIsSubset (fccs, v)) + { + /* The full pattern with the bitmap coverage is massively + unwieldy, but the shorter names are's just *wrong*. We + should have the full thing internally as truename, and + filter stuff the client doesn't want to see on output. + Should we just store it into the truename right here? */ + if (debug_xft > 0) + { + SET_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s supports %s\n", + eidata(name), lang); + } +#ifdef RETURN_LONG_FONTCONFIG_NAMES + result =3D eimake_string(eistr_fullname); +#else + result =3D eimake_string(eistr_longname); +#endif + } + else + { + if (debug_xft > 0) + { + SET_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", + eidata(name), lang); + } + result =3D Qnil; + } = + /* clean up */ + FcCharSetDestroy (fccs); + } + else + { + /* check for language coverage */ + int i =3D 0; + FcValue v; + /* the main event */ + FcResult r =3D FcPatternGet (fontxft, FC_LANG, i, &v); + + if (r =3D=3D FcResultMatch) + { + if (v.type !=3D FcTypeLangSet) /* excessive paranoia */ + { + ASSERT_ASCTEXT_ASCII(FcTypeOfValueToString(v)); + /* Urk! Fall back and punt to core font. */ + DEBUG_XFT1 (0, "Unexpected type of lang value (%s)\n", + FcTypeOfValueToString (v)); + result =3D Qnil; + } + else if (FcLangSetHasLang (v.u.l, lang) !=3D FcLangDifferentLang) + { + if (debug_xft > 0) + { + SET_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s supports %s\n", + eidata(name), lang); + } +#ifdef RETURN_LONG_FONTCONFIG_NAMES + result =3D eimake_string(eistr_fullname); +#else + result =3D eimake_string(eistr_longname); +#endif + } + else + { + if (debug_xft > 0) + { + SET_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", + eidata(name), lang); + } + result =3D Qnil; + } + } + else + { + ASSERT_ASCTEXT_ASCII(FcResultToString(r)); + DEBUG_XFT1 (0, "Getting lang: unexpected result=3D%s\n", + FcResultToString (r)); + result =3D Qnil; + } + } + + /* clean up and maybe return */ + FcPatternDestroy (fontxft); + if (!UNBOUNDP (result)) + return result; + } + + DEBUG_XFT1 (0, "shit happens, try X11 charset match for %s\n", = + XSTRING_DATA(font)); +#undef SET_DEBUG_FONTNAME +#endif /* USE_XFT */ + + LISP_STRING_TO_EXTERNAL (font, patternext, Qx_font_name_encoding); names =3D XListFonts (DEVICE_X_DISPLAY (XDEVICE (device)), patternext, MAX_FONT_COUNT, &count); /* #### This code seems awfully bogus -- mrb */ + /* #### fontconfig does it better -- sjt */ for (i =3D 0; i < count; i ++) { const Ibyte *intname; @@ -1041,6 +1524,10 @@ fixed-width fonts. Since most people do cause problems this is set to nil by default. */ ); x_handle_non_fully_specified_fonts =3D 0; + +#ifdef USE_XFT + Fprovide (intern ("xft-fonts")); +#endif } = void 1.5 +7 -2 XEmacs/xemacs/src/objects-x.h Index: objects-x.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- objects-x.h 2002/06/20 21:18:40 1.4 +++ objects-x.h 2005/11/26 11:46:10 1.5 @@ -28,11 +28,16 @@ Boston, MA 02111-1307, USA. */ #define INCLUDED_objects_x_h_ = #include "objects.h" +#include "../lwlib/lwlib-colors.h" /* for x_allocate_nearest_color */ = #ifdef HAVE_X_WINDOWS = -int allocate_nearest_color (Display *display, Colormap screen_colormap, - Visual *visual, XColor *color_def); +#ifdef USE_XFT +EXFUN (Ffc_font_real_pattern, 2); +#endif + +/* Lisp_Object Fxlfd_font_name_p; */ + #endif /* HAVE_X_WINDOWS */ = #endif /* INCLUDED_objects_x_h_ */ 1.31 +21 -5 XEmacs/xemacs/src/objects.c Index: objects.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -p -r1.30 -r1.31 --- objects.c 2005/11/25 01:42:06 1.30 +++ objects.c 2005/11/26 11:46:10 1.31 @@ -294,6 +294,7 @@ static const struct memory_description f { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, name)}, { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, truename)}, { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, device)}, + { XD_LISP_OBJECT, offsetof (Lisp_Font_Instance, charset)}, { XD_UNION, offsetof (Lisp_Font_Instance, data), = XD_INDIRECT (0, 0), { &font_instance_data_description } }, { XD_END } @@ -370,19 +371,23 @@ DEFINE_LRECORD_IMPLEMENTATION ("font-ins Lisp_Font_Instance); = =0C -DEFUN ("make-font-instance", Fmake_font_instance, 1, 3, 0, /* +/* #### Why is this exposed to Lisp? Used in: +x-frob-font-size, gtk-font-menu-load-font, x-font-menu-load-font-xft, +x-font-menu-load-font-core, mswindows-font-menu-load-font, +mswindows-frob-font-style-and-sizify, mswindows-frob-font-size. */ +DEFUN ("make-font-instance", Fmake_font_instance, 1, 4, 0, /* Return a new `font-instance' object named NAME. DEVICE specifies the device this object applies to and defaults to the selected device. An error is signalled if the font is unknown or cannot be allocated; however, if NOERROR is non-nil, nil is simply returned in -this case. +this case. CHARSET is used internally. #### make helper function? = The returned object is a normal, first-class lisp object. The way you `deallocate' the font is the way you deallocate any other lisp object: you drop all pointers to it and allow it to be garbage collected. When -these objects are GCed, the underlying X data is deallocated as well. +these objects are GCed, the underlying GUI data is deallocated as well. */ - (name, device, noerror)) + (name, device, noerror, charset)) { Lisp_Font_Instance *f; int retval =3D 0; @@ -407,6 +412,7 @@ these objects are GCed, the underlying X f->ascent =3D f->height =3D 1; f->descent =3D 0; f->width =3D 1; + f->charset =3D charset; f->proportional_p =3D 0; = retval =3D MAYBE_INT_DEVMETH (XDEVICE (device), initialize_font_instance, @@ -509,6 +515,15 @@ the first found is used. This returns a return font_instance_truename_internal (font_instance, ERROR_ME); } = +DEFUN ("font-instance-charset", Ffont_instance_charset, 1, 1, 0, /* +Return the Mule charset that FONT-INSTANCE was allocated to handle. +*/ + (font_instance)) +{ + CHECK_FONT_INSTANCE (font_instance); + return XFONT_INSTANCE (font_instance)->charset; +} + DEFUN ("font-instance-properties", Ffont_instance_properties, 1, 1, 0, /* Return the properties (an alist or nil) of FONT-INSTANCE. */ @@ -898,7 +913,7 @@ font_instantiate (Lisp_Object UNUSED (sp if (UNBOUNDP (instance)) { /* make sure we cache the failures, too. */ - instance =3D Fmake_font_instance (instantiator, device, Qt); + instance =3D Fmake_font_instance (instantiator, device, Qt, charset); Fputhash (instantiator, instance, cache); } = @@ -1150,6 +1165,7 @@ syms_of_objects (void) DEFSUBR (Ffont_instance_ascent); DEFSUBR (Ffont_instance_descent); DEFSUBR (Ffont_instance_width); + DEFSUBR (Ffont_instance_charset); DEFSUBR (Ffont_instance_proportional_p); DEFSUBR (Ffont_instance_truename); DEFSUBR (Ffont_instance_properties); 1.11 +2 -1 XEmacs/xemacs/src/objects.h Index: objects.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- objects.h 2004/09/14 14:32:52 1.10 +++ objects.h 2005/11/26 11:46:10 1.11 @@ -58,10 +58,11 @@ DECLARE_LRECORD (font_instance, Lisp_Fon #define CHECK_FONT_INSTANCE(x) CHECK_RECORD (x, font_instance) #define CONCHECK_FONT_INSTANCE(x) CONCHECK_RECORD (x, font_instance) = -EXFUN (Fmake_font_instance, 3); +EXFUN (Fmake_font_instance, 4); EXFUN (Ffont_instance_name, 1); EXFUN (Ffont_instance_p, 1); EXFUN (Ffont_instance_truename, 1); +EXFUN (Ffont_instance_charset, 1); = extern Lisp_Object Vthe_null_font_instance; = 1.41 +412 -114 XEmacs/xemacs/src/redisplay-x.c Index: redisplay-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-x.c,v retrieving revision 1.40 retrieving revision 1.41 diff -u -p -r1.40 -r1.41 --- redisplay-x.c 2005/01/24 23:34:07 1.40 +++ redisplay-x.c 2005/11/26 11:46:10 1.41 @@ -58,7 +58,7 @@ Boston, MA 02111-1307, USA. */ #include = /* Number of pixels below each line. */ -int x_interline_space; /* #### implement me */ +int x_interline_space; /* #### this needs to be implemented, but per-font = */ = #define EOL_CURSOR_WIDTH 5 = @@ -73,7 +73,12 @@ static void x_output_eol_cursor (struct = static void x_clear_frame (struct frame *f); static void x_clear_frame_windows (Lisp_Object window); = +#ifdef USE_XFT +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) +#endif /* USE_XFT */ = + /* Note: We do not use the Xmb*() functions and XFontSets. Those functions are generally losing for a number of reasons: = @@ -83,6 +88,11 @@ static void x_clear_frame_windows (Lisp_ to try to deal with this, but that would generally fail because an XFontSet is tied to one locale and won't have the other character sets in it. + + The following aren't true any more, but that doesn't make Xmb*() + usable. One wonders about Xft and Pango, etc, tho'. Except they + aren't cross-platform solutions. FMH, as jwz would say. -- sjt + [[ 2) Not all (or even very many) OS's support the useful locales. For example, as far as I know SunOS and Solaris only support the Japanese locale if you get the @@ -98,8 +108,10 @@ static void x_clear_frame_windows (Lisp_ I can find what the multi-byte text format for the Japanese locale under SunOS and Solaris is, but I assume it's EUC. + ]] */ = +/* #### Break me out into a separate header */ struct textual_run { Lisp_Object charset; @@ -120,6 +132,25 @@ struct textual_run = Returns the number of runs actually used. */ = +/* Notes on Xft implementation + + - Xft Reloaded, v.4, uses a function like that in redisplay-msw.c to + handle all characters. However, instead of using an appropriate + character width for each run, it just uses UTF-8 for all runs. This + is not obviously a bad idea, but (for Han characters etc) the estimate + of TEXT_STORAGE allocation needed is (3 * len), and for characters not + in the BMP, it's (4 * len). + - With Unicode, we're no longer going to have repertoires reified as + charsets. (Not that we ever really did, what with corporate variants, + and so on.) So we really should be querying the face for the desired + font, rather than the character for the charset, and that's what would + determine the separation into runs. + - The widechar versions of fontconfig (and therefore Xft) functions + seem to be just bigendian Unicode. So there's actually no need to use + the 8-bit versions in computing runs and runes, it would seem. + - Mule won't "just work"; substantially more effort seems needed. +*/ + static int separate_textual_runs (unsigned char *text_storage, struct textual_run *run_storage, @@ -139,7 +170,7 @@ separate_textual_runs (unsigned char *te { Ichar ch =3D str[i]; Lisp_Object charset; - int byte1, byte2; + int byte1, byte2; /* #### why aren't these UExtbytes? */ int dimension; int graphic; = @@ -151,7 +182,11 @@ separate_textual_runs (unsigned char *te { run_storage[runs_so_far].ptr =3D text_storage; run_storage[runs_so_far].charset =3D charset; +#ifdef USE_XFT + run_storage[runs_so_far].dimension =3D 2; +#else run_storage[runs_so_far].dimension =3D dimension; +#endif = if (runs_so_far) { @@ -172,6 +207,7 @@ separate_textual_runs (unsigned char *te #endif } = +#ifndef USE_XFT if (graphic =3D=3D 0) { byte1 &=3D 0x7F; @@ -192,10 +228,53 @@ separate_textual_runs (unsigned char *te byte1 =3D char_converter.reg[1]; byte2 =3D char_converter.reg[2]; } -#endif +#endif /* MULE */ *text_storage++ =3D (unsigned char) byte1; if (dimension =3D=3D 2) *text_storage++ =3D (unsigned char) byte2; +#else /* USE_XFT */ + /* #### This is bogus as hell. XftChar16, aka FcChar16, is actually + unsigned short, and therefore is not suitable for indexing matrix + fonts such as the JIS fonts supplied with X11. But if this were + consistent, the XftDraw*8 and XftDraw*16 functions are pretty + incoherent, as then we not should allow anything but ISO 8859/1 + (ie, the first 256 code points of Unicode) in XftDraw*8. So it + looks like this depends on the font, not the charset. */ + { + XftChar16 xftchar16 =3D 0xFFFD; /* unsigned short */ +#ifndef MULE + int unicode =3D ch; +#else + int unicode =3D ichar_to_unicode (ch); + if (unicode < 0) + /* abort(); */ /* #### serious error, tables are corrupt + Unfortunately, not a valid assumption; this can happen with + composite characters. Fake it. */ + unicode =3D 0xFFFD; /* REPLACEMENT CHARACTER, can't represent */ + else if (need_ccl_conversion) + /* #### maybe we should just ignore this and hope the font wins? */ + unicode =3D 0xFFFD; /* REPLACEMENT CHARACTER, can't represent */ + else if (unicode > 65535) + unicode =3D 0xFFFD; /* REPLACEMENT CHARACTER, can't represent */ + else +#endif + xftchar16 =3D (XftChar16) unicode; + /* #### endianness dependency? No, + apparently xft handles endianness for us; + the "big-endian" code works on Intel and PPC */ +#if 1 + /* big-endian or auto-endian */ + byte1 =3D ((unsigned char *) (&xftchar16))[0]; + byte2 =3D ((unsigned char *) (&xftchar16))[1]; +#else + /* little-endian */ + byte1 =3D ((unsigned char *) (&xftchar16))[1]; + byte2 =3D ((unsigned char *) (&xftchar16))[0]; +#endif + } + *text_storage++ =3D (unsigned char) byte1; + *text_storage++ =3D (unsigned char) byte2; = +#endif /* USE_XFT */ } = if (runs_so_far) @@ -216,13 +295,34 @@ separate_textual_runs (unsigned char *te /*************************************************************************= ***/ = static int -x_text_width_single_run (struct face_cachel *cachel, struct textual_run *r= un) +x_text_width_single_run (struct frame * USED_IF_XFT (f), + struct face_cachel *cachel, struct textual_run *run) { Lisp_Object font_inst =3D FACE_CACHEL_FONT (cachel, run->charset); Lisp_Font_Instance *fi =3D XFONT_INSTANCE (font_inst); if (!fi->proportional_p) return fi->width * run->len; - else +#ifdef USE_XFT + else if (FONT_INSTANCE_X_XFTFONT(fi)) + { + static XGlyphInfo glyphinfo; + struct device *d =3D XDEVICE (f->device); + Display *dpy =3D DEVICE_X_DISPLAY (d); + + if (run->dimension =3D=3D 2) { + XftTextExtents16 (dpy, + FONT_INSTANCE_X_XFTFONT(fi), + (XftChar16 *) run->ptr, run->len, &glyphinfo); + } else { + XftTextExtents8 (dpy, + FONT_INSTANCE_X_XFTFONT(fi), + run->ptr, run->len, &glyphinfo); + } + = + return glyphinfo.xOff; + } +#endif + else if (FONT_INSTANCE_X_FONT (fi)) { if (run->dimension =3D=3D 2) return XTextWidth16 (FONT_INSTANCE_X_FONT (fi), @@ -231,17 +331,23 @@ x_text_width_single_run (struct face_cac return XTextWidth (FONT_INSTANCE_X_FONT (fi), (char *) run->ptr, run->len); } + else + abort(); + return 0; /* shut up GCC */ } = /* x_text_width = - Given a string and a face, return the string's length in pixels when - displayed in the font associated with the face. + Given a string and a merged face, return the string's length in pixels + when displayed in the fonts associated with the face. */ = -static int -x_text_width (struct frame *UNUSED (f), struct face_cachel *cachel, +/* #### Break me out into a separate header */ +int x_text_width (struct frame *f, struct face_cachel *cachel, + const Ichar *str, Charcount len); +int +x_text_width (struct frame *f, struct face_cachel *cachel, const Ichar *str, Charcount len) { /* !!#### Needs review */ @@ -254,7 +360,7 @@ x_text_width (struct frame *UNUSED (f), = nruns =3D separate_textual_runs (text_storage, runs, str, len); = for (i =3D 0; i < nruns; i++) - width_so_far +=3D x_text_width_single_run (cachel, runs + i); + width_so_far +=3D x_text_width_single_run (f, cachel, runs + i); = return width_so_far; } @@ -319,7 +425,9 @@ x_output_display_block (struct window *w int start, int end, int start_pixpos, int cursor_start, int cursor_width, int cursor_height) { +#ifndef USE_XFT struct frame *f =3D XFRAME (w->frame); +#endif Ichar_dynarr *buf =3D Dynarr_new (Ichar); Lisp_Object window; = @@ -502,13 +610,17 @@ x_output_display_block (struct window *w x_output_string (w, dl, buf, xpos, 0, start_pixpos, width, findex, 0, cursor_start, cursor_width, cursor_height); = - /* #### This is really conditionalized well for optimized - performance. */ if (dl->modeline && !EQ (Qzero, w->modeline_shadow_thickness) +#ifndef USE_XFT + /* This optimization doesn't work right with some Xft fonts, which + leave antialiasing turds at the boundary. I don't know if this + is an Xft bug or not, but I think it is. See x_output_string. */ && (f->clear || f->windows_structure_changed - || w->shadow_thickness_changed)) + || w->shadow_thickness_changed) +#endif + ) bevel_modeline (w, dl); = Dynarr_free (buf); @@ -662,7 +774,13 @@ x_get_gc (struct device *d, Lisp_Object = mask =3D GCGraphicsExposures | GCClipMask | GCClipXOrigin | GCClipYOrigi= n; mask |=3D GCFillStyle; = - if (!NILP (font)) + if (!NILP (font) +#ifdef USE_XFT + /* Only set the font if it's a core font */ + /* the renderfont will be set elsewhere (not part of gc) */ + && !FONT_INSTANCE_X_XFTFONT (XFONT_INSTANCE (font)) +#endif + ) { gcv.font =3D FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font))->fid; mask |=3D GCFont; @@ -671,7 +789,7 @@ x_get_gc (struct device *d, Lisp_Object = /* evil kludge! */ if (!NILP (fg) && !COLOR_INSTANCEP (fg) && !INTP (fg)) { - /* #### I fixed once case where this was getting it. It was a + /* #### I fixed one case where this was getting hit. It was a bad macro expansion (compiler bug). */ stderr_out ("Help! x_get_gc got a bogus fg value! fg =3D "); debug_print (fg); @@ -729,6 +847,9 @@ x_get_gc (struct device *d, Lisp_Object = mask |=3D GCLineWidth; } = +#if 0 + debug_out ("\nx_get_gc: calling gc_cache_lookup\n"); +#endif return gc_cache_lookup (DEVICE_X_GC_CACHE (d), &gcv, mask); } = @@ -774,7 +895,7 @@ x_output_string (struct window *w, struc /* General variables */ struct frame *f =3D XFRAME (w->frame); struct device *d =3D XDEVICE (f->device); - Lisp_Object window; + Lisp_Object window =3D wrap_window (w); Display *dpy =3D DEVICE_X_DISPLAY (d); Window x_win =3D XtWindow (FRAME_X_TEXT_WIDGET (f)); = @@ -790,7 +911,8 @@ x_output_string (struct window *w, struc /* Text-related variables */ Lisp_Object bg_pmap; GC bgc, gc; - int height; + int height =3D DISPLAY_LINE_HEIGHT (dl); + int ypos =3D DISPLAY_LINE_YPOS (dl); int len =3D Dynarr_length (buf); unsigned char *text_storage =3D (unsigned char *) ALLOCA (2 * len); struct textual_run *runs =3D alloca_array (struct textual_run, len); @@ -798,11 +920,31 @@ x_output_string (struct window *w, struc int i; struct face_cachel *cachel =3D WINDOW_FACE_CACHEL (w, findex); = - window =3D wrap_window (w); + int use_x_font =3D 1; /* #### bogus!! + The logic of this function needs review! */ +#ifdef USE_XFT + Colormap cmap =3D DEVICE_X_COLORMAP (d); + Visual *visual =3D DEVICE_X_VISUAL (d); + static XftColor fg, bg; + XftDraw *xftDraw; + + /* Lazily initialize frame's xftDraw member. */ + if (!FRAME_X_XFTDRAW (f)) { + FRAME_X_XFTDRAW (f) =3D XftDrawCreate (dpy, x_win, visual, cmap); + } + xftDraw =3D FRAME_X_XFTDRAW (f); = + /* #### This will probably cause asserts when passed a Lisp integer for a + color. See ca. line 759 this file. + #### Maybe xft_convert_color should take an XColor, not a pixel. */ +#define XFT_FROB_LISP_COLOR(color, dim) \ + xft_convert_color (dpy, cmap, visual, \ + COLOR_INSTANCE_X_COLOR (XCOLOR_INSTANCE (color)).pixel, \ + (dim)) +#endif + if (width < 0) width =3D x_text_width (f, cachel, Dynarr_atp (buf, 0), Dynarr_length = (buf)); - height =3D DISPLAY_LINE_HEIGHT (dl); = /* Regularize the variables passed in. */ = @@ -816,12 +958,9 @@ x_output_string (struct window *w, struc xpos -=3D xoffset; = /* make sure the area we are about to display is subwindow free. */ - redisplay_unmap_subwindows_maybe (f, clip_start, DISPLAY_LINE_YPOS (dl), - clip_end - clip_start, DISPLAY_LINE_HEIGHT (dl)); + redisplay_unmap_subwindows_maybe (f, clip_start, ypos, + clip_end - clip_start, height); = - nruns =3D separate_textual_runs (text_storage, runs, Dynarr_atp (buf, 0), - Dynarr_length (buf)); - cursor_clip =3D (cursor_start >=3D clip_start && cursor_start < clip_end); = @@ -858,14 +997,21 @@ x_output_string (struct window *w, struc && !NILP (w->text_cursor_visible_p)) || NILP (bg_pmap)) bgc =3D 0; else - bgc =3D x_get_gc (d, Qnil, cachel->foreground, cachel->background, - bg_pmap, Qnil); + { + bgc =3D x_get_gc (d, Qnil, cachel->foreground, cachel->background, + bg_pmap, Qnil); + } = if (bgc) - XFillRectangle (dpy, x_win, bgc, clip_start, - DISPLAY_LINE_YPOS (dl), clip_end - clip_start, - height); + { + XFillRectangle (dpy, x_win, bgc, clip_start, + ypos, clip_end - clip_start, + height); + } = + nruns =3D separate_textual_runs (text_storage, runs, Dynarr_atp (buf, 0), + Dynarr_length (buf)); + for (i =3D 0; i < nruns; i++) { Lisp_Object font =3D FACE_CACHEL_FONT (cachel, runs[i].charset); @@ -876,7 +1022,7 @@ x_output_string (struct window *w, struc if (EQ (font, Vthe_null_font_instance)) continue; = - this_width =3D x_text_width_single_run (cachel, runs + i); + this_width =3D x_text_width_single_run (f, cachel, runs + i); need_clipping =3D (dl->clip || clip_start > xpos || clip_end < xpos + this_width); = @@ -895,8 +1041,8 @@ x_output_string (struct window *w, struc = ypos1_string =3D dl->ypos - fi->ascent; ypos2_string =3D dl->ypos + fi->descent; - ypos1_line =3D DISPLAY_LINE_YPOS (dl); - ypos2_line =3D ypos1_line + DISPLAY_LINE_HEIGHT (dl); + ypos1_line =3D ypos; + ypos2_line =3D ypos1_line + height; = /* Make sure we don't clear below the real bottom of the line. */ @@ -922,14 +1068,20 @@ x_output_string (struct window *w, struc else { redisplay_clear_region (window, findex, clear_start, - DISPLAY_LINE_YPOS (dl), clear_end - clear_start, + ypos, clear_end - clear_start, height); } } = if (cursor && cursor_cachel && focus && NILP (bar_cursor_value)) - gc =3D x_get_gc (d, font, cursor_cachel->foreground, - cursor_cachel->background, Qnil, Qnil); + { +#ifdef USE_XFT + fg =3D XFT_FROB_LISP_COLOR (cursor_cachel->foreground, 0); + bg =3D XFT_FROB_LISP_COLOR (cursor_cachel->background, 0); +#endif + gc =3D x_get_gc (d, font, cursor_cachel->foreground, + cursor_cachel->background, Qnil, Qnil); + } else if (cachel->dim) { /* Ensure the gray bitmap exists */ @@ -939,53 +1091,135 @@ x_output_string (struct window *w, struc gray_width, gray_height); = /* Request a GC with the gray stipple pixmap to draw dimmed text */ +#ifdef USE_XFT + fg =3D XFT_FROB_LISP_COLOR (cachel->foreground, 1); + bg =3D XFT_FROB_LISP_COLOR (cachel->background, 0); +#endif gc =3D x_get_gc (d, font, cachel->foreground, cachel->background, Qdim, Qnil); } else - gc =3D x_get_gc (d, font, cachel->foreground, cachel->background, - Qnil, Qnil); - - if (need_clipping) { - XRectangle clip_box[1]; - - clip_box[0].x =3D 0; - clip_box[0].y =3D 0; - clip_box[0].width =3D clip_end - clip_start; - clip_box[0].height =3D height; - - XSetClipRectangles (dpy, gc, clip_start, DISPLAY_LINE_YPOS (dl), - clip_box, 1, Unsorted); +#ifdef USE_XFT + fg =3D XFT_FROB_LISP_COLOR (cachel->foreground, 0); + bg =3D XFT_FROB_LISP_COLOR (cachel->background, 0); +#endif + gc =3D x_get_gc (d, font, cachel->foreground, cachel->background, + Qnil, Qnil); } +#ifdef USE_XFT + { + XftFont *rf =3D FONT_INSTANCE_X_XFTFONT (fi); = - if (runs[i].dimension =3D=3D 1) - (bgc ? XDrawString : XDrawImageString) (dpy, x_win, gc, xpos, - dl->ypos, (char *) runs[i].ptr, - runs[i].len); - else - (bgc ? XDrawString16 : XDrawImageString16) (dpy, x_win, gc, xpos, - dl->ypos, - (XChar2b *) runs[i].ptr, - runs[i].len); + if (rf) + { + use_x_font =3D 0; + if (need_clipping) + { + Region clip_reg =3D XCreateRegion(); + XRectangle clip_box =3D { clip_start, ypos, + clip_end - clip_start, height }; + + XUnionRectWithRegion (&clip_box, clip_reg, clip_reg); = + XftDrawSetClip(xftDraw, clip_reg); + XDestroyRegion(clip_reg); + } + + if (!bgc) + { + /* #### Neither rect_height nor XftTextExtents as computed + below handles the vertical space taken up by antialiasing, + which for some fonts (eg, Bitstream Vera Sans Mono-16 on + my Mac PowerBook G4) leaves behind orphaned dots on + insertion or deletion earlier in the line, especially in + the case of the underscore character. + Interestingly, insertion or deletion of a single character + immediately after a refresh does not leave any droppings, + but any further insertions or deletions do. + While adding a pixel to rect_height (mostly) takes care of + this, it trashes aggressively laid-out elements like the + modeline (overwriting part of the bevel). + OK, unconditionally redraw the bevel, and increment + rect_height by 1. See x_output_display_block. -- sjt */ + struct textual_run *run =3D &runs[i]; + int rect_width =3D x_text_width_single_run (f, cachel, run); +#ifndef USE_XFTTEXTENTS_TO_AVOID_FONT_DROPPINGS + int rect_height =3D FONT_INSTANCE_ASCENT(fi) + + FONT_INSTANCE_DESCENT(fi) + 1; +#else + int rect_height =3D FONT_INSTANCE_ASCENT(fi) + + FONT_INSTANCE_DESCENT(fi); + XGlyphInfo gi; + if (run->dimension =3D=3D 2) { + XftTextExtents16 (dpy, + FONT_INSTANCE_X_XFTFONT(fi), + (XftChar16 *) run->ptr, run->len, &gi); + } else { + XftTextExtents8 (dpy, + FONT_INSTANCE_X_XFTFONT(fi), + run->ptr, run->len, &gi); + } + rect_height =3D rect_height > gi.height + ? rect_height : gi.height; +#endif + + XftDrawRect (xftDraw, &bg, + xpos, ypos, rect_width, rect_height); + } + = + if (runs[i].dimension =3D=3D 1) + XftDrawString8 (xftDraw, &fg, rf, xpos, dl->ypos, + runs[i].ptr, runs[i].len); + else + XftDrawString16 (xftDraw, &fg, rf, xpos, dl->ypos, + (XftChar16 *) runs[i].ptr, runs[i].len); + } + } +#endif + { + if (use_x_font) + { + if (need_clipping) + { + XRectangle clip_box[1]; + + clip_box[0].x =3D 0; + clip_box[0].y =3D 0; + clip_box[0].width =3D clip_end - clip_start; + clip_box[0].height =3D height; + + XSetClipRectangles (dpy, gc, clip_start, ypos, + clip_box, 1, YXBanded); + } + + if (runs[i].dimension =3D=3D 1) + (bgc ? XDrawString : XDrawImageString) + (dpy, x_win, gc, xpos, dl->ypos, + (char *) runs[i].ptr, runs[i].len); + else + (bgc ? XDrawString16 : XDrawImageString16) + (dpy, x_win, gc, xpos, dl->ypos, + (XChar2b *) runs[i].ptr, runs[i].len); + } + } = /* We draw underlines in the same color as the text. */ if (cachel->underline) { int upos, uthick; unsigned long upos_ext, uthick_ext; - XFontStruct *xfont; - - xfont =3D FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)); - if (!XGetFontProperty (xfont, XA_UNDERLINE_POSITION, &upos_ext)) - upos =3D dl->descent / 2; - else + XFontStruct *fs =3D + use_x_font ? FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)) : 0; + /* #### the logic of the next two may be suboptimal: we may want + to use the POSITION and/or THICKNESS information with Xft */ + if (fs && XGetFontProperty (fs, XA_UNDERLINE_POSITION, &upos_ext)) upos =3D (int) upos_ext; - if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick_ext)) - uthick =3D 1; else + upos =3D dl->descent / 2; + if (fs && XGetFontProperty (fs, XA_UNDERLINE_THICKNESS, &uthick_ext)) uthick =3D (int) uthick_ext; - + else + uthick =3D 1; if (dl->ypos + upos < dl->ypos + dl->descent - dl->clip) { if (dl->ypos + upos + uthick > dl->ypos + dl->descent - dl->clip) @@ -1008,22 +1242,29 @@ x_output_string (struct window *w, struc { int ascent, descent, upos, uthick; unsigned long ascent_ext, descent_ext, uthick_ext; - XFontStruct *xfont; - - xfont =3D FONT_INSTANCE_X_FONT (XFONT_INSTANCE (font)); + XFontStruct *fs =3D FONT_INSTANCE_X_FONT (fi); = - if (!XGetFontProperty (xfont, XA_STRIKEOUT_ASCENT, &ascent_ext)) - ascent =3D xfont->ascent; - else - ascent =3D (int) ascent_ext; - if (!XGetFontProperty (xfont, XA_STRIKEOUT_DESCENT, &descent_ext)) - descent =3D xfont->descent; - else - descent =3D (int) descent_ext; - if (!XGetFontProperty (xfont, XA_UNDERLINE_THICKNESS, &uthick_ext)) - uthick =3D 1; + if (!use_x_font) + { + ascent =3D dl->ascent; + descent =3D dl->descent; + uthick =3D 1; + } else - uthick =3D (int) uthick_ext; + { + if (!XGetFontProperty (fs, XA_STRIKEOUT_ASCENT, &ascent_ext)) + ascent =3D fs->ascent; + else + ascent =3D (int) ascent_ext; + if (!XGetFontProperty (fs, XA_STRIKEOUT_DESCENT, &descent_ext)) + descent =3D fs->descent; + else + descent =3D (int) descent_ext; + if (!XGetFontProperty (fs, XA_UNDERLINE_THICKNESS, &uthick_ext)) + uthick =3D 1; + else + uthick =3D (int) uthick_ext; + } = upos =3D ascent - ((ascent + descent) / 2) + 1; = @@ -1046,37 +1287,88 @@ x_output_string (struct window *w, struc /* Restore the GC */ if (need_clipping) { - XSetClipMask (dpy, gc, None); - XSetClipOrigin (dpy, gc, 0, 0); +#ifdef USE_XFT + if (!use_x_font) + { + XftDrawSetClip(xftDraw, 0); + } + else + { +#endif + XSetClipMask (dpy, gc, None); + XSetClipOrigin (dpy, gc, 0, 0); +#ifdef USE_XFT + } +#endif } = /* If we are actually superimposing the cursor then redraw with just the appropriate section highlighted. */ if (cursor_clip && !cursor && focus && cursor_cachel) { - GC cgc; - XRectangle clip_box[1]; - - cgc =3D x_get_gc (d, font, cursor_cachel->foreground, - cursor_cachel->background, Qnil, Qnil); - - clip_box[0].x =3D 0; - clip_box[0].y =3D 0; - clip_box[0].width =3D cursor_width; - clip_box[0].height =3D height; - - XSetClipRectangles (dpy, cgc, cursor_start, DISPLAY_LINE_YPOS (dl), - clip_box, 1, Unsorted); - - if (runs[i].dimension =3D=3D 1) - XDrawImageString (dpy, x_win, cgc, xpos, dl->ypos, - (char *) runs[i].ptr, runs[i].len); - else - XDrawImageString16 (dpy, x_win, cgc, xpos, dl->ypos, - (XChar2b *) runs[i].ptr, runs[i].len); +#ifdef USE_XFT + if (!use_x_font) /* Xft */ + { + XftFont *rf =3D FONT_INSTANCE_X_XFTFONT (fi); + = + { /* set up clipping */ + Region clip_reg =3D XCreateRegion(); + XRectangle clip_box =3D { cursor_start, ypos, + cursor_width, height }; + = + XUnionRectWithRegion (&clip_box, clip_reg, clip_reg); = + XftDrawSetClip(xftDraw, clip_reg); + XDestroyRegion(clip_reg); + } + { /* draw background rectangle & draw text */ + int rect_height =3D FONT_INSTANCE_ASCENT(fi) + + FONT_INSTANCE_DESCENT(fi); + int rect_width =3D x_text_width_single_run(f, cachel, &runs[i]); + XftColor xft_color; + + xft_color =3D XFT_FROB_LISP_COLOR (cursor_cachel->background, 0); + XftDrawRect (xftDraw, &xft_color, + xpos, ypos, rect_width, rect_height); + + xft_color =3D XFT_FROB_LISP_COLOR (cursor_cachel->foreground, 0); + if (runs[i].dimension =3D=3D 1) + XftDrawString8 (xftDraw, &xft_color, rf, xpos, dl->ypos, + runs[i].ptr, runs[i].len); + else + XftDrawString16 (xftDraw, &xft_color, rf, xpos, dl->ypos, + (XftChar16 *) runs[i].ptr, runs[i].len); + } = - XSetClipMask (dpy, cgc, None); - XSetClipOrigin (dpy, cgc, 0, 0); + XftDrawSetClip(xftDraw, 0); + } + else /* core font, not Xft */ + { +#endif + GC cgc; + XRectangle clip_box[1]; + = + cgc =3D x_get_gc (d, font, cursor_cachel->foreground, + cursor_cachel->background, Qnil, Qnil); + + clip_box[0].x =3D 0; + clip_box[0].y =3D 0; + clip_box[0].width =3D cursor_width; + clip_box[0].height =3D height; + = + XSetClipRectangles (dpy, cgc, cursor_start, ypos, + clip_box, 1, YXBanded); + if (runs[i].dimension =3D=3D 1) + XDrawImageString (dpy, x_win, cgc, xpos, dl->ypos, + (char *) runs[i].ptr, runs[i].len); + else + XDrawImageString16 (dpy, x_win, cgc, xpos, dl->ypos, + (XChar2b *) runs[i].ptr, runs[i].len); + = + XSetClipMask (dpy, cgc, None); + XSetClipOrigin (dpy, cgc, 0, 0); +#ifdef USE_XFT + } +#endif } = xpos +=3D this_width; @@ -1102,11 +1394,11 @@ x_output_string (struct window *w, struc = This is bogus as all hell, however. The cursor handling in this function is way bogus and desperately needs to be - cleaned up. (In particular, the drawing of the cursor should + cleaned up. (In particular, the drawing of the cursor should really really be separated out of this function. This may be a bit tricky now because this function itself does way too much stuff, a lot of which needs to be moved into - redisplay.c) This is the only way to be able to easily add + redisplay.c.) This is the only way to be able to easily add new cursor types or (e.g.) make the bar cursor be able to span two characters instead of overlaying just one. */ int bogusly_obtained_ascent_value =3D @@ -1125,12 +1417,12 @@ x_output_string (struct window *w, struc = tmp_y =3D dl->ypos - bogusly_obtained_ascent_value; tmp_height =3D cursor_height; - if (tmp_y + tmp_height > (int) (DISPLAY_LINE_YPOS(dl) + height)) + if (tmp_y + tmp_height > (int) (ypos + height)) { - tmp_y =3D DISPLAY_LINE_YPOS (dl) + height - tmp_height; - if (tmp_y < (int) DISPLAY_LINE_YPOS (dl)) - tmp_y =3D DISPLAY_LINE_YPOS (dl); - tmp_height =3D DISPLAY_LINE_YPOS (dl) + height - tmp_y; + tmp_y =3D ypos + height - tmp_height; + if (tmp_y < (int) ypos) + tmp_y =3D ypos; + tmp_height =3D ypos + height - tmp_y; } = if (need_clipping) @@ -1141,7 +1433,8 @@ x_output_string (struct window *w, struc clip_box[0].width =3D clip_end - clip_start; clip_box[0].height =3D tmp_height; XSetClipRectangles (dpy, gc, clip_start, tmp_y, - clip_box, 1, Unsorted); + /* #### why not Unsorted? */ + clip_box, 1, YXBanded); } = if (!focus && NILP (bar_cursor_value)) @@ -1162,6 +1455,11 @@ x_output_string (struct window *w, struc XSetClipOrigin (dpy, gc, 0, 0); } } + +#ifdef USE_XFT +#undef XFT_FROB_LISP_COLOR +#endif + } = void @@ -1625,7 +1923,7 @@ x_generate_shadow_pixels (struct frame * topc.red =3D MINL (65535, (unsigned long) topc.red * 6 / 5); topc.green =3D MINL (65535, (unsigned long) topc.green * 6 / 5); topc.blue =3D MINL (65535, (unsigned long) topc.blue * 6 / 5); - if (allocate_nearest_color (dpy, cmap, visual, &topc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &topc)) { *top_shadow =3D topc.pixel; top_frobbed =3D 1; @@ -1641,7 +1939,7 @@ x_generate_shadow_pixels (struct frame * botc.red =3D (unsigned short) ((unsigned long) botc.red * 3 / 5); botc.green =3D (unsigned short) ((unsigned long) botc.green * 3 / 5); botc.blue =3D (unsigned short) ((unsigned long) botc.blue * 3 / 5); - if (allocate_nearest_color (dpy, cmap, visual, &botc)) + if (x_allocate_nearest_color (dpy, cmap, visual, &botc)) { *bottom_shadow =3D botc.pixel; bottom_frobbed =3D 1; 1.98 +7 -3 XEmacs/xemacs/src/redisplay.c Index: redisplay.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay.c,v retrieving revision 1.97 retrieving revision 1.98 diff -u -p -r1.97 -r1.98 --- redisplay.c 2005/10/25 11:16:27 1.97 +++ redisplay.c 2005/11/26 11:46:10 1.98 @@ -4177,9 +4177,13 @@ tail_recurse: dash_pixsize =3D redisplay_text_width_string (w, findex, &ch, Qnil,= 0, 1); - - num_to_add =3D (max_pixsize - cur_pixsize) / dash_pi= xsize; - num_to_add++; + = + if (dash_pixsize =3D=3D 0) = + num_to_add =3D 0; + else { + num_to_add =3D (max_pixsize - cur_pixsize) / dash_pixsize; + num_to_add++; + } } = while (num_to_add--) 1.54 +4 -0 XEmacs/xemacs/src/symsinit.h Index: symsinit.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/symsinit.h,v retrieving revision 1.53 retrieving revision 1.54 diff -u -p -r1.53 -r1.54 --- symsinit.h 2005/10/04 17:51:24 1.53 +++ symsinit.h 2005/11/26 11:46:10 1.54 @@ -160,6 +160,7 @@ void syms_of_objects (void); void syms_of_objects_mswindows (void); void syms_of_objects_tty (void); void syms_of_objects_x (void); +void syms_of_xft_fonts (void); EXTERN_C void syms_of_postgresql (void); void syms_of_print (void); void syms_of_process (void); @@ -397,6 +398,8 @@ void reinit_vars_of_mule_wnn (void); void vars_of_nt (void); void vars_of_number (void); void vars_of_objects (void); +void vars_of_xft_fonts (void); +void reinit_vars_of_xft_fonts (void); void reinit_vars_of_objects (void); void vars_of_objects_tty (void); void vars_of_objects_mswindows (void); @@ -481,6 +484,7 @@ void complex_vars_of_emacs (void); void complex_vars_of_minibuf (void); void reinit_complex_vars_of_minibuf (void); void complex_vars_of_keymap (void); +void complex_vars_of_xft_fonts (void); = /* Late initialization -- stuff pertaining only to interactive usage, I/O, or Lisp reading. (Dump-time and run-time, but the code itself 1.12 +18 -10 XEmacs/xemacs/src/toolbar-common.c Index: toolbar-common.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/toolbar-common.c,v retrieving revision 1.11 retrieving revision 1.12 diff -u -p -r1.11 -r1.12 --- toolbar-common.c 2005/01/24 23:34:12 1.11 +++ toolbar-common.c 2005/11/26 11:46:11 1.12 @@ -144,7 +144,8 @@ static void __prepare_button_area (struc (w, toolbar_findex, sx + x_adj, sy + y_adj, swidth + width_adj, sheight + height_adj, abs(shadow_thickness), - EDGE_ALL, (shadow_thickness < 0) ? EDGE_BEVEL_IN : EDGE_BEVEL_OUT)= ); + EDGE_ALL, (shadow_thickness < 0) ? EDGE_BEVEL_IN + : EDGE_BEVEL_OUT)); } = /* Handle the borders... */ @@ -173,7 +174,7 @@ common_output_toolbar_button (struct fra struct window *w; int vertical =3D tb->vertical; int border_width =3D tb->border_width; - face_index toolbar_findex; + face_index button_findex; = if (vertical) { @@ -211,16 +212,23 @@ common_output_toolbar_button (struct fra shadow_thickness =3D 0; } = - toolbar_findex =3D get_builtin_face_cache_index (w, Vtoolbar_face); - - __prepare_button_area (f, tb); - /* #### It is currently possible for users to trash us by directly changing the toolbar glyphs. Avoid crashing in that case. */ if (GLYPHP (glyph)) - instance =3D glyph_image_instance (glyph, window, ERROR_ME_DEBUG_WARN,= 1); + { + /* WARNING: this interface may change */ + Lisp_Object face_list[2] =3D { XGLYPH_FACE (glyph), Vtoolbar_face }; + + button_findex =3D merge_face_list_to_cache_index (w, face_list, 2); + instance =3D glyph_image_instance (glyph, window, ERROR_ME_DEBUG_WAR= N, 1); + } else - instance =3D Qnil; + { + button_findex =3D get_builtin_face_cache_index (w, Vtoolbar_face); + instance =3D Qnil; + } + + __prepare_button_area (f, tb); = if (IMAGE_INSTANCEP (instance)) { @@ -263,7 +271,7 @@ common_output_toolbar_button (struct fra = redisplay_output_pixmap (w, instance, &db, &dga, = - toolbar_findex, 0, 0, 0, 0); + button_findex, 0, 0, 0, 0); } else if (IMAGE_INSTANCE_TYPE (p) =3D=3D IMAGE_TEXT) { @@ -309,7 +317,7 @@ common_output_toolbar_button (struct fra = MAYBE_DEVMETH (d, output_string, (w, &dl, buf, tb->x + x_offset, 0, 0, width, - toolbar_findex, 0, 0, 0, 0)); + button_findex, 0, 0, 0, 0)); Dynarr_free (buf); } = 1.13 +74 -42 XEmacs/xemacs/src/xgccache.c Index: xgccache.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xgccache.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- xgccache.c 2005/02/15 03:17:07 1.12 +++ xgccache.c 2005/11/26 11:46:11 1.13 @@ -158,6 +158,10 @@ gc_cache_lookup (struct gc_cache *cache, struct gc_cache_cell *cell, *next, *prev; struct gcv_and_mask gcvm; = +#ifdef DEBUG_XEMACS + (void) describe_gc_cache (cache, DGCCFLAG_DISABLE); +#endif + if ((!!cache->head) !=3D (!!cache->tail)) ABORT (); if (cache->head && (cache->head->prev || cache->tail->next)) ABORT (); = @@ -196,6 +200,9 @@ gc_cache_lookup (struct gc_cache *cache, will be less likely to be collected than a cell that was accessed less recently. */ +#if 0 + debug_out ("Returning cached GC: %08lx\n", XE_GCONTEXT(cell)); +#endif if (cell =3D=3D cache->tail) return cell->gc; = @@ -226,6 +233,7 @@ gc_cache_lookup (struct gc_cache *cache, cache->head =3D cell->next; cache->head->prev =3D 0; if (cache->tail =3D=3D cell) cache->tail =3D 0; /* only one */ + debug_out ("Cache full, freeing GC: %08lx\n ", XE_GCONTEXT(cell)); XFreeGC (cache->dpy, cell->gc); cache->delete_count++; #ifdef GCCACHE_HASH @@ -264,68 +272,92 @@ gc_cache_lookup (struct gc_cache *cache, /* debug */ assert (cell->gc =3D=3D gc_cache_lookup (cache, gcv, mask)); = +#if 0 + debug_out ("Returning new GC: %08lx\n ", XE_GCONTEXT(cell)); +#endif return cell->gc; } = =0C #ifdef DEBUG_XEMACS + +/* FLAGS + The flags argument is a bitwise or of any of the following: = -void describe_gc_cache (struct gc_cache *cache); + DGCCFLAG_SUMMARY Summary statistics for cache + DGCCFLAG_LIST_CELLS If summary is being printed, print cell IDs too. + DGCCFLAG_CELL_DETAILS If cell IDs are being printed, additionally + print the internal fields used and values. + + DGCCFLAG_DEFAULT A predefined combination giving whatever the + maintainers are currently interested in seeing. +*/ void -describe_gc_cache (struct gc_cache *cache) +describe_gc_cache (struct gc_cache *cache, int flags) { int count =3D 0; struct gc_cache_cell *cell =3D cache->head; + + if (! flags & DGCCFLAG_SUMMARY) return; + stderr_out ("\nsize: %d", cache->size); stderr_out ("\ncreated: %d", cache->create_count); stderr_out ("\ndeleted: %d", cache->delete_count); - while (cell) - { - struct gc_cache_cell *cell2; - int i =3D 0; - stderr_out ("\n%d:\t0x%lx GC: 0x%08lx hash: 0x%08lx\n", - count, (long) cell, (long) cell->gc, gc_cache_hash (&cell->gcvm)); - for (cell2 =3D cache->head; cell2; cell2 =3D cell2->next, i++) - if (count !=3D i && - gc_cache_hash (&cell->gcvm) =3D=3D gc_cache_hash (&cell2->gcvm)) - stderr_out ("\tHASH COLLISION with cell %d\n", i); - stderr_out ("\tmask: %8lx\n", cell->gcvm.mask); = + if (flags & DGCCFLAG_LIST_CELLS) + while (cell) + { + struct gc_cache_cell *cell2; + int i =3D 0; + stderr_out ("\n%d:\t0x%lx GC: 0x%08lx hash: 0x%08lx\n", + count, (long) cell, (long) XE_GCONTEXT(cell), + gc_cache_hash (&cell->gcvm)); + + for (cell2 =3D cache->head; cell2; cell2 =3D cell2->next, i++) + if (count !=3D i && + gc_cache_hash (&cell->gcvm) =3D=3D gc_cache_hash (&cell2->gcvm)) + stderr_out ("\tHASH COLLISION with cell %d\n", i); + stderr_out ("\tmask: %8lx\n", cell->gcvm.mask); + + if (flags & DGCCFLAG_CELL_DETAILS) + { #define FROB(field) do { \ if ((int)cell->gcvm.gcv.field !=3D (~0)) \ stderr_out ("\t%-12s%8x\n", #field ":", (int)cell->gcvm.gcv.field); \ } while (0) - FROB (function); - FROB (plane_mask); - FROB (foreground); - FROB (background); - FROB (line_width); - FROB (line_style); - FROB (cap_style); - FROB (join_style); - FROB (fill_style); - FROB (fill_rule); - FROB (arc_mode); - FROB (tile); - FROB (stipple); - FROB (ts_x_origin); - FROB (ts_y_origin); - FROB (font); - FROB (subwindow_mode); - FROB (graphics_exposures); - FROB (clip_x_origin); - FROB (clip_y_origin); - FROB (clip_mask); - FROB (dash_offset); + FROB (function); + FROB (plane_mask); + FROB (foreground); + FROB (background); + FROB (line_width); + FROB (line_style); + FROB (cap_style); + FROB (join_style); + FROB (fill_style); + FROB (fill_rule); + FROB (arc_mode); + FROB (tile); + FROB (stipple); + FROB (ts_x_origin); + FROB (ts_y_origin); + FROB (font); + FROB (subwindow_mode); + FROB (graphics_exposures); + FROB (clip_x_origin); + FROB (clip_y_origin); + FROB (clip_mask); + FROB (dash_offset); #undef FROB + } + + count++; + if (cell->next && cell =3D=3D cache->tail) + stderr_out ("\nERROR! tail is here!\n\n"); + else if (!cell->next && cell !=3D cache->tail) + stderr_out ("\nERROR! tail is not at the end\n\n"); + cell =3D cell->next; + } /* while (cell) */ = - count++; - if (cell->next && cell =3D=3D cache->tail) - stderr_out ("\nERROR! tail is here!\n\n"); - else if (!cell->next && cell !=3D cache->tail) - stderr_out ("\nERROR! tail is not at the end\n\n"); - cell =3D cell->next; - } if (count !=3D cache->size) stderr_out ("\nERROR! count should be %d\n\n", cache->size); } 1.5 +14 -0 XEmacs/xemacs/src/xgccache.h Index: xgccache.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xgccache.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- xgccache.h 2005/02/15 03:17:07 1.4 +++ xgccache.h 2005/11/26 11:46:11 1.5 @@ -31,4 +31,18 @@ struct gc_cache *make_gc_cache (Display = void free_gc_cache (struct gc_cache *cache); GC gc_cache_lookup (struct gc_cache *, XGCValues *, unsigned long mask); = +#define XE_GCONTEXT(cell) (XGContextFromGC(cell->gc)) + +#ifdef DEBUG_XEMACS + +void describe_gc_cache (struct gc_cache *cache, int flags); + +#define DGCCFLAG_DISABLE 0 +#define DGCCFLAG_SUMMARY 1 << 0 +#define DGCCFLAG_LIST_CELLS 1 << 1 +#define DGCCFLAG_CELL_DETAILS 1 << 2 +/* A combination of the flags above. */ +#define DGCCFLAG_DEFAULT DGCCFLAG_SUMMARY | DGCCFLAG_LIST_CELLS +#endif + #endif /* INCLUDED_xgccache_h_ */ 1.2 +843 -0 XEmacs/xemacs/src/xft-fonts.c Index: xft-fonts.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: xft-fonts.c diff -N xft-fonts.c --- /dev/null Sat Nov 26 12:46:04 2005 +++ /tmp/cvsAAAPhai_X Sat Nov 26 12:46:18 2005 @@ -0,0 +1,843 @@ +/* Lisp font handling implementation for X with Xft. + +Copyright (C) 2003 Eric Knauel and Matthias Neubauer +Copyright (C) 2005 Eric Knauel +Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +Authors: Eric Knauel + Matthias Neubauer + Stephen J. Turnbull +Created: 27 Oct 2003 +Updated: 05 Mar 2005 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +/* This module provides the Lisp interface to fonts in X11, including Xft, + but (at least at first) not GTK+ or Qt. + + It should be renamed to fonts-x.h. + + Sealevel code should be in ../lwlib/lwlib-fonts.c or + ../lwlib/lwlib-colors.c. +*/ + +#include +#include "lisp.h" +#include "device.h" +#include "device-impl.h" +#include "console-x-impl.h" +#include "objects-x.h" +#include "objects-x-impl.h" +#include "hash.h" +#include "xft-fonts.h" + +/* #### TO DO #### + . The "x-xft-*" and "x_xft_*" nomenclature is mostly redundant, especia= lly + if we separate X fonts from Xft fonts, and use fontconfig more genera= lly. + . We should support the most recent Xft first, old Xft libraries later. + . We may (think about it) wish to use fontconfig generally, even if we'= re + not using Xft. Either way, names that are really from fontconfig sho= uld + use the Fc* namespace. + . Mule-ize this file. + . Separate X Font Struct ops from Xft Font ops; give precedence to Xft = but + allow fallback to X. + . Push decisions about font choice, defaults, fallbacks to Lisp; if we + really need efficiency, can reimplement in C later. + . Implement symbols interned in this file in the Q* namespace. + . Implement FcMatrix (Lisp vector). + . Implement FcCharSets (Lisp chartable? For implementation hints, see + FcCharSetFirstPage and FcCharSetNextPage). + . Implement FcConfigs. + DONE + . Fontconfig fontnames are encoded in UTF-8. +*/ + +Lisp_Object Qxft_font; +Lisp_Object Qfc_patternp; +Lisp_Object Qfc_fontsetp; +/* Lisp_Object Qfc_result_match; */ /* FcResultMatch */ +Lisp_Object Qfc_result_type_mismatch; /* FcResultTypeMismatch */ +Lisp_Object Qfc_result_no_match; /* FcResultNoMatch */ +Lisp_Object Qfc_result_no_id; /* FcResultNoId */ +Lisp_Object Qfc_internal_error; +Lisp_Object Vxlfd_font_name_regexp; /* #### Really needed? */ +Lisp_Object Vxft_version; +/* Lisp_Object Vfc_version; */ /* #### Should have this, too! */ +Fixnum debug_xft; /* Set to 1 enables lots of obnoxious messages. + Setting it to 2 or 3 enables even more. */ + +/**************************************************************** +* FcPattern objects * +****************************************************************/ + +static void +finalize_fc_pattern (void *header, int UNUSED (for_disksave)) +{ + struct fc_pattern *p =3D (struct fc_pattern *) header; + if (p->fcpatPtr) + { + FcPatternDestroy (p->fcpatPtr); + p->fcpatPtr =3D 0; + } +} + +static const struct memory_description fcpattern_description [] =3D { + /* #### nothing here, is this right?? */ + { XD_END } +}; + +DEFINE_LRECORD_IMPLEMENTATION("fc-pattern", fc_pattern, + 0, 0, 0, finalize_fc_pattern, 0, 0, + fcpattern_description, + struct fc_pattern); + +/* + * Helper Functions + */ +static Lisp_Object make_xlfd_font_regexp (void); +static void string_list_to_fcobjectset (Lisp_Object list, FcObjectSet *os); + +/* = + extract the C representation of the Lisp string STR and convert it + to the encoding used by the Fontconfig API for property and font + names. I suppose that Qnative is the right encoding, the manual + doesn't say much about this topic. This functions assumes that STR + is a Lisp string. +*/ +#define extract_fcapi_string(str) \ + ((FcChar8 *) NEW_LISP_STRING_TO_EXTERNAL ((str), Qnative)) + +/* fontconfig assumes that objects (property names) are statically allocat= ed, + and you will get bizarre results if you pass Lisp string data or strings + allocated on the stack as objects. fontconfig _does_ copy values, so we + (I hope) don't have to worry about that member. + + Probably these functions don't get called so often that the memory leak + due to strdup'ing every time we add a property would matter, but XEmacs + _is_ a long-running process. So we hash them. + + I suspect that using symbol names or even keywords does not provide + assurance that the string won't move in memory. So we hash them + ourselves; hash.c hashtables do not interpret the value pointers. */ +static FcChar8 *fc_standard_properties[] =3D { + "antialias", "aspect", "autohint", "charset", "dpi", "family", "file", + "foundry", "ftface", "globaladvance", "hinting", "index", "lang", + "minspace", "outline", "pixelsize", "rasterizer", "rgba", "scalable", + "scale", "size", "slant", "spacing", "style", "verticallayout", "weight", + /* obsolete after Xft v. 1 */ + "charwidth", "charheight", "core", "encoding", "render" +}; + +static struct hash_table *fc_property_name_hash_table; + +/* #### Maybe fc_intern should be exposed to LISP? The idea is that + fc-pattern-add could warn or error if the property isn't interned. */ + +static FcChar8 * +fc_intern (Lisp_Object property) +{ + const void *dummy; + FcChar8 *prop =3D extract_fcapi_string (property); + const void *val =3D gethash (prop, fc_property_name_hash_table, &dummy); + + /* extract_fcapi_string returns something alloca'd + so we can just drop the old value of prop on the floor */ + if (val) + prop =3D (FcChar8 *) val; + else + { + prop =3D FcStrCopy (prop); + puthash (prop, NULL, fc_property_name_hash_table); + } + return prop; +} + +DEFUN("fc-pattern-p", Ffc_pattern_p, 1, 1, 0, /* +Returns t if OBJECT is of type fc-pattern, nil otherwise. +*/ + (object)) +{ + return FCPATTERNP(object) ? Qt : Qnil; +} + +DEFUN("fc-pattern-create", Ffc_pattern_create, 0, 0, 0, /* = +Return a new, empty fc-pattern object. +*/ + ()) +{ + fc_pattern *fcpat =3D + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + + fcpat->fcpatPtr =3D FcPatternCreate(); + return wrap_fcpattern(fcpat); +} + +DEFUN("fc-name-parse", Ffc_name_parse, 1, 1, 0, /* +Parse an Fc font name and return its representation as a fc pattern object. +*/ + (name)) +{ + struct fc_pattern *fcpat =3D + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + + CHECK_STRING(name); /* #### MEMORY LEAK!! maybe not ... */ + + fcpat->fcpatPtr =3D FcNameParse (extract_fcapi_string (name)); + return wrap_fcpattern(fcpat); +} + +/* #### Ga-a-ack! Xft's similar function is actually a different API. + We provide both. */ +DEFUN("fc-name-unparse", Ffc_name_unparse, 1, 1, 0, /* +Unparse an fc pattern object to a string. +*/ + (pattern)) +{ + CHECK_FCPATTERN(pattern); + { + FcChar8 *temp =3D FcNameUnparse(XFCPATTERN_PTR(pattern)); + Lisp_Object res =3D build_ext_string (temp, Qxft_font_name_encoding); + free (temp); + return res; + } +} + +#if 0 +/* #### This seems to not work? */ +DEFUN("xft-name-unparse", Fxft_name_unparse, 1, 1, 0, /* +Unparse an fc pattern object to a string (using the Xft API). +*/ + (pattern)) +{ + char temp[FCSTRLEN]; + Bool res; + + CHECK_FCPATTERN(pattern); + res =3D XftNameUnparse(XFCPATTERN_PTR(pattern), temp, FCSTRLEN-1); + return res ? build_ext_string (temp, Qxft_font_name_encoding) : Qnil; +} +#endif + +DEFUN("fc-pattern-duplicate", Ffc_pattern_duplicate, 1, 1, 0, /* = +Make a copy of the fc pattern object PATTERN and return it. +*/ + (pattern)) +{ + struct fc_pattern *copy =3D NULL; + CHECK_FCPATTERN(pattern); + + copy =3D ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + copy->fcpatPtr =3D FcPatternDuplicate(XFCPATTERN_PTR(pattern)); + return wrap_fcpattern(copy); +} + +DEFUN("fc-pattern-add", Ffc_pattern_add, 3, 3, 0, /* +Add attributes to the pattern object PATTERN. PROPERTY is a string naming +the attribute to add, VALUE the value for this attribute. + +VALUE may be a string, integer, float, or symbol, in which case the value +will be added as an FcChar8[], int, double, or FcBool respectively. +*/ + (pattern, property, value)) +{ + Bool res =3D 0; + Extbyte *obj; + FcPattern *fcpat; + + CHECK_FCPATTERN(pattern); + CHECK_STRING(property); + + obj =3D fc_intern (property); + fcpat =3D XFCPATTERN_PTR (pattern); + + if (STRINGP(value)) = + { + FcChar8 *str =3D (FcChar8 *) extract_fcapi_string (value); + res =3D FcPatternAddString (fcpat, obj, str); + } + else if (INTP(value)) = + { + res =3D FcPatternAddInteger (fcpat, obj, XINT(value)); + } + else if (FLOATP(value)) = + { + res =3D FcPatternAddDouble (fcpat, obj, (double) XFLOAT_DATA(value)); + } + else if (SYMBOLP(value)) = + { + res =3D FcPatternAddBool (fcpat, obj, !NILP(value)); + } + /* else ... maybe we should wta here? */ + + return res ? Qt : Qnil; +} + +DEFUN("fc-pattern-del", Ffc_pattern_del, 2, 2, 0, /* +Remove attribute PROPERTY from fc pattern object OBJECT. +*/ + (pattern, property)) +{ + Bool res; + + CHECK_FCPATTERN(pattern); + CHECK_STRING(property); + + res =3D FcPatternDel(XFCPATTERN_PTR(pattern), = + extract_fcapi_string (property)); + return res ? Qt : Qnil; +} + +/* Generic interface to FcPatternGet() + * Don't support the losing symbol-for-property interface. + */ +DEFUN("fc-pattern-get", Ffc_pattern_get, 2, 4, 0, /* +From PATTERN, extract PROPERTY for the ID'th member, of type TYPE. + +PATTERN is an Xft (fontconfig) pattern object. +PROPERTY is a string naming an fontconfig font property. +Optional ID is a nonnegative integer indexing the list of values for PROPE= RTY + stored in PATTERN, defaulting to 0 (the first value). +Optional TYPE is a symbol, one of 'string, 'boolean, 'integer, 'float, + 'double, 'matrix, 'charset, or 'void, corresponding to the FcValue types. + ('float is an alias for 'double). + +The Lisp types returned will conform to TYPE: + string string + boolean `t' or `nil' + integer integer + double (float) float + matrix not implemented + charset not implemented + void not implemented + +Symbols with names of the form "fc-result-DESCRIPTION" are returned when +the desired value is not available. These are + + fc-result-type-mismatch the value found has an unexpected type + fc-result-no-match there is no such attribute + fc-result-no-id there is no value for the requested ID + +The types of the following standard properties are predefined by fontconfi= g. +The symbol 'fc-result-type-mismatch will be returned if the object exists = but +TYPE does not match the predefined type. It is best not to specify a type +for predefined properties, as a mistake here ensures error returns on the +correct type. + +Each standard property has a convenience accessor defined in fontconfig.el, +named in the form "fc-pattern-get-PROPERTY". The convenience functions are +preferred to `fc-pattern-get' since a typo in the string naming a property +will result in a silent null return, while a typo in a function name will +usually result in a compiler or runtime \"not fboundp\" error. You may use +`defsubst' to define convenience functions for non-standard properties. + +family String Font family name = +style String Font style. Overrides weight and slant = +slant Int Italic, oblique or roman = +weight Int Light, medium, demibold, bold or black = +size Double Point size = +aspect Double Stretches glyphs horizontally before hinting = +pixelsize Double Pixel size = +spacing Int Proportional, monospace or charcell = +foundry String Font foundry name = +antialias Bool Whether glyphs can be antialiased = +hinting Bool Whether the rasterizer should use hinting = +verticallayout Bool Use vertical layout = +autohint Bool Use autohinter instead of normal hinter = +globaladvance Bool Use font global advance data = +file String The filename holding the font = +index Int The index of the font within the file = +ftface FT_Face Use the specified FreeType face object = +rasterizer String Which rasterizer is in use = +outline Bool Whether the glyphs are outlines = +scalable Bool Whether glyphs can be scaled = +scale Double Scale factor for point->pixel conversions = +dpi Double Target dots per inch = +rgba Int unknown, rgb, bgr, vrgb, vbgr, none - subpixel geom= etry = +minspace Bool Eliminate leading from line spacing = +charset CharSet Unicode chars encoded by the font = +lang String List of RFC-3066-style languages this font supports + +The FT_Face, Matrix, CharSet types are unimplemented, so the corresponding +properties are not accessible from Lisp at this time. If the value of a +property returned has type FT_Face, FcCharSet, or FcMatrix, +`fc-result-type-mismatch' is returned. + +The following properties which were standard in Xft v.1 are obsolete in +Xft v.2: encoding, charwidth, charheight, core, and render. */ + (pattern, property, id, type)) +{ + FcChar8 *fc_property; /* UExtbyte * */ + FcResult fc_result; + FcValue fc_value; + + /* + process arguments + */ + CHECK_FCPATTERN (pattern); + +#if 0 + /* Don't support the losing symbol-for-property interface. */ + property =3D SYMBOLP (property) ? symbol_name (XSYMBOL (property)) : pro= perty; +#endif + if (STRINGP (property)) + { + fc_property =3D (FcChar8 *) extract_fcapi_string (property); + } + else + { + /* if we allow symbols, this would need to be + list3 (Qlambda, list1 (Qobject), + list3 (Qor, list2 (Qstringp, Qobject), + list2 (Qsymbolp, Qobject))) + or something like that? */ + dead_wrong_type_argument (Qstringp, property); + } + + if (!NILP (id)) CHECK_NATNUM (id); + if (!NILP (type)) CHECK_SYMBOL (type); + + /* get property */ + fc_result =3D FcPatternGet (XFCPATTERN_PTR (pattern), + fc_property, + NILP (id) ? 0 : XINT(id), + &fc_value); + + switch (fc_result) + { + case FcResultMatch: + /* wrap it and return */ + switch (fc_value.type) + { + case FcTypeInteger: + return ((!NILP (type) && !EQ (type, Qinteger)) + ? Qfc_result_type_mismatch : make_int (fc_value.u.i)); + case FcTypeDouble: + return ((!NILP (type) && !EQ (type, intern ("double")) + && !EQ (type, Qfloat)) + ? Qfc_result_type_mismatch : make_float (fc_value.u.d)); + case FcTypeString: + return ((!NILP (type) && !EQ (type, Qstring)) + ? Qfc_result_type_mismatch + : build_ext_string (fc_value.u.s, Qxft_font_name_encoding)); + case FcTypeBool: + return ((!NILP (type) && !EQ (type, Qboolean)) + ? Qfc_result_type_mismatch : fc_value.u.b ? Qt : Qnil); + case FcTypeMatrix: + return Qfc_result_type_mismatch; + /* #### unimplemented + return ((!NILP (type) && !EQ (type, intern ("matrix"))) + ? Qfc_result_type_mismatch : make_int (fc_value.u.m)); + */ + case FcTypeCharSet: + return Qfc_result_type_mismatch; + /* #### unimplemented + return ((!NILP (type) && !EQ (type, intern ("charset"))) + ? Qfc_result_type_mismatch : make_int (fc_value.u.c)); + */ + } + case FcResultTypeMismatch: + return Qfc_result_type_mismatch; + case FcResultNoMatch: + return Qfc_result_no_match; + case FcResultNoId: + return Qfc_result_no_id; + default: + return Qfc_internal_error; + } +} + +#if 0 +/* #### delete this after some testing!! don't forget the DEFSUBR */ +/* #### This is a big mistake, no? --- crap, there's no implicit finalizer= */ +DEFUN("fc-pattern-destroy", Ffc_pattern_destroy, 1, 1, 0, /* +Explicitly deallocate a fc pattern object PATTERN. */ + (pattern)) +{ + CHECK_FCPATTERN(pattern); = + + /* paranoia strikes deep */ + if (XFCPATTERN_PTR(pattern)) + { + FcPatternDestroy(XFCPATTERN_PTR(pattern)); + XFCPATTERN_PTR(pattern) =3D 0; + } + return Qnil; +} +#endif + +DEFUN("fc-font-match", Ffc_font_match, 2, 2, 0, /* +Return the font on DEVICE that most closely matches PATTERN. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern object. +Returns a fontconfig pattern object representing the closest match to the +given pattern, or an error code. Possible error codes are +`fc-result-no-match' and `fc-result-no-id'. */ + (device, pattern)) +{ + Display *dpy; + FcResult res; + + struct fc_pattern *res_fcpat =3D + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + CHECK_FCPATTERN(pattern); /* #### MEMORY LEAKS!!! */ + if (NILP(device)) + return Qnil; + CHECK_X_DEVICE(device); + if (!DEVICE_LIVE_P(XDEVICE(device))) + return Qnil; + + dpy =3D DEVICE_X_DISPLAY(XDEVICE(device)); + /* More Xft vs fontconfig brain damage? */ + res_fcpat->fcpatPtr =3D XftFontMatch(dpy, DefaultScreen (dpy), + XFCPATTERN_PTR(pattern), &res); + = + if (res_fcpat->fcpatPtr =3D=3D NULL) + switch (res) { + case FcResultNoMatch: + return Qfc_result_no_match; + case FcResultNoId: + return Qfc_result_no_id; + default: + return Qfc_internal_error; + } + else + return wrap_fcpattern(res_fcpat); +} + +/* NOTE NOTE NOTE This function destroys the FcFontSet passed to it. */ +static Lisp_Object +fontset_to_list (FcFontSet *fontset) +{ + int idx; + Lisp_Object fontlist =3D Qnil; + fc_pattern *fcpat; + + /* #### improve this error message */ + if (!fontset) + Fsignal (Qinvalid_state, + list1 (build_string ("failed to create FcFontSet"))); + for (idx =3D 0; idx < fontset->nfont; ++idx) + { + fcpat =3D = + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + fcpat->fcpatPtr =3D FcPatternDuplicate (fontset->fonts[idx]); + fontlist =3D Fcons (wrap_fcpattern(fcpat), fontlist); + } + FcFontSetDestroy (fontset); + return fontlist; +} + +/* #### fix this name to correspond to Ben's new nomenclature */ +DEFUN("fc-list-fonts-pattern-objects", Ffc_list_fonts_pattern_objects, + 3, 3, 0, /* +Return a list of fonts on DEVICE that match PATTERN for PROPERTIES. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +PROPERTIES is a list of property names (strings) that should match. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs. */ + (UNUSED (device), pattern, properties)) +{ + FcObjectSet *os; + FcFontSet *fontset; + + CHECK_FCPATTERN (pattern); + CHECK_LIST (properties); + + os =3D FcObjectSetCreate (); + string_list_to_fcobjectset (properties, os); + /* #### why don't we need to do the "usual substitutions"? */ + fontset =3D FcFontList (NULL, XFCPATTERN_PTR (pattern), os); + FcObjectSetDestroy (os); + + return fontset_to_list (fontset); + +} + +/* #### maybe this can/should be folded into fc-list-fonts-pattern-objects= ? */ +DEFUN("fc-font-sort", Ffc_font_sort, 2, 4, 0, /* +Return a list of all fonts sorted by proximity to PATTERN. +Each font is represented by a fontconfig pattern object. + +DEVICE is an X11 device. +PATTERN is a fontconfig pattern to be matched. +Optional argument TRIM, if non-nil, means to trim trailing fonts that do n= ot +contribute new characters to the union repertoire. + +#### Optional argument NOSUB, if non-nil, suppresses some of the usual +property substitutions. DON'T USE THIS in production code, it is intended +for exploring behavior of fontconfig and will be removed when this code is +stable. + +#### DEVICE is unused, ignored, and may be removed if it's not needed to +match other font-listing APIs. */ + (UNUSED (device), pattern, trim, nosub)) +{ + CHECK_FCPATTERN (pattern); + + { + FcConfig *fcc =3D FcConfigGetCurrent(); + FcFontSet *fontset; + FcPattern *p =3D XFCPATTERN_PTR (pattern); + FcResult fcresult; + + if (NILP(nosub)) /* #### temporary debug hack */ + FcDefaultSubstitute (p); + FcConfigSubstitute (fcc, p, FcMatchPattern); + fontset =3D FcFontSort (fcc, p, !NILP(trim), NULL, &fcresult); + + return fontset_to_list (fontset); + } +} + +/* #### this actually is an Xft function, should split those out + or get rid of them entirely? */ +/* #### be consistent about argument order. */ +DEFUN("fc-font-real-pattern", Ffc_font_real_pattern, 2, 2, 0, /* +Temporarily open FONTNAME (a string) and return the actual +fc pattern matched by the Fc library. */ + (fontname, xdevice)) +{ + FcPattern *copy; + Display *dpy; + XftFont *font; + struct fc_pattern *fcpat =3D + ALLOC_LCRECORD_TYPE (struct fc_pattern, &lrecord_fc_pattern); + + CHECK_STRING (fontname); /* #### MEMORY LEAK?! maybe not ... */ + if (NILP(xdevice)) + return Qnil; + CHECK_X_DEVICE (xdevice); + if (!DEVICE_LIVE_P(XDEVICE(xdevice))) + return Qnil; + + /* #### these gymnastics should be unnecessary, just use FcFontMatch */ + dpy =3D DEVICE_X_DISPLAY (XDEVICE (xdevice)); + font =3D XftFontOpenName (dpy, DefaultScreen(dpy), + extract_fcapi_string (fontname)); + if (font =3D=3D NULL) + return Qnil; + copy =3D FcPatternDuplicate(font->pattern); + XftFontClose(dpy, font); = + if (copy =3D=3D NULL) + return Qnil; + fcpat->fcpatPtr =3D copy; + return wrap_fcpattern(fcpat); +} + +DEFUN("xlfd-font-name-p", Fxlfd_font_name_p, 1, 1, 0, /* +Check whether the string FONTNAME is a XLFD font name. */ + (fontname)) +{ + CHECK_STRING(fontname); + /* #### should bind `case-fold-search' here? */ + return Fstring_match(Vxlfd_font_name_regexp, fontname, Qnil, Qnil); +} + +/* FcPatternPrint: there is no point in having wrappers fc-pattern-print, + Ffc_pattern_print since this function prints to stdout. */ + +/* Initialization of xft-fonts */ + +#define XE_XLFD_SEPARATOR "-" + /* XLFD specifies ISO 8859-1 encoding, but we can't handle non-ASCII + in Mule when this function is called. So use HPC. */ +#if 0 +#define XE_XLFD_PREFIX "\\(\\+[\040-\176\240-\377]*\\)?-" +#define XE_XLFD_OPT_TEXT "\\([\040-\044\046-\176\240-\377]*\\)" +#define XE_XLFD_TEXT "\\([\040-\044\046-\176\240-\377]+\\)" +#else +#define XE_XLFD_PREFIX "\\(\\+[\040-\176]*\\)?-" +#define XE_XLFD_OPT_TEXT "\\([^-]*\\)" +#define XE_XLFD_TEXT "\\([^-]+\\)" +#endif + +#define XE_XLFD_SLANT "\\([0-9ior?*][iot]?\\)" +#define XE_XLFD_SPACING "\\([cmp?*]\\)" + /* Hyphen as minus conflicts with use as separator. */ +#define XE_XLFD_OPT_NEGATE "~?" +#define XE_XLFD_NUMBER "\\([0-9?*]+\\)" +#define XE_XLFD_PSIZE "\\([0-9?*]+\\|\\[[ 0-9+~.e?*]+\\]\\)" + = +/* Call this only from the init code + #### This is really horrible, let's get rid of it, please. */ +static Lisp_Object +make_xlfd_font_regexp (void) +{ + struct gcpro gcpro1; + unsigned i; + Lisp_Object reg =3D Qnil; + const Extbyte *re[] =3D /* #### This could just be catenated by + cpp and passed to build_ext_string. */ + { + /* Regular expression matching XLFDs as defined by XLFD v. 1.5. + Matches must be case-insensitive. + PSIZE is a pixel or point size, which may be a "matrix". The + syntax of a matrix is not checked, just some lexical properties. + AFAICT none of the TEXT fields except adstyle is optional. + + NB. It should not be a problem if this matches "too much", since + an "old" server will simply not be able to find a matching font. */ + "\\`", + XE_XLFD_PREFIX, /* prefix */ + XE_XLFD_TEXT, /* foundry */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* family */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* weight */ + XE_XLFD_SEPARATOR, + XE_XLFD_SLANT, /* slant */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* swidth */ + XE_XLFD_SEPARATOR, + XE_XLFD_OPT_TEXT, /* adstyle */ + XE_XLFD_SEPARATOR, + XE_XLFD_PSIZE, /* pixelsize */ + XE_XLFD_SEPARATOR, + XE_XLFD_PSIZE, /* pointsize */ + XE_XLFD_SEPARATOR, + XE_XLFD_NUMBER, /* resx */ + XE_XLFD_SEPARATOR, + XE_XLFD_NUMBER, /* resy */ + XE_XLFD_SEPARATOR, + XE_XLFD_SPACING, /* spacing */ + XE_XLFD_SEPARATOR, + XE_XLFD_OPT_NEGATE, /* avgwidth */ + XE_XLFD_NUMBER, + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* registry */ + XE_XLFD_SEPARATOR, + XE_XLFD_TEXT, /* encoding */ + "\\'" + }; + = + GCPRO1 (reg); = + for (i =3D 0; i < sizeof(re)/sizeof(Extbyte *); i++) + { + /* #### Currently this is Host Portable Coding, not ISO 8859-1. */ + reg =3D concat2(reg, build_ext_string (re[i], Qx_font_name_encoding)= ); + } + + RETURN_UNGCPRO (reg); +} +#undef XE_XLFD_SEPARATOR +#undef XE_XLFD_PREFIX +#undef XE_XLFD_OPT_TEXT +#undef XE_XLFD_TEXT +#undef XE_XLFD_OPT_SLANT +#undef XE_XLFD_OPT_SPACING +#undef XE_XLFD_OPT_NEGATE +#undef XE_XLFD_NUMBER +#undef XE_XLFD_PSIZE + +#define MINL(x,y) ((((unsigned long) (x)) < ((unsigned long) (y))) \ + ? ((unsigned long) (x)) : ((unsigned long) (y))) + +static void = +string_list_to_fcobjectset (Lisp_Object list, FcObjectSet *os) +{ + EXTERNAL_LIST_LOOP_2 (elt, list) + { + FcChar8 *s; + + CHECK_STRING (elt); + s =3D fc_intern (elt); + fprintf (stderr, "%s\n", s); + FcObjectSetAdd (os, s); + } +} + +void +syms_of_xft_fonts (void) +{ + INIT_LRECORD_IMPLEMENTATION(fc_pattern); + + DEFSYMBOL_MULTIWORD_PREDICATE(Qfc_patternp); + + DEFSYMBOL(Qfc_result_type_mismatch); + DEFSYMBOL(Qfc_result_no_match); + DEFSYMBOL(Qfc_result_no_id); + DEFSYMBOL(Qfc_internal_error); + DEFSYMBOL(Qxft_font); + + DEFSUBR(Ffc_pattern_p); + DEFSUBR(Ffc_pattern_create); + DEFSUBR(Ffc_name_parse); + DEFSUBR(Ffc_name_unparse); + DEFSUBR(Fxft_name_unparse); /* URK! */ + DEFSUBR(Ffc_pattern_duplicate); + DEFSUBR(Ffc_pattern_add); + DEFSUBR(Ffc_pattern_del); + DEFSUBR(Ffc_pattern_get); +#if 0 + DEFSUBR(Ffc_pattern_destroy); +#endif + DEFSUBR(Ffc_list_fonts_pattern_objects); + DEFSUBR(Ffc_font_sort); + DEFSUBR(Ffc_font_match); + DEFSUBR(Ffc_font_real_pattern); + DEFSUBR(Fxlfd_font_name_p); +} + +void +vars_of_xft_fonts (void) +{ + /* #### I know, but the right fix is use the generic debug facility. */ + DEFVAR_INT ("xft-debug-level", &debug_xft /* +Level of debugging messages to issue to stderr for Xft. +A nonnegative integer. Set to 0 to suppress all warnings. +Default is 1 to ensure a minimum of debugging output at initialization. +Higher levels give even more information. +*/ ); + debug_xft =3D 1; + + DEFVAR_LISP("xft-version", &Vxft_version /* +The major version number of the Xft library being used. +*/ ); + Vxft_version =3D make_int(XFT_VERSION); + + Fprovide (intern ("xft")); +} + +void +complex_vars_of_xft_fonts (void) +{ + DEFVAR_LISP("xft-xlfd-font-regexp", &Vxlfd_font_name_regexp /* +The regular expression used to match XLFD font names. */ = + ); + Vxlfd_font_name_regexp =3D make_xlfd_font_regexp(); +} + +void +reinit_vars_of_xft_fonts (void) +{ + int i, size =3D (int) countof (fc_standard_properties); + = + FcInit (); + + fc_property_name_hash_table =3D make_string_hash_table (size); + for (i =3D 0; i < size; ++i) + puthash (fc_standard_properties[i], NULL, fc_property_name_hash_table); +} + 1.2 +71 -0 XEmacs/xemacs/src/xft-fonts.h Index: xft-fonts.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: xft-fonts.h diff -N xft-fonts.h --- /dev/null Sat Nov 26 12:46:04 2005 +++ /tmp/cvsAAAWjaG_X Sat Nov 26 12:46:18 2005 @@ -0,0 +1,71 @@ +/* Lisp font data structures for X and Xft. + +Copyright (C) 2003 Eric Knauel and Matthias Neubauer +Copyright (C) 2005 Eric Knauel +Copyright (C) 2004, 2005 Free Software Foundation, Inc. + +Authors: Eric Knauel + Matthias Neubauer + Stephen J. Turnbull +Created: 27 Oct 2003 +Updated: 05 Mar 2005 by Stephen J. Turnbull + +This file is part of XEmacs. + +XEmacs is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +XEmacs is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +for more details. + +You should have received a copy of the GNU General Public License +along with XEmacs; see the file COPYING. If not, write to +the Free Software Foundation, Inc., 59 Temple Place - Suite 330, +Boston, MA 02111-1307, USA. */ + +/* Synched up with: Not in GNU Emacs. */ + +/* This module provides the Lisp interface to fonts in X11, including Xft, + but (at least at first) not GTK+ or Qt. + + It should be renamed to fonts-x.h. + + Sealevel code should be in ../lwlib/lwlib-fonts.h or + ../lwlib/lwlib-colors.h. +*/ + + +#ifndef INCLUDED_xft_fonts_h_ +#define INCLUDED_xft_fonts_h_ + +#include "../lwlib/lwlib-fonts.h" +#include "../lwlib/lwlib-colors.h" + +extern Fixnum debug_xft; + +/* Standard for fontconfig. Use a macro to show we're not guessing. */ +#define Qxft_font_name_encoding Qutf_8 + +#define XE_XLFD_MAKE_LISP_STRING(s) (make_string(s, strlen(s))) + +struct fc_pattern +{ + struct LCRECORD_HEADER header; + FcPattern *fcpatPtr; +}; + +typedef struct fc_pattern fc_pattern; + +DECLARE_LRECORD(fc_pattern, struct fc_pattern); +#define XFCPATTERN(x) XRECORD (x, fc_pattern, struct fc_pattern) +#define wrap_fcpattern(p) wrap_record (p, fc_pattern) +#define FCPATTERNP(x) RECORDP (x, fc_pattern) +#define CHECK_FCPATTERN(x) CHECK_RECORD (x, fc_pattern) +#define CONCHECK_FCPATTERN(x) CONCHECK_RECORD (x, fc_pattern) +#define XFCPATTERN_PTR(x) (XFCPATTERN(x)->fcpatPtr) + +#endif /* INCLUDED_xft_fonts_h_ */ 1.72 +8 -3 XEmacs/xemacs/man/internals/internals.texi Index: internals.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/internals/internals.texi,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- internals.texi 2005/11/16 11:54:10 1.71 +++ internals.texi 2005/11/26 11:46:22 1.72 @@ -5114,10 +5114,15 @@ are constants whose value is a symbol. = be derived from the name of the symbol using the same rules as for Lisp primitives. Such variables allow the C code to check whether a particular @code{Lisp_Object} is equal to a given symbol. Symbols are -Lisp objects, so these variables may be passed to Lisp primitives. (An -alternative to the use of @samp{Q...} variables is to call the +Lisp objects, so these variables may be passed to Lisp primitives. (A +tempting alternative to the use of @samp{Q...} variables is to call the @code{intern} function at initialization in the -(a)code{vars_of_(a)var{module}} function, which is hardly less efficient.) +(a)code{vars_of_(a)var{module}} function. But this does not +(a)code{staticpro} the symbol, which in theory could get uninterned, and +then garbage collected while you're not looking. You could +(a)code{staticpro} yourself, but in a production XEmacs @code{intern} and +(a)code{staticpro} is all that @code{DEFSYMBOL} does, while in a debugging +XEmacs it also does some error-checking, which you normally want.) = @strong{Convention}: Global variables whose names begin with @samp{V} are variables that contain Lisp objects. The convention here is that 1.3 +1 -0 XEmacs/xemacs/tests/autoconf/regressiontest.pl Index: regressiontest.pl =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/autoconf/regressiontest.pl,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- regressiontest.pl 2005/03/11 11:20:34 1.2 +++ regressiontest.pl 2005/11/26 11:46:25 1.3 @@ -83,6 +83,7 @@ my %config_args =3D "--libdir=3D/tmp/foo" =3D> undef, "--exec-prefix=3D/tmp/foo" =3D> undef, "--with-athena=3D3d" =3D> undef, + "--with-mule --with-xft=3Demacs --debug --error-checking=3Dall --with-x= im=3Dxlib --with-widgets=3Dathena --with-athena=3D3d --with-dialogs=3Dathen= a --memory-usage-stats --use-number-lib=3Dgmp --site-prefixes=3D/opt/local:= /sw --with-ldap=3Dno --use-union-type" =3D> "--enable-mule --with-xft=3Dema= cs --enable-debug --enable-error-checking=3Dall --with-xim=3Dxlib --enable-= widgets=3Dathena --with-athena=3D3d --enable-dialogs=3Dathena --enable-memo= ry-usage-stats --enable-bignum=3Dgmp --with-site-prefixes=3D/opt/local:/sw = --with-ldap=3Dno --enable-union-type" ); = die "Usage: $0 /path/to/configure-2.13 /path/to/configure-2.59\n" if scala= r(@ARGV) !=3D 2; --===============0449510479679402564==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============2029057729974744097==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-26 12:09:40 +0000 Message-ID: <20051126120940.28779.qmail@sunsite.dk> --===============2029057729974744097== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 13:09:40 Modified: xemacs/src depend Log: Xft merge (generated files configure and src/depend. <87k6ev4p8q.fsf(a)tleepslib.sk.tsukuba.ac.jp>) Revision Changes Path 1.262 +693 -3 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.261 retrieving revision 1.262 diff -u -p -r1.261 -r1.262 --- configure 2005/11/25 01:41:32 1.261 +++ configure 2005/11/26 12:09:23 1.262 @@ -991,6 +991,13 @@ Run-time path-searching options Window-system options --------------------- = + --with-xft Compile with support for Xft client-side font + rendering and anti-aliasing. Components that can= use + Xft are `emacs' (buffers), `menubars', `tabs', a= nd + `gauges'. Prefix component with `no' to disable = its + use of Xft. Requires X11, Xft, Xrender, freetype, + and fontconfig support. Default is + `emacs,menubars,tabs,gauges'. --with-gtk Support GTK on the X Window System. (EXPERIMENTA= L) --with-gnome Support GNOME on the X Window System. (EXPERIMEN= TAL) --with-msw Support MS Windows as a window system (only under @@ -1092,9 +1099,9 @@ Internationalization options --with-wnn6 Support the Wnn6 Asian language input method (proprietary). Requires Mule. --with-xfs Enable XFontSet support for internationalized - menubar. Incompatible with `--with-xim=3Dmotif'. - `--with-menubars=3Dlucid' (the default) is - desirable. + menubar. Incompatible with `--with-xim=3Dmotif' = and + `--with-xft'. `--with-menubars=3Dlucid' (the + default) is desirable. = File-related options -------------------- @@ -2256,6 +2263,84 @@ _ACEOF = fi; = +_xft_notfirst=3D"" +with_xft_emacs=3Dyes +enable_xft_emacs=3Dyes +with_xft_menubars=3Dyes +enable_xft_menubars=3Dyes +with_xft_tabs=3Dyes +enable_xft_tabs=3Dyes +with_xft_gauges=3Dyes +enable_xft_gauges=3Dyes + +_xft_types=3D"emacs menubars tabs gauges" +_xft_default=3D"emacs,menubars,tabs,gauges" + + + +# If --with-xft or --without-xft were given then copy the value to the +# equivalent enable_xft variable. +if test "${with_xft+set}" =3D set; then + enable_xft=3D"$with_xft" +fi; +# If -enable-xft or --disable-xft were given then copy the value to the +# equivalent with_xft variable. +if test "${enable_xft+set}" =3D set; then + with_xft=3D"$enable_xft" +fi; +# Check whether --with-xft or --without-xft was given. +if test "${with_xft+set}" =3D set; then + enableval=3D"$with_xft" + withval=3D"$with_xft" + for y in $_xft_types; do + eval "with_xft_$y=3Dno" + eval "enable_xft_$y=3Dno" +done +for x in `echo "$with_xft" | sed -e 's/,/ /g'` ; do + _xft_all_default=3D"" + _xft_found=3D"" + case "$x" in + n | no | non | none ) _xft_all_default=3Dno ;; + a | al | all | both ) _xft_all_default=3Dyes ;; + esac + + if test -z "$_xft_all_default"; then + for y in $_xft_types; do + if test "$x" =3D "$y"; then + _xft_found=3Dyes + eval "with_xft_$y=3Dyes" + eval "enable_xft_$y=3Dyes" + elif test "$x" =3D "no$y"; then + _xft_found=3Dyes + eval "with_xft_$y=3Dno" + eval "enable_xft_$y=3Dno" + fi + done + test -z "$_xft_found" && _xft_bogus=3Dyes + fi + if test "$_xft_bogus" =3D "yes" -o \ + \( -n "$_xft_all_default" -a -n "$_xft_notfirst" \) ; then + (echo "$progname: Usage error:" +echo " " "Valid values for the --with-xft option are: +$_xft_types. With prefix \"no\", switch it off. +Defaults may be overridden with \`all' or \`none' first in the list. +Hardcoded default is: $_xft_default." +echo " Use \`$progname --help' to show usage.") >&2 && exit 1 + elif test -n "$_xft_all_default" ; then + for y in $_xft_types; do + eval "with_xft_$y=3D$_xft_all_default" + eval "enable_xft_$y=3D$_xft_all_default" + done + fi + _xft_notfirst=3Dyes +done +unset _xft_bogus _xft_found _xft_notfirst _xft_types +unset _xft_default _xft_all_default x y + + + +fi; + , ) # If --with-gtk or --without-gtk were given then copy the value to the # equivalent enable_gtk variable. if test "${with_gtk+set}" =3D set; then @@ -3786,6 +3871,19 @@ elif test "$with_cde" =3D "yes"; then with fi = = +if test \( "$with_xft_menubars" =3D "yes" -o "$with_xft_tabs" =3D "yes" \ + -o "$with_xft_gauges" =3D "yes" \) -a "$with_xft_emacs" =3D "no= "; then + { echo "$as_me:$LINENO: WARNING: Forcing --with-xft=3Demacs because Xf= t is enabled" >&5 +echo "$as_me: WARNING: Forcing --with-xft=3Demacs because Xft is enabled" = >&2;} + with_xft_emacs=3Dyes +fi + +if test "$with_xfs" =3D "yes" -a "$with_xft_menubars" =3D "yes"; then + (echo "$progname: Usage error:" +echo " " "XFS and Xft in the menubars are incompatible!" +echo " Use \`$progname --help' to show usage.") >&2 && exit 1 +fi + test "x$prefix" =3D xNONE && prefix=3D$ac_default_prefix # Let make expand exec_prefix. if test "x$exec_prefix" =3D xNONE @@ -18995,6 +19093,548 @@ fi fi fi = + + if test "$with_xft_emacs" =3D "yes"; then + { echo "$as_me:$LINENO: checking for Xrender, fontconfig, and Xft..." = >&5 +echo "$as_me: checking for Xrender, fontconfig, and Xft..." >&6;} + xft_includes_found=3Dno + +for ac_header in freetype/config/ftheader.h +do +as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=3Dno +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=3D$ac_c_preproc_warn_flag + ac_cpp_err=3D$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err=3D + fi +else + ac_cpp_err=3Dyes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=3Dno +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,= rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t= he preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi= ler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" = >&2;} + ac_header_preproc=3Dyes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com= piled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing pre= requisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite head= ers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document= ation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But= Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Com= piled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr= ocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu= lt" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil= er will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p= recedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=3D\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` =3D yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + xft_includes_found=3Dyes +else + + for freetype_include_top in "/usr/X11R6/include/freetype= 2" \ + "/usr/include/freetype2" + do + if test -d $freetype_include_top; then + { echo "$as_me:$LINENO: checking in ${freetype_include_top}/freetype2..= ." >&5 +echo "$as_me: checking in ${freetype_include_top}/freetype2..." >&6;} + unset "$as_ac_Header" + save_c_switch_site=3D"$c_switch_site" + c_switch_site=3D"$c_switch_site -I${freetype_include_top}" + +for ac_header in freetype/config/ftheader.h +do +as_ac_Header=3D`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 +else + # Is the header compilable? +echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_header_compiler=3Dno +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6 + +# Is the header present? +echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6 +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 + (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=3D$ac_c_preproc_warn_flag + ac_cpp_err=3D$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err=3D + fi +else + ac_cpp_err=3Dyes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=3Dno +fi +rm -f conftest.err conftest.$ac_ext +echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6 + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler,= rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by t= he preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compi= ler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" = >&2;} + ac_header_preproc=3Dyes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be com= piled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing pre= requisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite head= ers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf document= ation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But= Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Com= piled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the prepr= ocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's resu= lt" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compil= er will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take p= recedence" >&2;} + ( + cat <<\_ASBOX +## ------------------------------------- ## +## Report this to xemacs-beta(a)xemacs.org ## +## ------------------------------------- ## +_ASBOX + ) | + sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac +echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Header+set}\" =3D set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=3D\$ac_header_preproc" +fi +echo "$as_me:$LINENO: result: `eval echo '${'$as_ac_Header'}'`" >&5 +echo "${ECHO_T}`eval echo '${'$as_ac_Header'}'`" >&6 + +fi +if test `eval echo '${'$as_ac_Header'}'` =3D yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + xft_includes_found=3Dyes +else + c_switch_site=3D$save_c_switch_site +fi + +done + + fi + done + if test "$xft_includes_found" !=3D "yes"; then + { echo "Error:" "Unable to find headers for --with-xft" >&2; exit = 1; } + else + echo "$as_me:$LINENO: checking for XRenderQueryExtension in -lXren= der" >&5 +echo $ECHO_N "checking for XRenderQueryExtension in -lXrender... $ECHO_C" = >&6 +if test "${ac_cv_lib_Xrender_XRenderQueryExtension+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=3D$LIBS +LIBS=3D"-lXrender $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XRenderQueryExtension (); +int +main () +{ +XRenderQueryExtension (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xrender_XRenderQueryExtension=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xrender_XRenderQueryExtension=3Dno +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=3D$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xrender_XRenderQueryExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xrender_XRenderQueryExtension" >&6 +if test $ac_cv_lib_Xrender_XRenderQueryExtension =3D yes; then + libs_x=3D"-lXrender $libs_x" && if test "$verbose" =3D "yes"; then echo= " Prepending \"-lXrender\" to \$libs_x"; fi +else + { echo "Error:" "Unable to find libXrender for --with-xft" >&2; exit 1; } +fi + + echo "$as_me:$LINENO: checking for FcPatternCreate in -lfontconfig= " >&5 +echo $ECHO_N "checking for FcPatternCreate in -lfontconfig... $ECHO_C" >&6 +if test "${ac_cv_lib_fontconfig_FcPatternCreate+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=3D$LIBS +LIBS=3D"-lfontconfig $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char FcPatternCreate (); +int +main () +{ +FcPatternCreate (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_fontconfig_FcPatternCreate=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_fontconfig_FcPatternCreate=3Dno +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=3D$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_fontconfig_FcPatternCreate" >&5 +echo "${ECHO_T}$ac_cv_lib_fontconfig_FcPatternCreate" >&6 +if test $ac_cv_lib_fontconfig_FcPatternCreate =3D yes; then + libs_x=3D"-lfontconfig $libs_x" && if test "$verbose" =3D "yes"; then e= cho " Prepending \"-lfontconfig\" to \$libs_x"; fi +else + { echo "Error:" "Unable to find libfontconfig for --with-xft" >&2; exit = 1; } +fi + + echo "$as_me:$LINENO: checking for XftFontOpen in -lXft" >&5 +echo $ECHO_N "checking for XftFontOpen in -lXft... $ECHO_C" >&6 +if test "${ac_cv_lib_Xft_XftFontOpen+set}" =3D set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=3D$LIBS +LIBS=3D"-lXft $LIBS" +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +/* Override any gcc2 internal prototype to avoid an error. */ +#ifdef __cplusplus +extern "C" +#endif +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char XftFontOpen (); +int +main () +{ +XftFontOpen (); + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=3D$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); } && + { ac_try=3D'test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try=3D'test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=3D$? + echo "$as_me:$LINENO: \$? =3D $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_lib_Xft_XftFontOpen=3Dyes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_lib_Xft_XftFontOpen=3Dno +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=3D$ac_check_lib_save_LIBS +fi +echo "$as_me:$LINENO: result: $ac_cv_lib_Xft_XftFontOpen" >&5 +echo "${ECHO_T}$ac_cv_lib_Xft_XftFontOpen" >&6 +if test $ac_cv_lib_Xft_XftFontOpen =3D yes; then + libs_x=3D"-lXft $libs_x" && if test "$verbose" =3D "yes"; then echo " = Prepending \"-lXft\" to \$libs_x"; fi +else + { echo "Error:" "Unable to find libXft for --with-xft" >&2; exit 1; } +fi + + cat >>confdefs.h <<\_ACEOF +#define USE_XFT 1 +_ACEOF + + unset xft_includes_found + fi + +fi + +done + + fi + fi if test "$with_msw" !=3D "no"; then { echo "$as_me:$LINENO: checking for MS-Windows..." >&5 @@ -26202,6 +26842,13 @@ esac case "$enable_menubars" in "" | "yes" | "athena" ) enable_menubars=3D"lucid" ;; esac +if test "$with_xft_menubars" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$with_menubars" !=3D "no" ; then + with_xft_menubars=3D"yes" + else + with_xft_menubars=3D"no" + fi +fi case "$enable_dialogs" in "" | "yes" | "lucid" ) if test "$lucid_prefers_motif" =3D "yes"; then if test "$have_motif" =3D "yes"; then enable_dialogs=3D"motif" @@ -26235,6 +26882,20 @@ case "$enable_widgets" in "" | "yes" | " fi fi ;; esac +if test "$with_xft_tabs" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$enable_widgets" !=3D "no" ; then + with_xft_tabs=3D"yes" + else + with_xft_tabs=3D"no" + fi +fi +if test "$with_xft_gauge" !=3D "no" ; then + if test "$with_xft_emacs" =3D "yes" -a "$enable_widgets" !=3D "no" ; then + with_xft_gauge=3D"yes" + else + with_xft_gauge=3D"no" + fi +fi = all_widgets=3D"$enable_menubars $enable_scrollbars $enable_dialogs $enable= _toolbars $enable_widgets" = @@ -26416,6 +27077,19 @@ test "$enable_widgets" =3D "motif" && = _ACEOF = = +test "$with_xft_menubars" =3D "yes" && cat >>confdefs.h <<\_ACEOF +#define USE_XFT_MENUBARS 1 +_ACEOF + +test "$with_xft_tabs" =3D "yes" && cat >>confdefs.h <<\_ACEOF +#define USE_XFT_TABS 1 +_ACEOF + +test "$with_xft_gauge" =3D "yes" && cat >>confdefs.h <<\_ACEOF +#define USE_XFT_GAUGE 1 +_ACEOF + + = test -z "$enable_mule" && enable_mule=3Dno = @@ -38466,6 +39140,9 @@ if test "$with_x11" =3D "yes"; then if test "$with_wmcommand" !=3D no; then echo " - Handling WM_COMMAND properly." fi + if test "$with_xft" =3D "yes"; then + echo " - Compiling in support for Xft antialiased fonts (EXPERIMENT= AL)." + fi fi if test "$need_motif" =3D "yes" ; then echo " Compiling in support for Motif." @@ -38491,6 +39168,10 @@ case "$enable_menubars" in echo " Re-run configure with --enable-menubars=3D'lu= cid'." ;; msw ) echo " Using MS-Windows menubars." ;; esac +if test "$with_xft_menubars" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in menubars." + echo " WARNING: This feature will be replaced with a face." +fi case "$enable_scrollbars" in gtk ) echo " Using GTK scrollbars." ;; lucid ) echo " Using Lucid scrollbars." ;; @@ -38516,6 +39197,15 @@ case "$enable_widgets" in athena ) echo " Using Athena native widgets." ;; msw ) echo " Using MS-Windows native widgets." ;; esac +if test "$with_xft_tabs" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in tab controls." + echo " WARNING: This feature will be replaced with a face." +fi +if test "$with_xft_gauge" =3D "yes"; then + echo " - Using Xft to render antialiased fonts in progress bars." + echo " WARNING: This feature will be replaced with a face." + echo " WARNING: This feature not yet implemented; setting ignored." +fi if test "$with_dragndrop" =3D yes; then echo " Compiling in support for Drag'n'Drop (EXPERIMENTAL)." echo " - Drag'n'Drop prototype: $dragndr= op_proto." 1.60 +3 -2 XEmacs/xemacs/src/depend Index: depend =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/depend,v retrieving revision 1.59 retrieving revision 1.60 diff -u -p -r1.59 -r1.60 --- depend 2005/11/25 01:41:58 1.59 +++ depend 2005/11/26 12:09:39 1.60 @@ -48,7 +48,7 @@ glyphs-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lw gui-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h casetab.h c= harset.h chartab.h conslots.h console-impl.h console-x-impl.h console-x.h c= onsole.h device-impl.h device.h devslots.h events.h frame.h glyphs.h gui.h = menubar.h opaque.h redisplay.h scrollbar.h specifier.h systime.h window-imp= l.h window.h winslots.h xintrinsic.h xmotif.h intl-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h console-x.h console.h xintrins= ic.h menubar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer.h bufsl= ots.h casetab.h charset.h chartab.h commands.h conslots.h console-impl.h co= nsole-x-impl.h console-x.h console.h device-impl.h device.h devslots.h even= ts.h frame-impl.h frame.h frameslots.h gui.h keymap.h menubar.h opaque.h re= display.h scrollbar.h systime.h window-impl.h window.h winslots.h xintrinsi= c.h -objects-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h consol= e-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devs= lots.h insdel.h objects-impl.h objects-x-impl.h objects-x.h objects.h speci= fier.h xintrinsic.h +objects-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h consol= e-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devs= lots.h insdel.h objects-impl.h objects-x-impl.h objects-x.h objects.h speci= fier.h xft-fonts.h xintrinsic.h redisplay-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h EmacsFrameP.= h buffer.h bufslots.h casetab.h charset.h chartab.h coding-system-slots.h c= onslots.h console-impl.h console-x-impl.h console-x.h console.h debug.h dev= ice-impl.h device.h devslots.h faces.h file-coding.h frame-impl.h frame.h f= rameslots.h glyphs-x.h glyphs.h gutter.h mule-ccl.h objects-impl.h objects-= x-impl.h objects-x.h objects.h redisplay.h scrollbar.h specifier.h sysdep.h= sysproc.h syssignal.h systime.h window-impl.h window.h winslots.h xgccache= .h xintrinsic.h xintrinsicp.h xmotif.h xmprimitivep.h scrollbar-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h conslots.h c= onsole-impl.h console-x-impl.h console-x.h console.h device-impl.h device.h= devslots.h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h redisplay= .h scrollbar-x.h scrollbar.h specifier.h window-impl.h window.h winslots.h = xintrinsic.h select-x.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h charset.h conslots.h console= -impl.h console-x-impl.h console-x.h console.h device-impl.h device.h devsl= ots.h frame-impl.h frame.h frameslots.h objects-x.h objects.h opaque.h redi= splay.h select-common.h select.h systime.h xintrinsic.h xmotif.h @@ -169,7 +169,7 @@ hftctl.o: $(LISP_H) sysfile.h hpplay.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h soun= d.h imgproc.o: $(LISP_H) imgproc.h indent.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h cons= ole.h device.h extents.h faces.h frame.h glyphs.h insdel.h redisplay.h scro= llbar.h specifier.h window-impl.h window.h winslots.h -inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h= casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-gtk= .h console-impl.h console-msw.h console.h database.h device-impl.h device.h= devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.= h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h intl-auto-enc= ap-win32.h keymap.h lstream.h objects-impl.h objects.h opaque.h process.h r= angetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h s= ystime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h = winslots.h xintrinsic.h +inline.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h buffer.h bufslots.h bytecode.h= casetab.h charset.h chartab.h coding-system-slots.h conslots.h console-gtk= .h console-impl.h console-msw.h console.h database.h device-impl.h device.h= devslots.h elhash.h events.h extents-impl.h extents.h faces.h file-coding.= h frame-impl.h frame.h frameslots.h glyphs-x.h glyphs.h gui.h intl-auto-enc= ap-win32.h keymap.h lstream.h objects-impl.h objects.h opaque.h process.h r= angetab.h redisplay.h scrollbar.h specifier.h syntax.h sysdll.h sysfile.h s= ystime.h syswindows.h toolbar.h tooltalk.h ui-gtk.h window-impl.h window.h = winslots.h xft-fonts.h xintrinsic.h input-method-motif.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h consl= ots.h console-impl.h console-x-impl.h console-x.h console.h device.h frame-= impl.h frame.h frameslots.h redisplay.h xintrinsic.h xmotif.h input-method-xlib.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h EmacsFrame.h buffer= .h bufslots.h casetab.h charset.h chartab.h conslots.h console-impl.h conso= le-x-impl.h console-x.h console.h device-impl.h device.h devslots.h events.= h frame-impl.h frame.h frameslots.h redisplay.h scrollbar.h systime.h windo= w-impl.h window.h winslots.h xintrinsic.h insdel.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h cons= ole.h device.h extents.h frame.h insdel.h line-number.h lstream.h redisplay= .h @@ -271,4 +271,5 @@ vm-limit.o: $(LISP_H) mem-limits.h widget.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h win32.o: $(LISP_H) backtrace.h buffer.h bufslots.h casetab.h charset.h cha= rtab.h console-msw.h console.h hash.h intl-auto-encap-win32.h profile.h sys= file.h sysproc.h syssignal.h systime.h syswindows.h window.o: $(LISP_H) buffer.h bufslots.h casetab.h charset.h chartab.h comm= ands.h conslots.h console-impl.h console.h device-impl.h device.h devslots.= h elhash.h faces.h frame-impl.h frame.h frameslots.h glyphs.h gutter.h obje= cts.h redisplay.h scrollbar.h specifier.h window-impl.h window.h winslots.h +xft-fonts.o: $(LISP_H) $(LWLIB_SRCDIR)/lwlib.h conslots.h console-impl.h c= onsole-x-impl.h console-x.h console.h device-impl.h device.h devslots.h has= h.h objects-impl.h objects-x-impl.h objects-x.h objects.h specifier.h xft-f= onts.h xintrinsic.h xmu.o: $(CONFIG_H) --===============2029057729974744097==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============7145337933509003329==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-26 13:20:25 +0000 Message-ID: <20051126132025.10424.qmail@sunsite.dk> --===============7145337933509003329== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 14:20:25 Modified: xemacs/src ChangeLog keymap.c Log: Improve where-is internal docstring. <87y83b35z7.fsf(a)tleepslib.sk.tsukuba= .ac.jp> Revision Changes Path 1.894 +4 -4 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.893 retrieving revision 1.894 diff -u -p -r1.893 -r1.894 --- ChangeLog 2005/11/26 11:46:05 1.893 +++ ChangeLog 2005/11/26 13:20:21 1.894 @@ -1,3 +1,7 @@ +2004-12-19 Stephen J. Turnbull + + * keymap.c (Fwhere_is_internal): Rewrite docstring. + 2005-11-26 Stephen J. Turnbull = Merge Xft. @@ -469,10 +473,6 @@ * glyphs-x.c,objects-x.c: Deemphasize warnings (to debug or alert). = * redisplay-x.c: Don't abort() when ichar_to_unicode returns error. - - 2004-12-19 Stephen J. Turnbull - - * keymap.c (Fwhere_is_internal): Rewrite docstring. = 2004-12-17 Stephen J. Turnbull = 1.61 +9 -6 XEmacs/xemacs/src/keymap.c Index: keymap.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/keymap.c,v retrieving revision 1.60 retrieving revision 1.61 diff -u -p -r1.60 -r1.61 --- keymap.c 2005/11/22 10:36:39 1.60 +++ keymap.c 2005/11/26 13:20:23 1.61 @@ -3474,17 +3474,20 @@ DEFUN ("where-is-internal", Fwhere_is_in Return list of keys that invoke DEFINITION in KEYMAPS. KEYMAPS can be either a keymap (meaning search in that keymap and the current global keymap) or a list of keymaps (meaning search in exactly -those keymaps and no others). If KEYMAPS is nil, search in the currently -applicable maps for EVENT-OR-KEYS (this is equivalent to specifying -`(current-keymaps EVENT-OR-KEYS)' as the argument to KEYMAPS). +those keymaps and no others). = If optional 3rd arg FIRSTONLY is non-nil, return a vector representing the first key sequence found, rather than a list of all possible key sequences. = -If optional 4th arg NOINDIRECT is non-nil, don't follow indirections - to other keymaps or slots. This makes it possible to search for an - indirect definition itself. +Optional 4th argument NOINDIRECT is ignored. (GNU Emacs uses it to allow +searching for an indirect keymap by inhibiting following of indirections to +keymaps or slots, but XEmacs doesn't need it because keymaps are a type.) + +If optional 5th argument EVENT-OR-KEYS is non-nil and KEYMAPS is nil, +search in the currently applicable maps for EVENT-OR-KEYS (this is +equivalent to specifying `(current-keymaps EVENT-OR-KEYS)' as the +argument to KEYMAPS). */ (definition, keymaps, firstonly, UNUSED (noindirect), event_or_keys= )) { --===============7145337933509003329==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============2179187703622854566==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent ( User: stephent Date: 05/11/26 16:26:37) XEmacs/packages/unsupported/stephen/curl Date: 2005-11-26 15:26:37 +0000 Message-ID: <20051126152637.4108.qmail@sunsite.dk> --===============2179187703622854566== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable XEmacs/packages/unsupported/stephen/curl - New directory --===============2179187703622854566==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============1664854459618793446==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent packages/unsupported/stephen/curl Makefile.in.in Date: 2005-11-26 16:01:13 +0000 Message-ID: <20051126160113.10453.qmail@sunsite.dk> --===============1664854459618793446== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 17:01:13 Added: packages/unsupported/stephen/curl Makefile.in.in configure.ac curl-tests.el curl.el curl_api.c curl_api.h install-sh Log: Import curl module. Revision Changes Path 1.1 XEmacs/packages/unsupported/stephen/curl/Makefile.in.in Index: Makefile.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ## Makefile for the sample module in XEmacs. ## Copyright (C) 2002 Jerry James. ## This file is part of XEmacs. ## XEmacs is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by the ## Free Software Foundation; either version 2, or (at your option) any ## later version. ## XEmacs is distributed in the hope that it will be useful, but WITHOUT ## ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ## FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ## for more details. ## You should have received a copy of the GNU General Public License ## along with XEmacs; see the file COPYING. If not, write to ## the Free Software Foundation, Inc., 59 Temple Place - Suite 330, ## Boston, MA 02111-1307, USA. ## Synched up with: Not synched with FSF. ## This is more complicated than would normally be the case, as this makefi= le ## has been tailored to work both inside and independently of the XEmacs ## source tree, and to support both module and non-module building inside t= he ## source tree. ### Specialize this part for your module MODNAME=3Dcurl_api MODVER=3D0.0.1 MODTITLE=3D"Interface to libcurl for XEmacs" LDFLAGS=3D@LDFLAGS@ @curl_libs@ SRCS=3D$(MODNAME).c ### You should not need to modify anything below this line SHELL=3D/bin/sh RM=3Drm -f PROGNAME=3D@PROGNAME@ CFLAGS=3D@CFLAGS@ INSTALL=3D@INSTALL@ version=3D@version@ prefix=3D@prefix@ exec_prefix=3D@exec_prefix@ libdir=3D@libdir@ instvardir=3D@instvardir@ configuration=3D@configuration@ moduledir=3D@moduledir@ with_modules=3D@with_modules@ srcdir=3D@srcdir@ VPATH=3D@srcdir@ SRC_SRCS=3D$(SRCS:%=3D$(srcdir)/%) OBJS=3D$(SRCS:.c=3D.o) CC=3D@MOD_CC@ MODARCHDIR=3D@MODARCHDIR@ MAKE_DOCFILE=3D@MAKE_DOCFILE@ MODCFLAGS=3D@MODCFLAGS@ INSTALLPATH=3D@INSTALLPATH@ INSTALL_PROGRAM=3D@MOD_INSTALL_PROGRAM@ OBJECT_TO_BUILD=3D@OBJECT_TO_BUILD@ .PHONY: clean distclean install all: $(OBJECT_TO_BUILD) .c.o: $(CC) $(MODCFLAGS) -c $< $(MODNAME).ell: $(OBJS) $(MODNAME)_i.o $(CC) --mode=3Dlink --mod-output=3D$@ $(OBJS) $(MODNAME)_i.o $(LDFLAGS) $(MODNAME)_i.c: $(SRCS) ELLMAKEDOC=3D$(MAKE_DOCFILE) $(CC) --mode=3Dinit --mod-output=3D$@ \ --mod-name=3D$(MODNAME) --mod-version=3D$(MODVER) \ --mod-title=3D$(MODTITLE) $(SRC_SRCS) clean: $(RM) $(MODNAME).ell $(OBJS) $(MODNAME)_i.* *~ distclean: clean $(RM) Makefile config.* configure install: $(OBJECT_TO_BUILD) $(INSTALL_PROGRAM) $< $(INSTALLPATH) 1.1 XEmacs/packages/unsupported/stephen/curl/configure.ac Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D # Process this file with autoconf to produce a configure script. # This is only used for independent module building. AC_INIT([libcurl API module], [1.0], [xemacs-beta(a)xemacs.org]) AC_PREREQ(2.53) AC_REVISION($Revision: 1.1 $) AC_COPYRIGHT([Configuration script for the curl_api module. Copyright (C) 2002 Jerry James. Copyright (C) 2005 Free Software Foundation, Inc. This file is part of XEmacs. XEmacs is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. XEmacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with XEmacs; see the file COPYING. If not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.]) AC_CONFIG_SRCDIR([curl_api.c]) AC_PROG_CC AC_PROG_INSTALL AC_SUBST(CFLAGS) AC_SUBST(LDFLAGS) # Find ELLCC AC_ARG_VAR([ELLCC], [The path to the ellcc module compiler]) AC_PATH_PROG([ELLCC], [ellcc], ["FAIL"]) AS_IF([test "$ELLCC" =3D "FAIL"], [AS_ERROR([Cannot find ellcc])]) # Insert autoconf macros here to find the headers, libraries, other # programs, etc. needed by your module. If other libraries will be linked # with your module, then after detecting them, use a line of this form last: AC_SUBST(sample_libs, "$LIBS") # This part should appear unchanged in every module configure.ac AC_SUBST(PROGNAME, "module") AC_SUBST(MOD_CC, "@ELLCC@") AC_SUBST(MODARCHDIR, "\$(shell @ELLCC@ --mod-archdir)") AC_SUBST(MAKE_DOCFILE, "\$(MODARCHDIR)/make-docfile") AC_SUBST(MODCFLAGS, "\$(CFLAGS) --mode=3Dcompile --mod-output=3D\$@ -I\$(MO= DARCHDIR)/include") AC_SUBST(INSTALLPATH, "\$(shell @ELLCC@ --mod-site-location)") AC_SUBST(MOD_INSTALL_PROGRAM, "@INSTALL_PROGRAM@") AC_SUBST(OBJECT_TO_BUILD, "\$(MODNAME).ell") AC_CONFIG_FILES([Makefile.in Makefile]) AC_OUTPUT 1.1 XEmacs/packages/unsupported/stephen/curl/curl-tests.el Index: curl-tests.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ;; this file expects to be run from $blddir (require 'curl (expand-file-name "modules/curl/curl")) (setq handle (curl-make-url-handle "http://turnbull.sk.tsukuba.ac.jp/index.html")) (curl-easy-setopt "URL" "http://curl.haxx.se/doc/copyright.html" handle) (curl-easy-perform handle) 1.1 XEmacs/packages/unsupported/stephen/curl/curl.el Index: curl.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D ;;; curl.el --- utilities for use with the curl_api module ;; Copyright (C) 2005 Stephen J. Turnbull ;; Copyright (C) 1998 - 2005, Daniel Stenberg, , et al. ;; All rights reserved, except as expressly indicated below. ;; This program is not considered part of XEmacs. ;; You may use, copy, modify, and distribute this software under the terms ;; of the GNU General Public License, version 2 or later at your option. ;; Author: Stephen J. Turnbull ;; Creation-Date: 2005-11-24 (require 'curl-api "curl/curl_api") ;; Version information from the cURL I built the first version from. ;; This should be fixed to get the information at build time. (put 'curl-api 'libcurl-version "7.15.0") (put 'curl-api 'libcurl_version_major 7) (put 'curl-api 'libcurl_version_minor 15) (put 'curl-api 'libcurl_version_patch 0) ;; This is the numeric version of the libcurl version number, meant for eas= ier ;; parsing and comparions by programs. The LIBCURL_VERSION_NUM define will ;; always follow this syntax: ;; 0xXXYYZZ ;; Where XX, YY and ZZ are the main version, release and patch numbers in ;; hexadecimal (using 8 bits each). All three numbers are always represented ;; using two digits. 1.2 would appear as "0x010200" while version 9.11.7 ;; appears as "0x090b07". ;; This 6-digit (24 bits) hexadecimal number does not show pre-release numb= er, ;; and it is always a greater number in a more recent release. It makes ;; comparisons with greater than and less than work. ;; #define LIBCURL_VERSION_NUM ((LIBCURL_VERSION_MAJOR << 16) | \ ;; (LIBCURL_VERSION_MINOR << 8) | \ ;; LIBCURL_VERSION_PATCH) ;; **** various includes and system-specific conditional code omitted **** ;; struct curl_httppost { ;; struct curl_httppost *next; /* next entry in the list */ ;; char *name; /* pointer to allocated name */ ;; long namelength; /* length of name length */ ;; char *contents; /* pointer to allocated data content= s */ ;; long contentslength; /* length of contents field */ ;; char *buffer; /* pointer to allocated buffer conte= nts */ ;; long bufferlength; /* length of buffer field */ ;; char *contenttype; /* Content-Type */ ;; struct curl_slist* contentheader; /* list of extra headers for this fo= rm */ ;; struct curl_httppost *more; /* if one field name has more than o= ne ;; file, this link should link to fo= llowing ;; files */ ;; long flags; /* as defined below */ ;; #define HTTPPOST_FILENAME (1<<0) /* specified content is a file name = */ ;; #define HTTPPOST_READFILE (1<<1) /* specified content is a file name = */ ;; #define HTTPPOST_PTRNAME (1<<2) /* name is only stored pointer ;; do not free in formfree */ ;; #define HTTPPOST_PTRCONTENTS (1<<3) /* contents is only stored pointer ;; do not free in formfree */ ;; #define HTTPPOST_BUFFER (1<<4) /* upload file from buffer */ ;; #define HTTPPOST_PTRBUFFER (1<<5) /* upload file from pointer contents= */ ;; = ;; char *showfilename; /* The file name to show. If not set= , the ;; actual file name will be used (if= this ;; is a file part) */ ;; }; ;; = ;; typedef int (*curl_progress_callback)(void *clientp, ;; double dltotal, ;; double dlnow, ;; double ultotal, ;; double ulnow); ;; = ;; /* Tests have proven that 20K is a very bad buffer size for uploads on ;; Windows, while 16K for some odd reason performed a lot better. */ ;; #define CURL_MAX_WRITE_SIZE 16384 ;; = ;; typedef size_t (*curl_write_callback)(char *buffer, ;; size_t size, ;; size_t nitems, ;; void *outstream); ;; = ;; /* This is a return code for the read callback that, when returned, will ;; signal libcurl to immediately abort the current transfer. */ ;; #define CURL_READFUNC_ABORT 0x10000000 ;; typedef size_t (*curl_read_callback)(char *buffer, ;; size_t size, ;; size_t nitems, ;; void *instream); ;; = ;; = ;; #ifndef CURL_NO_OLDIES ;; /* not used since 7.10.8, will be removed in a future release */ ;; typedef int (*curl_passwd_callback)(void *clientp, ;; const char *prompt, ;; char *buffer, ;; int buflen); ;; #endif ;; = ;; typedef enum { ;; CURLIOE_OK, /* I/O operation successful */ ;; CURLIOE_UNKNOWNCMD, /* command was unknown to callback */ ;; CURLIOE_FAILRESTART, /* failed to restart the read */ ;; CURLIOE_LAST /* never use */ ;; } curlioerr; ;; = ;; typedef enum { ;; CURLIOCMD_NOP, /* no operation */ ;; CURLIOCMD_RESTARTREAD, /* restart the read stream from start */ ;; CURLIOCMD_LAST /* never use */ ;; } curliocmd; ;; = ;; typedef curlioerr (*curl_ioctl_callback)(CURL *handle, ;; int cmd, ;; void *clientp); ;; = ;; /* ;; * The following typedef's are signatures of malloc, free, realloc, strd= up and ;; * calloc respectively. Function pointers of these types can be passed = to the ;; * curl_global_init_mem() function to set user defined memory management ;; * callback routines. ;; */ ;; typedef void *(*curl_malloc_callback)(size_t size); ;; typedef void (*curl_free_callback)(void *ptr); ;; typedef void *(*curl_realloc_callback)(void *ptr, size_t size); ;; typedef char *(*curl_strdup_callback)(const char *str); ;; typedef void *(*curl_calloc_callback)(size_t nmemb, size_t size); ;; = ;; /* the kind of data that is passed to information_callback*/ ;; typedef enum { ;; CURLINFO_TEXT =3D 0, ;; CURLINFO_HEADER_IN, /* 1 */ ;; CURLINFO_HEADER_OUT, /* 2 */ ;; CURLINFO_DATA_IN, /* 3 */ ;; CURLINFO_DATA_OUT, /* 4 */ ;; CURLINFO_SSL_DATA_IN, /* 5 */ ;; CURLINFO_SSL_DATA_OUT, /* 6 */ ;; CURLINFO_END ;; } curl_infotype; ;; = ;; typedef int (*curl_debug_callback) ;; (CURL *handle, /* the handle/transfer this concerns */ ;; curl_infotype type, /* what kind of data */ ;; char *data, /* points to the data */ ;; size_t size, /* size of the data pointed to */ ;; void *userptr); /* whatever the user please */ ;; = ;; /* All possible error codes from all sorts of curl functions. Future ver= sions ;; may return other values, stay prepared. ;; = ;; Always add new return codes last. Never *EVER* remove any. The return ;; codes must remain the same! ;; */ ;; = ;; typedef enum { ;; CURLE_OK =3D 0, ;; CURLE_UNSUPPORTED_PROTOCOL, /* 1 */ ;; CURLE_FAILED_INIT, /* 2 */ ;; CURLE_URL_MALFORMAT, /* 3 */ ;; CURLE_URL_MALFORMAT_USER, /* 4 (NOT USED) */ ;; CURLE_COULDNT_RESOLVE_PROXY, /* 5 */ ;; CURLE_COULDNT_RESOLVE_HOST, /* 6 */ ;; CURLE_COULDNT_CONNECT, /* 7 */ ;; CURLE_FTP_WEIRD_SERVER_REPLY, /* 8 */ ;; CURLE_FTP_ACCESS_DENIED, /* 9 a service was denied by the FTP se= rver ;; due to lack of access - when login f= ails ;; this is not returned. */ ;; CURLE_FTP_USER_PASSWORD_INCORRECT, /* 10 */ ;; CURLE_FTP_WEIRD_PASS_REPLY, /* 11 */ ;; CURLE_FTP_WEIRD_USER_REPLY, /* 12 */ ;; CURLE_FTP_WEIRD_PASV_REPLY, /* 13 */ ;; CURLE_FTP_WEIRD_227_FORMAT, /* 14 */ ;; CURLE_FTP_CANT_GET_HOST, /* 15 */ ;; CURLE_FTP_CANT_RECONNECT, /* 16 */ ;; CURLE_FTP_COULDNT_SET_BINARY, /* 17 */ ;; CURLE_PARTIAL_FILE, /* 18 */ ;; CURLE_FTP_COULDNT_RETR_FILE, /* 19 */ ;; CURLE_FTP_WRITE_ERROR, /* 20 */ ;; CURLE_FTP_QUOTE_ERROR, /* 21 */ ;; CURLE_HTTP_RETURNED_ERROR, /* 22 */ ;; CURLE_WRITE_ERROR, /* 23 */ ;; CURLE_MALFORMAT_USER, /* 24 - NOT USED */ ;; CURLE_FTP_COULDNT_STOR_FILE, /* 25 - failed FTP upload */ ;; CURLE_READ_ERROR, /* 26 - could open/read from file */ ;; CURLE_OUT_OF_MEMORY, /* 27 */ ;; CURLE_OPERATION_TIMEOUTED, /* 28 - the timeout time was reached */ ;; CURLE_FTP_COULDNT_SET_ASCII, /* 29 - TYPE A failed */ ;; CURLE_FTP_PORT_FAILED, /* 30 - FTP PORT operation failed */ ;; CURLE_FTP_COULDNT_USE_REST, /* 31 - the REST command failed */ ;; CURLE_FTP_COULDNT_GET_SIZE, /* 32 - the SIZE command failed */ ;; CURLE_HTTP_RANGE_ERROR, /* 33 - RANGE "command" didn't work */ ;; CURLE_HTTP_POST_ERROR, /* 34 */ ;; CURLE_SSL_CONNECT_ERROR, /* 35 - wrong when connecting with SSL = */ ;; CURLE_BAD_DOWNLOAD_RESUME, /* 36 - couldn't resume download */ ;; CURLE_FILE_COULDNT_READ_FILE, /* 37 */ ;; CURLE_LDAP_CANNOT_BIND, /* 38 */ ;; CURLE_LDAP_SEARCH_FAILED, /* 39 */ ;; CURLE_LIBRARY_NOT_FOUND, /* 40 */ ;; CURLE_FUNCTION_NOT_FOUND, /* 41 */ ;; CURLE_ABORTED_BY_CALLBACK, /* 42 */ ;; CURLE_BAD_FUNCTION_ARGUMENT, /* 43 */ ;; CURLE_BAD_CALLING_ORDER, /* 44 - NOT USED */ ;; CURLE_INTERFACE_FAILED, /* 45 - CURLOPT_INTERFACE failed */ ;; CURLE_BAD_PASSWORD_ENTERED, /* 46 - NOT USED */ ;; CURLE_TOO_MANY_REDIRECTS , /* 47 - catch endless re-direct loops */ ;; CURLE_UNKNOWN_TELNET_OPTION, /* 48 - User specified an unknown optio= n */ ;; CURLE_TELNET_OPTION_SYNTAX , /* 49 - Malformed telnet option */ ;; CURLE_OBSOLETE, /* 50 - NOT USED */ ;; CURLE_SSL_PEER_CERTIFICATE, /* 51 - peer's certificate wasn't ok */ ;; CURLE_GOT_NOTHING, /* 52 - when this is a specific error */ ;; CURLE_SSL_ENGINE_NOTFOUND, /* 53 - SSL crypto engine not found */ ;; CURLE_SSL_ENGINE_SETFAILED, /* 54 - can not set SSL crypto engine as ;; default */ ;; CURLE_SEND_ERROR, /* 55 - failed sending network data */ ;; CURLE_RECV_ERROR, /* 56 - failure in receiving network da= ta */ ;; CURLE_SHARE_IN_USE, /* 57 - share is in use */ ;; CURLE_SSL_CERTPROBLEM, /* 58 - problem with the local certific= ate */ ;; CURLE_SSL_CIPHER, /* 59 - couldn't use specified cipher */ ;; CURLE_SSL_CACERT, /* 60 - problem with the CA cert (path?= ) */ ;; CURLE_BAD_CONTENT_ENCODING, /* 61 - Unrecognized transfer encoding = */ ;; CURLE_LDAP_INVALID_URL, /* 62 - Invalid LDAP URL */ ;; CURLE_FILESIZE_EXCEEDED, /* 63 - Maximum file size exceeded */ ;; CURLE_FTP_SSL_FAILED, /* 64 - Requested FTP SSL level failed = */ ;; CURLE_SEND_FAIL_REWIND, /* 65 - Sending the data requires a rew= ind ;; that failed */ ;; CURLE_SSL_ENGINE_INITFAILED, /* 66 - failed to initialise ENGINE */ ;; CURLE_LOGIN_DENIED, /* 67 - user, password or similar was n= ot ;; accepted and we failed to login */ ;; CURLE_TFTP_NOTFOUND, /* 68 - file not found on server */ ;; CURLE_TFTP_PERM, /* 69 - permission problem on server */ ;; CURLE_TFTP_DISKFULL, /* 70 - out of disk space on server */ ;; CURLE_TFTP_ILLEGAL, /* 71 - Illegal TFTP operation */ ;; CURLE_TFTP_UNKNOWNID, /* 72 - Unknown transfer ID */ ;; CURLE_TFTP_EXISTS, /* 73 - File already exists */ ;; CURLE_TFTP_NOSUCHUSER, /* 74 - No such user */ ;; CURL_LAST /* never use! */ ;; } CURLcode; ;; = ;; typedef CURLcode (*curl_ssl_ctx_callback)(CURL *curl, /* easy handle = */ ;; void *ssl_ctx, /* actually an ;; OpenSSL SSL_= CTX */ ;; void *userptr); ;; = ;; /* Make a spelling correction for the operation timed-out define */ ;; #define CURLE_OPERATION_TIMEDOUT CURLE_OPERATION_TIMEOUTED ;; = ;; #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all ;; the obsolete stuff removed! */ ;; /* backwards compatibility with older names */ ;; #define CURLE_HTTP_NOT_FOUND CURLE_HTTP_RETURNED_ERROR ;; #define CURLE_HTTP_PORT_FAILED CURLE_INTERFACE_FAILED ;; #endif ;; = ;; typedef enum { ;; CURLPROXY_HTTP =3D 0, ;; CURLPROXY_SOCKS4 =3D 4, ;; CURLPROXY_SOCKS5 =3D 5 ;; } curl_proxytype; ;; = ;; #define CURLAUTH_NONE 0 /* nothing */ ;; #define CURLAUTH_BASIC (1<<0) /* Basic (default) */ ;; #define CURLAUTH_DIGEST (1<<1) /* Digest */ ;; #define CURLAUTH_GSSNEGOTIATE (1<<2) /* GSS-Negotiate */ ;; #define CURLAUTH_NTLM (1<<3) /* NTLM */ ;; #define CURLAUTH_ANY ~0 /* all types set */ ;; #define CURLAUTH_ANYSAFE (~CURLAUTH_BASIC) ;; = ;; #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all ;; the obsolete stuff removed! */ ;; /* this was the error code 50 in 7.7.3 and a few earlier versions, this ;; is no longer used by libcurl but is instead #defined here only to not ;; make programs break */ ;; #define CURLE_ALREADY_COMPLETE 99999 ;; = ;; /* These are just to make older programs not break: */ ;; #define CURLE_FTP_PARTIAL_FILE CURLE_PARTIAL_FILE ;; #define CURLE_FTP_BAD_DOWNLOAD_RESUME CURLE_BAD_DOWNLOAD_RESUME ;; #endif ;; = ;; #define CURL_ERROR_SIZE 256 ;; = ;; /* parameter for the CURLOPT_FTP_SSL option */ ;; typedef enum { ;; CURLFTPSSL_NONE, /* do not attempt to use SSL */ ;; CURLFTPSSL_TRY, /* try using SSL, proceed anyway otherwise */ ;; CURLFTPSSL_CONTROL, /* SSL for the control connection or fail */ ;; CURLFTPSSL_ALL, /* SSL for all communication or fail */ ;; CURLFTPSSL_LAST /* not an option, never use */ ;; } curl_ftpssl; ;; = ;; /* parameter for the CURLOPT_FTPSSLAUTH option */ ;; typedef enum { ;; CURLFTPAUTH_DEFAULT, /* let libcurl decide */ ;; CURLFTPAUTH_SSL, /* use "AUTH SSL" */ ;; CURLFTPAUTH_TLS, /* use "AUTH TLS" */ ;; CURLFTPAUTH_LAST /* not an option, never use */ ;; } curl_ftpauth; ;; = ;; /* long may be 32 or 64 bits, but we should never depend on anything else ;; but 32 */ ;; #define CURLOPTTYPE_LONG 0 ;; #define CURLOPTTYPE_OBJECTPOINT 10000 ;; #define CURLOPTTYPE_FUNCTIONPOINT 20000 ;; #define CURLOPTTYPE_OFF_T 30000 ;; = ;; /* name is uppercase CURLOPT_, ;; type is one of the defined CURLOPTTYPE_ ;; number is unique identifier */ ;; #ifdef CINIT ;; #undef CINIT ;; #endif ;; /* ;; * Figure out if we can use the ## operator, which is supported by ISO/A= NSI C ;; * and C++. Some compilers support it without setting __STDC__ or __cplu= splus ;; * so we need to carefully check for them too. We don't use configure-ch= ecks ;; * for these since we want these headers to remain generic and working f= or all ;; * platforms. ;; */ ;; #if defined(__STDC__) || defined(_MSC_VER) || defined(__cplusplus) || \ ;; defined(__HP_aCC) || defined(__BORLANDC__) || defined(__LCC__) ;; /* This compiler is believed to have an ISO compatible preprocessor */ ;; #define CURL_ISOCPP ;; #else ;; /* This compiler is believed NOT to have an ISO compatible preprocesso= r */ ;; #undef CURL_ISOCPP ;; #endif ;; = ;; #ifdef CURL_ISOCPP ;; #define CINIT(name,type,number) CURLOPT_ ## name =3D CURLOPTTYPE_ ## typ= e + number ;; #else ;; /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ ;; #define LONG CURLOPTTYPE_LONG ;; #define OBJECTPOINT CURLOPTTYPE_OBJECTPOINT ;; #define FUNCTIONPOINT CURLOPTTYPE_FUNCTIONPOINT ;; #define OFF_T CURLOPTTYPE_OFF_T ;; #define CINIT(name,type,number) CURLOPT_/**/name =3D type + number ;; #endif ;; ;; These are the options that can be used in curl-easy-setopt. ;; #### Probably should adapt this to the method below for ;; `curl-info-hash-table'. ;; Actually, probably should make the names symbols and put them in C, ;; but that's another story. (unless (and (boundp 'curl-option-hash-table) (hash-table-p curl-option-hash-table)) (setq curl-option-hash-table (make-hash-table :test #'equal :size 150)) ;; typedef enum { ;; This is the FILE * or void * the regular output should be written to. (puthash "FILE" '(objectpoint 1) curl-option-hash-table) ;; The full URL to get/put (puthash "URL" '(objectpoint 2) curl-option-hash-table) ;; Port number to connect to, if other than default. (puthash "PORT" '(long 3) curl-option-hash-table) ;; Name of proxy to use. (puthash "PROXY" '(objectpoint 4) curl-option-hash-table) ;; "name:password" to use when fetching. (puthash "USERPWD" '(objectpoint 5) curl-option-hash-table) ;; "name:password" to use with proxy. (puthash "PROXYUSERPWD" '(objectpoint 6) curl-option-hash-table) ;; Range to get, specified as an ASCII string. (puthash "RANGE" '(objectpoint 7) curl-option-hash-table) ;; not used ;; Specified file stream to upload from (use as input): (puthash "INFILE" '(objectpoint 9) curl-option-hash-table) ;; Buffer to receive error messages in, must be at least CURL_ERROR_SIZE ;; bytes big. If this is not used, error messages go to stderr instead: (puthash "ERRORBUFFER" '(objectpoint 10) curl-option-hash-table) ;; Function that will be called to store the output (instead of fwrite). = The ;; parameters will use fwrite() syntax, make sure to follow them. (puthash "WRITEFUNCTION" '(functionpoint 11) curl-option-hash-table) ;; Function that will be called to read the input (instead of fread). The ;; parameters will use fread() syntax, make sure to follow them. (puthash "READFUNCTION" '(functionpoint 12) curl-option-hash-table) ;; Time-out the read operation after this amount of seconds (puthash "TIMEOUT" '(long 13) curl-option-hash-table) ;; If the CURLOPT_INFILE is used, this can be used to inform libcurl about ;; how large the file being sent really is. That allows better error ;; checking and better verifies that the upload was succcessful. -1 means ;; unknown size. ;; ;; For large file support, there is also a _LARGE version of the key ;; which takes an off_t type, allowing platforms with larger off_t ;; sizes to handle larger files. See below for INFILESIZE_LARGE. (puthash "INFILESIZE" '(long 14) curl-option-hash-table) ;; POST input fields. (puthash "POSTFIELDS" '(objectpoint 15) curl-option-hash-table) ;; Set the referer page (needed by some CGIs) (puthash "REFERER" '(objectpoint 16) curl-option-hash-table) ;; Set the FTP PORT string (interface name, named or numerical IP address) ;; Use i.e '-' to use default address. (puthash "FTPPORT" '(objectpoint 17) curl-option-hash-table) ;; Set the User-Agent string (examined by some CGIs) (puthash "USERAGENT" '(objectpoint 18) curl-option-hash-table) ;; If the download receives less than "low speed limit" bytes/second ;; during "low speed time" seconds, the operations is aborted. ;; You could i.e if you have a pretty high speed connection, abort if ;; it is less than 2000 bytes/sec during 20 seconds. ;; ;; Set the "low speed limit" (puthash "LOW_SPEED_LIMIT" '(long 19) curl-option-hash-table) ;; Set the "low speed time" (puthash "LOW_SPEED_TIME" '(long 20) curl-option-hash-table) ;; Set the continuation offset. ;; ;; Note there is also a _LARGE version of this key which uses ;; off_t types, allowing for large file offsets on platforms which ;; use larger-than-32-bit off_t's. Look below for RESUME_FROM_LARGE. (puthash "RESUME_FROM" '(long 21) curl-option-hash-table) ;; Set cookie in request: (puthash "COOKIE" '(objectpoint 22) curl-option-hash-table) ;; This points to a linked list of headers, struct curl_slist kind (puthash "HTTPHEADER" '(objectpoint 23) curl-option-hash-table) ;; This points to a linked list of post entries, struct HttpPost (puthash "HTTPPOST" '(objectpoint 24) curl-option-hash-table) ;; name of the file keeping your private SSL-certificate (puthash "SSLCERT" '(objectpoint 25) curl-option-hash-table) ;; password for the SSL-private key, keep this for compatibility (puthash "SSLCERTPASSWD" '(objectpoint 26) curl-option-hash-table) ;; password for the SSL private key (puthash "SSLKEYPASSWD" '(objectpoint 26) curl-option-hash-table) ;; send TYPE parameter? (puthash "CRLF" '(long 27) curl-option-hash-table) ;; send linked-list of QUOTE commands (puthash "QUOTE" '(objectpoint 28) curl-option-hash-table) ;; send FILE * or void * to store headers to, if you use a callback it ;; is simply passed to the callback unmodified (puthash "WRITEHEADER" '(objectpoint 29) curl-option-hash-table) ;; point to a file to read the initial cookies from, also enables ;; "cookie awareness" (puthash "COOKIEFILE" '(objectpoint 31) curl-option-hash-table) ;; What version to specifly try to use. ;; See CURL_SSLVERSION defines below. (puthash "SSLVERSION" '(long 32) curl-option-hash-table) ;; What kind of HTTP time condition to use, see defines (puthash "TIMECONDITION" '(long 33) curl-option-hash-table) ;; Time to use with the above condition. Specified in number of seconds ;; since 1 Jan 1970 (puthash "TIMEVALUE" '(long 34) curl-option-hash-table) ;; 35 =3D OBSOLETE ;; Custom request, for customizing the get command like ;; HTTP: DELETE, TRACE and others ;; FTP: to use a different list command (puthash "CUSTOMREQUEST" '(objectpoint 36) curl-option-hash-table) ;; HTTP request, for odd commands like DELETE, TRACE and others (puthash "STDERR" '(objectpoint 37) curl-option-hash-table) ;; 38 is not used ;; send linked-list of post-transfer QUOTE commands (puthash "POSTQUOTE" '(objectpoint 39) curl-option-hash-table) ;; Pass a pointer to string of the output using full variable-replacement ;; as described elsewhere. (puthash "WRITEINFO" '(objectpoint 40) curl-option-hash-table) ;; talk a lot (puthash "VERBOSE" '(long 41) curl-option-hash-table) ;; throw the header out too (puthash "HEADER" '(long 42) curl-option-hash-table) ;; shut off the progress meter (puthash "NOPROGRESS" '(long 43) curl-option-hash-table) ;; use HEAD to get http document (puthash "NOBODY" '(long 44) curl-option-hash-table) ;; no output on http error codes >=3D 300 (puthash "FAILONERROR" '(long 45) curl-option-hash-table) ;; this is an upload (puthash "UPLOAD" '(long 46) curl-option-hash-table) ;; HTTP POST method (puthash "POST" '(long 47) curl-option-hash-table) ;; Use NLST when listing ftp dir (puthash "FTPLISTONLY" '(long 48) curl-option-hash-table) ;; Append instead of overwrite on upload! (puthash "FTPAPPEND" '(long 50) curl-option-hash-table) ;; Specify whether to read the user+password from the .netrc or the URL. ;; This must be one of the CURL_NETRC_* enums below. (puthash "NETRC" '(long 51) curl-option-hash-table) ;; use Location: Luke! (puthash "FOLLOWLOCATION" '(LONG 52) curl-option-hash-table) ;;transfer data in text/ASCII format (puthash "TRANSFERTEXT" '(LONG 53) curl-option-hash-table) ;; HTTP PUT (puthash "PUT" '(LONG 54) curl-option-hash-table) ;; 55 =3D OBSOLETE ;; Function that will be called instead of the internal progress display ;; function. This function should be defined as the curl_progress_callback ;; prototype defines. (puthash "PROGRESSFUNCTION" '(functionpoint 56) curl-option-hash-table) ;; Data passed to the progress callback (puthash "PROGRESSDATA" '(objectpoint 57) curl-option-hash-table) ;; We want the referer field set automatically when following locations (puthash "AUTOREFERER" '(long 58) curl-option-hash-table) ;; Port of the proxy, can be set in the proxy string as well with: ;; "[host]:[port]" (puthash "PROXYPORT" '(long 59) curl-option-hash-table) ;; size of the POST input data, if strlen() is not good to use (puthash "POSTFIELDSIZE" '(long 60) curl-option-hash-table) ;; tunnel non-http operations through a HTTP proxy (puthash "HTTPPROXYTUNNEL" '(long 61) curl-option-hash-table) ;; Set the interface string to use as outgoing network interface (puthash "INTERFACE" '(objectpoint 62) curl-option-hash-table) ;; Set the krb4 security level, this also enables krb4 awareness. This i= s a ;; string, 'clear', 'safe', 'confidential' or 'private'. If the string is ;; set but doesn't match one of these, 'private' will be used. = (puthash "KRB4LEVEL" '(objectpoint 63) curl-option-hash-table) ;; Set if we should verify the peer in ssl handshake, set 1 to verify. (puthash "SSL_VERIFYPEER" '(long 64) curl-option-hash-table) ;; The CApath or CAfile used to validate the peer certificate ;; this option is used only if SSL_VERIFYPEER is true (puthash "CAINFO" '(objectpoint 65) curl-option-hash-table) ;; 66 =3D OBSOLETE ;; 67 =3D OBSOLETE ;; Maximum number of http redirects to follow (puthash "MAXREDIRS" '(long 68) curl-option-hash-table) ;; Pass a long set to 1 to get the date of the requested document (if ;; possible)! Pass a zero to shut it off. (puthash "FILETIME" '(long 69) curl-option-hash-table) ;; This points to a linked list of telnet options (puthash "TELNETOPTIONS" '(objectpoint 70) curl-option-hash-table) ;; Max amount of cached alive connections (puthash "MAXCONNECTS" '(long 71) curl-option-hash-table) ;; What policy to use when closing connections when the cache is filled ;; up (puthash "CLOSEPOLICY" '(long 72) curl-option-hash-table) ;; 73 =3D OBSOLETE ;; Set to explicitly use a new connection for the upcoming transfer. ;; Do not use this unless you're absolutely sure of this, as it makes the ;; operation slower and is less friendly for the network. (puthash "FRESH_CONNECT" '(long 74) curl-option-hash-table) ;; Set to explicitly forbid the upcoming transfer's connection to be re-u= sed ;; when done. Do not use this unless you're absolutely sure of this, as it ;; makes the operation slower and is less friendly for the network. (puthash "FORBID_REUSE" '(long 75) curl-option-hash-table) ;; Set to a file name that contains random data for libcurl to use to ;; seed the random engine when doing SSL connects. (puthash "RANDOM_FILE" '(objectpoint 76) curl-option-hash-table) ;; Set to the Entropy Gathering Daemon socket pathname (puthash "EGDSOCKET" '(objectpoint 77) curl-option-hash-table) ;; Time-out connect operations after this amount of seconds, if connects ;; are OK within this time, then fine... This only aborts the connect ;; phase. [Only works on unix-style/SIGALRM operating systems] (puthash "CONNECTTIMEOUT" '(long 78) curl-option-hash-table) ;; Function that will be called to store headers (instead of fwrite). The ;; parameters will use fwrite() syntax, make sure to follow them. (puthash "HEADERFUNCTION" '(functionpoint 79) curl-option-hash-table) ;; Set this to force the HTTP request to get back to GET. Only really usa= ble ;; if POST, PUT or a custom request have been used first. (puthash "HTTPGET" '(long 80) curl-option-hash-table) ;; Set if we should verify the Common name from the peer certificate in s= sl ;; handshake, set 1 to check existence, 2 to ensure that it matches the ;; provided hostname. (puthash "SSL_VERIFYHOST" '(long 81) curl-option-hash-table) ;; Specify which file name to write all known cookies in after completed ;; operation. Set file name to "-" (dash) to make it go to stdout. (puthash "COOKIEJAR" '(objectpoint 82) curl-option-hash-table) ;; Specify which SSL ciphers to use (puthash "SSL_CIPHER_LIST" '(objectpoint 83) curl-option-hash-table) ;; Specify which HTTP version to use! This must be set to one of the ;; CURL_HTTP_VERSION* enums set below. (puthash "HTTP_VERSION" '(long 84) curl-option-hash-table) ;; Specificly switch on or off the FTP engine's use of the EPSV command. = By ;; default, that one will always be attempted before the more traditional ;; PASV command. (puthash "FTP_USE_EPSV" '(long 85) curl-option-hash-table) ;; type of the file keeping your SSL-certificate ("DER", "PEM", "ENG") (puthash "SSLCERTTYPE" '(objectpoint 86) curl-option-hash-table) ;; name of the file keeping your private SSL-key (puthash "SSLKEY" '(objectpoint 87) curl-option-hash-table) ;; type of the file keeping your private SSL-key ("DER", "PEM", "ENG") (puthash "SSLKEYTYPE" '(objectpoint 88) curl-option-hash-table) ;; crypto engine for the SSL-sub system (puthash "SSLENGINE" '(objectpoint 89) curl-option-hash-table) ;; set the crypto engine for the SSL-sub system as default ;; the param has no meaning... (puthash "SSLENGINE_DEFAULT" '(long 90) curl-option-hash-table) ;; Non-zero value means to use the global dns cache (puthash "DNS_USE_GLOBAL_CACHE" '(long 91) curl-option-hash-table) ;; DNS cache timeout (puthash "DNS_CACHE_TIMEOUT" '(long 92) curl-option-hash-table) ;; send linked-list of pre-transfer QUOTE commands (Wesley Laxton)*/ (puthash "PREQUOTE" '(objectpoint 93) curl-option-hash-table) ;; set the debug function (puthash "DEBUGFUNCTION" '(functionpoint 94) curl-option-hash-table) ;; set the data for the debug function (puthash "DEBUGDATA" '(objectpoint 95) curl-option-hash-table) ;; mark this as start of a cookie session (puthash "COOKIESESSION" '(long 96) curl-option-hash-table) ;; The CApath directory used to validate the peer certificate ;; this option is used only if SSL_VERIFYPEER is true (puthash "CAPATH" '(objectpoint 97) curl-option-hash-table) ;; Instruct libcurl to use a smaller receive buffer (puthash "BUFFERSIZE" '(long 98) curl-option-hash-table) ;; Instruct libcurl to not use any signal/alarm handlers, even when using ;; timeouts. This option is useful for multi-threaded applications. ;; See libcurl-the-guide for more background information. (puthash "NOSIGNAL" '(long 99) curl-option-hash-table) ;; Provide a CURLShare for mutexing non-ts data (puthash "SHARE" '(objectpoint 100) curl-option-hash-table) ;; indicates type of proxy. accepted values are CURLPROXY_HTTP (default), ;; CURLPROXY_SOCKS4 and CURLPROXY_SOCKS5. (puthash "PROXYTYPE" '(long 101) curl-option-hash-table) ;; Set the Accept-Encoding string. Use this to tell a server you would li= ke ;; the response to be compressed. (puthash "ENCODING" '(objectpoint 102) curl-option-hash-table) ;; Set pointer to private data (puthash "PRIVATE" '(objectpoint 103) curl-option-hash-table) ;; Set aliases for HTTP 200 in the HTTP Response header (puthash "HTTP200ALIASES" '(objectpoint 104) curl-option-hash-table) ;; Continue to send authentication (user+password) when following locatio= ns, ;; even when hostname changed. This can potentionally send off the name ;; and password to whatever host the server decides. (puthash "UNRESTRICTED_AUTH" '(long 105) curl-option-hash-table) ;; Specificly switch on or off the FTP engine's use of the EPRT command (= it ;; also disables the LPRT attempt). By default, those ones will always be ;; attempted before the good old traditional PORT command. (puthash "FTP_USE_EPRT" '(long 106) curl-option-hash-table) ;; Set this to a bitmask value to enable the particular authentications ;; methods you like. Use this in combination with CURLOPT_USERPWD. ;; Note that setting multiple bits may cause extra network round-trips. (puthash "HTTPAUTH" '(long 107) curl-option-hash-table) ;; Set the ssl context callback function, currently only for OpenSSL ssl_= ctx ;; in second argument. The function must be matching the ;; curl_ssl_ctx_callback proto. (puthash "SSL_CTX_FUNCTION" '(functionpoint 108) curl-option-hash-table) ;; Set the userdata for the ssl context callback function's third ;; argument (puthash "SSL_CTX_DATA" '(objectpoint 109) curl-option-hash-table) ;; FTP Option that causes missing dirs to be created on the remote server (puthash "FTP_CREATE_MISSING_DIRS" '(long 110) curl-option-hash-table) ;; Set this to a bitmask value to enable the particular authentications ;; methods you like. Use this in combination with CURLOPT_PROXYUSERPWD. ;; Note that setting multiple bits may cause extra network round-trips. (puthash "PROXYAUTH" '(long 111) curl-option-hash-table) ;; FTP option that changes the timeout, in seconds, associated with ;; getting a response. This is different from transfer timeout time and ;; essentially places a demand on the FTP server to acknowledge commands ;; in a timely manner. (puthash "FTP_RESPONSE_TIMEOUT" '(long 112) curl-option-hash-table) ;; Set this option to one of the CURL_IPRESOLVE_* defines (see below) to ;; tell libcurl to resolve names to those IP versions only. This only has ;; affect on systems with support for more than one, i.e IPv4 _and_ IPv6. (puthash "IPRESOLVE" '(long 113) curl-option-hash-table) ;; Set this option to limit the size of a file that will be downloaded fr= om ;; an HTTP or FTP server. ;; Note there is also _LARGE version which adds large file support for ;; platforms which have larger off_t sizes. See MAXFILESIZE_LARGE below. (puthash "MAXFILESIZE" '(long 114) curl-option-hash-table) ;; See the comment for INFILESIZE above, but in short, specifies ;; the size of the file being uploaded. -1 means unknown. (puthash "INFILESIZE_LARGE" '(off_t 115) curl-option-hash-table) ;; Sets the continuation offset. There is also a LONG version of this; ;; look above for RESUME_FROM. (puthash "RESUME_FROM_LARGE" '(off_t 116) curl-option-hash-table) ;; Sets the maximum size of data that will be downloaded from ;; an HTTP or FTP server. See MAXFILESIZE above for the LONG version. = (puthash "MAXFILESIZE_LARGE" '(off_t 117) curl-option-hash-table) ;; Set this option to the file name of your .netrc file you want libcurl ;; to parse (using the CURLOPT_NETRC option). If not set, libcurl will do ;; a poor attempt to find the user's home directory and check for a .netrc ;; file in there. (puthash "NETRC_FILE" '(objectpoint 118) curl-option-hash-table) ;; Enable SSL/TLS for FTP, pick one of: ;; CURLFTPSSL_TRY - try using SSL, proceed anyway otherwise ;; CURLFTPSSL_CONTROL - SSL for the control connection or fail ;; CURLFTPSSL_ALL - SSL for all communication or fail (puthash "FTP_SSL" '(long 119) curl-option-hash-table) ;; The _LARGE version of the standard POSTFIELDSIZE option (puthash "POSTFIELDSIZE_LARGE" '(off_t 120) curl-option-hash-table) ;; Enable/disable the TCP Nagle algorithm (puthash "TCP_NODELAY" '(long 121) curl-option-hash-table) ;; 122 OBSOLETE, used in 7.12.3. Gone in 7.13.0 ;; When doing 3rd party transfer, set the source user and password with ;; this (puthash "SOURCE_USERPWD" '(objectpoint 123) curl-option-hash-table) ;; 124 OBSOLETE, used in 7.12.3. Gone in 7.13.0 ;; 125 OBSOLETE, used in 7.12.3. Gone in 7.13.0 ;; 126 OBSOLETE, used in 7.12.3. Gone in 7.13.0 ;; When doing 3rd party transfer, set the source pre-quote linked list ;; of commands with this (puthash "SOURCE_PREQUOTE" '(objectpoint 127) curl-option-hash-table) ;; When doing 3rd party transfer, set the source post-quote linked list ;; of commands with this (puthash "SOURCE_POSTQUOTE" '(objectpoint 128) curl-option-hash-table) ;; When FTP over SSL/TLS is selected (with CURLOPT_FTP_SSL), this option ;; can be used to change libcurl's default action which is to first try ;; "AUTH SSL" and then "AUTH TLS" in this order, and proceed when a OK ;; response has been received. ;; Available parameters are: ;; CURLFTPAUTH_DEFAULT - let libcurl decide ;; CURLFTPAUTH_SSL - try "AUTH SSL" first, then TLS ;; CURLFTPAUTH_TLS - try "AUTH TLS" first, then SSL (puthash "FTPSSLAUTH" '(long 129) curl-option-hash-table) (puthash "IOCTLFUNCTION" '(functionpoint 130) curl-option-hash-table) (puthash "IOCTLDATA" '(objectpoint 131) curl-option-hash-table) ;; To make a 3rd party transfer, set the source URL with this (puthash "SOURCE_URL" '(objectpoint 132) curl-option-hash-table) ;; When doing 3rd party transfer, set the source quote linked list of ;; commands with this (puthash "SOURCE_QUOTE" '(objectpoint 133) curl-option-hash-table) ;; zero terminated string for pass on to the FTP server when asked for ;; "account" info (puthash "FTP_ACCOUNT" '(objectpoint 134) curl-option-hash-table) ;; feed cookies into cookie engine (puthash "COOKIELIST" '(objectpoint 135) curl-option-hash-table) ;; ignore Content-Length (puthash "IGNORE_CONTENT_LENGTH" '(long 136) curl-option-hash-table) ;; Set to non-zero to skip the IP address received in a 227 PASV FTP serv= er ;; response. Typically used for FTP-SSL purposes but is not restricted to ;; that. libcurl will then instead use the same IP address it used for the ;; control connection. (puthash "FTP_SKIP_PASV_IP" '(long 137) curl-option-hash-table) ;; CURLOPT_LASTENTRY ; the last unused ;; } CURLoption; ) ;; /* Below here follows defines for the CURLOPT_IPRESOLVE option. If a h= ost ;; name resolves addresses using more than one IP protocol version, th= is ;; option might be handy to force libcurl to use a specific IP version= . */ ;; #define CURL_IPRESOLVE_WHATEVER 0 /* default, resolves addresses to all = IP ;; versions that your system allows */ ;; #define CURL_IPRESOLVE_V4 1 /* resolve to ipv4 addresses */ ;; #define CURL_IPRESOLVE_V6 2 /* resolve to ipv6 addresses */ ;; = ;; /* three convenient "aliases" that follow the name scheme better */ ;; #define CURLOPT_WRITEDATA CURLOPT_FILE ;; #define CURLOPT_READDATA CURLOPT_INFILE ;; #define CURLOPT_HEADERDATA CURLOPT_WRITEHEADER ;; = ;; #ifndef CURL_NO_OLDIES /* define this to test if your app builds with all ;; the obsolete stuff removed! */ ;; #define CURLOPT_HTTPREQUEST -1 ;; #define CURLOPT_FTPASCII CURLOPT_TRANSFERTEXT ;; #define CURLOPT_MUTE -2 ;; #define CURLOPT_PASSWDFUNCTION -3 ;; #define CURLOPT_PASSWDDATA -4 ;; #define CURLOPT_CLOSEFUNCTION -5 ;; = ;; #define CURLOPT_SOURCE_HOST -6 ;; #define CURLOPT_SOURCE_PATH -7 ;; #define CURLOPT_SOURCE_PORT -8 ;; #define CURLOPT_PASV_HOST -9 ;; = ;; #else ;; /* This is set if CURL_NO_OLDIES is defined at compile-time */ ;; #undef CURLOPT_DNS_USE_GLOBAL_CACHE /* soon obsolete */ ;; #endif ;; = ;; = ;; /* These enums are for use with the CURLOPT_HTTP_VERSION option. */ ;; enum { ;; CURL_HTTP_VERSION_NONE, /* setting this means we don't care, and that = we'd ;; like the library to choose the best possible ;; for us! */ ;; CURL_HTTP_VERSION_1_0, /* please use HTTP 1.0 in the request */ ;; CURL_HTTP_VERSION_1_1, /* please use HTTP 1.1 in the request */ ;; = ;; CURL_HTTP_VERSION_LAST /* *ILLEGAL* http version */ ;; }; ;; = ;; /* These enums are for use with the CURLOPT_NETRC option. */ ;; enum CURL_NETRC_OPTION { ;; CURL_NETRC_IGNORED, /* The .netrc will never be read. ;; * This is the default. */ ;; CURL_NETRC_OPTIONAL, /* A user:password in the URL will be preferred ;; * to one in the .netrc. */ ;; CURL_NETRC_REQUIRED, /* A user:password in the URL will be ignored. ;; * Unless one is set programmatically, the .ne= trc ;; * will be queried. */ ;; CURL_NETRC_LAST ;; }; ;; = ;; enum { ;; CURL_SSLVERSION_DEFAULT, ;; CURL_SSLVERSION_TLSv1, ;; CURL_SSLVERSION_SSLv2, ;; CURL_SSLVERSION_SSLv3, ;; = ;; CURL_SSLVERSION_LAST /* never use, keep last */ ;; }; ;; = ;; = ;; typedef enum { ;; CURL_TIMECOND_NONE, ;; = ;; CURL_TIMECOND_IFMODSINCE, ;; CURL_TIMECOND_IFUNMODSINCE, ;; CURL_TIMECOND_LASTMOD, ;; = ;; CURL_TIMECOND_LAST ;; } curl_TimeCond; ;; = ;; #ifdef __BEOS__ ;; #include ;; #endif ;; = ;; = ;; /* curl_strequal() and curl_strnequal() are subject for removal in a fut= ure ;; libcurl, see lib/README.curlx for details */ ;; CURL_EXTERN int (curl_strequal)(const char *s1, const char *s2); ;; CURL_EXTERN int (curl_strnequal)(const char *s1, const char *s2, size_t = n); ;; = ;; /* name is uppercase CURLFORM_ */ ;; #ifdef CFINIT ;; #undef CFINIT ;; #endif ;; = ;; #ifdef CURL_ISOCPP ;; #define CFINIT(name) CURLFORM_ ## name ;; #else ;; /* The macro "##" is ISO C, we assume pre-ISO C doesn't support it. */ ;; #define CFINIT(name) CURLFORM_/**/name ;; #endif ;; = ;; typedef enum { ;; CFINIT(NOTHING), /********* the first one is unused ***********= */ ;; = ;; /* */ ;; CFINIT(COPYNAME), ;; CFINIT(PTRNAME), ;; CFINIT(NAMELENGTH), ;; CFINIT(COPYCONTENTS), ;; CFINIT(PTRCONTENTS), ;; CFINIT(CONTENTSLENGTH), ;; CFINIT(FILECONTENT), ;; CFINIT(ARRAY), ;; CFINIT(OBSOLETE), ;; CFINIT(FILE), ;; = ;; CFINIT(BUFFER), ;; CFINIT(BUFFERPTR), ;; CFINIT(BUFFERLENGTH), ;; = ;; CFINIT(CONTENTTYPE), ;; CFINIT(CONTENTHEADER), ;; CFINIT(FILENAME), ;; CFINIT(END), ;; CFINIT(OBSOLETE2), ;; = ;; CURLFORM_LASTENTRY /* the last unusued */ ;; } CURLformoption; ;; = ;; #undef CFINIT /* done */ ;; = ;; /* structure to be used as parameter for CURLFORM_ARRAY */ ;; struct curl_forms { ;; CURLformoption option; ;; const char *value; ;; }; ;; = ;; /* use this for multipart formpost building */ ;; /* Returns code for curl_formadd() ;; * ;; * Returns: ;; * CURL_FORMADD_OK on success ;; * CURL_FORMADD_MEMORY if the FormInfo allocation fails ;; * CURL_FORMADD_OPTION_TWICE if one option is given twice for one Form ;; * CURL_FORMADD_NULL if a null pointer was given for a char ;; * CURL_FORMADD_MEMORY if the allocation of a FormInfo struct fa= iled ;; * CURL_FORMADD_UNKNOWN_OPTION if an unknown option was used ;; * CURL_FORMADD_INCOMPLETE if the some FormInfo is not complete (or = error) ;; * CURL_FORMADD_MEMORY if a HttpPost struct cannot be allocated ;; * CURL_FORMADD_MEMORY if some allocation for string copying fai= led. ;; * CURL_FORMADD_ILLEGAL_ARRAY if an illegal option is used in an array ;; * ;; ***********************************************************************= ****/ ;; typedef enum { ;; CURL_FORMADD_OK, /* first, no error */ ;; = ;; CURL_FORMADD_MEMORY, ;; CURL_FORMADD_OPTION_TWICE, ;; CURL_FORMADD_NULL, ;; CURL_FORMADD_UNKNOWN_OPTION, ;; CURL_FORMADD_INCOMPLETE, ;; CURL_FORMADD_ILLEGAL_ARRAY, ;; CURL_FORMADD_DISABLED, /* libcurl was built with this disabled */ ;; = ;; CURL_FORMADD_LAST /* last */ ;; } CURLFORMcode; ;; = ;; /* ;; * NAME curl_formadd() ;; * ;; * DESCRIPTION ;; * ;; * Pretty advanved function for building multi-part formposts. Each invo= ke ;; * adds one part that together construct a full post. Then use ;; * CURLOPT_HTTPPOST to send it off to libcurl. ;; */ ;; CURL_EXTERN CURLFORMcode curl_formadd(struct curl_httppost **httppost, ;; struct curl_httppost **last_post, ;; ...); ;; = ;; /* ;; * NAME curl_formfree() ;; * ;; * DESCRIPTION ;; * ;; * Free a multipart formpost previously built with curl_formadd(). ;; */ ;; CURL_EXTERN void curl_formfree(struct curl_httppost *form); ;; = ;; /* ;; * NAME curl_getenv() ;; * ;; * DESCRIPTION ;; * ;; * Returns a malloc()'ed string that MUST be curl_free()ed after usage is ;; * complete. DEPRECATED - see lib/README.curlx ;; */ ;; CURL_EXTERN char *curl_getenv(const char *variable); ;; = ;; /* ;; * NAME curl_version() ;; * ;; * DESCRIPTION ;; * ;; * Returns a static ascii string of the libcurl version. ;; */ ;; CURL_EXTERN char *curl_version(void); ;; = ;; /* ;; * NAME curl_escape() ;; * ;; * DESCRIPTION ;; * ;; * Escapes URL strings (converts all letters consider illegal in URLs to= their ;; * %XX versions). This function returns a new allocated string or NULL i= f an ;; * error occurred. ;; */ ;; CURL_EXTERN char *curl_escape(const char *string, int length); ;; = ;; /* ;; * NAME curl_unescape() ;; * ;; * DESCRIPTION ;; * ;; * Unescapes URL encoding in strings (converts all %XX codes to their 8b= it ;; * versions). This function returns a new allocated string or NULL if an= error ;; * occurred. ;; */ ;; CURL_EXTERN char *curl_unescape(const char *string, int length); ;; = ;; /* ;; * NAME curl_free() ;; * ;; * DESCRIPTION ;; * ;; * Provided for de-allocation in the same translation unit that did the ;; * allocation. Added in libcurl 7.10 ;; */ ;; CURL_EXTERN void curl_free(void *p); ;; = ;; /* ;; * NAME curl_global_init() ;; * ;; * DESCRIPTION ;; * ;; * curl_global_init() should be invoked exactly once for each applicatio= n that ;; * uses libcurl ;; */ ;; CURL_EXTERN CURLcode curl_global_init(long flags); ;; = ;; /* ;; * NAME curl_global_init_mem() ;; * ;; * DESCRIPTION ;; * ;; * curl_global_init() or curl_global_init_mem() should be invoked exactl= y once ;; * for each application that uses libcurl. This function can be used to ;; * initialize libcurl and set user defined memory management callback ;; * functions. Users can implement memory management routines to check f= or ;; * memory leaks, check for mis-use of the curl library etc. User regist= ered ;; * callback routines with be invoked by this library instead of the syst= em ;; * memory management routines like malloc, free etc. ;; */ ;; CURL_EXTERN CURLcode curl_global_init_mem(long flags, ;; curl_malloc_callback m, ;; curl_free_callback f, ;; curl_realloc_callback r, ;; curl_strdup_callback s, ;; curl_calloc_callback c); ;; = ;; /* ;; * NAME curl_global_cleanup() ;; * ;; * DESCRIPTION ;; * ;; * curl_global_cleanup() should be invoked exactly once for each applica= tion ;; * that uses libcurl ;; */ ;; CURL_EXTERN void curl_global_cleanup(void); ;; = ;; /* linked-list structure for the CURLOPT_QUOTE option (and other) */ ;; struct curl_slist { ;; char *data; ;; struct curl_slist *next; ;; }; ;; = ;; /* ;; * NAME curl_slist_append() ;; * ;; * DESCRIPTION ;; * ;; * Appends a string to a linked list. If no list exists, it will be crea= ted ;; * first. Returns the new list, after appending. ;; */ ;; CURL_EXTERN struct curl_slist *curl_slist_append(struct curl_slist *, ;; const char *); ;; = ;; /* ;; * NAME curl_slist_free_all() ;; * ;; * DESCRIPTION ;; * ;; * free a previously built curl_slist. ;; */ ;; CURL_EXTERN void curl_slist_free_all(struct curl_slist *); ;; = ;; /* ;; * NAME curl_getdate() ;; * ;; * DESCRIPTION ;; * ;; * Returns the time, in seconds since 1 Jan 1970 of the time string give= n in ;; * the first argument. The time argument in the second parameter is unus= ed ;; * and should be set to NULL. ;; */ ;; CURL_EXTERN time_t curl_getdate(const char *p, const time_t *unused); ;; (unless (and (boundp 'curl-info-hash-table) (hash-table-p curl-info-hash-table)) (setq curl-info-hash-table (make-hash-table :test #'equal :size 30)) (let ((curlinfo-string #x100000) (curlinfo-long #x200000) (curlinfo-double #x300000) (curlinfo-slist #x400000)) ;; #define CURLINFO_MASK 0x0fffff ;; #define CURLINFO_TYPEMASK 0xf00000 ;; typedef enum { (puthash "NONE" '(nil nil) curl-info-hash-table) ; first, never use this (puthash "EFFECTIVE_URL" `(string ,(+ curlinfo-string 1)) curl-info-hash-table) (puthash "RESPONSE_CODE" `(long ,(+ curlinfo-long + 2)) curl-info-hash-table) (puthash "TOTAL_TIME" `(double ,(+ curlinfo-double 3)) curl-info-hash-table) (puthash "NAMELOOKUP_TIME" `(double ,(+ curlinfo-double 4)) curl-info-hash-table) (puthash "CONNECT_TIME" `(double ,(+ curlinfo-double 5)) curl-info-hash-table) (puthash "PRETRANSFER_TIME" `(double ,(+ curlinfo-double 6)) curl-info-hash-table) (puthash "SIZE_UPLOAD" `(double ,(+ curlinfo-double 7)) curl-info-hash-table) (puthash "SIZE_DOWNLOAD" `(double ,(+ curlinfo-double 8)) curl-info-hash-table) (puthash "SPEED_DOWNLOAD" `(double ,(+ curlinfo-double 9)) curl-info-hash-table) (puthash "SPEED_UPLOAD" `(double ,(+ curlinfo-double 10)) curl-info-hash-table) (puthash "HEADER_SIZE" `(long ,(+ curlinfo-long + 11)) curl-info-hash-table) (puthash "REQUEST_SIZE" `(long ,(+ curlinfo-long + 12)) curl-info-hash-table) (puthash "SSL_VERIFYRESULT" `(long ,(+ curlinfo-long + 13)) curl-info-hash-table) (puthash "FILETIME" `(long ,(+ curlinfo-long + 14)) curl-info-hash-table) (puthash "CONTENT_LENGTH_DOWNLOAD" `(double ,(+ curlinfo-double 15)) curl-info-hash-table) (puthash "CONTENT_LENGTH_UPLOAD" `(double ,(+ curlinfo-double 16)) curl-info-hash-table) (puthash "STARTTRANSFER_TIME" `(double ,(+ curlinfo-double 17)) curl-info-hash-table) (puthash "CONTENT_TYPE" `(string ,(+ curlinfo-string 18)) curl-info-hash-table) (puthash "REDIRECT_TIME" `(double ,(+ curlinfo-double 19)) curl-info-hash-table) (puthash "REDIRECT_COUNT" `(long ,(+ curlinfo-long + 20)) curl-info-hash-table) (puthash "PRIVATE" `(string ,(+ curlinfo-string 21)) curl-info-hash-table) (puthash "HTTP_CONNECTCODE" `(long ,(+ curlinfo-long + 22)) curl-info-hash-table) (puthash "HTTPAUTH_AVAIL" `(long ,(+ curlinfo-long + 23)) curl-info-hash-table) (puthash "PROXYAUTH_AVAIL" `(long ,(+ curlinfo-long + 24)) curl-info-hash-table) (puthash "OS_ERRNO" `(long ,(+ curlinfo-long + 25)) curl-info-hash-table) (puthash "NUM_CONNECTS" `(long ,(+ curlinfo-long + 26)) curl-info-hash-table) (puthash "SSL_ENGINES" `(list ,(+ curlinfo-slist+ 27)) curl-info-hash-table) (puthash "COOKIELIST" `(list ,(+ curlinfo-slist+ 28)) curl-info-hash-table) ;; Fill in new entries below here! (puthash "LASTONE" '(nil 28) curl-info-hash-table) ;; } CURLINFO; )) ;; /* CURLINFO_RESPONSE_CODE is the new name for the option previously know= n as ;; CURLINFO_HTTP_CODE */ ;; #define CURLINFO_HTTP_CODE CURLINFO_RESPONSE_CODE ;; = ;; typedef enum { ;; CURLCLOSEPOLICY_NONE, /* first, never use this */ ;; = ;; CURLCLOSEPOLICY_OLDEST, ;; CURLCLOSEPOLICY_LEAST_RECENTLY_USED, ;; CURLCLOSEPOLICY_LEAST_TRAFFIC, ;; CURLCLOSEPOLICY_SLOWEST, ;; CURLCLOSEPOLICY_CALLBACK, ;; = ;; CURLCLOSEPOLICY_LAST /* last, never use this */ ;; } curl_closepolicy; ;; = ;; #define CURL_GLOBAL_SSL (1<<0) ;; #define CURL_GLOBAL_WIN32 (1<<1) ;; #define CURL_GLOBAL_ALL (CURL_GLOBAL_SSL|CURL_GLOBAL_WIN32) ;; #define CURL_GLOBAL_NOTHING 0 ;; #define CURL_GLOBAL_DEFAULT CURL_GLOBAL_ALL ;; = ;; = ;; /***********************************************************************= ****** ;; * Setup defines, protos etc for the sharing stuff. ;; */ ;; = ;; /* Different data locks for a single share */ ;; typedef enum { ;; CURL_LOCK_DATA_NONE =3D 0, ;; /* CURL_LOCK_DATA_SHARE is used internaly to say that ;; * the locking is just made to change the internal state of the share ;; * itself. ;; */ ;; CURL_LOCK_DATA_SHARE, ;; CURL_LOCK_DATA_COOKIE, ;; CURL_LOCK_DATA_DNS, ;; CURL_LOCK_DATA_SSL_SESSION, ;; CURL_LOCK_DATA_CONNECT, ;; CURL_LOCK_DATA_LAST ;; } curl_lock_data; ;; = ;; /* Different lock access types */ ;; typedef enum { ;; CURL_LOCK_ACCESS_NONE =3D 0, /* unspecified action */ ;; CURL_LOCK_ACCESS_SHARED =3D 1, /* for read perhaps */ ;; CURL_LOCK_ACCESS_SINGLE =3D 2, /* for write perhaps */ ;; CURL_LOCK_ACCESS_LAST /* never use */ ;; } curl_lock_access; ;; = ;; typedef void (*curl_lock_function)(CURL *handle, ;; curl_lock_data data, ;; curl_lock_access locktype, ;; void *userptr); ;; typedef void (*curl_unlock_function)(CURL *handle, ;; curl_lock_data data, ;; void *userptr); ;; = ;; typedef void CURLSH; ;; = ;; typedef enum { ;; CURLSHE_OK, /* all is fine */ ;; CURLSHE_BAD_OPTION, /* 1 */ ;; CURLSHE_IN_USE, /* 2 */ ;; CURLSHE_INVALID, /* 3 */ ;; CURLSHE_NOMEM, /* out of memory */ ;; CURLSHE_LAST /* never use */ ;; } CURLSHcode; ;; = ;; typedef enum { ;; CURLSHOPT_NONE, /* don't use */ ;; CURLSHOPT_SHARE, /* specify a data type to share */ ;; CURLSHOPT_UNSHARE, /* specify shich data type to stop sharing */ ;; CURLSHOPT_LOCKFUNC, /* pass in a 'curl_lock_function' pointer */ ;; CURLSHOPT_UNLOCKFUNC, /* pass in a 'curl_unlock_function' pointer */ ;; CURLSHOPT_USERDATA, /* pass in a user data pointer used in the lock/= unlock ;; callback functions */ ;; CURLSHOPT_LAST /* never use */ ;; } CURLSHoption; ;; = ;; CURL_EXTERN CURLSH *curl_share_init(void); ;; CURL_EXTERN CURLSHcode curl_share_setopt(CURLSH *, CURLSHoption option, = ...); ;; CURL_EXTERN CURLSHcode curl_share_cleanup(CURLSH *); ;; = ;; /***********************************************************************= ***** ;; * Structures for querying information about the curl library at runtime. ;; */ ;; = ;; typedef enum { ;; CURLVERSION_FIRST, ;; CURLVERSION_SECOND, ;; CURLVERSION_THIRD, ;; CURLVERSION_LAST /* never actually use this */ ;; } CURLversion; ;; = ;; /* The 'CURLVERSION_NOW' is the symbolic name meant to be used by ;; basicly all programs ever, that want to get version information. It is ;; meant to be a built-in version number for what kind of struct the cal= ler ;; expects. If the struct ever changes, we redefine the NOW to another e= num ;; from above. */ ;; #define CURLVERSION_NOW CURLVERSION_THIRD ;; = ;; typedef struct { ;; CURLversion age; /* age of the returned struct */ ;; const char *version; /* LIBCURL_VERSION */ ;; unsigned int version_num; /* LIBCURL_VERSION_NUM */ ;; const char *host; /* OS/host/cpu/machine when configured */ ;; int features; /* bitmask, see defines below */ ;; const char *ssl_version; /* human readable string */ ;; long ssl_version_num; /* not used anymore, always 0 */ ;; const char *libz_version; /* human readable string */ ;; /* protocols is terminated by an entry with a NULL protoname */ ;; const char * const *protocols; ;; = ;; /* The fields below this were added in CURLVERSION_SECOND */ ;; const char *ares; ;; int ares_num; ;; = ;; /* This field was aded in CURLVERSION_THIRD */ ;; const char *libidn; ;; } curl_version_info_data; ;; = ;; #define CURL_VERSION_IPV6 (1<<0) /* IPv6-enabled */ ;; #define CURL_VERSION_KERBEROS4 (1<<1) /* kerberos auth is supported */ ;; #define CURL_VERSION_SSL (1<<2) /* SSL options are present */ ;; #define CURL_VERSION_LIBZ (1<<3) /* libz features are present */ ;; #define CURL_VERSION_NTLM (1<<4) /* NTLM auth is supported */ ;; #define CURL_VERSION_GSSNEGOTIATE (1<<5) /* Negotiate auth support */ ;; #define CURL_VERSION_DEBUG (1<<6) /* built with debug capabilities = */ ;; #define CURL_VERSION_ASYNCHDNS (1<<7) /* asynchronous dns resolves */ ;; #define CURL_VERSION_SPNEGO (1<<8) /* SPNEGO auth */ ;; #define CURL_VERSION_LARGEFILE (1<<9) /* supports files bigger than 2GB= */ ;; #define CURL_VERSION_IDN (1<<10) /* International Domain Names sup= port */ ;; #define CURL_VERSION_SSPI (1<<11) /* SSPI is supported */ ;; = ;; /* ;; * NAME curl_version_info() ;; * ;; * DESCRIPTION ;; * ;; * This function returns a pointer to a static copy of the version info ;; * struct. See above. ;; */ ;; CURL_EXTERN curl_version_info_data *curl_version_info(CURLversion); ;; = ;; /* ;; * NAME curl_easy_strerror() ;; * ;; * DESCRIPTION ;; * ;; * The curl_easy_strerror function may be used to turn a CURLcode value ;; * into the equivalent human readable error string. This is useful ;; * for printing meaningful error messages. ;; */ ;; CURL_EXTERN const char *curl_easy_strerror(CURLcode); ;; = ;; /* ;; * NAME curl_share_strerror() ;; * ;; * DESCRIPTION ;; * ;; * The curl_share_strerror function may be used to turn a CURLSHcode val= ue ;; * into the equivalent human readable error string. This is useful ;; * for printing meaningful error messages. ;; */ ;; CURL_EXTERN const char *curl_share_strerror(CURLSHcode); (provide 'curl) ;;; curl.el ends here 1.1 XEmacs/packages/unsupported/stephen/curl/curl_api.c Index: curl_api.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* * Lisp interface to libcurl for XEmacs. * * Copyright (C) 1998, 1999 J. Kean Johnston. All rights reserved. * Copyright (C) 2002 Jerry James. * Copyright (C) 2005 Stephen J. Turnbull * * All rights reserved, except as expressly indicated below. * * This program is not considered part of XEmacs. * * You may use, copy, modify, and distribute this software under the terms * of the GNU General Public License, version 2 or later at your option. * * Author: Stephen J. Turnbull * Creation-Date: 2005-11-20 */ #include #include "lisp.h" #ifdef HAVE_SHLIB # include "emodules.h" #endif #include "lstream.h" #include "elhash.h" #include "curl_api.h" /* include */ /************************************************************************/ /* Module-specific stuff */ /************************************************************************/ /* Local references to Lisp symbols */ static Lisp_Object Qcurl_api, Qcurl, Qurl_handlep, Qlong, Qfunctionpoint, Qobjectpoint, Qoff_t; static Lisp_Object Vcurl_option_hash_table, Vcurl_info_hash_table; /************************************************************************/ /* url_handle lrecord basic functions */ /************************************************************************/ static const struct memory_description url_handle_description [] =3D { { XD_LISP_OBJECT, offsetof (struct Lisp_URL_Handle, type) }, { XD_LISP_OBJECT, offsetof (struct Lisp_URL_Handle, property_list) }, { XD_LISP_OBJECT, offsetof (struct Lisp_URL_Handle, coding_system) }, { XD_END } }; static Lisp_Object mark_url_handle (Lisp_Object obj) { if (NILP (XURL_HANDLE (obj)->property_list)) return XURL_HANDLE (obj)->type; mark_object (XURL_HANDLE (obj)->coding_system); mark_object (XURL_HANDLE (obj)->type); return XURL_HANDLE (obj)->property_list; } static void print_url_handle (Lisp_Object obj, Lisp_Object printcharfun, int UNUSED (escapeflag)) { Lisp_URL_Handle *url_handle =3D XURL_HANDLE (obj); if (print_readably) printing_unreadable_object ("#", url_handle->url); write_c_string (printcharfun, "#type)) write_c_string (printcharfun, "(dead) "); else write_fmt_string_lisp (printcharfun, "%S ", 1, url_handle->type); if (url_handle->url) write_c_string (printcharfun, url_handle->url); write_fmt_string (printcharfun, " 0x%lx>", (unsigned long) url_handle); } static Lisp_URL_Handle * allocate_url_handle (void) { Lisp_URL_Handle *url_handle =3D ALLOC_LCRECORD_TYPE (Lisp_URL_Handle, &lrecord_url_handle); url_handle->type =3D Qnil; url_handle->property_list =3D Qnil; url_handle->coding_system =3D Qnil; url_handle->url =3D NULL; url_handle->curl_handle =3D NULL; /* #### UNIMPLEMENTED we need to initialize the big_ball_of_strings here.= */ return url_handle; } static void finalize_url_handle (void *header, int for_disksave) { Lisp_URL_Handle *url_handle =3D (Lisp_URL_Handle *) header; if (for_disksave) invalid_operation ("Can't dump an emacs containing URL_HANDLE objects", wrap_url_handle (url_handle)); /* #### UNIMPLEMENTED we need to free the big_ball_of_strings here. */ if (url_handle->curl_handle) curl_easy_cleanup (url_handle->curl_handle); url_handle->curl_handle =3D NULL; if (url_handle->url) xfree (url_handle->url, Extbyte *); url_handle->url =3D NULL; } DEFINE_LRECORD_IMPLEMENTATION ("url_handle", url_handle, 0, mark_url_handle, print_url_handle, finalize_url_handle, NULL, NULL, url_handle_description, Lisp_URL_Handle); =0C /************************************************************************/ /* Basic url_handle accessors = */ /************************************************************************/ /* ###autoload */ DEFUN ("url-handle-p", Furl_handle_p, 1, 1, 0, /* Return t if OBJECT is a URL_HANDLE connection. */ (object)) { return URL_HANDLEP (object) ? Qt : Qnil; } DEFUN ("url-handle-type", Furl_handle_type, 1, 1, 0, /* Return the type of URL-HANDLE, a symbol. */ (url_handle)) { CHECK_URL_HANDLE (url_handle); return XURL_HANDLE (url_handle)->type; } DEFUN ("url-handle-live-p", Furl_handle_live_p, 1, 1, 0, /* Return non-nil if URL_HANDLE is an active URL_HANDLE connection. */ (url_handle)) { CHECK_URL_HANDLE (url_handle); return Furl_handle_type (url_handle); } DEFUN ("url-handle-property-list", Furl_handle_host, 1, 1, 0, /* Return the property list of URL-HANDLE. */ (url_handle)) { Lisp_Object retval; CHECK_URL_HANDLE (url_handle); retval =3D XURL_HANDLE (url_handle)->property_list; /* #### extract properties from the curl_handle and add to retval here */ return retval; } #if 0 DEFUN ("url-handle-host", Furl_handle_host, 1, 1, 0, /* Return the server host of the connection URL-HANDLE, as a string. */ (url_handle)) { CHECK_URL_HANDLE (url_handle); return WHAT? } #endif =0C /************************************************************************/ /* Lisp API functions */ /************************************************************************/ /* error macros */ #define UNIMPLEMENTED(reason) signal_error (Qunimplemented, reason, Qunboun= d) /* #### Do something more useful with the error codes! */ #define CHECK_CURL_ERROR(code, index, handle) \ do { if (code) \ Fsignal (Qio_error, \ list3 (build_ext_string (curl_easy_strerror (code), \ Qbinary), \ index, \ handle)); } while (0) DEFUN ("curl-make-url-handle", Fcurl_make_url_handle, 1, 3, 0, /* Return a cURL handle for URL, wrapped in an url-handle. URL is a string, which must be a URI scheme known to cURL. URL is encoded according to optional argument CODESYS. (Of course cURL will URL-encode it before sending it off.) PLIST is a property list. These properties are set on the cURL handle. #### This interface may change to (&rest PLIST). #### This is not called "make-curl-handle" because a more general module, which will call this function, is planned. That will call this function from a function `make-url-handle'. */ (url, codesys, plist)) { Lisp_URL_Handle *url_handle =3D allocate_url_handle (); url_handle->type =3D Qcurl; if (NILP (codesys)) /* #### Quick hack, should be Qnative? */ codesys =3D Ffind_coding_system (Qutf_8); CHECK_CODING_SYSTEM (codesys); url_handle->coding_system =3D codesys; /* Do this *before* the plist because later we will be initializing curl_handle options from the plist. */ CHECK_STRING (url); url_handle->url =3D NEW_LISP_STRING_TO_EXTERNAL_MALLOC(url, codesys); url_handle->curl_handle =3D curl_easy_init (); curl_easy_setopt (url_handle->curl_handle, CURLOPT_URL, url_handle->url); /* skeleton - currently simply copies the plist This has the effect of checking well-formedness, and we may want to handle some properties specially. */ url_handle->property_list =3D Qnil; { EXTERNAL_PROPERTY_LIST_LOOP_3(key, value, plist) { url_handle->property_list =3D Fcons (key, Fcons (value, url_handle->property_list)); } } return wrap_url_handle (url_handle); } DEFUN ("curl-easy-setopt", Fcurl_easy_setopt, 3, 3, 0, /* Set OPTION to VALUE on curl url-handle HANDLE and return t. OPTION is a string denoting an option in `curl-option-hash-table'. VALUE must be of the appropriate type. HANDLE must be an url-handle object of type `curl'. A wrapper with some validation for libcurl's `curl_easy_setopt'. Errors without useful explanations probably mean `curl-option-hash-table' is corrupt. */ (option, value, handle)) { Lisp_Object optdata =3D Fgethash (option, Vcurl_option_hash_table, Qnil); Lisp_Object opttype =3D Fcar (optdata); Lisp_Object optindex =3D Fcar (Fcdr (optdata)); CURLoption index; CURL *curl; CURLcode code; Lisp_URL_Handle *h; if (NILP (optdata)) invalid_argument ("unrecognized cURL option", option); CHECK_URL_HANDLE (handle); h =3D XURL_HANDLE (handle); if (!EQ (h->type, Qcurl)) wtaerror ("handle is not a curl handle", handle); curl =3D h->curl_handle; CHECK_INT (optindex); index =3D XINT (optindex); if (EQ (opttype, Qlong)) { CHECK_INT (value); index +=3D CURLOPTTYPE_LONG; /* CURLoptions encode type */ code =3D curl_easy_setopt (curl, (CURLoption) index, XINT (value)); CHECK_CURL_ERROR (code, option, handle); } else if (EQ (opttype, Qobjectpoint)) { Extbyte *s; /* HA-A-ACK! Currently we only support strings here, and we don't check a string is a sane value for the option. */ CHECK_STRING (value); index +=3D CURLOPTTYPE_OBJECTPOINT; /* CURLoptions encode type */ /* #### MEMORY LEAK! We need to add a pointer to the converted data here to a Dynarr which is part of the handle. That will be freed when the handle is collected. */ /* #### Is this the right coding system? */ s =3D NEW_LISP_STRING_TO_EXTERNAL_MALLOC (value, h->coding_system); code =3D curl_easy_setopt (curl, (CURLoption) index, s); CHECK_CURL_ERROR (code, option, handle); if (index =3D=3D CURLOPT_URL) { h->url =3D s; } } else if (EQ (opttype, Qfunctionpoint)) { index +=3D CURLOPTTYPE_FUNCTIONPOINT; /* CURLoptions encode type */ UNIMPLEMENTED ("curl_api function pointer options"); } else if (EQ (opttype, Qoff_t)) { index +=3D CURLOPTTYPE_OFF_T; /* CURLoptions encode type */ UNIMPLEMENTED ("curl_api large file offset options"); } else { invalid_state ("invalid option type in `curl-option-hash-table'", opttype); } return Qt; } static size_t curl_write_function (void *data, size_t size, size_t nmemb, void *stream) { size_t count =3D size * nmemb; Lstream *s =3D XLSTREAM ((Lisp_Object) stream); /* #### the return code should be checked */ return (Lstream_write (s, data, count)) ? --count : count; } DEFUN ("curl-easy-perform", Fcurl_easy_perform, 1, 2, 0, /* Read from the URL represented by HANDLE into BUFFER at point. Optional BUFFER defaults to the current buffer. Returns t. */ (handle, buffer)) { CHECK_URL_HANDLE (handle); if (NILP (buffer)) buffer =3D Fcurrent_buffer (); CHECK_BUFFER (buffer); = if (EQ (XURL_HANDLE (handle)->type, Qcurl)) { CURL *curl =3D XURL_HANDLE (handle)->curl_handle; if (curl) { CURLcode code; struct buffer *buf =3D XBUFFER(buffer); /* #### I don't see how to generalize this. We'd like to be able to the Lstream in from Lisp, and somehow figure out what the type is so as to use the proper CURLOPT_WRITEFUNCTION. Ditto for CURLOPT_READFUNCTION and CURLOPT_READDATA. */ Lisp_Object s =3D make_lisp_buffer_output_stream (buf, buf->bufpt, LSTR_ALLOW_QUIT); curl_easy_setopt (curl, CURLOPT_WRITEFUNCTION, &curl_write_function); curl_easy_setopt (curl, CURLOPT_WRITEDATA, s); code =3D curl_easy_perform (curl); Lstream_close (XLSTREAM (s)); CHECK_CURL_ERROR (code, intern ("perform"), handle); } else { invalid_state ("URL handle is uninitialized", handle); } } else { wtaerror ("URL handle is not a cURL handle", handle); } return Qt; } DEFUN ("curl-easy-getinfo", Fcurl_easy_getinfo, 2, 2, 0, /* Return the value of ATTRIBUTE for HANDLE. ATTRIBUTE is a string denoting an attribute in `curl-info-hash-table'. HANDLE must be an url-handle object of type `curl'. A wrapper with some validation for libcurl's `curl_easy_getinfo'. Errors without useful explanations probably mean `curl-info-hash-table' is corrupt. */ (attribute, handle)) { Lisp_Object attdata =3D Fgethash (attribute, Vcurl_info_hash_table, Qnil); Lisp_Object atttype =3D Fcar (attdata); Lisp_Object attindex =3D Fcar (Fcdr (attdata)); CURL *curl; CURLcode code; Lisp_URL_Handle *h; if (NILP (attdata)) invalid_argument ("unrecognized cURL attribute", attribute); CHECK_URL_HANDLE (handle); h =3D XURL_HANDLE (handle); if (!EQ (h->type, Qcurl)) wtaerror ("handle is not a curl handle", handle); curl =3D h->curl_handle; CHECK_INT (attindex); index =3D XINT (attindex); if (EQ (atttype, Qlong)) { long retval; code =3D curl_easy_getinfo (curl, (CURLoption) index, &retval); CHECK_CURL_ERROR (code, attribute, handle); /* #### can this overflow? */ value =3D make_int (retval); } else if (EQ (atttype, Qstring)) { Extbyte *retval; code =3D curl_easy_getinfo (curl, (CURLoption) index, &retval); CHECK_CURL_ERROR (code, attribute, handle); value =3D build_ext_string (s); } else if (EQ (atttype, Qdouble)) { double retval; code =3D curl_easy_getinfo (curl, (CURLoption) index, &retval); CHECK_CURL_ERROR (code, attribute, handle); value =3D make_float (retval); } else if (EQ (atttype, Qlist)) { UNIMPLEMENTED ("curl_api slist attributes"); } else { invalid_state ("invalid attribute type in `curl-info-hash-table'", atttype); } return value; = } /* * Each dynamically loaded Emacs module is given a name at compile * time. This is a short name, and must be a valid part of a C * identifier. This name is used to construct the name of several * functions which must appear in the module source code. * The first such function, modules_of_XXXX, should load in any dependent * modules. This function is optional, and the module will still load if * it is not present in the module. * * The second function, which is NOT optional, is syms_of_XXXX, in which * all functions that the module will be provided are declared. This * function will contain calls to DEFSUBR(). * * The third function, which is also NOT optional, is vars_of_XXXX, in * which you declare all variables that the module provides. This * function will contain calls to DEFVAR_LISP(), DEFVAR_BOOL() etc. * * When declaring functions and variables in the syms_of_XXXX and * vars_of_XXXX functions, you use the exact same syntax that you * would as if this module were being compiled into the pure Emacs. * * The fourth function, which is optional, is unload_XXXX, in which actions * that must be taken to unload the module are listed. XEmacs will unbind * functions and variables for you. Anything else that must be done should * appear in this function. * * All four of these functions are declared as void functions, * taking no parameters. */ #if 0 void modules_of_curl_api () { /* * This function isn't actually required as we will not be loading * in any dependent modules, but if we were, we would do something like: * emodules_load ("dependent.ell", "sample2", "1.0.0"); */ /* MAYBE: emodules_load ("earl.ell", "earl", "0.0.1"); */ } #endif void syms_of_curl_api () { INIT_LRECORD_IMPLEMENTATION (url_handle); /* #### These functions will move to the earl module. */ DEFSUBR (Furl_handle_p); DEFSUBR (Furl_handle_live_p); DEFSUBR (Furl_handle_host); DEFSUBR (Furl_handle_type); /* cURL-specific functions. */ DEFSUBR (Fcurl_make_url_handle); DEFSUBR (Fcurl_easy_perform); DEFSUBR (Fcurl_easy_setopt); /* #### These symbols will move to the earl module. */ DEFSYMBOL_MULTIWORD_PREDICATE (Qurl_handlep); /* cURL-specific symbols. */ DEFSYMBOL (Qcurl_api); /* feature symbol */ DEFSYMBOL (Qcurl); DEFSYMBOL (Qlong); DEFSYMBOL (Qfunctionpoint); DEFSYMBOL (Qobjectpoint); defsymbol (&Qoff_t, "off_t"); /* Yes, it IS worth conforming to cURL's spelling of this symbol. */ } void vars_of_curl_api () { Fprovide (Qcurl_api); DEFVAR_LISP ("curl-option-hash-table", &Vcurl_option_hash_table /* Table of options available for `curl-easy-setopt'. Key are strings naming options. The option names are taken from enum CURLoption in . They are all uppercase, and the "CURLOPT_" prefix is omitted. Values are lists containing a type symbol \(one of `long', `objectpoint', `functionpoint', and `off_t') and an integer, which is the option index. It is planned to add a list of Lisp types that can be converted to something that is useful for the option as the 3rd element of the value list. It is planned to add the leading comments as docstrings, to be the 4th element of the value list corresponding to each key. */ ); Vcurl_option_hash_table =3D Qnil; DEFVAR_LISP ("curl-info-hash-table", &Vcurl_info_hash_table /* Table of attributes accessible via `curl-easy-getinfo'. Keys are strings naming attributes. The attribute names are taken from enum CURLinfo in . They are all uppercase, and the "CURLINFO_" prefix is omitted. Values are lists containing a type symbol (one of `long', `string', `double', and `list') and an integer, which is the attribute index. It is planned to add docstrings, to be the 3rd element of the value list corresponding to each key. */ ); Vcurl_info_hash_table =3D Qnil; #ifdef HAVE_SHLIB /* Need to initialize cURL if loaded as a module. Could do this lazily (when creating the first cURL handle), but since this is a module it probably got autoloaded in response to a call to `make-curl-handle'. */ if (curl_global_init (CURL_GLOBAL_XEMACS)) { /* unload_curl_api (); */ /* #### can we do this? */ signal_error (Qio_error, "libcurl initialization failed", Qunbound); } #endif } #ifdef HAVE_SHLIB void unload_curl_api () { /* If we create any new types by INIT_LRECORD_IMPLEMENTATION (sample_type= ), then UNDEF_LRECORD_IMPLEMENTATION (sample_type) must appear here. Als= o, any symbols declared with DEFSYMBOL (Qsample_var) or a variant, must have a corresponding unstaticpro_nodump (&Qsample_var) here. */ /* Shut down libcurl and free internal structures. #### Handle return code? Nothing interesting is documented. */ (void) curl_global_cleanup (); unstaticpro_nodump (&Qcurl_api); unstaticpro_nodump (&Qcurl); unstaticpro_nodump (&Qurl_handlep); unstaticpro_nodump (&Qlong); unstaticpro_nodump (&Qfunctionpoint); unstaticpro_nodump (&Qobjectpoint); unstaticpro_nodump (&Qoff_t); } #endif 1.1 XEmacs/packages/unsupported/stephen/curl/curl_api.h Index: curl_api.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D /* * Lisp interface to libcurl for XEmacs. * * Copyright (C) 1998, 1999 J. Kean Johnston. All rights reserved. * Copyright (C) 2002 Jerry James. * Copyright (C) 2005 Stephen J. Turnbull * * All rights reserved, except as expressly indicated below. * * This program is not considered part of XEmacs. * * You may use, copy, modify, and distribute this software under the terms * of the GNU General Public License, version 2 or later at your option. * * Author: Stephen J. Turnbull * Creation-Date: 2005-11-23 */ #include /************************************************************************/ /* XEmacs-specific cURL stuff */ /************************************************************************/ /* Presumably we initialize Windows socket stuff correctly. If not, I don't think it's a good idea to do it in a module. If you know better, feel free to allow CURL_GLOBAL_WIN32 in this macro. */ #define CURL_GLOBAL_XEMACS (CURL_GLOBAL_ALL & ~CURL_GLOBAL_WIN32) /************************************************************************/ /* Structures */ /************************************************************************/ /* This is URL_Handle, not Curl_Handle, because a generalization is planned. */ struct Lisp_URL_Handle { struct LCRECORD_HEADER header; /* type of the handle; READ-ONLY from Lisp */ Lisp_Object type; /* property list for properties not contained in the cURL handle; READ-ONLY from Lisp This could be used to maintain state for a handler based on url.el or an external process (eg, curl, wget). */ Lisp_Object property_list; /* the coding system used to convery url; READ-ONLY from Lisp */ Lisp_Object coding_system; /* the URL string in external format cURL expects the caller to allocate storage and clean it up. */ Extbyte *url; /* the cURL handle used by the libcurl API */ CURL *curl_handle; /* #### UNIMPLEMENTED array of pointers to string data we need to free */ Dynarr *big_ball_of_strings; }; typedef struct Lisp_URL_Handle Lisp_URL_Handle; DECLARE_LRECORD (url_handle, Lisp_URL_Handle); #define XURL_HANDLE(x) XRECORD (x, url_handle, Lisp_URL_Handle) #define wrap_url_handle(p) wrap_record (p, url_handle) #define URL_HANDLEP(x) RECORDP (x, url_handle) #define CHECK_URL_HANDLE(x) CHECK_RECORD (x, url_handle) #define CONCHECK_URL_HANDLE(x) CONCHECK_RECORD (x, url_handle) 1.1 XEmacs/packages/unsupported/stephen/curl/install-sh Index: install-sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D #!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and i= ts # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit=3D"${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. va= rs. mvprog=3D"${MVPROG-mv}" cpprog=3D"${CPPROG-cp}" chmodprog=3D"${CHMODPROG-chmod}" chownprog=3D"${CHOWNPROG-chown}" chgrpprog=3D"${CHGRPPROG-chgrp}" stripprog=3D"${STRIPPROG-strip}" rmprog=3D"${RMPROG-rm}" mkdirprog=3D"${MKDIRPROG-mkdir}" transformbasename=3D"" transform_arg=3D"" instcmd=3D"$mvprog" chmodcmd=3D"$chmodprog 0755" chowncmd=3D"" chgrpcmd=3D"" stripcmd=3D"" rmcmd=3D"$rmprog -f" mvcmd=3D"$mvprog" src=3D"" dst=3D"" dir_arg=3D"" while [ x"$1" !=3D x ]; do case $1 in -c) instcmd=3D"$cpprog" shift continue;; -d) dir_arg=3Dtrue shift continue;; -m) chmodcmd=3D"$chmodprog $2" shift shift continue;; -o) chowncmd=3D"$chownprog $2" shift shift continue;; -g) chgrpcmd=3D"$chgrpprog $2" shift shift continue;; -s) stripcmd=3D"$stripprog" shift continue;; -t=3D*) transformarg=3D`echo $1 | sed 's/-t=3D//'` shift continue;; -b=3D*) transformbasename=3D`echo $1 | sed 's/-b=3D//'` shift continue;; *) if [ x"$src" =3D x ] then src=3D$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=3D$1 fi shift continue;; esac done if [ x"$src" =3D x ] then echo "install: no input file specified" exit 1 else : fi if [ x"$dir_arg" !=3D x ]; then dst=3D$src src=3D"" = if [ -d $dst ]; then instcmd=3D: chmodcmd=3D"" else instcmd=3D$mkdirprog fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad = # if $src (and thus $dsttmp) contains '*'. if [ -f "$src" ] || [ -d "$src" ] then : else echo "install: $src does not exist" exit 1 fi = if [ x"$dst" =3D x ] then echo "install: no destination specified" exit 1 else : fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst=3D"$dst"/`basename $src` else : fi fi ## this sed command emulates the dirname command dstdir=3D`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=3D' ' IFS=3D"${IFS-${defaultIFS}}" oIFS=3D"${IFS}" # Some sh's can't handle IFS=3D/ for some reason. IFS=3D'%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS=3D"${oIFS}" pathcomp=3D'' while [ $# -ne 0 ] ; do pathcomp=3D"${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else : fi pathcomp=3D"${pathcomp}/" done fi if [ x"$dir_arg" !=3D x ] then $doit $instcmd $dst && if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd $dst; else : ; fi && if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd $dst; else : ; fi && if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd $dst; else : ; fi && if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd $dst; else : ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" =3D x ] = then dstfile=3D`basename $dst` else dstfile=3D`basename $dst $transformbasename | = sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" =3D x ] = then dstfile=3D`basename $dst` else : fi # Make a temp file name in the proper directory. dsttmp=3D$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" !=3D x ]; then $doit $chowncmd $dsttmp; else :;fi && if [ x"$chgrpcmd" !=3D x ]; then $doit $chgrpcmd $dsttmp; else :;fi && if [ x"$stripcmd" !=3D x ]; then $doit $stripcmd $dsttmp; else :;fi && if [ x"$chmodcmd" !=3D x ]; then $doit $chmodcmd $dsttmp; else :;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile = fi && exit 0 --===============1664854459618793446==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============4434824934546819885==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent packages/unsupported/stephen/curl README Date: 2005-11-26 16:04:25 +0000 Message-ID: <20051126160425.10766.qmail@sunsite.dk> --===============4434824934546819885== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 17:04:25 Added: packages/unsupported/stephen/curl README Log: Project description. Revision Changes Path 1.1 XEmacs/packages/unsupported/stephen/curl/README Index: README =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D XEmacs Lisp binding for libcurl =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D libcurl is the library API for cURL. Documentation is available at http://curl.haxx.se/. This is primarily a C module, not a Lisp library. There is a Lisp library which initializes some data structures and requires the module; this structure will probably be changed in the future. The current version of the module exposes the libcurl "easy" interface via the following Lisp API. It adds one object type, "URL handle", and the functions and variables listed below. The naming scheme will seem a little odd. My intention is to unify a number of different URL handling implementations, probably including EFS, TRAMP and libneon, under the url-handle interface. The generic interface will use the url-handle-* namespace. The curl-* API provides low-level, library-specific functions. These functions are generally named after either a library API (eg, `curl-easy-perform' actually accesses the resource pointed to by the URL), or the generic API it implements (`curl-make-url-handle'). Currently there are no generic equivalents to the libcurl wrappers. This is intentional; I want to implement at least one more lowlevel API before starting to design the generic APIs. I do not have immediate plans to implement the libcurl "multi" and "shared" interfaces. It should be easy, and patches and suggestions are welcome. DEFUN ("url-handle-p", Furl_handle_p, 1, 1, 0, /* Return t if OBJECT is a URL_Handle connection. */ (object)) DEFUN ("url-handle-type", Furl_handle_type, 1, 1, 0, /* Return the type of URL-HANDLE, a symbol. */ (url_handle)) DEFUN ("url-handle-live-p", Furl_handle_live_p, 1, 1, 0, /* Return non-nil if URL_HANDLE is an active URL_HANDLE connection. */ (url_handle)) DEFUN ("url-handle-property-list", Furl_handle_host, 1, 1, 0, /* Return the property list of URL-HANDLE. */ (url_handle)) DEFUN ("curl-make-url-handle", Fcurl_make_url_handle, 1, 3, 0, /* Return a cURL handle for URL, wrapped in an url-handle. URL is a string, which must be a URI scheme known to cURL. URL is encoded according to optional argument CODESYS. (Of course cURL will URL-encode it before sending it off.) PLIST is a property list. These properties are set on the cURL handle. #### This interface may change to (&rest PLIST). */ (url, codesys, plist)) DEFUN ("curl-easy-setopt", Fcurl_easy_setopt, 3, 3, 0, /* Set OPTION to VALUE on curl url-handle HANDLE and return t. OPTION is a string denoting an option in `curl-option-hash-table'. VALUE must be of the appropriate type. HANDLE must be an url-handle object of type `curl'. A wrapper with some validation for libcurl's `curl_easy_setopt'. Errors without useful explanations probably mean `curl-option-hash-table' is corrupt. */ (option, value, handle)) DEFUN ("curl-easy-perform", Fcurl_easy_perform, 1, 2, 0, /* Read from the URL represented by HANDLE into BUFFER at point. Optional BUFFER defaults to the current buffer. Returns t. */ (handle, buffer)) DEFUN ("curl-easy-getinfo", Fcurl_easy_getinfo, 2, 2, 0, /* Return the value of ATTRIBUTE for HANDLE. ATTRIBUTE is a string denoting an attribute in `curl-info-hash-table'. HANDLE must be an url-handle object of type `curl'. A wrapper with some validation for libcurl's `curl_easy_getinfo'. Errors without useful explanations probably mean `curl-info-hash-table' is corrupt. */ (attribute, handle)) DEFVAR_LISP ("curl-option-hash-table", &Vcurl_option_hash_table /* Table of options available for `curl-easy-setopt'. Key are strings naming options. The option names are taken from enum CURLoption in . They are all uppercase, and the "CURLOPT_" prefix is omitted. Values are lists containing a type symbol \(one of `long', `objectpoint', `functionpoint', and `off_t') and an integer, which is the option index. It is planned to add a list of Lisp types that can be converted to something that is useful for the option as the 3rd element of the value list. It is planned to add the leading comments as docstrings, to be the 4th element of the value list corresponding to each key. */ ); Vcurl_option_hash_table =3D Qnil; DEFVAR_LISP ("curl-info-hash-table", &Vcurl_info_hash_table /* Table of attributes accessible via `curl-easy-getinfo'. Keys are strings naming attributes. The attribute names are taken from enum CURLinfo in . They are all uppercase, and the "CURLINFO_" prefix is omitted. Values are lists containing a type symbol (one of `long', `string', `double', and `list') and an integer, which is the attribute index. It is planned to add docstrings, to be the 3rd element of the value list corresponding to each key. */ ); Vcurl_info_hash_table =3D Qnil; --===============4434824934546819885==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============1887734918611063376==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent packages/unsupported/stephen/curl build.patch Date: 2005-11-26 16:33:19 +0000 Message-ID: <20051126163319.15825.qmail@sunsite.dk> --===============1887734918611063376== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 17:33:19 Added: packages/unsupported/stephen/curl build.patch Log: Build infrastructure patch. Revision Changes Path 1.1 XEmacs/packages/unsupported/stephen/curl/build.patch Index: build.patch =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- xft-integration/configure.ac Sun Nov 20 16:47:00 2005 +++ xemacs-git/configure.ac Thu Nov 24 00:09:47 2005 @@ -833,6 +830,9 @@ XE_MERGED_ARG([postgresql], AC_HELP_STRING([--with-postgresql],[Support the PostgreSQL RDBMS.]), [], []) +XE_MERGED_ARG([curl], + AC_HELP_STRING([--with-curl],[Support the libcurl API.]), + [], []) dnl XE_HELP_SUBSECTION([Mail options]) XE_KEYWORD_ARG([mail-locking], @@ -3851,6 +3855,29 @@ fi AC_SUBST(postgresql_libs) = +dnl Configure libcurl +curl_libs=3D'' +if test "$with_curl" =3D "yes"; then + AC_CHECKING([for cURL]) + AC_CHECK_PROG (have_curl_config, curl-config, yes, no) + if test "$have_curl_config" =3D "no"; then + with_curl=3Dno + else + AC_DEFINE(HAVE_CURL) + XE_APPEND(`curl-config --cflags`, c_switch_site) + curl_libs=3D`curl-config --libs` + XE_APPEND(modules/curl, MAKE_SUBDIR) + need_modules_common=3Dyes + if test "$enable_modules" =3D "yes"; then + XE_APPEND(modules/curl, INSTALL_ARCH_DEP_SUBDIR) + fi + fi + if test "$with_curl" !=3D "yes"; then + XE_DIE([Cannot fulfil --with-curl, curl-config not found.]) + fi +fi +AC_SUBST(curl_libs) = + dnl ---------------------- dnl Graphics libraries dnl ---------------------- @@ -5376,7 +5386,7 @@ if test "$enable_modules" =3D "yes"; then ld_libs_module=3D else - XE_SPACE(ld_libs_module, $ldap_libs $postgresql_libs $canna_libs) + XE_SPACE(ld_libs_module, $ldap_libs $postgresql_libs $canna_libs $curl_l= ibs) fi = XE_SPACE(CFLAGS, $CFLAGS) @@ -5955,6 +5965,7 @@ echo " - Using PostgreSQL header file: $libpq_fe_h_file" test "$with_postgresqlv7" =3D yes && echo " - Using PostgreSQL V7 bin= dings." fi +test "$with_curl" =3D yes && echo " Compiling in support for libcurl API." = echo " Internationalization:" --- xft-integration/src/config.h.in Tue Nov 15 21:27:58 2005 +++ xemacs-git/src/config.h.in Mon Nov 21 00:55:33 2005 @@ -539,6 +536,9 @@ #undef HAVE_POSTGRESQLV7 /* main PostgreSQL header file */ #undef LIBPQ_FE_H_FILE + +/* Do we want libcurl support? */ +#undef HAVE_CURL = /* Do you have the Xauth library present? This will add some extra functionality to gnuserv. */ --- xft-integration/src/Makefile.in.in Sun Nov 20 02:34:43 2005 +++ xemacs-git/src/Makefile.in.in Mon Nov 21 00:54:03 2005 @@ -218,6 +218,10 @@ postgresql_objs=3D$(BLDMODULES)/postgresql/postgresql.o #endif = +#if defined(HAVE_CURL) && !defined(HAVE_SHLIB) +curl_objs=3D$(BLDMODULES)/curl/curl_api.o +#endif + #ifdef HAVE_WIN32_PROCESSES process_objs=3Dprocess-nt.o #elif defined (HAVE_UNIX_PROCESSES) @@ -269,7 +277,7 @@ $(balloon_help_objs) blocktype.o buffer.o bytecode.o \ callint.o casefiddle.o casetab.o chartab.o \ $(clash_detection_objs) cmdloop.o cmds.o $(coding_system_objs) console.o \ - console-stream.o\ + console-stream.o $(curl_objs) \ data.o $(database_objs) $(debug_objs) device.o dired.o doc.o doprnt.o\ dynarr.o \ editfns.o elhash.o emacs.o emodules.o eval.o events.o\ --===============1887734918611063376==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============3944386200933386016==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent packages/unsupported/stephen/curl ... Date: 2005-11-26 16:43:54 +0000 Message-ID: <20051126164354.17959.qmail@sunsite.dk> --===============3944386200933386016== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 17:43:54 Modified: packages/unsupported/stephen/curl curl-tests.el Log: Improve curl-tests.el. Revision Changes Path 1.2 +3 -0 XEmacs/packages/unsupported/stephen/curl/curl-tests.el Index: curl-tests.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/stephen/curl/curl-tes= ts.el,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- curl-tests.el 2005/11/26 16:01:10 1.1 +++ curl-tests.el 2005/11/26 16:43:54 1.2 @@ -1,6 +1,9 @@ ;; this file expects to be run from $blddir +;; it inserts the contents of the resources in the current buffer at point (require 'curl (expand-file-name "modules/curl/curl")) (setq handle (curl-make-url-handle "http://turnbull.sk.tsukuba.ac.jp/index.html")) +(curl-easy-perform handle) +;; reuse the handle (curl-easy-setopt "URL" "http://curl.haxx.se/doc/copyright.html" handle) (curl-easy-perform handle) --===============3944386200933386016==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============8127352952662839119==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-26 18:25:05 +0000 Message-ID: <20051126182505.5506.qmail@sunsite.dk> --===============8127352952662839119== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 19:25:05 Modified: xemacs/src ChangeLog objects-x.c xft-fonts.c Log: Build fixes. <87hd9z2rge.fsf_-_(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.475 +5 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.474 retrieving revision 1.475 diff -u -p -r1.474 -r1.475 --- ChangeLog 2005/11/26 11:45:47 1.474 +++ ChangeLog 2005/11/26 18:24:51 1.475 @@ -1,3 +1,8 @@ +2005-11-27 Stephen J. Turnbull + + * configure.ac (XE_COMPLEX_ARG[xft]): Remove merge detritus and + regenerate configure to fix syntax error. + 2005-11-26 Stephen J. Turnbull = Merge Xft. 1.263 +0 -1 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.262 retrieving revision 1.263 diff -u -p -r1.262 -r1.263 --- configure 2005/11/26 12:09:23 1.262 +++ configure 2005/11/26 18:24:51 1.263 @@ -2340,7 +2340,6 @@ unset _xft_default _xft_all_default x y = = fi; - , ) # If --with-gtk or --without-gtk were given then copy the value to the # equivalent enable_gtk variable. if test "${with_gtk+set}" =3D set; then 1.24 +0 -1 XEmacs/xemacs/configure.ac Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.23 retrieving revision 1.24 diff -u -p -r1.23 -r1.24 --- configure.ac 2005/11/26 11:45:48 1.23 +++ configure.ac 2005/11/26 18:24:54 1.24 @@ -643,7 +643,6 @@ XE_COMPLEX_ARG([xft], XE_COMPLEX_OPTION([menubars],[yes]), XE_COMPLEX_OPTION([tabs],[yes]), XE_COMPLEX_OPTION([gauges],[yes])]) - [], []) XE_MERGED_ARG([gtk], AC_HELP_STRING([--with-gtk],[Support GTK on the X Window System. (EXPERIM= ENTAL)]), [true], [with_gtk=3Dno]) 1.895 +11 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.894 retrieving revision 1.895 diff -u -p -r1.894 -r1.895 --- ChangeLog 2005/11/26 13:20:21 1.894 +++ ChangeLog 2005/11/26 18:25:02 1.895 @@ -1,3 +1,14 @@ +2005-11-27 Stephen J. Turnbull + + Build fixes and dead code removal. + = + * xft-fonts.c (Ffc_pattern_destroy): Delete. + (syms_of_xft_fonts): Delete Ffc_pattern_destroy and comment out + Fxft_name_unparse. + + * objects-x.c (DECLARE_DEBUG_FONTNAME): Renamed improved + SET_DEBUG_FONTNAME. Remove redundant debug level checks. + 2004-12-19 Stephen J. Turnbull = * keymap.c (Fwhere_is_internal): Rewrite docstring. 1.30 +23 -35 XEmacs/xemacs/src/objects-x.c Index: objects-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/objects-x.c,v retrieving revision 1.29 retrieving revision 1.30 diff -u -p -r1.29 -r1.30 --- objects-x.c 2005/11/26 11:46:09 1.29 +++ objects-x.c 2005/11/26 18:25:03 1.30 @@ -1155,11 +1155,14 @@ static struct charset_reporter charset_t = /* Choose appropriate font name for debug messages. Use only in the top half of next function (enforced with #undef). */ -#define SET_DEBUG_FONTNAME(name) \ - do { name =3D \ - debug_xft > 2 ? eistr_fullname \ -: debug_xft > 1 ? eistr_longname \ -: eistr_shortname } while (0) +#define DECLARE_DEBUG_FONTNAME(__xemacs_name) \ + Eistring *__xemacs_name; \ + do \ + { \ + __xemacs_name =3D debug_xft > 2 ? eistr_fullname \ +: debug_xft > 1 ? eistr_longname \ +: eistr_shortname; \ + } while (0) = #endif /* USE_XFT */ = @@ -1302,11 +1305,8 @@ x_find_charset_font (Lisp_Object device, = if (cr->rfc3066) { - if (debug_xft > 0) - { - SET_DEBUG_FONTNAME (name); - CHECKING_LANG (0, eidata(name), cr->language); - } + DECLARE_DEBUG_FONTNAME (name); + CHECKING_LANG (0, eidata(name), cr->language); lang =3D cr->rfc3066; } else if (cr->charset) @@ -1348,12 +1348,9 @@ x_find_charset_font (Lisp_Object device, should have the full thing internally as truename, and filter stuff the client doesn't want to see on output. Should we just store it into the truename right here? */ - if (debug_xft > 0) - { - SET_DEBUG_FONTNAME (name); - DEBUG_XFT2 (0, "Xft font %s supports %s\n", - eidata(name), lang); - } + DECLARE_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s supports %s\n", + eidata(name), lang); #ifdef RETURN_LONG_FONTCONFIG_NAMES result =3D eimake_string(eistr_fullname); #else @@ -1362,12 +1359,9 @@ x_find_charset_font (Lisp_Object device, } else { - if (debug_xft > 0) - { - SET_DEBUG_FONTNAME (name); - DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", - eidata(name), lang); - } + DECLARE_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", + eidata(name), lang); result =3D Qnil; } = @@ -1394,12 +1388,9 @@ x_find_charset_font (Lisp_Object device, } else if (FcLangSetHasLang (v.u.l, lang) !=3D FcLangDifferentLang) { - if (debug_xft > 0) - { - SET_DEBUG_FONTNAME (name); - DEBUG_XFT2 (0, "Xft font %s supports %s\n", - eidata(name), lang); - } + DECLARE_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s supports %s\n", + eidata(name), lang); #ifdef RETURN_LONG_FONTCONFIG_NAMES result =3D eimake_string(eistr_fullname); #else @@ -1408,12 +1399,9 @@ x_find_charset_font (Lisp_Object device, } else { - if (debug_xft > 0) - { - SET_DEBUG_FONTNAME (name); - DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", - eidata(name), lang); - } + DECLARE_DEBUG_FONTNAME (name); + DEBUG_XFT2 (0, "Xft font %s doesn't support %s\n", + eidata(name), lang); result =3D Qnil; } } @@ -1434,7 +1422,7 @@ x_find_charset_font (Lisp_Object device, = DEBUG_XFT1 (0, "shit happens, try X11 charset match for %s\n", = XSTRING_DATA(font)); -#undef SET_DEBUG_FONTNAME +#undef DECLARE_DEBUG_FONTNAME #endif /* USE_XFT */ = LISP_STRING_TO_EXTERNAL (font, patternext, Qx_font_name_encoding); 1.3 +2 -22 XEmacs/xemacs/src/xft-fonts.c Index: xft-fonts.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xft-fonts.c,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- xft-fonts.c 2005/11/26 11:46:11 1.2 +++ xft-fonts.c 2005/11/26 18:25:03 1.3 @@ -463,25 +463,6 @@ Xft v.2: encoding, charwidth, charheigh } } = -#if 0 -/* #### delete this after some testing!! don't forget the DEFSUBR */ -/* #### This is a big mistake, no? --- crap, there's no implicit finalizer= */ -DEFUN("fc-pattern-destroy", Ffc_pattern_destroy, 1, 1, 0, /* -Explicitly deallocate a fc pattern object PATTERN. */ - (pattern)) -{ - CHECK_FCPATTERN(pattern); = - - /* paranoia strikes deep */ - if (XFCPATTERN_PTR(pattern)) - { - FcPatternDestroy(XFCPATTERN_PTR(pattern)); - XFCPATTERN_PTR(pattern) =3D 0; - } - return Qnil; -} -#endif - DEFUN("fc-font-match", Ffc_font_match, 2, 2, 0, /* Return the font on DEVICE that most closely matches PATTERN. = @@ -785,14 +766,13 @@ syms_of_xft_fonts (void) DEFSUBR(Ffc_pattern_create); DEFSUBR(Ffc_name_parse); DEFSUBR(Ffc_name_unparse); +#if 0 DEFSUBR(Fxft_name_unparse); /* URK! */ +#endif DEFSUBR(Ffc_pattern_duplicate); DEFSUBR(Ffc_pattern_add); DEFSUBR(Ffc_pattern_del); DEFSUBR(Ffc_pattern_get); -#if 0 - DEFSUBR(Ffc_pattern_destroy); -#endif DEFSUBR(Ffc_list_fonts_pattern_objects); DEFSUBR(Ffc_font_sort); DEFSUBR(Ffc_font_match); --===============8127352952662839119==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============5766020027350648145==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-26 18:49:14 +0000 Message-ID: <20051126184914.9129.qmail@sunsite.dk> --===============5766020027350648145== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/26 19:49:14 Modified: xemacs configure configure.ac ChangeLog Log: Change Xft default to OFF. <87d5kn2qkw.fsf_-_(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.264 +11 -11 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.263 retrieving revision 1.264 diff -u -p -r1.263 -r1.264 --- configure 2005/11/26 18:24:51 1.263 +++ configure 2005/11/26 18:49:06 1.264 @@ -996,8 +996,8 @@ Window-system options Xft are `emacs' (buffers), `menubars', `tabs', a= nd `gauges'. Prefix component with `no' to disable = its use of Xft. Requires X11, Xft, Xrender, freetype, - and fontconfig support. Default is - `emacs,menubars,tabs,gauges'. + and fontconfig support. Default is `noemacs, + nomenubars, notabs, nogauges'. --with-gtk Support GTK on the X Window System. (EXPERIMENTA= L) --with-gnome Support GNOME on the X Window System. (EXPERIMEN= TAL) --with-msw Support MS Windows as a window system (only under @@ -2264,17 +2264,17 @@ _ACEOF fi; = _xft_notfirst=3D"" -with_xft_emacs=3Dyes -enable_xft_emacs=3Dyes -with_xft_menubars=3Dyes -enable_xft_menubars=3Dyes -with_xft_tabs=3Dyes -enable_xft_tabs=3Dyes -with_xft_gauges=3Dyes -enable_xft_gauges=3Dyes +with_xft_emacs=3Dno +enable_xft_emacs=3Dno +with_xft_menubars=3Dno +enable_xft_menubars=3Dno +with_xft_tabs=3Dno +enable_xft_tabs=3Dno +with_xft_gauges=3Dno +enable_xft_gauges=3Dno = _xft_types=3D"emacs menubars tabs gauges" -_xft_default=3D"emacs,menubars,tabs,gauges" +_xft_default=3D"noemacs,nomenubars,notabs,nogauges" = = = 1.25 +5 -5 XEmacs/xemacs/configure.ac Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.24 retrieving revision 1.25 diff -u -p -r1.24 -r1.25 --- configure.ac 2005/11/26 18:24:54 1.24 +++ configure.ac 2005/11/26 18:49:09 1.25 @@ -637,12 +637,12 @@ XE_COMPLEX_ARG([xft], [Xft], [`emacs' (buffers), `menubars', `tabs', and `gauges'], [X11, Xft, Xrender, freetype, and fontconfig], - [`emacs,menubars,tabs,gauges'])], + [`noemacs, nomenubars, notabs, nogauges'])], [],[], - [XE_COMPLEX_OPTION([emacs],[yes]), - XE_COMPLEX_OPTION([menubars],[yes]), - XE_COMPLEX_OPTION([tabs],[yes]), - XE_COMPLEX_OPTION([gauges],[yes])]) + [XE_COMPLEX_OPTION([emacs],[no]), + XE_COMPLEX_OPTION([menubars],[no]), + XE_COMPLEX_OPTION([tabs],[no]), + XE_COMPLEX_OPTION([gauges],[no])]) XE_MERGED_ARG([gtk], AC_HELP_STRING([--with-gtk],[Support GTK on the X Window System. (EXPERIM= ENTAL)]), [true], [with_gtk=3Dno]) 1.476 +5 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.475 retrieving revision 1.476 diff -u -p -r1.475 -r1.476 --- ChangeLog 2005/11/26 18:24:51 1.475 +++ ChangeLog 2005/11/26 18:49:10 1.476 @@ -1,5 +1,10 @@ 2005-11-27 Stephen J. Turnbull = + * configure.ac (XE_COMPLEX_ARG[xft]): Default everything off; + change doc. + +2005-11-27 Stephen J. Turnbull + * configure.ac (XE_COMPLEX_ARG[xft]): Remove merge detritus and regenerate configure to fix syntax error. = --===============5766020027350648145==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============5091163622016694552==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-26 22:51:20 +0000 Message-ID: <20051126225120.12507.qmail@sunsite.dk> --===============5091163622016694552== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/26 23:51:20 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1356 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1355 retrieving revision 1.1356 diff -u -p -r1.1355 -r1.1356 --- version.sh 2005/11/25 22:51:38 1.1355 +++ version.sh 2005/11/26 22:51:20 1.1356 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051125)" +xemacs_extra_name=3D"(+CVS-20051126)" xemacs_release_date=3D"2005-10-26" --===============5091163622016694552==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:16 2017 Content-Type: multipart/mixed; boundary="===============7646186650347376241==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs/src ... Date: 2005-11-27 01:45:58 +0000 Message-ID: <20051127014558.4153.qmail@sunsite.dk> --===============7646186650347376241== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/11/27 02:45:58 Branch: xemacs/src release-21-4 Modified: xemacs/src ChangeLog callproc.c Log: Fold_call_process_internal): Create the buffer if it does not already exist. Revision Changes Path 1.290.2.98 +6 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.290.2.97 retrieving revision 1.290.2.98 diff -u -p -r1.290.2.97 -r1.290.2.98 --- ChangeLog 2005/11/26 03:47:38 1.290.2.97 +++ ChangeLog 2005/11/27 01:45:45 1.290.2.98 @@ -1,3 +1,9 @@ +2005-11-26 Vin Shelton + + * callproc.c (Fold_call_process_internal): Create the buffer if it + does not already exist. The original patch came from Ben Wing in + http://list-archive.xemacs.org/xemacs-patches/200205/msg00117.html + 2002-05-13 Adrian Aichner = * callproc.c: Process-related docstring improvements spurred by 1.37.2.5 +1 -1 XEmacs/xemacs/src/Attic/callproc.c Index: callproc.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/Attic/callproc.c,v retrieving revision 1.37.2.4 retrieving revision 1.37.2.5 diff -u -p -r1.37.2.4 -r1.37.2.5 --- callproc.c 2005/11/26 03:47:42 1.37.2.4 +++ callproc.c 2005/11/27 01:45:51 1.37.2.5 @@ -291,7 +291,7 @@ If you quit, the process is killed with = || ZEROP (buffer))) { Lisp_Object spec_buffer =3D buffer; - buffer =3D Fget_buffer (buffer); + buffer =3D Fget_buffer_create (buffer); /* Mention the buffer name for a better error message. */ if (NILP (buffer)) CHECK_BUFFER (spec_buffer); --===============7646186650347376241==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============8200074129468517185==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/src ... Date: 2005-11-27 10:51:27 +0000 Message-ID: <20051127105127.26937.qmail@sunsite.dk> --===============8200074129468517185== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/27 11:51:27 Modified: xemacs/src ChangeLog lrecord.h Log: Remove NEWGC junk. Revision Changes Path 1.896 +4 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.895 retrieving revision 1.896 diff -u -p -r1.895 -r1.896 --- ChangeLog 2005/11/26 18:25:02 1.895 +++ ChangeLog 2005/11/27 10:51:24 1.896 @@ -1,3 +1,7 @@ +2005-11-27 Marcus Crestani + + * lrecord.h: Remove NEWGC junk. + 2005-11-27 Stephen J. Turnbull = Build fixes and dead code removal. 1.46 +0 -2 XEmacs/xemacs/src/lrecord.h Index: lrecord.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/lrecord.h,v retrieving revision 1.45 retrieving revision 1.46 diff -u -p -r1.45 -r1.46 --- lrecord.h 2005/11/26 11:46:09 1.45 +++ lrecord.h 2005/11/27 10:51:25 1.46 @@ -1,5 +1,3 @@ -#define NEW_GC_REMOVE - /* The "lrecord" structure (header of a compound lisp object). Copyright (C) 1993, 1994, 1995 Free Software Foundation, Inc. Copyright (C) 1996, 2001, 2002, 2004, 2005 Ben Wing. --===============8200074129468517185==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6367825842401363603==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-27 22:50:54 +0000 Message-ID: <20051127225054.27632.qmail@sunsite.dk> --===============6367825842401363603== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/27 23:50:54 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1357 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1356 retrieving revision 1.1357 diff -u -p -r1.1356 -r1.1357 --- version.sh 2005/11/26 22:51:20 1.1356 +++ version.sh 2005/11/27 22:50:53 1.1357 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051126)" +xemacs_extra_name=3D"(+CVS-20051127)" xemacs_release_date=3D"2005-10-26" --===============6367825842401363603==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3158895571371261777==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs/src, redisplay-tty.c ... Date: 2005-11-28 02:10:25 +0000 Message-ID: <20051128021025.5299.qmail@sunsite.dk> --===============3158895571371261777== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/11/28 03:10:25 Branch: xemacs release-21-4 xemacs/lisp release-21-4 xemacs/man release-21-4 xemacs/man/lispref release-21-4 xemacs/src release-21-4 Modified: xemacs/src ChangeLog config.h.in console-tty.h mule-ccl.c redisplay-tty.c select-x.c Log: Nearing the end of the 21.4.18 patches. Revision Changes Path 1.241.2.79 +5 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.241.2.78 retrieving revision 1.241.2.79 diff -u -p -r1.241.2.78 -r1.241.2.79 --- ChangeLog 2005/11/25 03:16:45 1.241.2.78 +++ ChangeLog 2005/11/28 02:08:55 1.241.2.79 @@ -1,3 +1,8 @@ +2005-03-12 Aidan Kehoe + + * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable + availability. = + 2005-04-11 Norbert Koch = * etc/PACKAGES: etc/PACKAGES: Announce re-builder, xetla. 1.147.2.35 +1 -1 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.147.2.34 retrieving revision 1.147.2.35 diff -u -p -r1.147.2.34 -r1.147.2.35 --- configure 2005/11/25 02:00:00 1.147.2.34 +++ configure 2005/11/28 02:08:56 1.147.2.35 @@ -6846,7 +6846,7 @@ EOF esac fi = - for ac_func in XConvertCase + for ac_func in XConvertCase XtRegisterDrawable do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 echo "configure:6853: checking for $ac_func" >&5 1.151.2.34 +1 -1 XEmacs/xemacs/configure.in Index: configure.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.in,v retrieving revision 1.151.2.33 retrieving revision 1.151.2.34 diff -u -p -r1.151.2.33 -r1.151.2.34 --- configure.in 2005/11/25 02:00:33 1.151.2.33 +++ configure.in 2005/11/28 02:09:20 1.151.2.34 @@ -2911,7 +2911,7 @@ dnl Avoid re-AC_DEFINE-ing xmkmf symbols esac fi = - AC_CHECK_FUNCS(XConvertCase) + AC_CHECK_FUNCS(XConvertCase XtRegisterDrawable) = AC_CHECK_HEADERS(X11/Xlocale.h) = 1.266.2.85 +19 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.266.2.84 retrieving revision 1.266.2.85 diff -u -p -r1.266.2.84 -r1.266.2.85 --- ChangeLog 2005/11/26 03:47:23 1.266.2.84 +++ ChangeLog 2005/11/28 02:10:07 1.266.2.85 @@ -1,3 +1,22 @@ +2005-02-28 Simon Josefsson + + * about.el (xemacs-hackers): Add jas. + (about-other-current-hackers): Likewise. + (about-url-alist): Add URL for jas. + (about-personal-info): Document jas. + (about-hacker-contribution): Describe jas contributions. + +2005-03-25 Ralf Angeli = + + * easymenu.el (easy-menu-remove): As described in = + E1D4Nn5-0001lq-EU(a)neutrino.iwi.uni-sb.de; don't strip everything + except the "Command" menu from mode-popup-menu. = + +2005-03-25 Ralf Angeli = + = + * font.el (font-spatial-to-canonical): Correct calculation of = + return value for pixel-based input value. = + = 2002-05-13 Adrian Aichner = * code-process.el (call-process): Process-related docstring 1.45.2.11 +31 -2 XEmacs/xemacs/lisp/about.el Index: about.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/about.el,v retrieving revision 1.45.2.10 retrieving revision 1.45.2.11 diff -u -p -r1.45.2.10 -r1.45.2.11 --- about.el 2003/11/08 02:35:01 1.45.2.10 +++ about.el 2005/11/28 02:10:08 1.45.2.11 @@ -1,6 +1,6 @@ ;;; about.el --- the About The Authors page (shameless self promotion). = -;; Copyright (c) 1997 Free Software Foundation, Inc. +;; Copyright (c) 1997, 2005 Free Software Foundation, Inc. ;; Copyright (C) 2001 Ben Wing. = ;; Keywords: extensions @@ -123,6 +123,7 @@ (hobley "David hobley" "hobley(a)xemacs.org") (jan "Jan Vroonhof" "jan(a)xemacs.org") (jareth "Jareth Hein" "jareth(a)xemacs.org") + (jas "Simon Josefsson" "simon(a)xemacs.org") (jason "Jason R. Mastaler" "jason(a)xemacs.org") (jens "Jens Lautenbacher" "jens(a)xemacs.org") (jmiller "Jeff Miller" "jmiller(a)xemacs.org") @@ -178,7 +179,7 @@ = (defvar about-once-and-future-hackers '(ajc baw bw chr cthomp darrylo devin dkindred dmoore eb hbs hmuller - hobley jens juhp jwz kyle marcpa mcook mly ograf pelegri pez + hobley jas jens juhp jwz kyle marcpa mcook mly ograf pelegri pez rickc rose rossini slb stig stigb thiessel vladimir)) = ;; The CAR of alist elements is a valid argument to `about-url-link'. @@ -201,6 +202,7 @@ (dv . "http://www.lrde.epita.fr/~didier/") (fabrice . "http://www.ese-metz.fr/~popineau/") (fptex . "http://www.fptex.org/") + (jas . "http://josefsson.org/") (jason . "http://www.mastaler.com/") (juhp . "http://www.01.246.ne.jp/~juhp/") (jwz . "http://www.jwz.org/") @@ -1059,6 +1061,25 @@ portable, implements a language, include graphics and a garbage collector, but is multithreaded to boot! Unfortunately his XEmacs time is directly limited by the amount of traffic on the M40.\n")) + (jas + (widget-insert "\ + +Simon lives in Stockholm where he has discovered that computers +can be a powerful procrastinating tool. Combined with a +frustrating desire to see computers simply work, he spends most +of his time complaining. Occasionally he rises up to the task +and produces something that others may complain about, which +brings him increased satisfaction with every bug report. Today +he is pretending to be a network security guy, with a preference +for standardization issues, while secretly longing to start a +cafe or becoming a theoretical computer scientist. His personal +interest is literature, and to some extent traveling, but will +try anything for fun, such as juggling, skiing, wine, and +long-distance biking. + +See: ") + (about-url-link 'jas nil "Visit Simon's homepage") + (widget-insert ".\n")) (jareth (widget-insert "\ Jareth Hein is a mountain boy who abandoned his home state of Colorado @@ -1609,6 +1630,14 @@ of the XEmacs custom subsystem and gnuse (widget-insert "\ Owner of cvs.xemacs.org, the machine that holds the XEmacs CVS repository, and author of some of the graphics code in XEmacs.\n")) + (jas + (widget-insert "\ +Wrote and/or integrated several packages for Gnus, such as +support for IMAP, Sieve, format=3Dflowed, GnuTLS, S/MIME, and PGP. +Irregularly synchronizes lisp code between Emacs and XEmacs. He +maintains the mail-lib, sieve, sasl, pgg and ecrypto XEmacs +packages. Operates the secondary DNS and mail server for +xemacs.org.\n")) (jason (widget-insert "\ Beta tester, manager of the various XEmacs mailing lists and binary 1.5.2.1 +1 -1 XEmacs/xemacs/lisp/easymenu.el Index: easymenu.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/easymenu.el,v retrieving revision 1.5 retrieving revision 1.5.2.1 diff -u -p -r1.5 -r1.5.2.1 --- easymenu.el 2001/04/12 18:21:17 1.5 +++ easymenu.el 2005/11/28 02:10:08 1.5.2.1 @@ -203,7 +203,7 @@ is a list of menu items, as above." "Remove MENU from the current menu bar." (when (featurep 'menubar) (setq easy-menu-all-popups (delq menu easy-menu-all-popups) - mode-popup-menu (if (< (length easy-menu-all-popups) 1) + mode-popup-menu (if (> (length easy-menu-all-popups) 1) (cons (easy-menu-title) (reverse easy-menu-all-popups)) (let ((same-as-menu 1.7.2.3 +3 -3 XEmacs/xemacs/lisp/font.el Index: font.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/font.el,v retrieving revision 1.7.2.2 retrieving revision 1.7.2.3 diff -u -p -r1.7.2.2 -r1.7.2.3 --- font.el 2002/08/20 11:34:44 1.7.2.2 +++ font.el 2005/11/28 02:10:09 1.7.2.3 @@ -310,8 +310,8 @@ Canonical sizes are in points. If SPEC = a number, it is interpreted as the desired point size and returned unchang= ed. Otherwise SPEC must be a string consisting of a number and an optional typ= e. The type may be the strings \"px\", \"pix\", or \"pixel\" (pixels), \"pt\"= or -\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches= ), \"cm\" -(centimeters), or \"mm\" (millimeters). +\"point\" (points), \"pa\" or \"pica\" (picas), \"in\" or \"inch\" (inches= ), +\"cm\" (centimeters), or \"mm\" (millimeters). = 1 in =3D 2.54 cm =3D 6 pa =3D 25.4 mm =3D 72 pt. Pixel size is device-dep= endent." (cond @@ -350,7 +350,7 @@ The type may be the strings \"px\", \"pi (setq num (string-to-number spec)) (cond ((member type '("pixel" "px" "pix")) - (setq retval (* num (/ pix-width mm-width) (/ 25.4 72.0)))) + (setq retval (* num (/ mm-width pix-width) (/ 72.0 25.4)))) ((member type '("point" "pt")) (setq retval num)) ((member type '("pica" "pa")) 1.116.2.59 +9 -0 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.116.2.58 retrieving revision 1.116.2.59 diff -u -p -r1.116.2.58 -r1.116.2.59 --- ChangeLog 2005/11/26 03:47:34 1.116.2.58 +++ ChangeLog 2005/11/28 02:10:12 1.116.2.59 @@ -3,6 +3,15 @@ * lispref/mule.texi (CCL Example): Detail an implementation of the web's URL encoding as a CCL coding system example. = = +2005-03-26 Aidan Kehoe + + * lispref/mule.texi (CCL Example): + char-int -> char-to-int, and hex 41 is decimal 65, both problems + with my previous patch pointed out by Stephen. + * lispref/mule.texi (The actual coding system): + Give information on the make-coding-system call, and where the + actual package can be found. + 2005-02-23 Aidan Kehoe = * lispref/searching.texi (Syntax of Regexps): 1.4.2.4 +41 -11 XEmacs/xemacs/man/lispref/mule.texi Index: mule.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/lispref/mule.texi,v retrieving revision 1.4.2.3 retrieving revision 1.4.2.4 diff -u -p -r1.4.2.3 -r1.4.2.4 --- mule.texi 2005/11/26 03:47:36 1.4.2.3 +++ mule.texi 2005/11/28 02:10:14 1.4.2.4 @@ -2053,7 +2053,7 @@ initialized as constants. * Characters to be preserved:: No transformation needed for these characte= rs. * The program to decode to internal format:: . * The program to encode from internal format:: . = - +* The actual coding system:: . @end menu = @node Four bits to ASCII, URI Encoding constants, , CCL Example @@ -2073,7 +2073,7 @@ after this file is loaded gives the ASCI (let ((val (make-vector 256 0)) (i 0)) (while (< i (length val)) - (aset val i (char-int (aref (format "%02X" i) 0))) + (aset val i (char-to-int (aref (format "%02X" i) 0))) (setq i (1+ i))) val) "Table to find an ASCII version of an octet's most significant 4 bits.") @@ -2081,7 +2081,7 @@ after this file is loaded gives the ASCI = The next table, @code{url-coding-low-order-nybble-as-ascii} is almost the same thing, but this time it has a map for the hex encoding of the -low-order four bits. So the sixty-fifth entry (offset @samp{#x51}) is +low-order four bits. So the sixty-fifth entry (offset @samp{#x41}) is the ASCII encoding of `1', the hundred-and-twenty-second (offset @samp{#x7a}) is the ASCII encoding of `A'. = @@ -2090,7 +2090,7 @@ the ASCII encoding of `1', the hundred-a (let ((val (make-vector 256 0)) (i 0)) (while (< i (length val)) - (aset val i (char-int (aref (format "%02X" i) 1))) + (aset val i (char-to-int (aref (format "%02X" i) 1))) (setq i (1+ i))) val) "Table to find an ASCII version of an octet's least significant 4 bits.") @@ -2110,14 +2110,14 @@ the space character. When doing this in @code{url-coding-escaped-space-code} variable. = = @example -(defvar url-coding-escape-character-code (char-int ?%) +(defvar url-coding-escape-character-code (char-to-int ?%) "The code point for the percentage sign, in ASCII.") = -(defvar url-coding-escaped-space-code (char-int ?+) +(defvar url-coding-escaped-space-code (char-to-int ?+) "The URL-encoded value of the space character, that is, +.") @end example = -(a)node Numeric to ASCII-hexadecimal conversion +(a)node Numeric to ASCII-hexadecimal conversion, Characters to be preserve= d, URI Encoding constants, CCL Example @subsubsection Numeric to ASCII-hexadecimal conversion = Now, we have a couple of utility tables that wouldn't be necessary in @@ -2133,7 +2133,7 @@ a few examples.) (let ((i 0) (val (make-vector 16 0))) (while (< i 16) - (aset val i (char-int (aref (format "%X" i) 0))) + (aset val i (char-to-int (aref (format "%X" i) 0))) (setq i (1+ i))) val) "A map from a hexadecimal digit's numeric value to its encoding in ASCII= .") @@ -2149,7 +2149,7 @@ a few examples.) "A map from Latin 1 code points to their values as hexadecimal digits.") @end example = -(a)node Characters to be preserved +(a)node Characters to be preserved, The program to decode to internal form= at, Numeric to ASCII-hexadecimal conversion, CCL Example @subsubsection Characters to be preserved = And finally, the last of these tables. URL encoding says that @@ -2183,7 +2183,7 @@ every nanosecond counts. octet as its ASCII encoding.") @end example = -(a)node The program to decode to internal format +(a)node The program to decode to internal format, The program to encode fr= om internal format, Characters to be preserved, CCL Example @subsubsection The program to decode to internal format = After the almost interminable tables, we get to the CCL. The first @@ -2244,7 +2244,7 @@ buffer, and move to the next iteration o internal encoding. ") @end example = -(a)node The program to encode from internal format +(a)node The program to encode from internal format, The actual coding syst= em, The program to decode to internal format, CCL Example @subsubsection The program to encode from internal format = Next, we see the CCL program to encode ASCII text as URL coded text. @@ -2279,6 +2279,36 @@ We then read an octet from the input int (repeat)))) "CCL program to encode octets (almost) according to RFC 1738") @end example + +(a)node The actual coding system, , The program to encode from internal fo= rmat, CCL Example +(a)subsubsection The actual coding system + +To actually create the coding system, we call +(a)samp{make-coding-system}. The first argument is the symbol that is to +be the name of the coding system, in our case @samp{url-coding}. The +second specifies that the coding system is to be of type +(a)samp{ccl}---there are several other coding system types available, +including, see the documentation for @samp{make-coding-system} for the +full list. Then there's a documentation string describing the wherefore +and caveats of the coding system, and the final argument is a property +list giving information about the CCL programs and the coding system's +mnemonic. = + +(a)example +(make-coding-system = + 'url-coding 'ccl = + "The coding used by application/x-www-form-urlencoded HTTP applications. +This coding form doesn't specify anything about non-ASCII characters, so +make sure you've transformed to a seven-bit coding system first." + '(decode ccl-decode-urlcoding + encode ccl-encode-urlcoding + mnemonic "URLenc")) +(a)end example + +If you're lucky, the @samp{url-coding} coding system describe here +should be available in the XEmacs package system. Otherwise, downloading +it from @samp{http://www.parhasard.net/url-coding.el} should work for +the foreseeable future. = = @node Category Tables, , CCL, MULE @section Category Tables 1.290.2.99 +19 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.290.2.98 retrieving revision 1.290.2.99 diff -u -p -r1.290.2.98 -r1.290.2.99 --- ChangeLog 2005/11/27 01:45:45 1.290.2.98 +++ ChangeLog 2005/11/28 02:10:15 1.290.2.99 @@ -1,3 +1,22 @@ +2005-11-27 Kean Johnston + + * redisplay-tty.c (set_tty_modes): + (reset_tty_modes): disable auto-margins if the terminal supports + them. + (init_tty_for_redisplay): fix cursor shape. + +2005-04-05 Aidan Kehoe + + * mule-ccl.c (ccl_driver): Calculate the charset and position code + for control-1 characters properly, both when reading multibyte + characters and writing them. = + +2005-03-12 Aidan Kehoe + + * config.h.in: Make HAVE_XTREGISTERDRAWABLE available. = + * select-x.c (x_reply_selection_request): Use it; fix the bug we + were seeing with incremental selection transfer failing. = + 2005-11-26 Vin Shelton = * callproc.c (Fold_call_process_internal): Create the buffer if it 1.61.2.9 +1 -0 XEmacs/xemacs/src/config.h.in Index: config.h.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/config.h.in,v retrieving revision 1.61.2.8 retrieving revision 1.61.2.9 diff -u -p -r1.61.2.8 -r1.61.2.9 --- config.h.in 2005/11/25 02:01:56 1.61.2.8 +++ config.h.in 2005/11/28 02:10:19 1.61.2.9 @@ -205,6 +205,7 @@ void *alloca (); #undef THIS_IS_X11R6 = #undef HAVE_XCONVERTCASE +#undef HAVE_XTREGISTERDRAWABLE = #undef HAVE_BALLOON_HELP = 1.9.2.1 +5 -0 XEmacs/xemacs/src/console-tty.h Index: console-tty.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/console-tty.h,v retrieving revision 1.9 retrieving revision 1.9.2.1 diff -u -p -r1.9 -r1.9.2.1 --- console-tty.h 2001/04/12 18:23:30 1.9 +++ console-tty.h 2005/11/28 02:10:19 1.9.2.1 @@ -82,6 +82,8 @@ struct tty_console character info */ unsigned int flow_control :1; /* Nonzero means use ^S/^Q as cretinous flow control. */ + unsigned int auto_margins :1; /* Nonzero means terminal wraps when + writing to the last column */ int standout_width; /* # of spaces printed when change to standout mode */ int underline_width; /* # of spaces printed when @@ -175,6 +177,9 @@ struct tty_console const char *keypad_off; /* rmkx, ke */ = const char *orig_pair; /* op, op */ + + const char *disable_auto_margins; /* rmam, RA */ + const char *enable_auto_margins; /* smam, SA */ } sd; = /* costs of various operations */ 1.15.2.1 +8 -1 XEmacs/xemacs/src/mule-ccl.c Index: mule-ccl.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/mule-ccl.c,v retrieving revision 1.15 retrieving revision 1.15.2.1 diff -u -p -r1.15 -r1.15.2.1 --- mule-ccl.c 2001/04/12 18:24:03 1.15 +++ mule-ccl.c 2005/11/28 02:10:19 1.15.2.1 @@ -1303,6 +1303,13 @@ ccl_driver (struct ccl_program *ccl, reg[RRR] =3D i; reg[rrr] =3D (*src++ & 0x7F); } + else if (LEADING_BYTE_CONTROL_1 =3D=3D i) + { + if (src >=3D src_end) + goto ccl_read_multibyte_character_suspend; + reg[RRR] =3D i; + reg[rrr] =3D (*src++ - 0xA0); + } else if (i <=3D MAX_LEADING_BYTE_OFFICIAL_2) { if ((src + 1) >=3D src_end) @@ -1350,7 +1357,7 @@ ccl_driver (struct ccl_program *ccl, = case CCL_WriteMultibyteChar2: i =3D reg[RRR]; /* charset */ - if (i =3D=3D LEADING_BYTE_ASCII) + if (i =3D=3D LEADING_BYTE_ASCII || i =3D=3D LEADING_BYTE_CONTROL_1) i =3D reg[rrr] & 0xFF; else if (XCHARSET_DIMENSION (CHARSET_BY_LEADING_BYTE (i)) =3D=3D 1) i =3D (((i - FIELD2_TO_OFFICIAL_LEADING_BYTE) << 7) 1.16.2.2 +11 -2 XEmacs/xemacs/src/redisplay-tty.c Index: redisplay-tty.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/redisplay-tty.c,v retrieving revision 1.16.2.1 retrieving revision 1.16.2.2 diff -u -p -r1.16.2.1 -r1.16.2.2 --- redisplay-tty.c 2005/01/31 02:55:28 1.16.2.1 +++ redisplay-tty.c 2005/11/28 02:10:20 1.16.2.2 @@ -864,6 +864,9 @@ set_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).init_motion); OUTPUT1_IF (c, TTY_SD (c).cursor_visible); OUTPUT1_IF (c, TTY_SD (c).keypad_on); + + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).disable_auto_margins); } = /*************************************************************************= **** @@ -882,6 +885,9 @@ reset_tty_modes (struct console *c) OUTPUT1_IF (c, TTY_SD (c).cursor_normal); OUTPUT1_IF (c, TTY_SD (c).end_motion); = + if (TTY_FLAGS (c).auto_margins) + OUTPUT1_IF (c, TTY_SD (c).enable_auto_margins); + { Lisp_Object frm =3D CONSOLE_SELECTED_FRAME (c); = @@ -1185,12 +1191,14 @@ init_tty_for_redisplay (struct device *d TTY_SD (c).audio_bell =3D "\07"; } = - TTY_SD (c).cursor_visible =3D tgetstr ("ve", &bufptr); - TTY_SD (c).cursor_normal =3D tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_visible =3D tgetstr ("vs", &bufptr); + TTY_SD (c).cursor_normal =3D tgetstr ("ve", &bufptr); TTY_SD (c).init_motion =3D tgetstr ("ti", &bufptr); TTY_SD (c).end_motion =3D tgetstr ("te", &bufptr); TTY_SD (c).keypad_on =3D tgetstr ("ks", &bufptr); TTY_SD (c).keypad_off =3D tgetstr ("ke", &bufptr); + TTY_SD (c).disable_auto_margins =3D tgetstr ("RA", &bufptr); + TTY_SD (c).enable_auto_margins =3D tgetstr ("SA", &bufptr); = = /* @@ -1203,6 +1211,7 @@ init_tty_for_redisplay (struct device *d TTY_FLAGS (c).memory_below_frame =3D tgetflag ("db"); TTY_FLAGS (c).standout_width =3D tgetnum ("sg"); TTY_FLAGS (c).underline_width =3D tgetnum ("ug"); + TTY_FLAGS (c).auto_margins =3D tgetflag ("am"); = if (TTY_FLAGS (c).standout_width =3D=3D -1) TTY_FLAGS (c).standout_width =3D 0; 1.2.2.3 +32 -1 XEmacs/xemacs/src/select-x.c Index: select-x.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/select-x.c,v retrieving revision 1.2.2.2 retrieving revision 1.2.2.3 diff -u -p -r1.2.2.2 -r1.2.2.3 --- select-x.c 2005/01/31 02:55:31 1.2.2.2 +++ select-x.c 2005/11/28 02:10:20 1.2.2.3 @@ -509,14 +509,41 @@ x_reply_selection_request (XSelectionReq } else { +#ifndef HAVE_XTREGISTERDRAWABLE + invalid_operation("Copying that much data requires X11R6.", Qunbound= ); +#else /* Send an INCR selection. */ int prop_id; + Widget widget =3D FRAME_X_TEXT_WIDGET (XFRAME(DEVICE_SELECTED_FRAME(= d))); = if (x_window_to_frame (d, window)) /* #### debug */ error ("attempt to transfer an INCR to ourself!"); #if 0 stderr_out ("\nINCR %d\n", bytes_remaining); #endif + /* Tell Xt not to drop PropertyNotify events that arrive for the + target window, rather, pass them to us. This would be a hack, but + the Xt selection routines are broken for our purposes--we can't + pass them callbacks from Lisp, for example. Let's call it a + workaround. + = + The call to wait_for_property_change means we can break out of that + function, switch to another frame on the same display (which will + be another Xt widget), select a huge amount of text, and have the + same (foreign) app ask for another incremental selection + transfer. Programming like X11 made sense, would mean that, in that + case, XtRegisterDrawable is called twice with different widgets. + = + Since the results of calling XtRegisterDrawable when the drawable + is already registered with another widget are undefined, we want to + avoid that--so, only call it when XtWindowToWidget returns NULL, + which it will only do with a valid Window if it's not already + registered. */ + if (NULL =3D=3D XtWindowToWidget(display, window)) + { + XtRegisterDrawable(display, (Drawable)window, widget); + } + = prop_id =3D expect_property_change (display, window, reply.property, PropertyDelete); = @@ -560,10 +587,14 @@ x_reply_selection_request (XSelectionReq stderr_out (" INCR done\n"); #endif if (! waiting_for_other_props_on_window (display, window)) - XSelectInput (display, window, 0L); + { + XSelectInput (display, window, 0L); + XtUnregisterDrawable(display, (Drawable)window); + } = XChangeProperty (display, window, reply.property, type, format, PropModeReplace, data, 0); +#endif /* HAVE_XTREGISTERDRAWABLE */ } } = --===============3158895571371261777==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============0658776160064885238==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs ... Date: 2005-11-28 09:50:24 +0000 Message-ID: <20051128095024.20152.qmail@sunsite.dk> --===============0658776160064885238== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/28 10:50:24 Modified: xemacs ChangeLog configure configure.ac Log: Remove vdb-fake warning, die if POSIX checks fail. Revision Changes Path 1.477 +4 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.476 retrieving revision 1.477 diff -u -p -r1.476 -r1.477 --- ChangeLog 2005/11/26 18:49:10 1.476 +++ ChangeLog 2005/11/28 09:50:16 1.477 @@ -1,3 +1,7 @@ +2005-11-27 Marcus Crestani + + * configure.ac: Remove vdb-fake warning, die if POSIX checks fail. + 2005-11-27 Stephen J. Turnbull = * configure.ac (XE_COMPLEX_ARG[xft]): Default everything off; 1.265 +2 -9 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.264 retrieving revision 1.265 diff -u -p -r1.264 -r1.265 --- configure 2005/11/26 18:49:06 1.264 +++ configure 2005/11/28 09:50:17 1.265 @@ -30040,6 +30040,8 @@ fi if test "$have_vdb_sigaction" !=3D "yes" -a "$have_vdb_signal" !=3D "yes= " ; then have_vdb_posix=3Dno have_vdb_fake=3Dyes + { echo "Error:" "No working write-barrier implementation found for thi= s system. + Please report this and provide information about your system." >&2;= exit 1; } else have_vdb_posix=3Dyes have_vdb_fake=3Dno @@ -39336,15 +39338,6 @@ if test "$have_vdb_win32" =3D yes ; then fi if test "$have_vdb_mach" =3D yes ; then echo " Using mach exception mechanism as vdb fault handler." -fi -if test "$have_vdb_fake" =3D yes && test "$enable_vdb" !=3D fake; then - echo " WARNING: -------------------------------------------------------= --" - echo " WARNING: The new incremental garbage collector is enabled, but" - echo " WARNING: a virtual dirty bit implementation is not yet available" - echo " WARNING: on this system. XEmacs will crash if you try to switch = on" - echo " WARNUNG: incremental garbage collection!" - echo " WARNING: Use \`--disable-newgc' to turn incremental gc off." - echo " WARNING: -------------------------------------------------------= --" fi if test "$have_vdb_fake" =3D yes && test "$enable_vdb" =3D=3D fake; then echo " Virtual dirty bit write barrier manually disabled." 1.26 +2 -11 XEmacs/xemacs/configure.ac Index: configure.ac =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.ac,v retrieving revision 1.25 retrieving revision 1.26 diff -u -p -r1.25 -r1.26 --- configure.ac 2005/11/26 18:49:09 1.25 +++ configure.ac 2005/11/28 09:50:20 1.26 @@ -1729,8 +1729,6 @@ if test "$enable_newgc" =3D "yes"; then cygwin* ) AC_DEFINE(VDB_WIN32) have_vdb_win32=3Dyes ;; linux* ) check_vdb_posix=3Dyes ;; freebsd ) check_vdb_posix=3Dyes ;; -dnl bail out immediately -dnl * ) have_vdb_fake=3Dyes ;; dnl if not sure, try posix first, maybe we are lucky * ) check_vdb_posix=3Dyes ;; esac @@ -4609,6 +4607,8 @@ if test "$check_vdb_posix" =3D "yes" ; the if test "$have_vdb_sigaction" !=3D "yes" -a "$have_vdb_signal" !=3D "yes= " ; then have_vdb_posix=3Dno have_vdb_fake=3Dyes + XE_DIE("No working write-barrier implementation found for this system. + Please report this and provide information about your system.") else have_vdb_posix=3Dyes have_vdb_fake=3Dno @@ -6083,15 +6083,6 @@ if test "$have_vdb_win32" =3D yes ; then fi if test "$have_vdb_mach" =3D yes ; then echo " Using mach exception mechanism as vdb fault handler." -fi -if test "$have_vdb_fake" =3D yes && test "$enable_vdb" !=3D fake; then - echo " WARNING: -------------------------------------------------------= --" - echo " WARNING: The new incremental garbage collector is enabled, but" - echo " WARNING: a virtual dirty bit implementation is not yet available" - echo " WARNING: on this system. XEmacs will crash if you try to switch = on" - echo " WARNUNG: incremental garbage collection!" - echo " WARNING: Use \`--disable-newgc' to turn incremental gc off." - echo " WARNING: -------------------------------------------------------= --" fi if test "$have_vdb_fake" =3D yes && test "$enable_vdb" =3D=3D fake; then echo " Virtual dirty bit write barrier manually disabled." --===============0658776160064885238==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6228571588279378985==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-28 15:44:08 +0000 Message-ID: <20051128154408.29644.qmail@sunsite.dk> --===============6228571588279378985== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/28 16:44:08 Modified: xemacs/src ChangeLog dumper.c Log: Move comment to where it apparently belongs. <87br04ye45.fsf(a)tleepslib.sk.tsukuba.ac.jp Revision Changes Path 1.897 +4 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.896 retrieving revision 1.897 diff -u -p -r1.896 -r1.897 --- ChangeLog 2005/11/27 10:51:24 1.896 +++ ChangeLog 2005/11/28 15:44:04 1.897 @@ -1,3 +1,7 @@ +2005-11-26 Stephen J. Turnbull + + * dumper.c: Move comment to where it apparently belongs. + 2005-11-27 Marcus Crestani = * lrecord.h: Remove NEWGC junk. 1.33 +5 -5 XEmacs/xemacs/src/dumper.c Index: dumper.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/dumper.c,v retrieving revision 1.32 retrieving revision 1.33 diff -u -p -r1.32 -r1.33 --- dumper.c 2005/11/25 01:41:59 1.32 +++ dumper.c 2005/11/28 15:44:06 1.33 @@ -1672,11 +1672,6 @@ pdump_dump_cv_data_info (void) retry_fwrite (data, sizeof (pdump_cv_data_dump_info), count, pdump_out); = } = -/* Dump out the root block pointers, part of stage 3 (the "WRITE" stage) of - dumping. For each pointer we dump out a structure containing the - location of the pointer and its value, replaced by the appropriate - offset into the dumped data. */ - static void pdump_dump_cv_ptr_info (void) { @@ -1692,6 +1687,11 @@ pdump_dump_cv_ptr_info (void) PDUMP_ALIGN_OUTPUT (pdump_cv_ptr_dump_info); retry_fwrite (data, sizeof (pdump_cv_ptr_dump_info), count, pdump_out); = } + +/* Dump out the root block pointers, part of stage 3 (the "WRITE" stage) of + dumping. For each pointer we dump out a structure containing the + location of the pointer and its value, replaced by the appropriate + offset into the dumped data. */ = static void pdump_dump_root_block_ptrs (void) --===============6228571588279378985==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============2567867648747834284==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-28 16:39:56 +0000 Message-ID: <20051128163956.12063.qmail@sunsite.dk> --===============2567867648747834284== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/28 17:39:56 Modified: xemacs/src ChangeLog xemacs.def.in.in Log: Add lrecord_uid_counter to xemacs.def.in.in. <87wtiswwwt.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.898 +5 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.897 retrieving revision 1.898 diff -u -p -r1.897 -r1.898 --- ChangeLog 2005/11/28 15:44:04 1.897 +++ ChangeLog 2005/11/28 16:39:53 1.898 @@ -1,3 +1,8 @@ +2005-11-29 Stephen J. Turnbull + + * xemacs.def.in.in (lrecord_uid_counter): Add it. Patch by Rick + Rankin <20051120054349.52906.qmail(a)web61019.mail.yahoo.com>. + 2005-11-26 Stephen J. Turnbull = * dumper.c: Move comment to where it apparently belongs. 1.11 +1 -0 XEmacs/xemacs/src/xemacs.def.in.in Index: xemacs.def.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xemacs.def.in.in,v retrieving revision 1.10 retrieving revision 1.11 diff -u -p -r1.10 -r1.11 --- xemacs.def.in.in 2005/10/25 08:32:50 1.10 +++ xemacs.def.in.in 2005/11/28 16:39:54 1.11 @@ -207,6 +207,7 @@ lrecord_markers /* INIT_LRECORD_IMPLEM lrecord_string /* STRINGP */ lrecord_symbol /* SYMBOLP */ lrecord_type_count /* INIT_EXTERNAL_LRECORD_IMPLEMENTATION */ +lrecord_uid_counter need_to_check_c_alloca /* ALLOCA */ print_readably quit_check_signal_happened /* QUITP */ --===============2567867648747834284==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============7343529782442787166==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-28 17:30:38 +0000 Message-ID: <20051128173038.26619.qmail@sunsite.dk> --===============7343529782442787166== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/28 18:30:38 Modified: xemacs CHANGES-beta Log: 21.5.24 release preparation. Revision Changes Path 1.232 +2 -0 XEmacs/xemacs/CHANGES-beta Index: CHANGES-beta =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/CHANGES-beta,v retrieving revision 1.231 retrieving revision 1.232 diff -u -p -r1.231 -r1.232 --- CHANGES-beta 2005/10/26 13:15:44 1.231 +++ CHANGES-beta 2005/11/28 17:30:37 1.232 @@ -1,3 +1,5 @@ +to 21.5.24 "dandelion" + to 21.5.23 "daikon" Major features = --===============7343529782442787166==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============0413105777124004804==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by scop packages/unsupported/scop/vc ... Date: 2005-11-28 21:08:23 +0000 Message-ID: <20051128210823.10174.qmail@sunsite.dk> --===============0413105777124004804== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: scop = Date: 05/11/28 22:08:23 Modified: packages/unsupported/scop/vc ChangeLog log-edit.el Log: Sync log-edit.el with upstream. Revision Changes Path 1.50 +1 -1 XEmacs/packages/unsupported/scop/STATUS Index: STATUS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/STATUS,v retrieving revision 1.49 retrieving revision 1.50 diff -u -p -r1.49 -r1.50 --- STATUS 2005/11/14 22:32:24 1.49 +++ STATUS 2005/11/28 21:08:19 1.50 @@ -17,5 +17,5 @@ generic-modes: generic.el and generic-x. - Compiles, seems to work, auto-mode-alist and autoloads may need spanking. = vc: vc*.el and a few other related files from GNU Emacs -- Up to date with GNU Emacs CVS HEAD as of 2005-11-15. +- Up to date with GNU Emacs CVS HEAD as of 2005-11-28. - Compiles, something even works. 1.36 +4 -0 XEmacs/packages/unsupported/scop/vc/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/ChangeLog,v retrieving revision 1.35 retrieving revision 1.36 diff -u -p -r1.35 -r1.36 --- ChangeLog 2005/11/14 22:52:32 1.35 +++ ChangeLog 2005/11/28 21:08:22 1.36 @@ -1,3 +1,7 @@ +2005-11-28 Ville Skytt=C3=A4 + + * log-edit.el: Sync with upstream. + 2005-11-15 Ville Skytt=C3=A4 = * vc-svn.el: Sync with upstream. 1.7 +65 -46 XEmacs/packages/unsupported/scop/vc/log-edit.el Index: log-edit.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/unsupported/scop/vc/log-edit.el,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- log-edit.el 2005/10/08 14:43:00 1.6 +++ log-edit.el 2005/11/28 21:08:23 1.7 @@ -120,8 +120,10 @@ If SETUP is 'force, this variable has no log-edit-insert-changelog) "*Hook run at the end of `log-edit'." :group 'log-edit -:type '(hook :options (log-edit-insert-cvs-template - log-edit-insert-changelog))) +:type '(hook :options (log-edit-insert-changelog + log-edit-insert-cvs-rcstemplate + log-edit-insert-cvs-template + log-edit-insert-filenames))) = (defcustom log-edit-mode-hook (if (boundp 'vc-log-mode-hook) vc-log-mode-h= ook) "*Hook run when entering `log-edit-mode'." @@ -281,21 +283,14 @@ automatically." (insert "\n")))) = ;; Compatibility with old names. -;; XEmacs change: only 2 args to `make-obsolete(-variable)' in < 21.4.17 -(defvaralias 'vc-comment-ring 'log-edit-comment-ring) -(make-obsolete-variable 'vc-comment-ring 'log-edit-comment-ring) -(defvaralias 'vc-comment-ring-index 'log-edit-comment-ring-index) -(make-obsolete-variable 'vc-comment-ring-index 'log-edit-comment-ring-inde= x) -(defalias 'vc-previous-comment 'log-edit-previous-comment) -(make-obsolete 'vc-previous-comment 'log-edit-previous-comment) -(defalias 'vc-next-comment 'log-edit-next-comment) -(make-obsolete 'vc-next-comment 'log-edit-next-comment) -(defalias 'vc-comment-search-reverse 'log-edit-comment-search-backward) -(make-obsolete 'vc-comment-search-reverse 'log-edit-comment-search-backwar= d) -(defalias 'vc-comment-search-forward 'log-edit-comment-search-forward) -(make-obsolete 'vc-comment-search-forward 'log-edit-comment-search-forward) -(defalias 'vc-comment-to-change-log 'log-edit-comment-to-change-log) -(make-obsolete 'vc-comment-to-change-log 'log-edit-comment-to-change-log) +;; XEmacs change: only 2 args to `define-obsolete-*-alias' +(define-obsolete-variable-alias 'vc-comment-ring 'log-edit-comment-ring) +(define-obsolete-variable-alias 'vc-comment-ring-index 'log-edit-comment-r= ing-index) +(define-obsolete-function-alias 'vc-previous-comment 'log-edit-previous-co= mment) +(define-obsolete-function-alias 'vc-next-comment 'log-edit-next-comment) +(define-obsolete-function-alias 'vc-comment-search-reverse 'log-edit-comme= nt-search-backward) +(define-obsolete-function-alias 'vc-comment-search-forward 'log-edit-comme= nt-search-forward) +(define-obsolete-function-alias 'vc-comment-to-change-log 'log-edit-commen= t-to-change-log) = ;;; ;;; Actual code @@ -397,31 +392,6 @@ If you want to abort the commit, simply = "Return the list of files that are about to be committed." (ignore-errors (funcall log-edit-listfun))) = - -(defun log-edit-insert-changelog () - "Insert a log message by looking at the ChangeLog. -The idea is to write your ChangeLog entries first, and then use this -command to commit your changes. - -To select default log text, we: -- find the ChangeLog entries for the files to be checked in, -- verify that the top entry in the ChangeLog is on the current date - and by the current user; if not, we don't provide any default text, -- search the ChangeLog entry for paragraphs containing the names of - the files we're checking in, and finally -- use those paragraphs as the log text." - (interactive) - (log-edit-insert-changelog-entries (log-edit-files)) - (log-edit-set-common-indentation) - (goto-char (point-min)) - (when (looking-at "\\*\\s-+") - (forward-line 1) - (when (not (re-search-forward "^\\*\\s-+" nil t)) - (goto-char (point-min)) - (skip-chars-forward "^():") - (skip-chars-forward ": ") - (delete-region (point-min) (point))))) - (defun log-edit-mode-help () "Provide help for the `log-edit-mode-map'." (interactive) @@ -466,11 +436,27 @@ To select default log text, we: (selected-window))))) = (defun log-edit-insert-cvs-template () - "Insert the template specified by the CVS administrator, if any." + "Insert the template specified by the CVS administrator, if any. +This simply uses the local CVS/Template file." + (interactive) + (when (or (interactive-p) (=3D (point-min) (point-max))) + (when (file-readable-p "CVS/Template") + (insert-file-contents "CVS/Template")))) + +(defun log-edit-insert-cvs-rcstemplate () + "Insert the rcstemplate from the CVS repository. +This contacts the repository to get the rcstemplate file and +can thus take some time." (interactive) - (when (file-readable-p "CVS/Template") - (insert-file-contents "CVS/Template"))) + (when (or (interactive-p) (=3D (point-min) (point-max))) + (when (file-readable-p "CVS/Entries") + (call-process "cvs" nil t nil "checkout" "-p" "CVSROOT/rcstemplate")= ))) = +(defun log-edit-insert-filenames () + "Insert the list of files that are to be committed." + (interactive) + (insert "Affected files: \n" + (mapconcat 'identity (log-edit-files) " \n"))) = (defun log-edit-add-to-changelog () "Insert this log message into the appropriate ChangeLog file." @@ -483,6 +469,37 @@ To select default log text, we: (save-excursion (log-edit-comment-to-change-log))))) = +(defvar log-edit-changelog-use-first nil) +(defun log-edit-insert-changelog (&optional use-first) + "Insert a log message by looking at the ChangeLog. +The idea is to write your ChangeLog entries first, and then use this +command to commit your changes. + +To select default log text, we: +- find the ChangeLog entries for the files to be checked in, +- verify that the top entry in the ChangeLog is on the current date + and by the current user; if not, we don't provide any default text, +- search the ChangeLog entry for paragraphs containing the names of + the files we're checking in, and finally +- use those paragraphs as the log text. + +If the optional prefix arg USE-FIRST is given (via \\[universal-argument]), +or if the command is repeated a second time in a row, use the first log en= try +regardless of user name or time." + (interactive "P") + (let ((log-edit-changelog-use-first + (or use-first (eq last-command 'log-edit-insert-changelog)))) + (log-edit-insert-changelog-entries (log-edit-files))) + (log-edit-set-common-indentation) + (goto-char (point-min)) + (when (looking-at "\\*\\s-+") + (forward-line 1) + (when (not (re-search-forward "^\\*\\s-+" nil t)) + (goto-char (point-min)) + (skip-chars-forward "^():") + (skip-chars-forward ": ") + (delete-region (point-min) (point))))) + ;;;; ;;;; functions for getting commit message from ChangeLog a file... ;;;; Courtesy Jim Blandy @@ -562,7 +579,9 @@ Return non-nil iff it is." (functionp add-log-time-format) (funcall add-log-time-format)) (format-time-string "%Y-%m-%d")))) - (looking-at (regexp-quote (format "%s %s <%s>" time name mail))))) + (looking-at (if log-edit-changelog-use-first + "[^ \t]" + (regexp-quote (format "%s %s <%s>" time name mail)))))) = (defun log-edit-changelog-entries (file) "Return the ChangeLog entries for FILE, and the ChangeLog they came from. --===============0413105777124004804==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============8423818376791408233==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-28 22:51:08 +0000 Message-ID: <20051128225108.28456.qmail@sunsite.dk> --===============8423818376791408233== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/28 23:51:08 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1358 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1357 retrieving revision 1.1358 diff -u -p -r1.1357 -r1.1358 --- version.sh 2005/11/27 22:50:53 1.1357 +++ version.sh 2005/11/28 22:51:07 1.1358 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051127)" +xemacs_extra_name=3D"(+CVS-20051128)" xemacs_release_date=3D"2005-10-26" --===============8423818376791408233==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============2445300745153890876==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-29 02:06:56 +0000 Message-ID: <20051129020656.3322.qmail@sunsite.dk> --===============2445300745153890876== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 03:06:56 Modified: xemacs CHANGES-beta Log: more 21.5.24 release preparation. Revision Changes Path 1.233 +59 -0 XEmacs/xemacs/CHANGES-beta Index: CHANGES-beta =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/CHANGES-beta,v retrieving revision 1.232 retrieving revision 1.233 diff -u -p -r1.232 -r1.233 --- CHANGES-beta 2005/11/28 17:30:37 1.232 +++ CHANGES-beta 2005/11/29 02:06:56 1.233 @@ -1,4 +1,63 @@ to 21.5.24 "dandelion" +Major features + +-- New: Xft font support. -- Stephen J. Turnbull, Aidan Kehoe, Daniel Pitt= man, Clemens Fruhwirth, Eric Knauel, Matthias Neuebaur, Hrvoje Niksic, Oliv= ier Galibert +-- New: incremental garbage collector. -- Marcus Crestani + +User-Visible Bug Fixes and Minor Improvements + +-- Fix: change_window_height must change the window width when requested. = -- Aidan Kehoe +-- Fix: crashes printing ISO2022 coding systems. -- Ben Wing +-- Update: etags to upstream 17.15. -- Malcolm Purvis + +Build Infrastructure + +-- Fix build output directory structure on Windows. -- Marcus Crestani +-- Fix: configuration of native sound on Windows. -- Ben Wing +-- Fix: small bugs in configure of AC_INIT and PostgreSQL. -- Stephen J. T= urnbull +-- Improve: CVS behavior. -- Stephen J. Turnbull, Marcus Crestani, Malcolm= Purvis +-- Improve: refactor make clean, nuke .elcs. -- Ben Wing + +Documentation + +-- Improve: Add 'Known Problems' to the Help menu. -- Malcolm Purvis +-- Improve: HELLO in Irish and Tajik. -- Aidan Kehoe +-- Improve: INSTALL. -- Stephen J. turnbull +-- Improve: consistency of symbol quoting in documentation. -- Ben Wing +-- Improve: docstrings. -- Stephen J. Turnbull +-- Improve: reorganize option list from configure. -- Malcolm Purvis +-- Improve: texi document CVS branching. -- Ben Wing +-- Improve: texi documentation of DEFSYMBOL. -- +-- Improve: texi documentation of XEmacs Autoconf macros. -- Malcolm Purvis +-- Improve: update PROBLEMS, and install in etc. -- Malcolm Purvis + +Lisp API + +-- Improve: generalize describe-syntax-table to describe-char-table. -- Be= n Wing +-- Improve: memory statistics reporting. -- Marcus Crestani + +Internal API and Implementation + +-- Fix: C++ build. -- Ben Wing, Marcus Crestani +-- Fix: Mule-ize canna_api module. -- Ben Wing, Stephen J. Turnbull +-- Fix: byte compile by conditional compilation. -- Ben Wing +-- Fix: compilation errors and warnings in GTK code. -- Malcolm Purvis +-- Fix: help on functions without documentation. -- Ben Wing +-- Fix: integer types for Berkeley db. -- Stephen J. Turnbull, Volker Zell +-- Fix: make modules build on Cygwin and Mac. -- Stephen J. Turnbull, Rick= Rankin +-- Fix: quiet byte-compiler. -- Stephen J. Turnbull +-- Fix: syntax error -- Marcus Crestani +-- Fix: uninitialized local variables. -- Stephen J. Turnbull +-- Fix: use princ, not prin1 in debug print. -- Ben Wing +-- Fix: use uint32_t declaration, fixing build on FreeBSD. -- Steve Youngs= , Andrey Slusar +-- Fix: value of MAX_STRING_ASCII_BEGIN under MC_ALLOC. -- Ben Wing +-- Fix: warning elimination, mark UNUSED paramters -- Marcus Crestani, Ste= phen J. Turnbull +-- Improve: bignum support on mingwin. -- Ben Wing +-- Improve: lrecord uid handling. -- Ben Wing +-- Improve: refactor default_object_printer. -- Marcus Crestani +-- Improve: remove dead code in lwlib. Stephen J. Turnbull +-- Improve: reorganize lisp.h. -- Ben Wing +-- Improve: tabs widget. -- Stephen J. Turnbull = to 21.5.23 "daikon" Major features --===============2445300745153890876==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============2416635238697271522==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-29 03:31:26 +0000 Message-ID: <20051129033126.15119.qmail@sunsite.dk> --===============2416635238697271522== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 04:31:26 Modified: xemacs CHANGES-beta Log: yet more 21.5.24 release preparation. Revision Changes Path 1.234 +4 -4 XEmacs/xemacs/CHANGES-beta Index: CHANGES-beta =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/CHANGES-beta,v retrieving revision 1.233 retrieving revision 1.234 diff -u -p -r1.233 -r1.234 --- CHANGES-beta 2005/11/29 02:06:56 1.233 +++ CHANGES-beta 2005/11/29 03:31:25 1.234 @@ -22,12 +22,12 @@ Documentation = -- Improve: Add 'Known Problems' to the Help menu. -- Malcolm Purvis -- Improve: HELLO in Irish and Tajik. -- Aidan Kehoe --- Improve: INSTALL. -- Stephen J. turnbull +-- Improve: INSTALL. -- Stephen J. Turnbull -- Improve: consistency of symbol quoting in documentation. -- Ben Wing -- Improve: docstrings. -- Stephen J. Turnbull -- Improve: reorganize option list from configure. -- Malcolm Purvis -- Improve: texi document CVS branching. -- Ben Wing --- Improve: texi documentation of DEFSYMBOL. -- +-- Improve: texi documentation of DEFSYMBOL. -- Stephen J. Turnbull -- Improve: texi documentation of XEmacs Autoconf macros. -- Malcolm Purvis -- Improve: update PROBLEMS, and install in etc. -- Malcolm Purvis = @@ -51,11 +51,11 @@ Internal API and Implementation -- Fix: use princ, not prin1 in debug print. -- Ben Wing -- Fix: use uint32_t declaration, fixing build on FreeBSD. -- Steve Youngs= , Andrey Slusar -- Fix: value of MAX_STRING_ASCII_BEGIN under MC_ALLOC. -- Ben Wing --- Fix: warning elimination, mark UNUSED paramters -- Marcus Crestani, Ste= phen J. Turnbull +-- Fix: warning elimination, mark UNUSED parameters -- Marcus Crestani, St= ephen J. Turnbull -- Improve: bignum support on mingwin. -- Ben Wing -- Improve: lrecord uid handling. -- Ben Wing -- Improve: refactor default_object_printer. -- Marcus Crestani --- Improve: remove dead code in lwlib. Stephen J. Turnbull +-- Improve: remove dead code in lwlib. -- Stephen J. Turnbull -- Improve: reorganize lisp.h. -- Ben Wing -- Improve: tabs widget. -- Stephen J. Turnbull = --===============2416635238697271522==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============4475752460536606258==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by michaelk packages/xemacs-packages/ediff ... Date: 2005-11-29 06:16:21 +0000 Message-ID: <20051129061621.10769.qmail@sunsite.dk> --===============4475752460536606258== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: michaelk Date: 05/11/29 07:16:21 Modified: packages/xemacs-packages/ediff ediff-wind.el ChangeLog Log: * ediff-wind (ediff-setup-control-frame, ediff-make-wide-display): preserve user position. Revision Changes Path 1.22 +5 -3 XEmacs/packages/xemacs-packages/ediff/ediff-wind.el Index: ediff-wind.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ediff-wind.= el,v retrieving revision 1.21 retrieving revision 1.22 diff -u -p -r1.21 -r1.22 --- ediff-wind.el 2005/11/25 07:31:38 1.21 +++ ediff-wind.el 2005/11/29 06:16:20 1.22 @@ -955,8 +955,9 @@ into icons, regardless of the window man (minibuffer-window designated-minibuffer-frame)) (cons 'width fwidth) - (cons 'height fheight)) - ) + (cons 'height fheight) + (cons 'user-position t) + )) = ;; adjust autoraise (setq adjusted-parameters @@ -1135,7 +1136,8 @@ It assumes that it is called from within (list (cons 'left (max 0 (eval (cdr (assoc 'left frame-A-params))))) (cons 'width (cdr (assoc 'width frame-A-params)))) ediff-wide-display-frame frame-A) - (modify-frame-parameters frame-A `((left . ,cw) (width . ,wd))))) + (modify-frame-parameters + frame-A `((left . ,cw) (width . ,wd) (user-position t))))) = = ;; Revise the mode line to display which difference we have selected 1.98 +6 -1 XEmacs/packages/xemacs-packages/ediff/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/packages/xemacs-packages/ediff/ChangeLog,v retrieving revision 1.97 retrieving revision 1.98 diff -u -p -r1.97 -r1.98 --- ChangeLog 2005/11/25 08:14:43 1.97 +++ ChangeLog 2005/11/29 06:16:20 1.98 @@ -1,7 +1,12 @@ +2005-11-29 Michael Kifer + = + * ediff-wind (ediff-setup-control-frame, ediff-make-wide-display): + preserve user position. + = 2005-11-25 Norbert Koch = * Makefile (VERSION): XEmacs package 1.59 released. - + = 2005-11-25 Michael Kifer = * ediff-wind (ediff-make-wide-display): Slight simplification. --===============4475752460536606258==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6836118284908449963==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacsweb/People .cvsignore Date: 2005-11-29 08:19:22 +0000 Message-ID: <20051129081922.2298.qmail@sunsite.dk> --===============6836118284908449963== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 09:19:22 Added: xemacsweb/People .cvsignore xemacsweb/People/adrian.aichner .cvsignore xemacsweb/People/aidan.kehoe .cvsignore xemacsweb/People/alastair.houghton .cvsignore xemacsweb/People/alexey.mahotkin .cvsignore xemacsweb/People/andreas.jaeger .cvsignore xemacsweb/People/andrew.cosgriff .cvsignore xemacsweb/People/andy.piper .cvsignore xemacsweb/People/anthony.rossini .cvsignore xemacsweb/People/barry.warsaw .cvsignore xemacsweb/People/ben.wing .cvsignore xemacsweb/People/bjorn.torkelsson .cvsignore xemacsweb/People/bob.weiner .cvsignore xemacsweb/People/carsten.dominik .cvsignore xemacsweb/People/charles.waldman .cvsignore xemacsweb/People/christian.nybo .cvsignore xemacsweb/People/chuck.thompson .cvsignore xemacsweb/People/colin.rafferty .cvsignore xemacsweb/People/craig.lanning .cvsignore xemacsweb/People/daiki.ueno .cvsignore xemacsweb/People/damon.lipparelli .cvsignore xemacsweb/People/dan.holmsand .cvsignore xemacsweb/People/daniel.pittman .cvsignore xemacsweb/People/darrell.kindred .cvsignore xemacsweb/People/darryl.okahata .cvsignore xemacsweb/People/david.hobley .cvsignore xemacsweb/People/david.moore .cvsignore xemacsweb/People/didier.verna .cvsignore xemacsweb/People/eduardo.pelegri-llopart .cvsignore xemacsweb/People/eric.benson .cvsignore xemacsweb/People/eric.knauel .cvsignore xemacsweb/People/eric.ludlam .cvsignore xemacsweb/People/evgeny.zajcev .cvsignore xemacsweb/People/fabrice.popineau .cvsignore xemacsweb/People/francisco.vides .cvsignore xemacsweb/People/gary.foster .cvsignore xemacsweb/People/glynn.clements .cvsignore xemacsweb/People/greg.klanderman .cvsignore xemacsweb/People/gunnar.evermann .cvsignore xemacsweb/People/hans.muller .cvsignore xemacsweb/People/harlan.sexton .cvsignore xemacsweb/People/heiko.muenkel .cvsignore xemacsweb/People/hisashi.miyashita .cvsignore xemacsweb/People/hrvoje.niksic .cvsignore xemacsweb/People/i.n.golubev .cvsignore xemacsweb/People/jake.colman .cvsignore xemacsweb/People/james.potts .cvsignore xemacsweb/People/jamie.zawinski .cvsignore xemacsweb/People/jan.rychter .cvsignore xemacsweb/People/jan.vroonhof .cvsignore xemacsweb/People/jareth.hein .cvsignore xemacsweb/People/jari.aalto .cvsignore xemacsweb/People/jason.mastaler .cvsignore xemacsweb/People/jeff.miller .cvsignore xemacsweb/People/jens-ulrik.petersen .cvsignore xemacsweb/People/jens.lautenbacher .cvsignore xemacsweb/People/jerry.james .cvsignore xemacsweb/People/jesper.pedersen .cvsignore xemacsweb/People/john.jacobs-anderson .cvsignore xemacsweb/People/john.paul.wallington .cvsignore xemacsweb/People/john.rose .cvsignore xemacsweb/People/john.wiegley .cvsignore xemacsweb/People/jonathan.harris .cvsignore xemacsweb/People/jonathan.stigelman .cvsignore xemacsweb/People/karl.hegbloom .cvsignore xemacsweb/People/kazuo.oishi .cvsignore xemacsweb/People/kazuyuki.ienaga .cvsignore xemacsweb/People/kenny.stevens .cvsignore xemacsweb/People/kevin.oberman .cvsignore xemacsweb/People/kirill.katsnelson .cvsignore xemacsweb/People/klaus.berndl .cvsignore xemacsweb/People/kyle.jones .cvsignore xemacsweb/People/lars.ingebrigtsen .cvsignore xemacsweb/People/linda.arai .cvsignore xemacsweb/People/malcolm.purvis .cvsignore xemacsweb/People/marc.paquette .cvsignore xemacsweb/People/marcus.crestani .cvsignore xemacsweb/People/marcus.thiessel .cvsignore xemacsweb/People/markus.kaltenbach .cvsignore xemacsweb/People/martin.buchholz .cvsignore xemacsweb/People/martin.schwenke .cvsignore xemacsweb/People/martin.stjernholm .cvsignore xemacsweb/People/mats.lidell .cvsignore xemacsweb/People/matt.simmons .cvsignore xemacsweb/People/matt.tucker .cvsignore xemacsweb/People/matthieu.devin .cvsignore xemacsweb/People/michael.albinus .cvsignore xemacsweb/People/michael.cook .cvsignore xemacsweb/People/michael.diers .cvsignore xemacsweb/People/michael.kifer .cvsignore xemacsweb/People/mike.alexander .cvsignore xemacsweb/People/mike.sperber .cvsignore xemacsweb/People/mike.woolley .cvsignore xemacsweb/People/nick.pakoulin .cvsignore xemacsweb/People/norbert.koch .cvsignore xemacsweb/People/oliver.graf .cvsignore xemacsweb/People/olivier.galibert .cvsignore xemacsweb/People/oscar.figueiredo .cvsignore xemacsweb/People/ovidiu.predescu .cvsignore xemacsweb/People/paul.kinnucan .cvsignore xemacsweb/People/per.abrahamsen .cvsignore xemacsweb/People/peter.brown .cvsignore xemacsweb/People/peter.osterlund .cvsignore xemacsweb/People/peter.pezaris .cvsignore xemacsweb/People/photos .cvsignore xemacsweb/People/raymond.toy .cvsignore xemacsweb/People/rebecca.ore .cvsignore xemacsweb/People/richard.mlynarik .cvsignore xemacsweb/People/richard.reingruber .cvsignore xemacsweb/People/rick.campbell .cvsignore xemacsweb/People/robin.socha .cvsignore xemacsweb/People/rodney.sparapani .cvsignore xemacsweb/People/sandy.wambold .cvsignore xemacsweb/People/sean.maclennan .cvsignore xemacsweb/People/simon.josefsson .cvsignore xemacsweb/People/stefanie.teufel .cvsignore xemacsweb/People/stephen.turnbull .cvsignore xemacsweb/People/steve.baur .cvsignore xemacsweb/People/steve.youngs .cvsignore xemacsweb/People/stig.bjorlykke .cvsignore xemacsweb/People/sven.grundmann .cvsignore xemacsweb/People/tomohiko.morioka .cvsignore xemacsweb/People/tomonori.ikeyama .cvsignore xemacsweb/People/trey.abelew .cvsignore xemacsweb/People/uwe.brauer .cvsignore xemacsweb/People/ville.skytta .cvsignore xemacsweb/People/vin.shelton .cvsignore xemacsweb/People/vladimir.ivanovic .cvsignore xemacsweb/People/will.deakin .cvsignore xemacsweb/People/william.perry .cvsignore xemacsweb/People/yoshiki.hayashi .cvsignore Log: Add .cvsignore, update jerry and aidan. <87r78zubo6.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.7 +9 -0 XEmacs/xemacsweb/People/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/People/ChangeLog,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- ChangeLog 2005/09/25 14:48:42 1.6 +++ ChangeLog 2005/11/29 08:01:38 1.7 @@ -1,3 +1,12 @@ +2005-11-29 Stephen J. Turnbull + + * .cvsignore: New file in this directory and all subdirectories. + Ignore *.html. + + * index.content: Move Aidan up to review board members. + + * jerry.james/index.content: Update Jerry James. + 2005-09-25 Ben Wing = * index.content: Move Malcolm up to review board members. 1.3 +1 -1 XEmacs/xemacsweb/People/index.content Index: index.content =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/People/index.content,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- index.content 2005/09/25 14:48:42 1.2 +++ index.content 2005/11/29 08:01:38 1.3 @@ -20,6 +20,7 @@ Ben Wing

    The current members of the XEmacs Review Board are:

    • Adrian Aichner
    • +
    • Aidan Kehoe
    • Andy Piper
    • Ben Wing
    • Didier Verna
    • @@ -45,7 +46,6 @@ Ben Wing =

      Other present and past XEmacs developers are:

        -
      • Aidan Kehoe
      • Alastair Houghton
      • Alexey Mahotkin
      • Andreas Jaeger
      • 1.1 XEmacs/xemacsweb/People/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/adrian.aichner/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/aidan.kehoe/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/alastair.houghton/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/alexey.mahotkin/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/andreas.jaeger/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/andrew.cosgriff/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/andy.piper/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/anthony.rossini/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/barry.warsaw/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/ben.wing/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/bjorn.torkelsson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/bob.weiner/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/carsten.dominik/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/charles.waldman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/christian.nybo/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/chuck.thompson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/colin.rafferty/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/craig.lanning/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/daiki.ueno/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/damon.lipparelli/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/dan.holmsand/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/daniel.pittman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/darrell.kindred/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/darryl.okahata/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/david.hobley/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/david.moore/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/didier.verna/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/eduardo.pelegri-llopart/.cvsig= nore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/eric.benson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/eric.knauel/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/eric.ludlam/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/evgeny.zajcev/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/fabrice.popineau/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/francisco.vides/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/gary.foster/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/glynn.clements/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/greg.klanderman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/gunnar.evermann/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/hans.muller/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/harlan.sexton/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/heiko.muenkel/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/hisashi.miyashita/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/hrvoje.niksic/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/i.n.golubev/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jake.colman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/james.potts/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jamie.zawinski/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jan.rychter/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jan.vroonhof/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jareth.hein/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jari.aalto/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jason.mastaler/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jeff.miller/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jens-ulrik.petersen/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jens.lautenbacher/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.2 +9 -4 XEmacs/xemacsweb/People/jerry.james/index.content Index: index.content =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacsweb/People/jerry.james/index.content= ,v retrieving revision 1.1 retrieving revision 1.2 diff -u -p -r1.1 -r1.2 --- index.content 2005/01/31 02:49:07 1.1 +++ index.content 2005/11/29 08:09:21 1.2 @@ -28,13 +28,18 @@ XEmacs, and soon had a web page containi

        He has since given up his native California to join the faculty at the University of Kansas. He is learning to like the weather in Lawrence, -Kansas, where he lives with his wife and 3 children. His work on XEmacs -mostly consists of extensions to the loadable module support in XEmacs, -which was introduced by J. Kean Johnston and others. +Kansas, where he lives with his wife and 3 children. (Ed. note: +Evidently he didn't like the weather; he has moved to the Utah State +University.)

        = +

        +His work on XEmacs mostly consists of extensions to the loadable module +support in XEmacs, which was introduced by J. Kean Johnston and others. +

        +

        His personal home page is at http://www.ittc.ku.edu/~james/. + href=3D"http://www.cs.usu.edu/~jerry/">http://www.cs.usu.edu/~jerry/.

        =

        Contributions to XEmacs:

        1.1 XEmacs/xemacsweb/People/jerry.james/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jesper.pedersen/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/john.jacobs-anderson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/john.paul.wallington/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/john.rose/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/john.wiegley/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jonathan.harris/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/jonathan.stigelman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/karl.hegbloom/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kazuo.oishi/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kazuyuki.ienaga/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kenny.stevens/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kevin.oberman/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kirill.katsnelson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/klaus.berndl/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/kyle.jones/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/lars.ingebrigtsen/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/linda.arai/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/malcolm.purvis/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/marc.paquette/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/marcus.crestani/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/marcus.thiessel/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/markus.kaltenbach/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/martin.buchholz/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/martin.schwenke/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/martin.stjernholm/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/mats.lidell/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/matt.simmons/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/matt.tucker/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/matthieu.devin/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/michael.albinus/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/michael.cook/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/michael.diers/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/michael.kifer/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/mike.alexander/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/mike.sperber/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/mike.woolley/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/nick.pakoulin/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/norbert.koch/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/oliver.graf/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/olivier.galibert/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/oscar.figueiredo/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/ovidiu.predescu/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/paul.kinnucan/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/per.abrahamsen/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/peter.brown/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/peter.osterlund/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/peter.pezaris/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/photos/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/raymond.toy/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/rebecca.ore/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/richard.mlynarik/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/richard.reingruber/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/rick.campbell/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/robin.socha/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/rodney.sparapani/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/sandy.wambold/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/sean.maclennan/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/simon.josefsson/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/stefanie.teufel/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/stephen.turnbull/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/steve.baur/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/steve.youngs/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/stig.bjorlykke/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/sven.grundmann/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/tomohiko.morioka/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/tomonori.ikeyama/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/trey.abelew/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/uwe.brauer/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/ville.skytta/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/vin.shelton/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/vladimir.ivanovic/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/will.deakin/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/william.perry/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html 1.1 XEmacs/xemacsweb/People/yoshiki.hayashi/.cvsignore Index: .cvsignore =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D *.html --===============6836118284908449963==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============4305678455570081734==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-29 08:38:34 +0000 Message-ID: <20051129083834.5340.qmail@sunsite.dk> --===============4305678455570081734== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 09:38:34 Modified: xemacs/src ChangeLog xemacs.def.in.in Log: Add error check symbols to xemacs.def. <87ek4zu9z3.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.899 +7 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.898 retrieving revision 1.899 diff -u -p -r1.898 -r1.899 --- ChangeLog 2005/11/28 16:39:53 1.898 +++ ChangeLog 2005/11/29 08:38:29 1.899 @@ -1,5 +1,12 @@ 2005-11-29 Stephen J. Turnbull = + * xemacs.def.in.in (error_check_cons, error_check_ldap): + (error_check_opaque_ptr, error_check_pgconn, error_check_pgresult): + (error_check_string, wrap_record_1, XINT_1): Add. Patch by Rick + Rankin <20051129041305.35172.qmail(a)web61022.mail.yahoo.com>. + +2005-11-29 Stephen J. Turnbull + * xemacs.def.in.in (lrecord_uid_counter): Add it. Patch by Rick Rankin <20051120054349.52906.qmail(a)web61019.mail.yahoo.com>. = 1.12 +12 -0 XEmacs/xemacs/src/xemacs.def.in.in Index: xemacs.def.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xemacs.def.in.in,v retrieving revision 1.11 retrieving revision 1.12 diff -u -p -r1.11 -r1.12 --- xemacs.def.in.in 2005/11/28 16:39:54 1.11 +++ xemacs.def.in.in 2005/11/29 08:38:32 1.12 @@ -82,6 +82,12 @@ emodules_doc_sym /* CDOCSYM */ eputenv #ifdef DEBUG_XEMACS eq_with_ebola_notice /* EQ_WITH_EBOLA_NOTICE */ +error_check_cons +error_check_ldap +error_check_opaque_ptr +error_check_pgconn +error_check_pgresult +error_check_string #endif free_opaque_ptr get_coding_system_for_text_file @@ -144,6 +150,9 @@ vector1 vector2 vector3 warn_when_safe +#ifdef DEBUG_XEMACS +wrap_record_1 +#endif write_c_string write_fmt_string write_fmt_string_lisp @@ -187,6 +196,9 @@ Fset_buffer Fsignal Fthrow Fvector +#ifdef DEBUG_XEMACS +XINT_1 +#endif = /* Exported variables */ __temp_alloca_size__ /* ALLOCA */ --===============4305678455570081734==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3997337270538618667==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/lisp ... Date: 2005-11-29 08:23:01 +0000 Message-ID: <20051129082301.3021.qmail@sunsite.dk> --===============3997337270538618667== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 09:23:01 Modified: xemacs/lisp ChangeLog about.el Log: Jerry moved to Utah. <87irubuar9.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.701 +4 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.700 retrieving revision 1.701 diff -u -p -r1.700 -r1.701 --- ChangeLog 2005/11/26 11:45:53 1.700 +++ ChangeLog 2005/11/29 08:22:58 1.701 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * about.el (about-personal-info, about-url-alist): Update `jerry'. + 2005-11-26 Stephen J. Turnbull = Merge Xft. 1.67 +9 -5 XEmacs/xemacs/lisp/about.el Index: about.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/about.el,v retrieving revision 1.66 retrieving revision 1.67 diff -u -p -r1.66 -r1.67 --- about.el 2005/03/02 21:37:55 1.66 +++ about.el 2005/11/29 08:22:59 1.67 @@ -207,7 +207,7 @@ (dv . "http://www.lrde.epita.fr/~didier/") (fabrice . "http://www.ese-metz.fr/~popineau/") (fptex . "http://www.fptex.org/") - (james . "http://www.ittc.ku.edu/~james/") + (james . "http://www.cs.usu.edu/~jerry/") (jas . "http://josefsson.org/") (jason . "http://www.mastaler.com/") (juhp . "http://www.01.246.ne.jp/~juhp/") @@ -1102,11 +1102,15 @@ from FSF Emacs to XEmacs. He thought th XEmacs, and soon had a web page containing small patches to XEmacs 20.3, which were picked up by the Debian Linux distribution. = -He has since given up his native California to join the faculty at the +He has since given up his native California, to join the faculty at the University of Kansas. He is learning to like the weather in Lawrence, -Kansas, where he lives with his wife and 3 children. His work on XEmacs -mostly consists of extensions to the loadable module support in XEmacs, -which was introduced by J. Kean Johnston and others. He has a ") +Kansas, where he lives with his wife and 3 children. (Ed. note: I guess +he didn't like the weather enough; he is now teaching at Utah State +University.) + +His work on XEmacs mostly consists of extensions to the loadable module +support in XEmacs, which was introduced by J. Kean Johnston and others. +He has a ") (about-url-link 'james "home page" "Visit Jerry's home page") (widget-insert " (doesn't everybody?)\n")) (jan --===============3997337270538618667==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============2984607006788451464==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/man/xemacs ... Date: 2005-11-29 12:08:42 +0000 Message-ID: <20051129120842.16935.qmail@sunsite.dk> --===============2984607006788451464== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 13:08:42 Modified: xemacs/man/xemacs custom.texi Log: Pitiful Xft user docs and CHANGES-beta. <87zmnnslq0.fsf(a)tleepslib.sk.tsukuba.ac.jp> Revision Changes Path 1.235 +3 -2 XEmacs/xemacs/CHANGES-beta Index: CHANGES-beta =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/CHANGES-beta,v retrieving revision 1.234 retrieving revision 1.235 diff -u -p -r1.234 -r1.235 --- CHANGES-beta 2005/11/29 03:31:25 1.234 +++ CHANGES-beta 2005/11/29 12:08:32 1.235 @@ -30,6 +30,7 @@ Documentation -- Improve: texi documentation of DEFSYMBOL. -- Stephen J. Turnbull -- Improve: texi documentation of XEmacs Autoconf macros. -- Malcolm Purvis -- Improve: update PROBLEMS, and install in etc. -- Malcolm Purvis +-- Update: about Jerry James. -- Stephen J. Turnbull = Lisp API = @@ -44,7 +45,7 @@ Internal API and Implementation -- Fix: compilation errors and warnings in GTK code. -- Malcolm Purvis -- Fix: help on functions without documentation. -- Ben Wing -- Fix: integer types for Berkeley db. -- Stephen J. Turnbull, Volker Zell --- Fix: make modules build on Cygwin and Mac. -- Stephen J. Turnbull, Rick= Rankin +-- Fix: make modules build on Cygwin and Mac. -- Stephen J. Turnbull, Rick= Rankin, Ben Wing -- Fix: quiet byte-compiler. -- Stephen J. Turnbull -- Fix: syntax error -- Marcus Crestani -- Fix: uninitialized local variables. -- Stephen J. Turnbull @@ -57,7 +58,7 @@ Internal API and Implementation -- Improve: refactor default_object_printer. -- Marcus Crestani -- Improve: remove dead code in lwlib. -- Stephen J. Turnbull -- Improve: reorganize lisp.h. -- Ben Wing --- Improve: tabs widget. -- Stephen J. Turnbull +-- Improve: tabs widget internals. -- Stephen J. Turnbull = to 21.5.23 "daikon" Major features 1.702 +4 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.701 retrieving revision 1.702 diff -u -p -r1.701 -r1.702 --- ChangeLog 2005/11/29 08:22:58 1.701 +++ ChangeLog 2005/11/29 12:08:35 1.702 @@ -1,5 +1,9 @@ 2005-11-29 Stephen J. Turnbull = + * objects.el (make-font-specifier): Document font name syntaxes. + +2005-11-29 Stephen J. Turnbull + * about.el (about-personal-info, about-url-alist): Update `jerry'. = 2005-11-26 Stephen J. Turnbull 1.6 +5 -3 XEmacs/xemacs/lisp/objects.el Index: objects.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/objects.el,v retrieving revision 1.5 retrieving revision 1.6 diff -u -p -r1.5 -r1.6 --- objects.el 2001/04/12 18:21:32 1.5 +++ objects.el 2005/11/29 12:08:36 1.6 @@ -50,9 +50,11 @@ specifiers. = Valid instantiators for font specifiers are: = --- a string naming a font (e.g. under X this might be - \"-*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-*\" for a 14-point - upright medium-weight Courier font) +-- a string naming a font; syntax is platform dependent. Some examples for + a 14-point upright medium-weight Courier font: + X11 (and GTK1): \"-*-courier-medium-r-*-*-*-140-*-*-*-*-iso8859-*\" + Xft (and GTK2): \"Courier-14\" + MS-Windows: \"Courier:14:Western\" -- a font instance (use that instance directly if the device matches, or use the string that generated it) -- a vector of no elements (only on TTY's; this means to set no font 1.325 +5 -0 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.324 retrieving revision 1.325 diff -u -p -r1.324 -r1.325 --- ChangeLog 2005/11/26 11:46:03 1.324 +++ ChangeLog 2005/11/29 12:08:40 1.325 @@ -1,3 +1,8 @@ +2005-11-29 Stephen J. Turnbull + + * xemacs/custom.texi (Faces): Describe some of the more important + font naming syntaxes under `set-face-font'. Fix a typo. + 2005-11-22 Stephen J. Turnbull = * internals/internals.texi (Working with Lisp Objects): Explain 1.21 +44 -1 XEmacs/xemacs/man/xemacs/custom.texi Index: custom.texi =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/xemacs/custom.texi,v retrieving revision 1.20 retrieving revision 1.21 diff -u -p -r1.20 -r1.21 --- custom.texi 2005/04/18 04:00:10 1.20 +++ custom.texi 2005/11/29 12:08:41 1.21 @@ -2148,7 +2148,7 @@ before the @code{x-bitmap-file-path} var Alternately, you can use a simpler version of @code{set-face-background-pixmap} called @code{set-face-background-pixmap-file}. This function does not give you -as much control on the pixmap instanciator, but provides filename +as much control on the pixmap instantiator, but provides filename completion. = @findex set-face-font @@ -2157,6 +2157,49 @@ You can set the font of the specified @v name of a font. When called from a program, if the optional @var{frame} argument is provided, the face is changed only in that frame; otherwise, it is changed in all frames. + +The syntax of the @var{font} argument varies according to platform. In +each of the following syntaxes, the example shows how to specify a +14-point upright bold Courier font. + +(a)table @strong +(a)item X11 +The X11 syntax is defined by the @dfn{X Logical Font Descriptor} (XLFD) +standard. An XLFD contains 14 fields each preceded by a hyphen: +foundry, family, weight, slant, swidth, adstyle, pixelsize, pointsize, +xresolution, yresolution, spacing, averagewidth, registry, and encoding. +It is usually sufficient to specify family, weight, slant, pointsize, +registry, and encoding, wildcarding the rest with @samp{*}. If you're +not sure what's available, you can wildcard some of the fields usually +specified, too. Here's our example font in XLFD syntax: +(a)code{"-*-courier-bold-r-*-*-*-140-*-*-*-*-iso8859-*"}. +The XLFD syntax is also used for GTK+ version 1. XLFD names must be +encoding in ISO-8859-1. + +(a)item Xft +The Xft syntax is defined by the @file{fontconfig} library +(a)ref{Font Names,,,fontconfig}. It is less a font naming convention than +a way to express any arbitrary subset of the font's properties in a +syntax that is both human- and machine-readable. A @file{fontconfig} +font name contains the family, a hyphen, and the pointsize, followed by +an arbitrary sequence of properties. Each property consists of a colon, +a keyword, an equals sign, and the property value. Here's our example +font in @file{fontconfig} syntax: @code{"Courier-14:weight=3Dbold"}. This +syntax admits ``style abbreviations'' which can be user-defined. A +style is a single keyword denoting a sequence of properties. So the +example font may be abbreviated to @code{"Courier-14:bold"} ("bold" is a +standard abbreviation for "weight=3Dbold"). The @file{fontconfig} syntax +is also used for GTK+ version 2. @file{fontconfig} names must be +encoded in UTF-8. + +(a)item MS-Windows +The MS Windows syntax is superficially similar to that of Xft but +actually is more like XLFD. A font name consists of five fields, +family, size, slant, weight, and encoding, each expressed as a keyword +taking on standardized values (except family, which is just a name). +Here's our example font in MS Windows syntax: +(a)code{"Courier:14:Bold:Western"}. +(a)end table = @findex set-face-foreground You can set the foreground color of the specified @var{face} with the --===============2984607006788451464==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6696250155065280458==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by malcolmp xemacs/lisp ... Date: 2005-11-29 12:33:48 +0000 Message-ID: <20051129123348.22513.qmail@sunsite.dk> --===============6696250155065280458== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: malcolmp Date: 05/11/29 13:33:48 Modified: xemacs/lisp ChangeLog occur.el Log: occur.el: Add autoload cookie for list-matching-lines. Revision Changes Path 1.703 +4 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.702 retrieving revision 1.703 diff -u -p -r1.702 -r1.703 --- ChangeLog 2005/11/29 12:08:35 1.702 +++ ChangeLog 2005/11/29 12:33:46 1.703 @@ -1,3 +1,7 @@ +2005-11-29 Malcolm Purvis + + * occur.el: Add autoload cookie for list-matching-lines. + 2005-11-29 Stephen J. Turnbull = * objects.el (make-font-specifier): Document font name syntaxes. 1.3 +1 -0 XEmacs/xemacs/lisp/occur.el Index: occur.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/occur.el,v retrieving revision 1.2 retrieving revision 1.3 diff -u -p -r1.2 -r1.3 --- occur.el 2005/10/24 10:07:27 1.2 +++ occur.el 2005/11/29 12:33:47 1.3 @@ -222,6 +222,7 @@ A positive number means to include that = :type 'integer :group 'matching) = +;;;###autoload (defalias 'list-matching-lines 'occur) = (defcustom list-matching-lines-face 'match --===============6696250155065280458==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============2325038407348784476==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-29 14:41:18 +0000 Message-ID: <20051129144118.18332.qmail@sunsite.dk> --===============2325038407348784476== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:41:18 Modified: xemacs version.sh Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.1359 +4 -4 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1358 retrieving revision 1.1359 diff -u -p -r1.1358 -r1.1359 --- version.sh 2005/11/28 22:51:07 1.1358 +++ version.sh 2005/11/29 14:41:17 1.1359 @@ -2,11 +2,11 @@ emacs_is_beta=3Dt emacs_major_version=3D21 emacs_minor_version=3D5 -emacs_beta_version=3D23 -xemacs_codename=3D"daikon" +emacs_beta_version=3D24 +xemacs_codename=3D"dandelion" emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051128)" -xemacs_release_date=3D"2005-10-26" +xemacs_extra_name=3D"" +xemacs_release_date=3D"2005-11-29" --===============2325038407348784476==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3144975228989632337==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs ... Date: 2005-11-29 14:41:41 +0000 Message-ID: <20051129144141.18369.qmail@sunsite.dk> --===============3144975228989632337== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:41:41 Modified: xemacs ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.478 +4 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.477 retrieving revision 1.478 diff -u -p -r1.477 -r1.478 --- ChangeLog 2005/11/28 09:50:16 1.477 +++ ChangeLog 2005/11/29 14:41:40 1.478 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-27 Marcus Crestani = * configure.ac: Remove vdb-fake warning, die if POSIX checks fail. --===============3144975228989632337==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============8275438323013920550==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/etc ... Date: 2005-11-29 14:41:50 +0000 Message-ID: <20051129144150.18394.qmail@sunsite.dk> --===============8275438323013920550== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:41:50 Modified: xemacs/etc ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.66 +4 -0 XEmacs/xemacs/etc/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/ChangeLog,v retrieving revision 1.65 retrieving revision 1.66 diff -u -p -r1.65 -r1.66 --- ChangeLog 2005/11/18 11:28:10 1.65 +++ ChangeLog 2005/11/29 14:41:49 1.66 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-18 Aidan Kehoe = * HELLO: Add Irish, Tajik. Don't give the local name for the --===============8275438323013920550==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============4057745842112240272==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/lib-src ... Date: 2005-11-29 14:41:59 +0000 Message-ID: <20051129144159.18419.qmail@sunsite.dk> --===============4057745842112240272== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:41:59 Modified: xemacs/lib-src ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.201 +4 -0 XEmacs/xemacs/lib-src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/ChangeLog,v retrieving revision 1.200 retrieving revision 1.201 diff -u -p -r1.200 -r1.201 --- ChangeLog 2005/11/24 12:37:59 1.200 +++ ChangeLog 2005/11/29 14:41:58 1.201 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-22 Malcolm Purvis = * etags.c: Update to author version 17.15. --===============4057745842112240272==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============8713959037349272941==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/lisp ... Date: 2005-11-29 14:52:45 +0000 Message-ID: <20051129145245.20152.qmail@sunsite.dk> --===============8713959037349272941== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:52:45 Modified: xemacs/lisp ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.704 +2 -2 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.703 retrieving revision 1.704 diff -u -p -r1.703 -r1.704 --- ChangeLog 2005/11/29 12:33:46 1.703 +++ ChangeLog 2005/11/29 14:52:44 1.704 @@ -1,6 +1,6 @@ -2005-11-29 Malcolm Purvis +2005-11-29 Stephen J. Turnbull = - * occur.el: Add autoload cookie for list-matching-lines. + * XEmacs 21.5.24 "dandelion" is released. = 2005-11-29 Stephen J. Turnbull = --===============8713959037349272941==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6090435986875791370==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/lwlib ... Date: 2005-11-29 14:52:55 +0000 Message-ID: <20051129145255.20177.qmail@sunsite.dk> --===============6090435986875791370== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:52:55 Modified: xemacs/lwlib ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.77 +4 -0 XEmacs/xemacs/lwlib/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.76 retrieving revision 1.77 diff -u -p -r1.76 -r1.77 --- ChangeLog 2005/11/26 11:45:58 1.76 +++ ChangeLog 2005/11/29 14:52:55 1.77 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-26 Stephen J. Turnbull = Merge Xft. --===============6090435986875791370==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============1709788943827857654==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/man ... Date: 2005-11-29 14:53:05 +0000 Message-ID: <20051129145305.20217.qmail@sunsite.dk> --===============1709788943827857654== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:05 Modified: xemacs/man ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.326 +4 -0 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.325 retrieving revision 1.326 diff -u -p -r1.325 -r1.326 --- ChangeLog 2005/11/29 12:08:40 1.325 +++ ChangeLog 2005/11/29 14:53:04 1.326 @@ -1,5 +1,9 @@ 2005-11-29 Stephen J. Turnbull = + * XEmacs 21.5.24 "dandelion" is released. + +2005-11-29 Stephen J. Turnbull + * xemacs/custom.texi (Faces): Describe some of the more important font naming syntaxes under `set-face-font'. Fix a typo. = --===============1709788943827857654==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3641403419307288569==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/netinstall ... Date: 2005-11-29 14:53:20 +0000 Message-ID: <20051129145320.20282.qmail@sunsite.dk> --===============3641403419307288569== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:20 Modified: xemacs/netinstall ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.41 +4 -0 XEmacs/xemacs/netinstall/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/ChangeLog,v retrieving revision 1.40 retrieving revision 1.41 diff -u -p -r1.40 -r1.41 --- ChangeLog 2005/11/22 07:14:39 1.40 +++ ChangeLog 2005/11/29 14:53:20 1.41 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-22 Ben Wing = * Makefile.in.in: --===============3641403419307288569==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============6150462472627942357==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/modules ... Date: 2005-11-29 14:53:12 +0000 Message-ID: <20051129145312.20252.qmail@sunsite.dk> --===============6150462472627942357== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:12 Modified: xemacs/modules ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.53 +4 -0 XEmacs/xemacs/modules/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.52 retrieving revision 1.53 diff -u -p -r1.52 -r1.53 --- ChangeLog 2005/11/22 07:14:37 1.52 +++ ChangeLog 2005/11/29 14:53:12 1.53 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-22 Ben Wing = * common/Makefile.common (mostlyclean): --===============6150462472627942357==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============5159825516529710273==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/nt ... Date: 2005-11-29 14:53:29 +0000 Message-ID: <20051129145329.20324.qmail@sunsite.dk> --===============5159825516529710273== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:28 Modified: xemacs/nt ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.195 +4 -0 XEmacs/xemacs/nt/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/ChangeLog,v retrieving revision 1.194 retrieving revision 1.195 diff -u -p -r1.194 -r1.195 --- ChangeLog 2005/11/25 01:41:49 1.194 +++ ChangeLog 2005/11/29 14:53:28 1.195 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-11-21 Marcus Crestani = Incremental Garbage Collector --===============5159825516529710273==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============7299349266083905638==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/nt/installer/Wise ... Date: 2005-11-29 14:53:36 +0000 Message-ID: <20051129145336.20349.qmail@sunsite.dk> --===============7299349266083905638== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:36 Modified: xemacs/nt/installer/Wise ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.27 +4 -0 XEmacs/xemacs/nt/installer/Wise/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/installer/Wise/ChangeLog,v retrieving revision 1.26 retrieving revision 1.27 diff -u -p -r1.26 -r1.27 --- ChangeLog 2005/10/26 15:14:35 1.26 +++ ChangeLog 2005/11/29 14:53:36 1.27 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. --===============7299349266083905638==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3797663843032864283==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/src ... Date: 2005-11-29 14:53:55 +0000 Message-ID: <20051129145355.20390.qmail@sunsite.dk> --===============3797663843032864283== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:53:55 Modified: xemacs/src ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.900 +4 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.899 retrieving revision 1.900 diff -u -p -r1.899 -r1.900 --- ChangeLog 2005/11/29 08:38:29 1.899 +++ ChangeLog 2005/11/29 14:53:52 1.900 @@ -1,5 +1,9 @@ 2005-11-29 Stephen J. Turnbull = + * XEmacs 21.5.24 "dandelion" is released. + +2005-11-29 Stephen J. Turnbull + * xemacs.def.in.in (error_check_cons, error_check_ldap): (error_check_opaque_ptr, error_check_pgconn, error_check_pgresult): (error_check_string, wrap_record_1, XINT_1): Add. Patch by Rick --===============3797663843032864283==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============3314627376513524616==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/tests ... Date: 2005-11-29 14:54:03 +0000 Message-ID: <20051129145403.20426.qmail@sunsite.dk> --===============3314627376513524616== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 15:54:03 Modified: xemacs/tests ChangeLog Log: XEmacs 21.5.24 "dandelion" is released. Revision Changes Path 1.72 +4 -0 XEmacs/xemacs/tests/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/ChangeLog,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- ChangeLog 2005/10/26 15:15:03 1.71 +++ ChangeLog 2005/11/29 14:54:03 1.72 @@ -1,3 +1,7 @@ +2005-11-29 Stephen J. Turnbull + + * XEmacs 21.5.24 "dandelion" is released. + 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. --===============3314627376513524616==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============5646038874607442277==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by stephent xemacs/modules ... Date: 2005-11-29 17:04:24 +0000 Message-ID: <20051129170424.26550.qmail@sunsite.dk> --===============5646038874607442277== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: stephent Date: 05/11/29 18:04:24 Modified: xemacs/modules ChangeLog Log: Undo inadvertant release commits. Revision Changes Path 1.1360 +4 -4 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1359 retrieving revision 1.1360 diff -u -p -r1.1359 -r1.1360 --- version.sh 2005/11/29 14:41:17 1.1359 +++ version.sh 2005/11/29 17:04:05 1.1360 @@ -2,11 +2,11 @@ emacs_is_beta=3Dt emacs_major_version=3D21 emacs_minor_version=3D5 -emacs_beta_version=3D24 -xemacs_codename=3D"dandelion" +emacs_beta_version=3D23 +xemacs_codename=3D"daikon" emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"" -xemacs_release_date=3D"2005-11-29" +xemacs_extra_name=3D"(+CVS-20051128)" +xemacs_release_date=3D"2005-10-26" 1.479 +6 -2 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.478 retrieving revision 1.479 diff -u -p -r1.478 -r1.479 --- ChangeLog 2005/11/29 14:41:40 1.478 +++ ChangeLog 2005/11/29 17:04:05 1.479 @@ -1,6 +1,10 @@ -2005-11-29 Stephen J. Turnbull +2005-11-29 Malcolm Purvis = - * XEmacs 21.5.24 "dandelion" is released. + * configure.ac (XE_PARSE_COMPLEX_OPTION): Correctly handle + --with-FOO[=3Dyes]. Only enable defaults when the arg is + specified. + * configure.ac (XE_COMPLEX_ARG[xft]): Default everything on; + change doc. = 2005-11-27 Marcus Crestani = 1.67 +0 -4 XEmacs/xemacs/etc/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/ChangeLog,v retrieving revision 1.66 retrieving revision 1.67 diff -u -p -r1.66 -r1.67 --- ChangeLog 2005/11/29 14:41:49 1.66 +++ ChangeLog 2005/11/29 17:04:10 1.67 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-18 Aidan Kehoe = * HELLO: Add Irish, Tajik. Don't give the local name for the 1.202 +0 -4 XEmacs/xemacs/lib-src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lib-src/ChangeLog,v retrieving revision 1.201 retrieving revision 1.202 diff -u -p -r1.201 -r1.202 --- ChangeLog 2005/11/29 14:41:58 1.201 +++ ChangeLog 2005/11/29 17:04:11 1.202 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-22 Malcolm Purvis = * etags.c: Update to author version 17.15. 1.705 +2 -2 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.704 retrieving revision 1.705 diff -u -p -r1.704 -r1.705 --- ChangeLog 2005/11/29 14:52:44 1.704 +++ ChangeLog 2005/11/29 17:04:12 1.705 @@ -1,6 +1,6 @@ -2005-11-29 Stephen J. Turnbull +2005-11-29 Malcolm Purvis = - * XEmacs 21.5.24 "dandelion" is released. + * occur.el: Add autoload cookie for list-matching-lines. = 2005-11-29 Stephen J. Turnbull = 1.78 +0 -4 XEmacs/xemacs/lwlib/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lwlib/ChangeLog,v retrieving revision 1.77 retrieving revision 1.78 diff -u -p -r1.77 -r1.78 --- ChangeLog 2005/11/29 14:52:55 1.77 +++ ChangeLog 2005/11/29 17:04:14 1.78 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-26 Stephen J. Turnbull = Merge Xft. 1.327 +0 -4 XEmacs/xemacs/man/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/man/ChangeLog,v retrieving revision 1.326 retrieving revision 1.327 diff -u -p -r1.326 -r1.327 --- ChangeLog 2005/11/29 14:53:04 1.326 +++ ChangeLog 2005/11/29 17:04:15 1.327 @@ -1,9 +1,5 @@ 2005-11-29 Stephen J. Turnbull = - * XEmacs 21.5.24 "dandelion" is released. - -2005-11-29 Stephen J. Turnbull - * xemacs/custom.texi (Faces): Describe some of the more important font naming syntaxes under `set-face-font'. Fix a typo. = 1.42 +0 -4 XEmacs/xemacs/netinstall/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/netinstall/ChangeLog,v retrieving revision 1.41 retrieving revision 1.42 diff -u -p -r1.41 -r1.42 --- ChangeLog 2005/11/29 14:53:20 1.41 +++ ChangeLog 2005/11/29 17:04:16 1.42 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-22 Ben Wing = * Makefile.in.in: 1.196 +0 -4 XEmacs/xemacs/nt/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/ChangeLog,v retrieving revision 1.195 retrieving revision 1.196 diff -u -p -r1.195 -r1.196 --- ChangeLog 2005/11/29 14:53:28 1.195 +++ ChangeLog 2005/11/29 17:04:17 1.196 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-21 Marcus Crestani = Incremental Garbage Collector 1.28 +0 -4 XEmacs/xemacs/nt/installer/Wise/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/nt/installer/Wise/ChangeLog,v retrieving revision 1.27 retrieving revision 1.28 diff -u -p -r1.27 -r1.28 --- ChangeLog 2005/11/29 14:53:36 1.27 +++ ChangeLog 2005/11/29 17:04:18 1.28 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. 1.901 +0 -4 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.900 retrieving revision 1.901 diff -u -p -r1.900 -r1.901 --- ChangeLog 2005/11/29 14:53:52 1.900 +++ ChangeLog 2005/11/29 17:04:19 1.901 @@ -1,9 +1,5 @@ 2005-11-29 Stephen J. Turnbull = - * XEmacs 21.5.24 "dandelion" is released. - -2005-11-29 Stephen J. Turnbull - * xemacs.def.in.in (error_check_cons, error_check_ldap): (error_check_opaque_ptr, error_check_pgconn, error_check_pgresult): (error_check_string, wrap_record_1, XINT_1): Add. Patch by Rick 1.73 +0 -4 XEmacs/xemacs/tests/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/tests/ChangeLog,v retrieving revision 1.72 retrieving revision 1.73 diff -u -p -r1.72 -r1.73 --- ChangeLog 2005/11/29 14:54:03 1.72 +++ ChangeLog 2005/11/29 17:04:23 1.73 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-10-26 Stephen J. Turnbull = * XEmacs 21.5.23 "daikon" is released. 1.54 +0 -4 XEmacs/xemacs/modules/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/modules/ChangeLog,v retrieving revision 1.53 retrieving revision 1.54 diff -u -p -r1.53 -r1.54 --- ChangeLog 2005/11/29 14:53:12 1.53 +++ ChangeLog 2005/11/29 17:04:24 1.54 @@ -1,7 +1,3 @@ -2005-11-29 Stephen J. Turnbull - - * XEmacs 21.5.24 "dandelion" is released. - 2005-11-22 Ben Wing = * common/Makefile.common (mostlyclean): --===============5646038874607442277==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:17 2017 Content-Type: multipart/mixed; boundary="===============8887424914464698412==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by adrian xemacs/lisp ... Date: 2005-11-29 21:00:32 +0000 Message-ID: <20051129210032.25599.qmail@sunsite.dk> --===============8887424914464698412== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: adrian = Date: 05/11/29 22:00:32 Modified: xemacs/lisp ChangeLog package-get.el Log: [PATCH] xemacs-21.5-clean: Another package-get.el update reflecting Revision Changes Path 1.706 +7 -0 XEmacs/xemacs/lisp/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/ChangeLog,v retrieving revision 1.705 retrieving revision 1.706 diff -u -p -r1.705 -r1.706 --- ChangeLog 2005/11/29 17:04:12 1.705 +++ ChangeLog 2005/11/29 21:00:29 1.706 @@ -1,3 +1,10 @@ +2005-10-28 Adrian Aichner + + * package-get.el (package-get-download-sites): Update reflecting + latest http://www.xemacs.org/Releases/ information generated by + xemacs-builds/adrian/website/package-get-2-download-sites.el. + * package-get.el (package-get-pre-release-download-sites): Ditto. + 2005-11-29 Malcolm Purvis = * occur.el: Add autoload cookie for list-matching-lines. 1.72 +14 -12 XEmacs/xemacs/lisp/package-get.el Index: package-get.el =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/lisp/package-get.el,v retrieving revision 1.71 retrieving revision 1.72 diff -u -p -r1.71 -r1.72 --- package-get.el 2005/10/24 22:40:21 1.71 +++ package-get.el 2005/11/29 21:00:30 1.72 @@ -227,15 +227,15 @@ directory." ("Japan (aist.go.jp)" "ring.aist.go.jp" "pub/text/xemacs/packages") ("Japan (asahi-net.or.jp)" "ring.asahi-net.or.jp" "pub/text/xemacs/pac= kages") ("Japan (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/packages") - ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") - ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") +; ("Japan (jaist.ac.jp)" "ftp.jaist.ac.jp" "pub/GNU/xemacs/packages") +; ("Japan (jp.xemacs.org)" "ftp.jp.xemacs.org" "pub/GNU/xemacs/packages") ; ("Japan (nucba.ac.jp)" "mirror.nucba.ac.jp" "mirror/xemacs/packages") ("Japan (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs= /packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" "pub/tools/emacs/xemacs/p= ackages") ("New Zealand (nz.xemacs.org)" "ftp.nz.xemacs.org" "mirror/ftp.xemacs.= org/packages") ("Norway (no.xemacs.org)" "ftp.no.xemacs.org" "pub/xemacs/packages") ("Poland (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs= /packages") - ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/xemacs/packages") + ("Russia (ru.xemacs.org)" "ftp.ru.xemacs.org" "pub/emacs/xemacs/packag= es") ; ("South Africa (za.xemacs.org)" "ftp.za.xemacs.org" "mirrorsites/ftp.x= emacs.org/packages") ("Sweden (se.xemacs.org)" "ftp.se.xemacs.org" "pub/gnu/xemacs/packages= ") ("Switzerland (ch.xemacs.org)" "ftp.ch.xemacs.org" "mirror/xemacs/pack= ages") @@ -245,7 +245,8 @@ directory." ("US (stealth.net)" "ftp.stealth.net" "pub/mirrors/ftp.xemacs.org/pub/= xemacs/packages") ("US (unc.edu)" "metalab.unc.edu" "pub/packages/editors/xemacs/package= s") ("US (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/packages") - ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages")) +; ("US (utk.edu)" "ftp.sunsite.utk.edu" "pub/xemacs/packages") + ) "*List of remote sites available for downloading packages. List format is '(site-description site-name directory-on-site). SITE-DESCRIPTION is a textual description of the site. SITE-NAME @@ -261,7 +262,7 @@ variable actually used to specify packag (defcustom package-get-pre-release-download-sites '( ;; Main XEmacs Site (ftp.xemacs.org) - ("Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" + ("US Pre-Releases (Main XEmacs Site)" "ftp.xemacs.org" "pub/xemacs/beta/experimental/packages") ;; In alphabetical order of Country, our mirrors... ("Argentina Pre-Releases (xmundo.net)" "xemacs.xmundo.net" @@ -310,10 +311,10 @@ variable actually used to specify packag "pub/text/xemacs/beta/experimental/packages") ("Japan Pre-Releases (dti.ad.jp)" "ftp.dti.ad.jp" "pub/unix/editor/xemacs/beta/experimental/packages") - ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp" - "pub/GNU/xemacs/beta/experimental/packages") - ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" - "pub/GNU/xemacs/beta/experimental/packages") +; ("Japan Pre-Releases (jaist.ac.jp)" "ftp.jaist.ac.jp" +; "pub/GNU/xemacs/beta/experimental/packages") +; ("Japan Pre-Releases (jp.xemacs.org)" "ftp.jp.xemacs.org" +; "pub/GNU/xemacs/beta/experimental/packages") ("Japan Pre-Releases (sut.ac.jp)" "sunsite.sut.ac.jp" "pub/archives/packages/xemacs/xemacs-21.5/experimental/packages") ("Korea (kr.xemacs.org)" "ftp.kr.xemacs.org" @@ -325,7 +326,7 @@ variable actually used to specify packag ("Poland Pre-Releases (pl.xemacs.org)" "ftp.pl.xemacs.org" "pub/unix/editors/xemacs/beta/experimental/packages") ("Russia Pre-Releases (ru.xemacs.org)" "ftp.ru.xemacs.org" - "pub/xemacs/beta/experimental/packages") + "pub/emacs/xemacs/beta/experimental/packages") ; ("South Africa Pre-Releases (za.xemacs.org)" "ftp.za.xemacs.org" ; "mirrorsites/ftp.xemacs.org/beta/experimental/packages") ("Sweden Pre-Releases (se.xemacs.org)" "ftp.se.xemacs.org" @@ -344,8 +345,9 @@ variable actually used to specify packag "pub/packages/editors/xemacs/beta/experimental/packages") ("US Pre-Releases (us.xemacs.org)" "ftp.us.xemacs.org" "pub/xemacs/beta/experimental/packages") - ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" - "pub/xemacs/beta/experimental/packages")) +; ("US Pre-Releases (utk.edu)" "ftp.sunsite.utk.edu" +; "pub/xemacs/beta/experimental/packages") +) "*List of remote sites available for downloading \"Pre-Release\" package= s. List format is '(site-description site-name directory-on-site). SITE-DESCRIPTION is a textual description of the site. SITE-NAME --===============8887424914464698412==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:18 2017 Content-Type: multipart/mixed; boundary="===============8957578445964315237==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-29 22:51:21 +0000 Message-ID: <20051129225121.19186.qmail@sunsite.dk> --===============8957578445964315237== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/29 23:51:21 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1361 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1360 retrieving revision 1.1361 diff -u -p -r1.1360 -r1.1361 --- version.sh 2005/11/29 17:04:05 1.1360 +++ version.sh 2005/11/29 22:51:20 1.1361 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051128)" +xemacs_extra_name=3D"(+CVS-20051129)" xemacs_release_date=3D"2005-10-26" --===============8957578445964315237==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:18 2017 Content-Type: multipart/mixed; boundary="===============4968619492854380797==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by crestani xemacs/src ... Date: 2005-11-30 11:29:00 +0000 Message-ID: <20051130112900.6808.qmail@sunsite.dk> --===============4968619492854380797== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: crestani Date: 05/11/30 12:29:00 Modified: xemacs/src ChangeLog xemacs.def.in.in Log: xemacs.def.in.in: Condition error_check_* symbols on ERROR_CHECK_TYPES. Revision Changes Path 1.902 +5 -0 XEmacs/xemacs/src/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/ChangeLog,v retrieving revision 1.901 retrieving revision 1.902 diff -u -p -r1.901 -r1.902 --- ChangeLog 2005/11/29 17:04:19 1.901 +++ ChangeLog 2005/11/30 11:28:56 1.902 @@ -1,3 +1,8 @@ +2005-11-29 Marcus Crestani + + * xemacs.def.in.in: Condition error_check_* symbols on + ERROR_CHECK_TYPES. + 2005-11-29 Stephen J. Turnbull = * xemacs.def.in.in (error_check_cons, error_check_ldap): 1.13 +12 -2 XEmacs/xemacs/src/xemacs.def.in.in Index: xemacs.def.in.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/src/xemacs.def.in.in,v retrieving revision 1.12 retrieving revision 1.13 diff -u -p -r1.12 -r1.13 --- xemacs.def.in.in 2005/11/29 08:38:32 1.12 +++ xemacs.def.in.in 2005/11/30 11:28:58 1.13 @@ -82,12 +82,22 @@ emodules_doc_sym /* CDOCSYM */ eputenv #ifdef DEBUG_XEMACS eq_with_ebola_notice /* EQ_WITH_EBOLA_NOTICE */ +#endif +#ifdef ERROR_CHECK_TYPES error_check_cons +#ifdef HAVE_LDAP error_check_ldap +#endif error_check_opaque_ptr +#ifdef HAVE_POSTGRESQL error_check_pgconn error_check_pgresult +#endif error_check_string +#ifdef NEW_GC +error_check_string_direct_data +error_check_string_indirect_data +#endif #endif free_opaque_ptr get_coding_system_for_text_file @@ -150,7 +160,7 @@ vector1 vector2 vector3 warn_when_safe -#ifdef DEBUG_XEMACS +#ifdef ERROR_CHECK_TYPES wrap_record_1 #endif write_c_string @@ -196,7 +206,7 @@ Fset_buffer Fsignal Fthrow Fvector -#ifdef DEBUG_XEMACS +#ifdef ERROR_CHECK_TYPES XINT_1 #endif = --===============4968619492854380797==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:18 2017 Content-Type: multipart/mixed; boundary="===============7886124414169603979==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by viteno xemacs ... Date: 2005-11-30 22:51:09 +0000 Message-ID: <20051130225109.9887.qmail@sunsite.dk> --===============7886124414169603979== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: viteno = Date: 05/11/30 23:51:09 Modified: xemacs version.sh Log: Update xemacs_extra_name. Revision Changes Path 1.1362 +1 -1 XEmacs/xemacs/version.sh Index: version.sh =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/version.sh,v retrieving revision 1.1361 retrieving revision 1.1362 diff -u -p -r1.1361 -r1.1362 --- version.sh 2005/11/29 22:51:20 1.1361 +++ version.sh 2005/11/30 22:51:09 1.1362 @@ -8,5 +8,5 @@ emacs_kit_version=3D infodock_major_version=3D4 infodock_minor_version=3D0 infodock_build_version=3D8 -xemacs_extra_name=3D"(+CVS-20051129)" +xemacs_extra_name=3D"(+CVS-20051130)" xemacs_release_date=3D"2005-10-26" --===============7886124414169603979==-- From xemacs-cvs at xemacs.org Mon Feb 27 02:24:18 2017 Content-Type: multipart/mixed; boundary="===============9145458114510383760==" MIME-Version: 1.0 From: CVS Monitor To: xemacs-cvs at xemacs.org Subject: CVS update by vins xemacs/etc ... Date: 2005-11-30 23:59:18 +0000 Message-ID: <20051130235918.22046.qmail@sunsite.dk> --===============9145458114510383760== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable User: vins = Date: 05/12/01 00:59:18 Branch: xemacs release-21-4 xemacs/etc release-21-4 Modified: xemacs/etc NEWS Log: Fix ldap library configuration. Revision Changes Path 1.241.2.80 +10 -0 XEmacs/xemacs/ChangeLog Index: ChangeLog =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/ChangeLog,v retrieving revision 1.241.2.79 retrieving revision 1.241.2.80 diff -u -p -r1.241.2.79 -r1.241.2.80 --- ChangeLog 2005/11/28 02:08:55 1.241.2.79 +++ ChangeLog 2005/11/30 23:58:06 1.241.2.80 @@ -1,3 +1,13 @@ +2005-11-29 Ilya Golubev + + * configure.in: Merge revision 1.19 change: fix ldap libraries + configuration lossage when `-lldap -llber' links and but `-lldap' + does not; allow `ldap_libs' to be empty or overridden by builder. + The lossage was introduced in upstream revision 1.151.2.31 + (2005/01/31 02:54:47 vins) by (extremely hasty and unwise) merge + of revision 1.232 change. + * etc/NEWS: Document it. + 2005-03-12 Aidan Kehoe = * configure.in (XE_COMPUTE_RUNPATH): Check XtRegisterDrawable 1.147.2.36 +578 -508 XEmacs/xemacs/configure Index: configure =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure,v retrieving revision 1.147.2.35 retrieving revision 1.147.2.36 diff -u -p -r1.147.2.35 -r1.147.2.36 --- configure 2005/11/28 02:08:56 1.147.2.35 +++ configure 2005/11/30 23:58:07 1.147.2.36 @@ -7829,26 +7829,73 @@ else with_ldap=3Dno fi } -if test "$with_ldap" !=3D "no"; then - = -echo $ac_n "checking for ldap_search in -lldap""... $ac_c" 1>&6 -echo "configure:7836: checking for ldap_search in -lldap" >&5 -ac_lib_var=3D`echo ldap'_'ldap_search | sed 'y%./+-%__p_%'` +if test no !=3D "$with_ldap";then + if test . !=3D "${ldap_libs+.}";then + ldap_libs=3D + echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 +echo "configure:7837: checking for ldap_open" >&5 = +cat > conftest.$ac_ext < +/* Override any gcc2 internal prototype to avoid an error. */ +/* We use char because int might match the return type of a gcc2 + builtin and then its argument prototype would still apply. */ +char ldap_open(); + +int main() { + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_ldap_open) || defined (__stub___ldap_open) +choke me +#else +ldap_open(); +#endif + +; return 0; } +EOF +if { (eval echo configure:7863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then + rm -rf conftest* + eval "ac_cv_func_ldap_open=3Dyes" +else + echo "configure: failed program was:" >&5 + cat conftest.$ac_ext >&5 + rm -rf conftest* + eval "ac_cv_func_ldap_open=3Dno" +fi +rm -f conftest* + +if eval "test \"`echo '$ac_cv_func_'ldap_open`\" =3D yes"; then + echo "$ac_t""yes" 1>&6 + with_ldap=3Dyes + test yes =3D "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs" +else + echo "$ac_t""no" 1>&6 + = +echo $ac_n "checking for ldap_open in -lldap""... $ac_c" 1>&6 +echo "configure:7883: checking for ldap_open in -lldap" >&5 +ac_lib_var=3D`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` + xe_check_libs=3D" -lldap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7899: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -7865,19 +7912,17 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l with_ldap=3Dyes else echo "$ac_t""no" 1>&6 -fi - - - test "$with_ldap" !=3D "yes" && { = +ldap_needs_lber=3Dyes ldap_other_libs=3D-llber + = xe_msg_checking=3D"for ldap_open in -lldap" -test -n "-llber" && xe_msg_checking=3D"$xe_msg_checking using extra libs -= llber" +test -n "$ldap_other_libs" && xe_msg_checking=3D"$xe_msg_checking using ex= tra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7876: checking "$xe_msg_checking"" >&5 +echo "configure:7921: checking "$xe_msg_checking"" >&5 ac_lib_var=3D`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` = -xe_check_libs=3D" -lldap -llber" +xe_check_libs=3D" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7937: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -7902,22 +7947,20 @@ xe_check_libs=3D"" = if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" =3D yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=3Dyes with_ldap_lber=3Dyes + with_ldap=3Dyes else echo "$ac_t""no" 1>&6 -fi - - } - test "$with_ldap" !=3D "yes" && { = +ldap_needs_krb=3Dyes ldap_other_libs=3D"$ldap_other_libs -lkrb" + = xe_msg_checking=3D"for ldap_open in -lldap" -test -n "-llber -lkrb" && xe_msg_checking=3D"$xe_msg_checking using extra = libs -llber -lkrb" +test -n "$ldap_other_libs" && xe_msg_checking=3D"$xe_msg_checking using ex= tra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7916: checking "$xe_msg_checking"" >&5 +echo "configure:7959: checking "$xe_msg_checking"" >&5 ac_lib_var=3D`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` = -xe_check_libs=3D" -lldap -llber -lkrb" +xe_check_libs=3D" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:7975: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -7942,22 +7985,20 @@ xe_check_libs=3D"" = if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" =3D yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=3Dyes with_ldap_lber=3Dyes with_ldap_krb=3Dyes + with_ldap=3Dyes else echo "$ac_t""no" 1>&6 -fi - - } - test "$with_ldap" !=3D "yes" && { = +ldap_needs_des=3Dyes ldap_other_libs=3D"$ldap_other_libs -ldes" + = xe_msg_checking=3D"for ldap_open in -lldap" -test -n "-llber -lkrb -ldes" && xe_msg_checking=3D"$xe_msg_checking using = extra libs -llber -lkrb -ldes" +test -n "$ldap_other_libs" && xe_msg_checking=3D"$xe_msg_checking using ex= tra libs $ldap_other_libs" echo $ac_n "checking "$xe_msg_checking"""... $ac_c" 1>&6 -echo "configure:7956: checking "$xe_msg_checking"" >&5 +echo "configure:7997: checking "$xe_msg_checking"" >&5 ac_lib_var=3D`echo ldap'_'ldap_open | sed 'y%./+-%__p_%'` = -xe_check_libs=3D" -lldap -llber -lkrb -ldes" +xe_check_libs=3D" -lldap $ldap_other_libs" cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -7982,50 +8023,88 @@ xe_check_libs=3D"" = if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" =3D yes" ; then echo "$ac_t""yes" 1>&6 - with_ldap=3Dyes with_ldap_lber=3Dyes with_ldap_krb=3Dyes with_ldap_des= =3Dyes + with_ldap=3Dyes else echo "$ac_t""no" 1>&6 +with_ldap=3Dno fi = - } - test "$with_ldap_lber" !=3D "yes" && { = -echo $ac_n "checking for ber_pvt_opt_on in -llber""... $ac_c" 1>&6 -echo "configure:7994: checking for ber_pvt_opt_on in -llber" >&5 -ac_lib_var=3D`echo lber'_'ber_pvt_opt_on | sed 'y%./+-%__p_%'` + +fi + + +fi + + +fi + = -xe_check_libs=3D" -llber " + if test yes =3D "$with_ldap";then + if test yes =3D "$ldap_needs_des";then + ldap_libs=3D"-ldes $ldap_libs" && if test "$extra_verbose" =3D "yes"; = then echo " Prepending \"-ldes\" to \$ldap_libs"; fi + fi + if test yes =3D "$ldap_needs_krb";then + ldap_libs=3D"-lkrb $ldap_libs" && if test "$extra_verbose" =3D "yes"; = then echo " Prepending \"-lkrb\" to \$ldap_libs"; fi + fi + if test yes =3D "$ldap_needs_lber";then + ldap_libs=3D"-llber $ldap_libs" && if test "$extra_verbose" =3D "yes";= then echo " Prepending \"-llber\" to \$ldap_libs"; fi + fi + ldap_libs=3D"-lldap $ldap_libs" && if test "$extra_verbose" =3D "yes"; t= hen echo " Prepending \"-lldap\" to \$ldap_libs"; fi + fi +fi + + else + save_LIBS=3D"$LIBS" LIBS=3D"$ldap_libs $LIBS" + echo $ac_n "checking for ldap_open""... $ac_c" 1>&6 +echo "configure:8060: checking for ldap_open" >&5 + cat > conftest.$ac_ext < /* Override any gcc2 internal prototype to avoid an error. */ /* We use char because int might match the return type of a gcc2 builtin and then its argument prototype would still apply. */ -char ber_pvt_opt_on(); +char ldap_open(); = int main() { -ber_pvt_opt_on() + +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined (__stub_ldap_open) || defined (__stub___ldap_open) +choke me +#else +ldap_open(); +#endif + ; return 0; } EOF -if { (eval echo configure:8010: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8086: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=3Dyes" + eval "ac_cv_func_ldap_open=3Dyes" else echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 rm -rf conftest* - eval "ac_cv_lib_$ac_lib_var=3Dno" + eval "ac_cv_func_ldap_open=3Dno" fi rm -f conftest* -xe_check_libs=3D"" = -if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" =3D yes" ; then +if eval "test \"`echo '$ac_cv_func_'ldap_open`\" =3D yes"; then echo "$ac_t""yes" 1>&6 - with_ldap_lber=3Dyes + with_ldap=3Dyes + test yes =3D "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs" else echo "$ac_t""no" 1>&6 + with_ldap=3Dno fi = - } + LIBS=3D"$save_LIBS" + fi fi if test "$with_ldap" =3D "yes"; then { test "$extra_verbose" =3D "yes" && cat << \EOF @@ -8039,23 +8118,14 @@ EOF extra_objs=3D"$extra_objs eldap.o" && if test "$extra_verbose" =3D "yes= "; then echo " xemacs will be linked with \"eldap.o\"" fi - if test "$with_ldap_des" =3D "yes" ; then - LIBS=3D"-ldes $LIBS" && if test "$extra_verbose" =3D "yes"; then echo= " Prepending \"-ldes\" to \$LIBS"; fi - fi - if test "$with_ldap_krb" =3D "yes" ; then - LIBS=3D"-lkrb $LIBS" && if test "$extra_verbose" =3D "yes"; then echo= " Prepending \"-lkrb\" to \$LIBS"; fi - fi - if test "$with_ldap_lber" =3D "yes" ; then - LIBS=3D"-llber $LIBS" && if test "$extra_verbose" =3D "yes"; then ech= o " Prepending \"-llber\" to \$LIBS"; fi - fi - LIBS=3D"-lldap $LIBS" && if test "$extra_verbose" =3D "yes"; then echo = " Prepending \"-lldap\" to \$LIBS"; fi + LIBS=3D"$ldap_libs $LIBS" for ac_func in ldap_set_option ldap_get_lderrno ldap_result2error ldap_p= arse_result do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:8056: checking for $ac_func" >&5 +echo "configure:8126: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8152: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -8109,20 +8179,20 @@ fi = if test "$with_postgresql" !=3D "no"; then echo "checking for PostgreSQL" 1>&6 -echo "configure:8113: checking for PostgreSQL" >&5 +echo "configure:8183: checking for PostgreSQL" >&5 = for header_dir in "" "pgsql/" "postgresql/"; do ac_safe=3D`echo "${header_dir}libpq-fe.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${header_dir}libpq-fe.h""... $ac_c" 1>&6 -echo "configure:8118: checking for ${header_dir}libpq-fe.h" >&5 +echo "configure:8188: checking for ${header_dir}libpq-fe.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8126: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8196: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8146,12 +8216,12 @@ fi = test -n "$libpq_fe_h_file" && { = echo $ac_n "checking for PQconnectdb in -lpq""... $ac_c" 1>&6 -echo "configure:8150: checking for PQconnectdb in -lpq" >&5 +echo "configure:8220: checking for PQconnectdb in -lpq" >&5 ac_lib_var=3D`echo pq'_'PQconnectdb | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8236: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8195,12 +8265,12 @@ EOF = = echo $ac_n "checking for PQconnectStart in -lpq""... $ac_c" 1>&6 -echo "configure:8199: checking for PQconnectStart in -lpq" >&5 +echo "configure:8269: checking for PQconnectStart in -lpq" >&5 ac_lib_var=3D`echo pq'_'PQconnectStart | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lpq " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8285: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8259,7 +8329,7 @@ fi = if test "$window_system" !=3D "none"; then echo "checking for graphics libraries" 1>&6 -echo "configure:8263: checking for graphics libraries" >&5 +echo "configure:8333: checking for graphics libraries" >&5 = libpath_xpm=3D incpath_xpm=3D @@ -8285,10 +8355,10 @@ echo "configure:8263: checking for graph CFLAGS=3D""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" =3D "ye= s"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi LDFLAGS=3D""$libpath_xpm" $LDFLAGS" && if test "$extra_verbose" =3D "= yes"; then echo " Prepending \""$libpath_xpm"\" to \$LDFLAGS"; fi echo $ac_n "checking for Xpm - no older than 3.4f""... $ac_c" 1>&6 -echo "configure:8289: checking for Xpm - no older than 3.4f" >&5 +echo "configure:8359: checking for Xpm - no older than 3.4f" >&5 xe_check_libs=3D-lXpm cat > conftest.$ac_ext < @@ -8297,7 +8367,7 @@ echo "configure:8289: checking for Xpm - XpmIncludeVersion !=3D XpmLibraryVersion() ? 1 : XpmIncludeVersion < 30406 ? 2 : 0 ;} EOF -if { (eval echo configure:8301: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8371: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest dummy_arg; xpm_status=3D$?; if test "$xpm_status" =3D "0"; then @@ -8341,17 +8411,17 @@ EOF libs_x=3D"-lXpm $libs_x" && if test "$extra_verbose" =3D "yes"; then = echo " Prepending \"-lXpm\" to \$libs_x"; fi CFLAGS=3D""$incpath_xpm" $CFLAGS" && if test "$extra_verbose" =3D "ye= s"; then echo " Prepending \""$incpath_xpm"\" to \$CFLAGS"; fi echo $ac_n "checking for \"FOR_MSW\" xpm""... $ac_c" 1>&6 -echo "configure:8345: checking for \"FOR_MSW\" xpm" >&5 +echo "configure:8415: checking for \"FOR_MSW\" xpm" >&5 xe_check_libs=3D-lXpm cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8425: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* xpm_for_msw=3Dno else @@ -8377,15 +8447,15 @@ EOF = test -z "$with_xface" && { ac_safe=3D`echo "compface.h" | sed 'y%./+-%= __p_%'` echo $ac_n "checking for compface.h""... $ac_c" 1>&6 -echo "configure:8381: checking for compface.h" >&5 +echo "configure:8451: checking for compface.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8389: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8408,12 +8478,12 @@ fi } test -z "$with_xface" && { = echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8412: checking for UnGenFace in -lcompface" >&5 +echo "configure:8482: checking for UnGenFace in -lcompface" >&5 ac_lib_var=3D`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8498: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8476,12 +8546,12 @@ EOF if test "$with_png $with_tiff" !=3D "no no"; then = echo $ac_n "checking for inflate in -lc""... $ac_c" 1>&6 -echo "configure:8480: checking for inflate in -lc" >&5 +echo "configure:8550: checking for inflate in -lc" >&5 ac_lib_var=3D`echo c'_'inflate | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8566: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8511,12 +8581,12 @@ else echo "$ac_t""no" 1>&6 = echo $ac_n "checking for inflate in -lz""... $ac_c" 1>&6 -echo "configure:8515: checking for inflate in -lz" >&5 +echo "configure:8585: checking for inflate in -lz" >&5 ac_lib_var=3D`echo z'_'inflate | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8601: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8546,12 +8616,12 @@ else echo "$ac_t""no" 1>&6 = echo $ac_n "checking for inflate in -lgz""... $ac_c" 1>&6 -echo "configure:8550: checking for inflate in -lgz" >&5 +echo "configure:8620: checking for inflate in -lgz" >&5 ac_lib_var=3D`echo gz'_'inflate | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lgz " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8636: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8592,15 +8662,15 @@ fi = test -z "$with_jpeg" && { ac_safe=3D`echo "jpeglib.h" | sed 'y%./+-%__= p_%'` echo $ac_n "checking for jpeglib.h""... $ac_c" 1>&6 -echo "configure:8596: checking for jpeglib.h" >&5 +echo "configure:8666: checking for jpeglib.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8604: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8674: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8623,12 +8693,12 @@ fi } test -z "$with_jpeg" && { = echo $ac_n "checking for jpeg_destroy_decompress in -ljpeg""... $ac_c" 1>&6 -echo "configure:8627: checking for jpeg_destroy_decompress in -ljpeg" >&5 +echo "configure:8697: checking for jpeg_destroy_decompress in -ljpeg" >&5 ac_lib_var=3D`echo jpeg'_'jpeg_destroy_decompress | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ljpeg " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8713: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8675,10 +8745,10 @@ EOF = png_problem=3D"" test -z "$with_png" && { echo $ac_n "checking for pow""... $ac_c" 1>&6 -echo "configure:8679: checking for pow" >&5 +echo "configure:8749: checking for pow" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_pow=3Dyes" else @@ -8722,15 +8792,15 @@ fi } test -z "$with_png" && { ac_safe=3D`echo "png.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for png.h""... $ac_c" 1>&6 -echo "configure:8726: checking for png.h" >&5 +echo "configure:8796: checking for png.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8734: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8804: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8753,12 +8823,12 @@ fi } test -z "$with_png" && { = echo $ac_n "checking for png_read_image in -lpng""... $ac_c" 1>&6 -echo "configure:8757: checking for png_read_image in -lpng" >&5 +echo "configure:8827: checking for png_read_image in -lpng" >&5 ac_lib_var=3D`echo png'_'png_read_image | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lpng " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8792,10 +8862,10 @@ fi } if test -z "$with_png"; then echo $ac_n "checking for workable png version information""... $ac_c" = 1>&6 -echo "configure:8796: checking for workable png version information" >&5 +echo "configure:8866: checking for workable png version information" >&5 xe_check_libs=3D"-lpng -lz" cat > conftest.$ac_ext < int main(int c, char **v) { @@ -8803,7 +8873,7 @@ echo "configure:8796: checking for worka if (strcmp(png_libpng_ver, PNG_LIBPNG_VER_STRING) !=3D 0) return 1; return (PNG_LIBPNG_VER < 10002) ? 2 : 0 ;} EOF -if { (eval echo configure:8807: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:8877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest && (./conftest; exit $?) 2>&5 then ./conftest dummy_arg; png_status=3D$?; if test "$png_status" =3D "0"; then @@ -8846,15 +8916,15 @@ EOF = test -z "$with_tiff" && { ac_safe=3D`echo "tiffio.h" | sed 'y%./+-%__p= _%'` echo $ac_n "checking for tiffio.h""... $ac_c" 1>&6 -echo "configure:8850: checking for tiffio.h" >&5 +echo "configure:8920: checking for tiffio.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8858: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:8928: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8877,12 +8947,12 @@ fi } test -z "$with_tiff" && { = echo $ac_n "checking for TIFFClientOpen in -ltiff""... $ac_c" 1>&6 -echo "configure:8881: checking for TIFFClientOpen in -ltiff" >&5 +echo "configure:8951: checking for TIFFClientOpen in -ltiff" >&5 ac_lib_var=3D`echo tiff'_'TIFFClientOpen | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ltiff " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:8967: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -8932,15 +9002,15 @@ fi if test "$with_gtk" =3D "yes"; then test -z "$with_xface" && { ac_safe=3D`echo "compface.h" | sed 'y%./+-%= __p_%'` echo $ac_n "checking for compface.h""... $ac_c" 1>&6 -echo "configure:8936: checking for compface.h" >&5 +echo "configure:9006: checking for compface.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:8944: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9014: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -8963,12 +9033,12 @@ fi } test -z "$with_xface" && { = echo $ac_n "checking for UnGenFace in -lcompface""... $ac_c" 1>&6 -echo "configure:8967: checking for UnGenFace in -lcompface" >&5 +echo "configure:9037: checking for UnGenFace in -lcompface" >&5 ac_lib_var=3D`echo compface'_'UnGenFace | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lcompface " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9018,12 +9088,12 @@ fi = if test "$with_x11" =3D "yes"; then echo "checking for X11 graphics libraries" 1>&6 -echo "configure:9022: checking for X11 graphics libraries" >&5 +echo "configure:9092: checking for X11 graphics libraries" >&5 fi = if test "$with_x11" =3D "yes"; then echo "checking for the Athena widgets" 1>&6 -echo "configure:9027: checking for the Athena widgets" >&5 +echo "configure:9097: checking for the Athena widgets" >&5 = case "$with_athena" in "xaw" | "") athena_variant=3DXaw athena_3d=3Dno ;; @@ -9039,12 +9109,12 @@ echo "configure:9027: checking for the A if test "$athena_3d" =3D "no"; then = echo $ac_n "checking for XawScrollbarSetThumb in -l$athena_variant""... $a= c_c" 1>&6 -echo "configure:9043: checking for XawScrollbarSetThumb in -l$athena_varia= nt" >&5 +echo "configure:9113: checking for XawScrollbarSetThumb in -l$athena_varia= nt" >&5 ac_lib_var=3D`echo $athena_variant'_'XawScrollbarSetThumb | sed 'y%./+-%__= p_%'` = xe_check_libs=3D" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9129: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9071,12 +9141,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l echo "$ac_t""yes" 1>&6 = echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac= _c" 1>&6 -echo "configure:9075: checking for $athena_3d_function in -l$athena_varian= t" >&5 +echo "configure:9145: checking for $athena_3d_function in -l$athena_varian= t" >&5 ac_lib_var=3D`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p= _%'` = xe_check_libs=3D" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9161: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9118,12 +9188,12 @@ fi else = echo $ac_n "checking for $athena_3d_function in -l$athena_variant""... $ac= _c" 1>&6 -echo "configure:9122: checking for $athena_3d_function in -l$athena_varian= t" >&5 +echo "configure:9192: checking for $athena_3d_function in -l$athena_varian= t" >&5 ac_lib_var=3D`echo $athena_variant'_'$athena_3d_function | sed 'y%./+-%__p= _%'` = xe_check_libs=3D" -l$athena_variant " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9208: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9152,12 +9222,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l else echo "$ac_t""no" 1>&6 echo $ac_n "checking for $athena_3d_function in -lXaw""... $ac_c" 1>&6 -echo "configure:9156: checking for $athena_3d_function in -lXaw" >&5 +echo "configure:9226: checking for $athena_3d_function in -lXaw" >&5 ac_lib_var=3D`echo Xaw'_'$athena_3d_function | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lXaw " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9242: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9199,15 +9269,15 @@ fi if test "$athena_3d" =3D "no"; then ac_safe=3D`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9203: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9273: checking for X11/Xaw/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9211: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9281: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9227,15 +9297,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=3D`echo "X11/Xaw/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/XawInit.h""... $ac_c" 1>&6 -echo "configure:9231: checking for X11/Xaw/XawInit.h" >&5 +echo "configure:9301: checking for X11/Xaw/XawInit.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9239: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9309: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9261,15 +9331,15 @@ fi else ac_safe=3D`echo "X11/$athena_variant/XawInit.h" | sed 'y%./+-%= __p_%'` echo $ac_n "checking for X11/$athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:9265: checking for X11/$athena_variant/XawInit.h" >&5 +echo "configure:9335: checking for X11/$athena_variant/XawInit.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9273: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9286,15 +9356,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "X11/$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/$athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9290: checking for X11/$athena_variant/ThreeD.h" >&5 +echo "configure:9360: checking for X11/$athena_variant/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9298: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9368: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9322,15 +9392,15 @@ fi if test -z "$athena_h_path"; then ac_safe=3D`echo "$athena_variant/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $athena_variant/XawInit.h""... $ac_c" 1>&6 -echo "configure:9326: checking for $athena_variant/XawInit.h" >&5 +echo "configure:9396: checking for $athena_variant/XawInit.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9334: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9404: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9347,15 +9417,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "$athena_variant/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $athena_variant/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9351: checking for $athena_variant/ThreeD.h" >&5 +echo "configure:9421: checking for $athena_variant/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9359: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9384,15 +9454,15 @@ fi if test -z "$athena_h_path" -a "$athena_variant" !=3D "Xaw3d"; then ac_safe=3D`echo "X11/Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:9388: checking for X11/Xaw3d/XawInit.h" >&5 +echo "configure:9458: checking for X11/Xaw3d/XawInit.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9396: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9466: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9409,15 +9479,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "X11/Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9413: checking for X11/Xaw3d/ThreeD.h" >&5 +echo "configure:9483: checking for X11/Xaw3d/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9491: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9449,15 +9519,15 @@ fi if test -z "$athena_h_path" -a "$athena_variant" !=3D "Xaw3d"; then ac_safe=3D`echo "Xaw3d/XawInit.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xaw3d/XawInit.h""... $ac_c" 1>&6 -echo "configure:9453: checking for Xaw3d/XawInit.h" >&5 +echo "configure:9523: checking for Xaw3d/XawInit.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9461: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9531: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9474,15 +9544,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "Xaw3d/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xaw3d/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9478: checking for Xaw3d/ThreeD.h" >&5 +echo "configure:9548: checking for Xaw3d/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9486: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9556: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9514,15 +9584,15 @@ fi if test -z "$athena_h_path"; then ac_safe=3D`echo "X11/Xaw/ThreeD.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for X11/Xaw/ThreeD.h""... $ac_c" 1>&6 -echo "configure:9518: checking for X11/Xaw/ThreeD.h" >&5 +echo "configure:9588: checking for X11/Xaw/ThreeD.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9526: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9596: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9561,15 +9631,15 @@ fi = if test "$with_x11" =3D "yes"; then ac_safe=3D`echo "Xm/Xm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for Xm/Xm.h""... $ac_c" 1>&6 -echo "configure:9565: checking for Xm/Xm.h" >&5 +echo "configure:9635: checking for Xm/Xm.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:9573: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:9643: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -9586,12 +9656,12 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 = echo $ac_n "checking for XmStringFree in -lXm""... $ac_c" 1>&6 -echo "configure:9590: checking for XmStringFree in -lXm" >&5 +echo "configure:9660: checking for XmStringFree in -lXm" >&5 ac_lib_var=3D`echo Xm'_'XmStringFree | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then +if { (eval echo configure:9676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; = } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -9631,9 +9701,9 @@ fi = if test "$have_motif" =3D "yes"; then echo $ac_n "checking for Lesstif""... $ac_c" 1>&6 -echo "configure:9635: checking for Lesstif" >&5 +echo "configure:9705: checking for Lesstif" >&5 cat > conftest.$ac_ext < #ifdef LESSTIF_VERSION @@ -10079,7 +10149,7 @@ fi = if test "$with_mule" =3D "yes" ; then echo "checking for Mule-related features" 1>&6 -echo "configure:10083: checking for Mule-related features" >&5 +echo "configure:10153: checking for Mule-related features" >&5 { test "$extra_verbose" =3D "yes" && cat << \EOF Defining MULE EOF @@ -10104,15 +10174,15 @@ EOF do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:10108: checking for $ac_hdr" >&5 +echo "configure:10178: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10116: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10186: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10143,12 +10213,12 @@ done = = echo $ac_n "checking for strerror in -lintl""... $ac_c" 1>&6 -echo "configure:10147: checking for strerror in -lintl" >&5 +echo "configure:10217: checking for strerror in -lintl" >&5 ac_lib_var=3D`echo intl'_'strerror | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lintl " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10233: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10192,18 +10262,18 @@ fi = = echo "checking for Mule input methods" 1>&6 -echo "configure:10196: checking for Mule input methods" >&5 +echo "configure:10266: checking for Mule input methods" >&5 case "$with_xim" in "" | "yes" ) echo "checking for XIM" 1>&6 -echo "configure:10199: checking for XIM" >&5 +echo "configure:10269: checking for XIM" >&5 = echo $ac_n "checking for XOpenIM in -lX11""... $ac_c" 1>&6 -echo "configure:10202: checking for XOpenIM in -lX11" >&5 +echo "configure:10272: checking for XOpenIM in -lX11" >&5 ac_lib_var=3D`echo X11'_'XOpenIM | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10288: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10238,12 +10308,12 @@ fi if test "$need_motif $have_lesstif" =3D "yes no"; then = echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:10242: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10312: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=3D`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10328: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10277,12 +10347,12 @@ fi elif test "$have_motif $have_lesstif $with_xim" =3D "yes no no"; then = echo $ac_n "checking for XmImMbLookupString in -lXm""... $ac_c" 1>&6 -echo "configure:10281: checking for XmImMbLookupString in -lXm" >&5 +echo "configure:10351: checking for XmImMbLookupString in -lXm" >&5 ac_lib_var=3D`echo Xm'_'XmImMbLookupString | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lXm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10367: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10358,15 +10428,15 @@ EOF = if test "$with_xfs" =3D "yes" ; then echo "checking for XFontSet" 1>&6 -echo "configure:10362: checking for XFontSet" >&5 +echo "configure:10432: checking for XFontSet" >&5 = echo $ac_n "checking for XmbDrawString in -lX11""... $ac_c" 1>&6 -echo "configure:10365: checking for XmbDrawString in -lX11" >&5 +echo "configure:10435: checking for XmbDrawString in -lX11" >&5 ac_lib_var=3D`echo X11'_'XmbDrawString | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lX11 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10451: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10417,15 +10487,15 @@ EOF test "$with_wnn6" =3D "yes" && with_wnn=3Dyes # wnn6 implies wnn suppo= rt test -z "$with_wnn" && { ac_safe=3D`echo "wnn/jllib.h" | sed 'y%./+-%__p= _%'` echo $ac_n "checking for wnn/jllib.h""... $ac_c" 1>&6 -echo "configure:10421: checking for wnn/jllib.h" >&5 +echo "configure:10491: checking for wnn/jllib.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10429: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10499: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10448,15 +10518,15 @@ fi } test -z "$with_wnn" && { ac_safe=3D`echo "wnn/commonhd.h" | sed 'y%./+= -%__p_%'` echo $ac_n "checking for wnn/commonhd.h""... $ac_c" 1>&6 -echo "configure:10452: checking for wnn/commonhd.h" >&5 +echo "configure:10522: checking for wnn/commonhd.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10460: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10530: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10481,10 +10551,10 @@ fi for ac_func in crypt do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:10485: checking for $ac_func" >&5 +echo "configure:10555: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10581: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -10536,12 +10606,12 @@ done = test "$ac_cv_func_crypt" !=3D "yes" && { = echo $ac_n "checking for crypt in -lcrypt""... $ac_c" 1>&6 -echo "configure:10540: checking for crypt in -lcrypt" >&5 +echo "configure:10610: checking for crypt in -lcrypt" >&5 ac_lib_var=3D`echo crypt'_'crypt | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lcrypt " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10626: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10587,12 +10657,12 @@ fi if test -z "$with_wnn" -o "$with_wnn" =3D "yes"; then = echo $ac_n "checking for jl_dic_list_e in -lwnn""... $ac_c" 1>&6 -echo "configure:10591: checking for jl_dic_list_e in -lwnn" >&5 +echo "configure:10661: checking for jl_dic_list_e in -lwnn" >&5 ac_lib_var=3D`echo wnn'_'jl_dic_list_e | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10677: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10621,12 +10691,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn4""... $ac_c" 1>&6 -echo "configure:10625: checking for jl_dic_list_e in -lwnn4" >&5 +echo "configure:10695: checking for jl_dic_list_e in -lwnn4" >&5 ac_lib_var=3D`echo wnn4'_'jl_dic_list_e | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lwnn4 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10655,12 +10725,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l else echo "$ac_t""no" 1>&6 echo $ac_n "checking for jl_dic_list_e in -lwnn6""... $ac_c" 1>&6 -echo "configure:10659: checking for jl_dic_list_e in -lwnn6" >&5 +echo "configure:10729: checking for jl_dic_list_e in -lwnn6" >&5 ac_lib_var=3D`echo wnn6'_'jl_dic_list_e | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lwnn6 " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10745: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10689,12 +10759,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l else echo "$ac_t""no" 1>&6 echo $ac_n "checking for dic_list_e in -lwnn6_fromsrc""... $ac_c" 1>&6 -echo "configure:10693: checking for dic_list_e in -lwnn6_fromsrc" >&5 +echo "configure:10763: checking for dic_list_e in -lwnn6_fromsrc" >&5 ac_lib_var=3D`echo wnn6_fromsrc'_'dic_list_e | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lwnn6_fromsrc " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10779: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10753,12 +10823,12 @@ EOF if test "$with_wnn6" !=3D "no"; then = echo $ac_n "checking for jl_fi_dic_list in -l$libwnn""... $ac_c" 1>&6 -echo "configure:10757: checking for jl_fi_dic_list in -l$libwnn" >&5 +echo "configure:10827: checking for jl_fi_dic_list in -l$libwnn" >&5 ac_lib_var=3D`echo $libwnn'_'jl_fi_dic_list | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -l$libwnn " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10843: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10804,15 +10874,15 @@ EOF if test "$with_canna" !=3D "no"; then ac_safe=3D`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:10808: checking for canna/jrkanji.h" >&5 +echo "configure:10878: checking for canna/jrkanji.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10816: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10886: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10839,15 +10909,15 @@ fi c_switch_site=3D"$c_switch_site -I/usr/local/canna/include" ac_safe=3D`echo "canna/jrkanji.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for canna/jrkanji.h""... $ac_c" 1>&6 -echo "configure:10843: checking for canna/jrkanji.h" >&5 +echo "configure:10913: checking for canna/jrkanji.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10921: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10875,15 +10945,15 @@ fi = test -z "$with_canna" && { ac_safe=3D`echo "canna/RK.h" | sed 'y%./+-%__= p_%'` echo $ac_n "checking for canna/RK.h""... $ac_c" 1>&6 -echo "configure:10879: checking for canna/RK.h" >&5 +echo "configure:10949: checking for canna/RK.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:10887: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:10957: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -10906,12 +10976,12 @@ fi } test -z "$with_canna" && { = echo $ac_n "checking for RkBgnBun in -lRKC""... $ac_c" 1>&6 -echo "configure:10910: checking for RkBgnBun in -lRKC" >&5 +echo "configure:10980: checking for RkBgnBun in -lRKC" >&5 ac_lib_var=3D`echo RKC'_'RkBgnBun | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lRKC " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:10996: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -10945,12 +11015,12 @@ fi } test -z "$with_canna" && { = echo $ac_n "checking for jrKanjiControl in -lcanna""... $ac_c" 1>&6 -echo "configure:10949: checking for jrKanjiControl in -lcanna" >&5 +echo "configure:11019: checking for jrKanjiControl in -lcanna" >&5 ac_lib_var=3D`echo canna'_'jrKanjiControl | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lcanna " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -11010,12 +11080,12 @@ if test "$need_motif" =3D "yes" ; then libs_x=3D"-lXm $libs_x" && if test "$extra_verbose" =3D "yes"; then ech= o " Prepending \"-lXm\" to \$libs_x"; fi = echo $ac_n "checking for layout_object_getvalue in -li18n""... $ac_c" 1>&6 -echo "configure:11014: checking for layout_object_getvalue in -li18n" >&5 +echo "configure:11084: checking for layout_object_getvalue in -li18n" >&5 ac_lib_var=3D`echo i18n'_'layout_object_getvalue | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -li18n " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11100: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -11113,10 +11183,10 @@ fi for ac_func in cbrt closedir dup2 eaccess fmod fpathconf frexp ftime getad= drinfo gethostname getnameinfo getpagesize gettimeofday getcwd getwd logb l= rand48 matherr mkdir mktime perror poll random rename res_init rint rmdir s= elect setitimer setpgid setlocale setsid sigblock sighold sigprocmask snpri= ntf stpcpy strerror tzset ulimit usleep waitpid vsnprintf fsync ftruncate u= mask do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11117: checking for $ac_func" >&5 +echo "configure:11187: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11213: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -11180,10 +11250,10 @@ fi for ac_func in getpt _getpty grantpt unlockpt ptsname killpg tcgetpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11184: checking for $ac_func" >&5 +echo "configure:11254: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11280: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -11235,10 +11305,10 @@ done = = echo $ac_n "checking for openpty""... $ac_c" 1>&6 -echo "configure:11239: checking for openpty" >&5 +echo "configure:11309: checking for openpty" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11335: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_openpty=3Dyes" else @@ -11280,12 +11350,12 @@ else = = echo $ac_n "checking for openpty in -lutil""... $ac_c" 1>&6 -echo "configure:11284: checking for openpty in -lutil" >&5 +echo "configure:11354: checking for openpty in -lutil" >&5 ac_lib_var=3D`echo util'_'openpty | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lutil " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11370: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -11331,15 +11401,15 @@ EOF do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11335: checking for $ac_hdr" >&5 +echo "configure:11405: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11343: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11413: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11375,15 +11445,15 @@ for ac_hdr in stropts.h do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11379: checking for $ac_hdr" >&5 +echo "configure:11449: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11387: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11457: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11416,10 +11486,10 @@ if test "$ac_cv_header_stropts_h" =3D "yes for ac_func in isastream do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11420: checking for $ac_func" >&5 +echo "configure:11490: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11516: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -11473,15 +11543,15 @@ done do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11477: checking for $ac_hdr" >&5 +echo "configure:11547: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11485: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11518,10 +11588,10 @@ extra_objs=3D"$extra_objs realpath.o" && = for ac_func in getloadavg do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:11522: checking for $ac_func" >&5 +echo "configure:11592: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11618: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -11577,15 +11647,15 @@ if test "$ac_cv_func_getloadavg" =3D "yes" do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11581: checking for $ac_hdr" >&5 +echo "configure:11651: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11589: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11659: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11621,12 +11691,12 @@ else = = echo $ac_n "checking for kstat_open in -lkstat""... $ac_c" 1>&6 -echo "configure:11625: checking for kstat_open in -lkstat" >&5 +echo "configure:11695: checking for kstat_open in -lkstat" >&5 ac_lib_var=3D`echo kstat'_'kstat_open | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lkstat " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -11672,15 +11742,15 @@ fi do ac_safe=3D`echo "$ac_hdr" | sed 'y%./+-%__p_%'` echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6 -echo "configure:11676: checking for $ac_hdr" >&5 +echo "configure:11746: checking for $ac_hdr" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:11684: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:11754: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -11712,12 +11782,12 @@ done = = echo $ac_n "checking for kvm_read in -lkvm""... $ac_c" 1>&6 -echo "configure:11716: checking for kvm_read in -lkvm" >&5 +echo "configure:11786: checking for kvm_read in -lkvm" >&5 ac_lib_var=3D`echo kvm'_'kvm_read | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lkvm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11802: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -11762,16 +11832,16 @@ fi fi = echo $ac_n "checking whether netdb declares h_errno""... $ac_c" 1>&6 -echo "configure:11766: checking whether netdb declares h_errno" >&5 +echo "configure:11836: checking whether netdb declares h_errno" >&5 cat > conftest.$ac_ext < int main() { return h_errno; ; return 0; } EOF -if { (eval echo configure:11775: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11845: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" =3D "yes" && cat << \EOF @@ -11791,16 +11861,16 @@ fi rm -f conftest* = echo $ac_n "checking for sigsetjmp""... $ac_c" 1>&6 -echo "configure:11795: checking for sigsetjmp" >&5 +echo "configure:11865: checking for sigsetjmp" >&5 cat > conftest.$ac_ext < int main() { sigjmp_buf bar; sigsetjmp (bar, 0); ; return 0; } EOF -if { (eval echo configure:11804: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:11874: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* echo "$ac_t""yes" 1>&6 { test "$extra_verbose" =3D "yes" && cat << \EOF @@ -11820,11 +11890,11 @@ fi rm -f conftest* = echo $ac_n "checking whether localtime caches TZ""... $ac_c" 1>&6 -echo "configure:11824: checking whether localtime caches TZ" >&5 +echo "configure:11894: checking whether localtime caches TZ" >&5 = if test "$ac_cv_func_tzset" =3D "yes"; then cat > conftest.$ac_ext < #if STDC_HEADERS @@ -11859,7 +11929,7 @@ main() exit (0); } EOF -if { (eval echo configure:11863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:11933: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then emacs_cv_localtime_cache=3Dno else @@ -11889,9 +11959,9 @@ fi = if test "$HAVE_TIMEVAL" =3D "yes"; then echo $ac_n "checking whether gettimeofday accepts one or two arguments""..= . $ac_c" 1>&6 -echo "configure:11893: checking whether gettimeofday accepts one or two ar= guments" >&5 +echo "configure:11963: checking whether gettimeofday accepts one or two ar= guments" >&5 cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:11986: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""two" 1>&6 else @@ -11934,19 +12004,19 @@ fi = = echo $ac_n "checking for inline""... $ac_c" 1>&6 -echo "configure:11938: checking for inline" >&5 +echo "configure:12008: checking for inline" >&5 = ac_cv_c_inline=3Dno for ac_kw in inline __inline__ __inline; do cat > conftest.$ac_ext <&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:12020: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* ac_cv_c_inline=3D$ac_kw; break else @@ -11987,17 +12057,17 @@ if test "$__DECC" !=3D "yes"; then # The Ultrix 4.2 mips builtin alloca declared by alloca.h only works # for constant arguments. Useless! echo $ac_n "checking for working alloca.h""... $ac_c" 1>&6 -echo "configure:11991: checking for working alloca.h" >&5 +echo "configure:12061: checking for working alloca.h" >&5 = cat > conftest.$ac_ext < int main() { char *p =3D alloca(2 * sizeof(int)); ; return 0; } EOF -if { (eval echo configure:12001: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12071: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_header_alloca_h=3Dyes else @@ -12021,10 +12091,10 @@ EOF fi = echo $ac_n "checking for alloca""... $ac_c" 1>&6 -echo "configure:12025: checking for alloca" >&5 +echo "configure:12095: checking for alloca" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12126: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* ac_cv_func_alloca_works=3Dyes else @@ -12091,10 +12161,10 @@ EOF = = echo $ac_n "checking whether alloca needs Cray hooks""... $ac_c" 1>&6 -echo "configure:12095: checking whether alloca needs Cray hooks" >&5 +echo "configure:12165: checking whether alloca needs Cray hooks" >&5 = cat > conftest.$ac_ext <&6 if test $ac_cv_os_cray =3D yes; then for ac_func in _getb67 GETB67 getb67; do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12122: checking for $ac_func" >&5 +echo "configure:12192: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12218: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -12174,10 +12244,10 @@ done fi = echo $ac_n "checking stack direction for C alloca""... $ac_c" 1>&6 -echo "configure:12178: checking stack direction for C alloca" >&5 +echo "configure:12248: checking stack direction for C alloca" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12270: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_c_stack_direction=3D1 else @@ -12226,15 +12296,15 @@ fi = ac_safe=3D`echo "vfork.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for vfork.h""... $ac_c" 1>&6 -echo "configure:12230: checking for vfork.h" >&5 +echo "configure:12300: checking for vfork.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12238: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12308: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12262,10 +12332,10 @@ else fi = echo $ac_n "checking for working vfork""... $ac_c" 1>&6 -echo "configure:12266: checking for working vfork" >&5 +echo "configure:12336: checking for working vfork" >&5 = cat > conftest.$ac_ext < @@ -12360,7 +12430,7 @@ main() { } } EOF -if { (eval echo configure:12364: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12434: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_vfork_works=3Dyes else @@ -12386,10 +12456,10 @@ fi = = echo $ac_n "checking for working strcoll""... $ac_c" 1>&6 -echo "configure:12390: checking for working strcoll" >&5 +echo "configure:12460: checking for working strcoll" >&5 = cat > conftest.$ac_ext < main () @@ -12399,7 +12469,7 @@ main () strcoll ("123", "456") >=3D 0); } EOF -if { (eval echo configure:12403: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12473: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_strcoll_works=3Dyes else @@ -12427,10 +12497,10 @@ fi for ac_func in getpgrp do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:12431: checking for $ac_func" >&5 +echo "configure:12501: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -12481,10 +12551,10 @@ fi done = echo $ac_n "checking whether getpgrp takes no argument""... $ac_c" 1>&6 -echo "configure:12485: checking whether getpgrp takes no argument" >&5 +echo "configure:12555: checking whether getpgrp takes no argument" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12613: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then ac_cv_func_getpgrp_void=3Dyes else @@ -12566,10 +12636,10 @@ fi = = echo $ac_n "checking for working mmap""... $ac_c" 1>&6 -echo "configure:12570: checking for working mmap" >&5 +echo "configure:12640: checking for working mmap" >&5 case "$opsys" in ultrix* ) have_mmap=3Dno ;; *) cat > conftest.$ac_ext < #include @@ -12602,7 +12672,7 @@ int main (int argc, char *argv[]) return 1; } EOF -if { (eval echo configure:12606: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:12676: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then have_mmap=3Dyes else @@ -12631,9 +12701,9 @@ test "$GNU_MALLOC" !=3D "yes" -a "$have_mm if test "$rel_alloc $have_mmap" =3D "default yes"; then if test "$doug_lea_malloc" =3D "yes"; then echo $ac_n "checking for M_MMAP_THRESHOLD""... $ac_c" 1>&6 -echo "configure:12635: checking for M_MMAP_THRESHOLD" >&5 +echo "configure:12705: checking for M_MMAP_THRESHOLD" >&5 cat > conftest.$ac_ext < int main() { @@ -12645,7 +12715,7 @@ int main() { = ; return 0; } EOF -if { (eval echo configure:12649: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:12719: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* rel_alloc=3Dno; echo "$ac_t""yes" 1>&6; else @@ -12670,15 +12740,15 @@ EOF = ac_safe=3D`echo "termios.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termios.h""... $ac_c" 1>&6 -echo "configure:12674: checking for termios.h" >&5 +echo "configure:12744: checking for termios.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12682: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12752: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12721,15 +12791,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=3D`echo "termio.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for termio.h""... $ac_c" 1>&6 -echo "configure:12725: checking for termio.h" >&5 +echo "configure:12795: checking for termio.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12733: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12803: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12761,10 +12831,10 @@ fi = = echo $ac_n "checking for socket""... $ac_c" 1>&6 -echo "configure:12765: checking for socket" >&5 +echo "configure:12835: checking for socket" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12861: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_socket=3Dyes" else @@ -12802,15 +12872,15 @@ if eval "test \"`echo '$ac_cv_func_'sock echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "netinet/in.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for netinet/in.h""... $ac_c" 1>&6 -echo "configure:12806: checking for netinet/in.h" >&5 +echo "configure:12876: checking for netinet/in.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12814: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12884: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12827,15 +12897,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "arpa/inet.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for arpa/inet.h""... $ac_c" 1>&6 -echo "configure:12831: checking for arpa/inet.h" >&5 +echo "configure:12901: checking for arpa/inet.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12839: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:12909: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -12860,9 +12930,9 @@ EOF } = echo $ac_n "checking "for sun_len member in struct sockaddr_un"""...= $ac_c" 1>&6 -echo "configure:12864: checking "for sun_len member in struct sockaddr_un"= " >&5 +echo "configure:12934: checking "for sun_len member in struct sockaddr_un"= " >&5 cat > conftest.$ac_ext < @@ -12873,7 +12943,7 @@ int main() { static struct sockaddr_un x; x.sun_len =3D 1; ; return 0; } EOF -if { (eval echo configure:12877: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12947: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" =3D "yes" && cat << \EOF Defining HAVE_SOCKADDR_SUN_LEN @@ -12891,9 +12961,9 @@ else fi rm -f conftest* echo $ac_n "checking "for ip_mreq struct in netinet/in.h"""... $ac_c= " 1>&6 -echo "configure:12895: checking "for ip_mreq struct in netinet/in.h"" >&5 +echo "configure:12965: checking "for ip_mreq struct in netinet/in.h"" >&5 cat > conftest.$ac_ext < @@ -12903,7 +12973,7 @@ int main() { static struct ip_mreq x; ; return 0; } EOF -if { (eval echo configure:12907: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:12977: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* echo "$ac_t""yes" 1>&6; { test "$extra_verbose" =3D "yes" && cat << \EOF Defining HAVE_MULTICAST @@ -12934,10 +13004,10 @@ fi = = echo $ac_n "checking for msgget""... $ac_c" 1>&6 -echo "configure:12938: checking for msgget" >&5 +echo "configure:13008: checking for msgget" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13034: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_msgget=3Dyes" else @@ -12975,15 +13045,15 @@ if eval "test \"`echo '$ac_cv_func_'msgg echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "sys/ipc.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/ipc.h""... $ac_c" 1>&6 -echo "configure:12979: checking for sys/ipc.h" >&5 +echo "configure:13049: checking for sys/ipc.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:12987: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13057: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13000,15 +13070,15 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 ac_safe=3D`echo "sys/msg.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/msg.h""... $ac_c" 1>&6 -echo "configure:13004: checking for sys/msg.h" >&5 +echo "configure:13074: checking for sys/msg.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13012: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13082: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13046,15 +13116,15 @@ fi = ac_safe=3D`echo "dirent.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dirent.h""... $ac_c" 1>&6 -echo "configure:13050: checking for dirent.h" >&5 +echo "configure:13120: checking for dirent.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13058: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13128: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13081,15 +13151,15 @@ else echo "$ac_t""no" 1>&6 ac_safe=3D`echo "sys/dir.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for sys/dir.h""... $ac_c" 1>&6 -echo "configure:13085: checking for sys/dir.h" >&5 +echo "configure:13155: checking for sys/dir.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13093: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13163: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13122,15 +13192,15 @@ fi = ac_safe=3D`echo "nlist.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for nlist.h""... $ac_c" 1>&6 -echo "configure:13126: checking for nlist.h" >&5 +echo "configure:13196: checking for nlist.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13134: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13204: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13160,22 +13230,22 @@ fi = = echo "checking "for sound support"" 1>&6 -echo "configure:13164: checking "for sound support"" >&5 +echo "configure:13234: checking "for sound support"" >&5 test -z "$with_native_sound" -a -n "$native_sound_lib" && with_native_soun= d=3Dyes = if test "$with_native_sound" !=3D "no"; then if test -n "$native_sound_lib"; then ac_safe=3D`echo "multimedia/audio_device.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for multimedia/audio_device.h""... $ac_c" 1>&6 -echo "configure:13171: checking for multimedia/audio_device.h" >&5 +echo "configure:13241: checking for multimedia/audio_device.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13179: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13249: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13231,12 +13301,12 @@ fi if test -z "$native_sound_lib"; then = echo $ac_n "checking for ALopenport in -laudio""... $ac_c" 1>&6 -echo "configure:13235: checking for ALopenport in -laudio" >&5 +echo "configure:13305: checking for ALopenport in -laudio" >&5 ac_lib_var=3D`echo audio'_'ALopenport | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13321: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13278,12 +13348,12 @@ fi if test -z "$native_sound_lib"; then = echo $ac_n "checking for AOpenAudio in -lAlib""... $ac_c" 1>&6 -echo "configure:13282: checking for AOpenAudio in -lAlib" >&5 +echo "configure:13352: checking for AOpenAudio in -lAlib" >&5 ac_lib_var=3D`echo Alib'_'AOpenAudio | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lAlib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13368: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13339,15 +13409,15 @@ fi for dir in "machine" "sys" "linux"; do ac_safe=3D`echo "${dir}/soundcard.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ${dir}/soundcard.h""... $ac_c" 1>&6 -echo "configure:13343: checking for ${dir}/soundcard.h" >&5 +echo "configure:13413: checking for ${dir}/soundcard.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13351: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13421: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13401,15 +13471,15 @@ fi if test "$with_nas_sound" !=3D "no"; then ac_safe=3D`echo "audio/audiolib.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for audio/audiolib.h""... $ac_c" 1>&6 -echo "configure:13405: checking for audio/audiolib.h" >&5 +echo "configure:13475: checking for audio/audiolib.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13413: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13483: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13427,12 +13497,12 @@ if eval "test \"`echo '$ac_cv_header_'$a = = echo $ac_n "checking for AuOpenServer in -laudio""... $ac_c" 1>&6 -echo "configure:13431: checking for AuOpenServer in -laudio" >&5 +echo "configure:13501: checking for AuOpenServer in -laudio" >&5 ac_lib_var=3D`echo audio'_'AuOpenServer | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -laudio " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13517: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13482,7 +13552,7 @@ EOF fi libs_x=3D"-laudio $libs_x" && if test "$extra_verbose" =3D "yes"; the= n echo " Prepending \"-laudio\" to \$libs_x"; fi cat > conftest.$ac_ext < EOF @@ -13513,7 +13583,7 @@ if test "$with_esd_sound" !=3D "no"; then # Extract the first word of "esd-config", so it can be a program name wi= th args. set dummy esd-config; ac_word=3D$2 echo $ac_n "checking for $ac_word""... $ac_c" 1>&6 -echo "configure:13517: checking for $ac_word" >&5 +echo "configure:13587: checking for $ac_word" >&5 = if test -n "$have_esd_config"; then ac_cv_prog_have_esd_config=3D"$have_esd_config" # Let the user override = the test. @@ -13542,10 +13612,10 @@ fi c_switch_site=3D"$c_switch_site `esd-config --cflags`" && if test "$e= xtra_verbose" =3D "yes"; then echo " Appending \"`esd-config --cflags`\"= to \$c_switch_site"; fi LIBS=3D"`esd-config --libs` $LIBS" && if test "$extra_verbose" =3D "y= es"; then echo " Prepending \"`esd-config --libs`\" to \$LIBS"; fi echo $ac_n "checking for esd_play_stream""... $ac_c" 1>&6 -echo "configure:13546: checking for esd_play_stream" >&5 +echo "configure:13616: checking for esd_play_stream" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13642: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_esd_play_stream=3Dyes" else @@ -13619,7 +13689,7 @@ test -z "$with_tty" && with_tty=3Dyes = if test "$with_tty" =3D "yes" ; then echo "checking for TTY-related features" 1>&6 -echo "configure:13623: checking for TTY-related features" >&5 +echo "configure:13693: checking for TTY-related features" >&5 { test "$extra_verbose" =3D "yes" && cat << \EOF Defining HAVE_TTY EOF @@ -13635,12 +13705,12 @@ EOF if test -z "$with_ncurses"; then = echo $ac_n "checking for tgetent in -lncurses""... $ac_c" 1>&6 -echo "configure:13639: checking for tgetent in -lncurses" >&5 +echo "configure:13709: checking for tgetent in -lncurses" >&5 ac_lib_var=3D`echo ncurses'_'tgetent | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lncurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13684,15 +13754,15 @@ EOF = ac_safe=3D`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13688: checking for ncurses/curses.h" >&5 +echo "configure:13758: checking for ncurses/curses.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13696: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13766: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13714,15 +13784,15 @@ fi = ac_safe=3D`echo "ncurses/term.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/term.h""... $ac_c" 1>&6 -echo "configure:13718: checking for ncurses/term.h" >&5 +echo "configure:13788: checking for ncurses/term.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13726: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13796: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13752,15 +13822,15 @@ fi c_switch_site=3D"$c_switch_site -I/usr/include/ncurses" ac_safe=3D`echo "ncurses/curses.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ncurses/curses.h""... $ac_c" 1>&6 -echo "configure:13756: checking for ncurses/curses.h" >&5 +echo "configure:13826: checking for ncurses/curses.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:13764: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:13834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -13795,12 +13865,12 @@ fi for lib in curses termlib termcap; do = echo $ac_n "checking for tgetent in -l$lib""... $ac_c" 1>&6 -echo "configure:13799: checking for tgetent in -l$lib" >&5 +echo "configure:13869: checking for tgetent in -l$lib" >&5 ac_lib_var=3D`echo $lib'_'tgetent | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -l$lib " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13885: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13836,12 +13906,12 @@ fi else if test -n "$libs_termcap" -a "$opsys" =3D "openbsd"; then = echo $ac_n "checking for tgoto in -ltermcap""... $ac_c" 1>&6 -echo "configure:13840: checking for tgoto in -ltermcap" >&5 +echo "configure:13910: checking for tgoto in -ltermcap" >&5 ac_lib_var=3D`echo termcap'_'tgoto | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13926: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13897,12 +13967,12 @@ fi else = echo $ac_n "checking for tgetent in -lcurses""... $ac_c" 1>&6 -echo "configure:13901: checking for tgetent in -lcurses" >&5 +echo "configure:13971: checking for tgetent in -lcurses" >&5 ac_lib_var=3D`echo curses'_'tgetent | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lcurses " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:13987: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13931,12 +14001,12 @@ if eval "test \"`echo '$ac_cv_lib_'$ac_l else echo "$ac_t""no" 1>&6 echo $ac_n "checking for tgetent in -ltermcap""... $ac_c" 1>&6 -echo "configure:13935: checking for tgetent in -ltermcap" >&5 +echo "configure:14005: checking for tgetent in -ltermcap" >&5 ac_lib_var=3D`echo termcap'_'tgetent | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ltermcap " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14021: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -13996,15 +14066,15 @@ EOF if test "$with_gpm" !=3D "no"; then ac_safe=3D`echo "gpm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for gpm.h""... $ac_c" 1>&6 -echo "configure:14000: checking for gpm.h" >&5 +echo "configure:14070: checking for gpm.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14008: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14078: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -14022,12 +14092,12 @@ if eval "test \"`echo '$ac_cv_header_'$a = = echo $ac_n "checking for Gpm_Open in -lgpm""... $ac_c" 1>&6 -echo "configure:14026: checking for Gpm_Open in -lgpm" >&5 +echo "configure:14096: checking for Gpm_Open in -lgpm" >&5 ac_lib_var=3D`echo gpm'_'Gpm_Open | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lgpm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14112: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14097,20 +14167,20 @@ test "$with_x11" =3D "yes" -o "$with_tty" = = test "$with_database_gdbm $with_database_dbm $with_database_berkdb" \ !=3D "no no no" && echo "checking for database support" 1>&6 -echo "configure:14101: checking for database support" >&5 +echo "configure:14171: checking for database support" >&5 = if test "$with_database_gdbm $with_database_dbm" !=3D "no no"; then ac_safe=3D`echo "ndbm.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for ndbm.h""... $ac_c" 1>&6 -echo "configure:14106: checking for ndbm.h" >&5 +echo "configure:14176: checking for ndbm.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14114: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14184: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -14140,12 +14210,12 @@ fi if test "$with_database_gdbm" !=3D "no"; then = echo $ac_n "checking for dbm_open in -lgdbm""... $ac_c" 1>&6 -echo "configure:14144: checking for dbm_open in -lgdbm" >&5 +echo "configure:14214: checking for dbm_open in -lgdbm" >&5 ac_lib_var=3D`echo gdbm'_'dbm_open | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lgdbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14184,10 +14254,10 @@ fi = if test "$with_database_dbm" !=3D "no"; then echo $ac_n "checking for dbm_open""... $ac_c" 1>&6 -echo "configure:14188: checking for dbm_open" >&5 +echo "configure:14258: checking for dbm_open" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14284: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_dbm_open=3Dyes" else @@ -14229,12 +14299,12 @@ else = = echo $ac_n "checking for dbm_open in -ldbm""... $ac_c" 1>&6 -echo "configure:14233: checking for dbm_open in -ldbm" >&5 +echo "configure:14303: checking for dbm_open in -ldbm" >&5 ac_lib_var=3D`echo dbm'_'dbm_open | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldbm " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14319: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14285,10 +14355,10 @@ EOF = = echo $ac_n "checking for u_int8_t""... $ac_c" 1>&6 -echo "configure:14289: checking for u_int8_t" >&5 +echo "configure:14359: checking for u_int8_t" >&5 = cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14329,10 +14399,10 @@ EOF = fi echo $ac_n "checking for u_int16_t""... $ac_c" 1>&6 -echo "configure:14333: checking for u_int16_t" >&5 +echo "configure:14403: checking for u_int16_t" >&5 = cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14373,10 +14443,10 @@ EOF = fi echo $ac_n "checking for u_int32_t""... $ac_c" 1>&6 -echo "configure:14377: checking for u_int32_t" >&5 +echo "configure:14447: checking for u_int32_t" >&5 = cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14417,10 +14487,10 @@ EOF = fi echo $ac_n "checking for u_int64_t""... $ac_c" 1>&6 -echo "configure:14421: checking for u_int64_t" >&5 +echo "configure:14491: checking for u_int64_t" >&5 = cat > conftest.$ac_ext < #if STDC_HEADERS @@ -14463,12 +14533,12 @@ fi = if test "$with_database_berkdb" !=3D "no"; then echo $ac_n "checking for Berkeley db.h""... $ac_c" 1>&6 -echo "configure:14467: checking for Berkeley db.h" >&5 +echo "configure:14537: checking for Berkeley db.h" >&5 for header in "db/db.h" "db.h"; do case "$opsys" in *freebsd*) cat > conftest.$ac_ext < @@ -14484,7 +14554,7 @@ int main() { = ; return 0; } EOF -if { (eval echo configure:14488: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:14558: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* db_h_file=3D"$header"; break else @@ -14495,7 +14565,7 @@ rm -f conftest* ;; *) cat > conftest.$ac_ext < @@ -14525,7 +14595,7 @@ int main() { = ; return 0; } EOF -if { (eval echo configure:14529: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:14599: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* db_h_file=3D"$header"; break else @@ -14543,9 +14613,9 @@ rm -f conftest* = if test "$with_database_berkdb" !=3D "no"; then echo $ac_n "checking for Berkeley DB version""... $ac_c" 1>&6 -echo "configure:14547: checking for Berkeley DB version" >&5 +echo "configure:14617: checking for Berkeley DB version" >&5 cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 1 @@ -14557,7 +14627,7 @@ if (eval "$ac_cpp conftest.$ac_ext") 2>& egrep "yes" >/dev/null 2>&1; then rm -rf conftest* cat > conftest.$ac_ext < #if DB_VERSION_MAJOR > 2 @@ -14584,10 +14654,10 @@ fi rm -f conftest* = echo $ac_n "checking for $dbfunc""... $ac_c" 1>&6 -echo "configure:14588: checking for $dbfunc" >&5 +echo "configure:14658: checking for $dbfunc" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14684: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$dbfunc=3Dyes" else @@ -14629,12 +14699,12 @@ else = = echo $ac_n "checking for $dbfunc in -ldb""... $ac_c" 1>&6 -echo "configure:14633: checking for $dbfunc in -ldb" >&5 +echo "configure:14703: checking for $dbfunc in -ldb" >&5 ac_lib_var=3D`echo db'_'$dbfunc | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldb " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14709,12 +14779,12 @@ fi if test "$with_socks" =3D "yes"; then = echo $ac_n "checking for SOCKSinit in -lsocks""... $ac_c" 1>&6 -echo "configure:14713: checking for SOCKSinit in -lsocks" >&5 +echo "configure:14783: checking for SOCKSinit in -lsocks" >&5 ac_lib_var=3D`echo socks'_'SOCKSinit | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -lsocks " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14799: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14780,7 +14850,7 @@ fi = if test "$with_modules" !=3D "no"; then echo "checking for module support" 1>&6 -echo "configure:14784: checking for module support" >&5 +echo "configure:14854: checking for module support" >&5 = if test "$with_msw" =3D "yes"; then have_dl=3Dyes; @@ -14796,15 +14866,15 @@ EOF ;; *) ac_safe=3D`echo "dlfcn.h" | sed 'y%./+-%__p_%'` echo $ac_n "checking for dlfcn.h""... $ac_c" 1>&6 -echo "configure:14800: checking for dlfcn.h" >&5 +echo "configure:14870: checking for dlfcn.h" >&5 = cat > conftest.$ac_ext < EOF ac_try=3D"$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out" -{ (eval echo configure:14808: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } +{ (eval echo configure:14878: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; } ac_err=3D`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"` if test -z "$ac_err"; then rm -rf conftest* @@ -14821,16 +14891,16 @@ if eval "test \"`echo '$ac_cv_header_'$a echo "$ac_t""yes" 1>&6 = echo $ac_n "checking for dlopen in -lc""... $ac_c" 1>&6 -echo "configure:14825: checking for dlopen in -lc" >&5 +echo "configure:14895: checking for dlopen in -lc" >&5 cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14834: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14904: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=3Dyes = else @@ -14839,18 +14909,18 @@ else rm -rf conftest* = echo $ac_n "checking for dlopen in -ldl""... $ac_c" 1>&6 -echo "configure:14843: checking for dlopen in -ldl" >&5 +echo "configure:14913: checking for dlopen in -ldl" >&5 ac_save_LIBS=3D"$LIBS" LIBS=3D"-ldl $LIBS" cat > conftest.$ac_ext < int main() { dlopen ("", 0); ; return 0; } EOF -if { (eval echo configure:14854: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14924: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* have_dl=3Dyes = else @@ -14879,12 +14949,12 @@ EOF else = echo $ac_n "checking for shl_load in -ldld""... $ac_c" 1>&6 -echo "configure:14883: checking for shl_load in -ldld" >&5 +echo "configure:14953: checking for shl_load in -ldld" >&5 ac_lib_var=3D`echo dld'_'shl_load | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:14969: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14922,12 +14992,12 @@ else echo "$ac_t""no" 1>&6 = echo $ac_n "checking for dld_init in -ldld""... $ac_c" 1>&6 -echo "configure:14926: checking for dld_init in -ldld" >&5 +echo "configure:14996: checking for dld_init in -ldld" >&5 ac_lib_var=3D`echo dld'_'dld_init | sed 'y%./+-%__p_%'` = xe_check_libs=3D" -ldld " cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15012: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_lib_$ac_lib_var=3Dyes" else @@ -14985,7 +15055,7 @@ xehost=3D$canonical xealias=3D$internal_configuration = echo "checking how to build dynamic libraries for ${xehost}" 1>&6 -echo "configure:14989: checking how to build dynamic libraries for ${xehos= t}" >&5 +echo "configure:15059: checking how to build dynamic libraries for ${xehos= t}" >&5 # Transform *-*-linux* to *-*-linux-gnu*, to support old configure scripts. case "$xehost" in *-*-linux-gnu*) ;; @@ -15013,9 +15083,9 @@ if test "$GCC" =3D "yes"; then XEGCC=3Dyes else echo $ac_n "checking checking whether we are using GNU C""... $ac_c" 1>&6 -echo "configure:15017: checking checking whether we are using GNU C" >&5 +echo "configure:15087: checking checking whether we are using GNU C" >&5 cat > conftest.$ac_ext <&6 -echo "configure:15041: checking how to produce PIC code" >&5 +echo "configure:15111: checking how to produce PIC code" >&5 wl=3D = can_build_shared=3Dyes @@ -15138,18 +15208,18 @@ if test -n "$dll_cflags"; then = # Check to make sure the dll_cflags actually works. echo $ac_n "checking if PIC flag ${dll_cflags} really works""... $ac_c" = 1>&6 -echo "configure:15142: checking if PIC flag ${dll_cflags} really works" >&5 +echo "configure:15212: checking if PIC flag ${dll_cflags} really works" >&5 save_CFLAGS=3D"$CFLAGS" CFLAGS=3D"$CFLAGS $dll_cflags -DPIC" cat > conftest.$ac_ext <&5; (eval $ac_compile)= 2>&5; }; then +if { (eval echo configure:15223: \"$ac_compile\") 1>&5; (eval $ac_compile)= 2>&5; }; then rm -rf conftest* = # On HP-UX, the stripped-down bundled CC doesn't accept +Z, but also @@ -15180,7 +15250,7 @@ cc_produces_so=3Dno xldf=3D xcldf=3D echo $ac_n "checking if C compiler can produce shared libraries""... $ac_c= " 1>&6 -echo "configure:15184: checking if C compiler can produce shared libraries= " >&5 +echo "configure:15254: checking if C compiler can produce shared libraries= " >&5 if test "$XEGCC" =3D yes -o "$__ICC" =3D yes; then xcldf=3D"-shared" xldf=3D"-shared" @@ -15231,14 +15301,14 @@ if test -n "$xcldf"; then xe_libs=3D ac_link=3D'${CC-cc} -o conftest $CFLAGS '"$xe_cppflags $xe_ldflags"' con= ftest.$ac_ext '"$xe_libs"' 1>&5' cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15312: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* cc_produces_so=3Dyes else @@ -15263,7 +15333,7 @@ if test -z "$LTLD"; then if test "$XEGCC" =3D yes; then # Check if gcc -print-prog-name=3Dld gives a path. echo $ac_n "checking for ld used by GCC""... $ac_c" 1>&6 -echo "configure:15267: checking for ld used by GCC" >&5 +echo "configure:15337: checking for ld used by GCC" >&5 ac_prog=3D`($CC -print-prog-name=3Dld) 2>&5` case "$ac_prog" in # Accept absolute paths. @@ -15289,7 +15359,7 @@ echo "configure:15267: checking for ld u esac else echo $ac_n "checking for GNU ld""... $ac_c" 1>&6 -echo "configure:15293: checking for GNU ld" >&5 +echo "configure:15363: checking for GNU ld" >&5 fi = if test -z "$LTLD"; then @@ -15327,7 +15397,7 @@ ld_dynamic_link_flags=3D = # Check to see if it really is or isn't GNU ld. echo $ac_n "checking if the linker is GNU ld""... $ac_c" 1>&6 -echo "configure:15331: checking if the linker is GNU ld" >&5 +echo "configure:15401: checking if the linker is GNU ld" >&5 # I'd rather use --version here, but apparently some GNU ld's only accept = -v. if $LTLD -v 2>&1 &5; then xe_gnu_ld=3Dyes @@ -15355,7 +15425,7 @@ else # OK - only NOW do we futz about with ld. # See if the linker supports building shared libraries. echo $ac_n "checking whether the linker supports shared libraries""... $= ac_c" 1>&6 -echo "configure:15359: checking whether the linker supports shared librari= es" >&5 +echo "configure:15429: checking whether the linker supports shared librari= es" >&5 dll_ld=3D$CC dll_ldflags=3D$LDFLAGS ld_shlibs=3Dyes @@ -15566,10 +15636,10 @@ EOF for ac_func in dlerror _dlerror do echo $ac_n "checking for $ac_func""... $ac_c" 1>&6 -echo "configure:15570: checking for $ac_func" >&5 +echo "configure:15640: checking for $ac_func" >&5 = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then +if { (eval echo configure:15666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest${ac_exeext}; then rm -rf conftest* eval "ac_cv_func_$ac_func=3Dyes" else @@ -15631,11 +15701,11 @@ done fi = cat > conftest.$ac_ext <&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 +if { (eval echo configure:15709: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5;= } && test -s conftest && (./conftest; exit $?) 2>&5 then : else 1.151.2.35 +53 -23 XEmacs/xemacs/configure.in Index: configure.in =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/configure.in,v retrieving revision 1.151.2.34 retrieving revision 1.151.2.35 diff -u -p -r1.151.2.34 -r1.151.2.35 --- configure.in 2005/11/28 02:09:20 1.151.2.34 +++ configure.in 2005/11/30 23:58:31 1.151.2.35 @@ -3206,33 +3206,63 @@ dnl Autodetect LDAP AC_CHECKING(for LDAP) test -z "$with_ldap" && { AC_CHECK_HEADER(ldap.h, ,with_ldap=3Dno) } test -z "$with_ldap" && { AC_CHECK_HEADER(lber.h, ,with_ldap=3Dno) } -if test "$with_ldap" !=3D "no"; then - AC_CHECK_LIB(ldap, ldap_search, with_ldap=3Dyes) - dnl Check for other libraries we need to link with to get the main routi= nes. - test "$with_ldap" !=3D "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ld= ap=3Dyes with_ldap_lber=3Dyes], , -llber) } - test "$with_ldap" !=3D "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ld= ap=3Dyes with_ldap_lber=3Dyes with_ldap_krb=3Dyes], , -llber -lkrb) } - test "$with_ldap" !=3D "yes" && { AC_CHECK_LIB(ldap, ldap_open, [with_ld= ap=3Dyes with_ldap_lber=3Dyes with_ldap_krb=3Dyes with_ldap_des=3Dyes], , -= llber -lkrb -ldes) } - dnl Recently, we need -lber even though the main routines are elsewhere, - dnl because otherwise be get link errors w.r.t. ber_pvt_opt_on. So just - dnl check for that (it's a variable not a fun but that doesn't seem to - dnl matter in these checks) and stick in -lber if so. Can't hurt (even= to - dnl stick it in always shouldn't hurt, I don't think) ... #### Someone w= ho - dnl #### understands LDAP needs to fix this properly. - test "$with_ldap_lber" !=3D "yes" && { AC_CHECK_LIB(lber, ber_pvt_opt_on= , with_ldap_lber=3Dyes) } +if test no !=3D "$with_ldap";then + if test . !=3D "${ldap_libs+.}";then + ldap_libs=3D + AC_CHECK_FUNC(ldap_open,dnl Allow it to be in generic "$LIBS" + [with_ldap=3Dyes + test yes =3D "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs"],dnl + [AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=3Dyes],dnl + [ldap_needs_lber=3Dyes ldap_other_libs=3D-llber +dnl This requires `AC_CACHE_VAL' (which is called by `AC_CHECK_LIB') +dnl to be redefined to ignore cached (shell variable) value, as it is +dnl done above, because the same variable is used in all +dnl `AC_CHECK_LIB' expansions in macro invocation below. Worse, if it +dnl is not done, there is no portable way to compensate for this +dnl locally since `unset' command is not supported by all shells. The +dnl other solution would be changing `AC_CHECK_LIB' so that cache +dnl variable name depends on the macro OTHER-LIBRARIES argument. + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=3Dyes],dnl + [ldap_needs_krb=3Dyes ldap_other_libs=3D"$ldap_other_libs -lkrb" + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=3Dyes],dnl + [ldap_needs_des=3Dyes ldap_other_libs=3D"$ldap_other_libs -ldes" + AC_CHECK_LIB(ldap, ldap_open,dnl + [with_ldap=3Dyes],dnl + [with_ldap=3Dno],dnl + $ldap_other_libs)],dnl + $ldap_other_libs)],dnl + $ldap_other_libs)]) + if test yes =3D "$with_ldap";then + if test yes =3D "$ldap_needs_des";then + XE_PREPEND(-ldes, ldap_libs) + fi + if test yes =3D "$ldap_needs_krb";then + XE_PREPEND(-lkrb, ldap_libs) + fi + if test yes =3D "$ldap_needs_lber";then + XE_PREPEND(-llber, ldap_libs) + fi + XE_PREPEND(-lldap, ldap_libs) + fi]) + else +dnl Allow builder to override "$ldap_libs". + save_LIBS=3D"$LIBS" LIBS=3D"$ldap_libs $LIBS" + AC_CHECK_FUNC(ldap_open,dnl + [with_ldap=3Dyes + test yes =3D "$extra_verbose" && + echo "Setting ldap_libs to $ldap_libs"],dnl + [with_ldap=3Dno]) + LIBS=3D"$save_LIBS" + fi fi if test "$with_ldap" =3D "yes"; then AC_DEFINE(HAVE_LDAP) XE_ADD_OBJS(eldap.o) - if test "$with_ldap_des" =3D "yes" ; then - XE_PREPEND(-ldes, LIBS) - fi - if test "$with_ldap_krb" =3D "yes" ; then - XE_PREPEND(-lkrb, LIBS) - fi - if test "$with_ldap_lber" =3D "yes" ; then - XE_PREPEND(-llber, LIBS) - fi - XE_PREPEND(-lldap, LIBS) + LIBS=3D"$ldap_libs $LIBS" AC_CHECK_FUNCS(ldap_set_option ldap_get_lderrno ldap_result2error ldap_p= arse_result) fi = 1.69.2.5 +6 -0 XEmacs/xemacs/etc/NEWS Index: NEWS =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D RCS file: /pack/xemacscvs/XEmacs/xemacs/etc/NEWS,v retrieving revision 1.69.2.4 retrieving revision 1.69.2.5 diff -u -p -r1.69.2.4 -r1.69.2.5 --- NEWS 2004/07/07 02:25:46 1.69.2.4 +++ NEWS 2005/11/30 23:59:18 1.69.2.5 @@ -117,6 +117,7 @@ consulted for a more detailed list of ch - In Perl, the --globals option tags global variables. - Python now supported. - New file extensions recognized: .ss, .pdb, .psw. + -- Fixed ldap libraries configuration. = ** The delete key now deletes forward by default. = @@ -598,6 +599,11 @@ def and class at the beginning of a line *** New file extensions recognized: .ss, .pdb, .psw. .ss files are Scheme files, .pdb is Postscript with C syntax, .psw is for PSWrap. + +** Fixed ldap libraries configuration. + +It used to fail when `-lldap' requires `-llber'. Introduced in +upstream `configure.in' revision 1.151.2.31 (2005/01/31 02:54:47 +0). = =0C * Lisp and internal changes in XEmacs 21.4 --===============9145458114510383760==--