Mercurial > hg > xemacs-beta
changeset 241:f955c73f5258 r20-5b19
Import from CVS: tag r20-5b19
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:16:16 +0200 |
parents | 835e739f3c17 |
children | fc816b73a05f |
files | CHANGES-beta ChangeLog Makefile.in etc/NEWS lisp/ChangeLog lisp/files.el lisp/menubar.el lisp/modeline.el lisp/package-get-base.el lisp/package-info.el src/ChangeLog src/elhash.c src/eval.c src/faces.c src/fns.c src/hash.c src/hash.h src/keymap.c src/line-number.c src/lstream.c src/mule-ccl.c src/mule-charset.c src/mule-coding.c src/profile.c src/symbols.c version.sh |
diffstat | 26 files changed, 848 insertions(+), 303 deletions(-) [+] |
line wrap: on
line diff
--- a/CHANGES-beta Mon Aug 13 10:15:49 2007 +0200 +++ b/CHANGES-beta Mon Aug 13 10:16:16 2007 +0200 @@ -1,4 +1,9 @@ -*- indented-text -*- +to 20.5 beta19 "Damani" +-- Package building update +-- Hash and profile patches from Hrvoje Niksic +-- Miscellaneous bug fixes + to 20.5 beta18 "Daera Din Panah" -- Miscellaneous and sundry fixes for 20.4 merged -- MS Windows updates from Kirill Katsnelson and Andy Piper
--- a/ChangeLog Mon Aug 13 10:15:49 2007 +0200 +++ b/ChangeLog Mon Aug 13 10:16:16 2007 +0200 @@ -1,3 +1,12 @@ +1998-01-12 SL Baur <steve@altair.xemacs.org> + + * XEmacs 20.5-beta19 is released. + +1998-01-12 Damon Lipparelli <lipp@primus.com> + + * Makefile.in: Yow! Fixed paths to install dirs when --prefix != + --exec-prefix. + 1998-01-10 SL Baur <steve@altair.xemacs.org> * XEmacs 20.5-beta18 is released.
--- a/Makefile.in Mon Aug 13 10:15:49 2007 +0200 +++ b/Makefile.in Mon Aug 13 10:16:16 2007 +0200 @@ -403,7 +403,7 @@ install-only: ${MAKE_SUBDIR} check-features install-arch-dep install-arch-indep -install: all check-features install-arch-dep install-arch-indep; +install: all check-features install-arch-dep install-arch-indep install-arch-dep: mkdir for subdir in ${INSTALL_ARCH_DEP_SUBDIR}; do \ @@ -420,21 +420,21 @@ for subdir in `find ${archlibdir} -type d ! -name RCS ! -name SCCS ! -name CVS -print` ; \ do (cd $${subdir} && $(RM) -r RCS CVS SCCS \#* *~) ; done ; \ else true; fi - ${INSTALL_PROGRAM} src/xemacs ${bindir}/${progname}${version} - -chmod 0755 ${bindir}/${progname}${version} - cd ${bindir} && $(RM) ./xemacs && ${LN_S} ${progname}${version} ./xemacs + ${INSTALL_PROGRAM} src/xemacs ${bindir}/${progname}-${version} + -chmod 0755 ${bindir}/${progname}-${version} + cd ${bindir} && $(RM) ./xemacs && ${LN_S} ${progname}-${version} ./xemacs if test "${prefix}" != "${exec_prefix}"; then \ test ! -d ${exec_prefix}/lib/xemacs && \ $(LN_S) ${prefix}/lib/xemacs ${exec_prefix}/lib/xemacs; \ - test ! -d ${exec_prefix}/lib/${progname}${version}/etc && \ - $(LN_S) ${prefix}/lib/${progname}${version}/etc \ - ${exec_prefix}/lib/${progname}${version}/etc; \ - test ! -d ${exec_prefix}/lib/${progname}${version}/info && \ - $(LN_S) ${prefix}/lib/${progname}${version}/info \ - ${exec_prefix}/lib/${progname}${version}/info; \ - test ! -d ${exec_prefix}/lib/${progname}${version}/lisp && \ - $(LN_S) ${prefix}/lib/${progname}${version}/lisp \ - ${exec_prefix}/lib/${progname}${version}/lisp; \ + test ! -d ${exec_prefix}/lib/${progname}-${version}/etc && \ + $(LN_S) ${prefix}/lib/${progname}-${version}/etc \ + ${exec_prefix}/lib/${progname}-${version}/etc; \ + test ! -d ${exec_prefix}/lib/${progname}-${version}/info && \ + $(LN_S) ${prefix}/lib/${progname}-${version}/info \ + ${exec_prefix}/lib/${progname}-${version}/info; \ + test ! -d ${exec_prefix}/lib/${progname}-${version}/lisp && \ + $(LN_S) ${prefix}/lib/${progname}-${version}/lisp \ + ${exec_prefix}/lib/${progname}-${version}/lisp; \ fi install-arch-indep: mkdir info @@ -520,7 +520,7 @@ # done # cd ${infodir} && $(RM) cl* xemacs* forms* info* vip* # cd ${mandir} && $(RM) xemacs.1 etags.1 ctags.1 gnuserv.1 -# cd ${bindir} && $(RM) ${progname}${version} xemacs +# cd ${bindir} && $(RM) ${progname}-${version} xemacs ## Some makes seem to remember that they've built something called FRC,
--- a/etc/NEWS Mon Aug 13 10:15:49 2007 +0200 +++ b/etc/NEWS Mon Aug 13 10:16:16 2007 +0200 @@ -100,10 +100,10 @@ * Lisp and internal changes in XEmacs 20.5 ========================================== -** There is initial support for 30-bit integers in elisp (normally, +** There is initial support for 31-bit integers in elisp (normally, integers are only 28 bits wide on 32-bit machines.) Compile with -DUSE_MINIMAL_TAGBITS to test. With this change, the maximum buffer -size on 32-bit machines is bumped from 128M to 512M. +size on 32-bit machines is bumped from 128M to 1G. ** The internal image code now uses the ImageMagick library as an interface to various image-related functions. You still need the @@ -124,6 +124,11 @@ #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d> +** When profiling is in effect, a call-count of all recorded functions +is now calculated. This information is stored in +`call-count-profile-table', and is utilized by `profile-results' as +well as the new function `profile-call-count-results'. + ** The `make-event' function now supports the TYPE and PLIST arguments, which can be used to create many various events from Lisp. See the documentation for details. @@ -146,6 +151,11 @@ very large buffers. This is achieved by caching the line numbers of recent buffer positions, and reusing them. This cache is used only in the buffers where `line-number-mode' is in effect. + +* Changes in XEmacs 20.4 +======================== + +** XEmacs 20.4 is a bugfix release with no user-visible changes. * Changes in XEmacs 20.3
--- a/lisp/ChangeLog Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/ChangeLog Mon Aug 13 10:16:16 2007 +0200 @@ -1,3 +1,18 @@ +1998-01-12 SL Baur <steve@altair.xemacs.org> + + * menubar.el (check-menu-syntax): Emergency dirty fix -- the 0 plist + bug strikes a menudescriptor. + + * package-get-base.el (package-get-base): Updated. + + * package-info.el (batch-update-package-info): Derive REQUIRES + from the Makefile. + +1998-01-13 Hrvoje Niksic <hniksic@srce.hr> + + * files.el (save-some-buffers): Don't play games with deleting + other windows if we are in the minibuffer window. + 1998-01-08 Karl M. Hegbloom <karlheg@bittersweet.inetarena.com> * modeline.el (modeline-minor-mode-menu): Add support for :active
--- a/lisp/files.el Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/files.el Mon Aug 13 10:16:16 2007 +0200 @@ -2351,6 +2351,7 @@ (save-window-excursion ;; This can bomb during autoloads generation (when (and (not noninteractive) + (not (eq (selected-window) (minibuffer-window))) save-some-buffers-query-display-buffer) (delete-other-windows)) ;; XEmacs - do not use queried flag
--- a/lisp/menubar.el Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/menubar.el Mon Aug 13 10:16:16 2007 +0200 @@ -170,7 +170,8 @@ menuitem))) ))) ) - (t (signal 'error (list "unrecognised menu descriptor" menuitem)))) + ;; (t (signal 'error (list "unrecognised menu descriptor" menuitem)))) + (t (message "unrecognised menu descriptor %s" (prin1-to-string menuitem)))) (setq menu (cdr menu)))))
--- a/lisp/modeline.el Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/modeline.el Mon Aug 13 10:16:16 2007 +0200 @@ -300,19 +300,42 @@ (defvar place) (defun add-minor-mode (toggle name &optional keymap after toggle-fun) "Add a minor mode to `minor-mode-alist' and `minor-mode-map-alist'. + TOGGLE is a symbol whose value as a variable specifies whether the -minor mode is active. NAME is the name that should appear in the -modeline (it should either be a string beginning with a space or a -symbol). KEYMAP is a keymap to make active when the minor mode is -active. AFTER is the toggling symbol used for another minor mode. If -AFTER is non-nil, then it is used to position the new mode in the -minor-mode alists. TOGGLE-FUN specifies an interactive function that -is called to toggle the mode on and off; this affects what happens -when button2 is pressed on the mode, and when button3 is pressed -somewhere in the list of modes. If TOGGLE-FUN is nil and TOGGLE names -an interactive function, TOGGLE is used as the toggle function. +minor mode is active. + + If TOGGLE has the `:menu-tag' property set to a string, that string + will be used as the label on the `modeline-minor-mode-menu' instead + of TOGGLE's symbol-name. + + TOGGLE may have an `:included' property, which determines whether a + menu button will be shown for this minor mode in the + `modeline-minor-mode-menu'. This should be either a boolean + variable, or an expression evaluating to t or nil. \(See the + documentation of `current-menubar' for more information.) + + It may have an `:active' property also, as documented in + `current-menubar'. -Example: (add-minor-mode 'view-minor-mode \" View\" view-mode-map)" +NAME is the name that should appear in the modeline. It should either +be a string beginning with a space, or a symbol with a similar string +as its value. + +KEYMAP is a keymap to make active when the minor mode is active. + +AFTER is the toggling symbol used for another minor mode. If AFTER is +non-nil, then it is used to position the new mode in the minor-mode +alists. + +TOGGLE-FUN specifies an interactive function that is called to toggle +the mode on and off; this affects what happens when button2 is pressed +on the mode, and when button3 is pressed somewhere in the list of +modes. If TOGGLE-FUN is nil and TOGGLE names an interactive function, +TOGGLE is used as the toggle function. + +Example: (put 'view-minor-mode :menu-tag \"View (minor)\") + (put 'view-minor-mode :included '(buffer-file-name)) + (add-minor-mode 'view-minor-mode \" View\" view-mode-map)" (let (el place (add-elt #'(lambda (elt sym) (cond ((null after) ; add to front @@ -373,23 +396,32 @@ 'minor-mode-map-alist))) )) +;; gettext anyone? +(put 'abbrev-mode :menu-tag "Abbreviation Expansion") (add-minor-mode 'abbrev-mode " Abbrev") +;; only when visiting a file... (add-minor-mode 'overwrite-mode 'overwrite-mode) +(put 'auto-fill-function :menu-tag "Auto Fill") (add-minor-mode 'auto-fill-function " Fill" nil nil 'auto-fill-mode) -;; not really a minor mode... -(add-minor-mode 'defining-kbd-macro " Def") + +;; what's the meaning of `####' vs `FIXME' or ...? +;; not really a minor mode... and it doesn't work right anyway. +;;(put 'defining-kbd-macro :menu-tag "Defining kbd macro") +;;(add-minor-mode 'defining-kbd-macro " Def") FIXME (defun modeline-minor-mode-menu (event) + "The menu that pops up when you press `button3' inside the +parentheses on the modeline." (interactive "e") (save-excursion (set-buffer (event-buffer event)) (popup-menu-and-execute-in-window - (cons (format "Minor Mode Commands for %S:" - (buffer-name (event-buffer event))) + (cons "Minor Mode Toggles" (apply 'nconc (mapcar #'(lambda (x) (let* ((toggle-sym (car x)) + (menu-tag (get toggle-sym :menu-tag nil)) (toggle-fun (or (get toggle-sym 'modeline-toggle-function) @@ -398,15 +430,23 @@ toggle-sym)))) (if (not toggle-fun) nil (list (vector - (concat (if (and (boundp toggle-sym) - (symbol-value toggle-sym)) - "turn off " "turn on ") - (if (symbolp toggle-fun) - (symbol-name toggle-fun) - (symbol-name toggle-sym))) - + (or (and (stringp menu-tag) + menu-tag) + (setq menu-tag (capitalize + (replace-in-string + (replace-in-string + (replace-in-string (if (symbolp toggle-fun) + (symbol-name toggle-fun) + (symbol-name toggle-sym)) + "-" " ") + "minor" " (minor)") + " mode" "")))) toggle-fun - t))))) + :active (get toggle-sym :active t) + :included (get toggle-sym :included t) + :style 'toggle + :selected (and (boundp toggle-sym) + toggle-sym)))))) minor-mode-alist))) event)))
--- a/lisp/package-get-base.el Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/package-get-base.el Mon Aug 13 10:16:16 2007 +0200 @@ -1,260 +1,456 @@ (setq package-get-base -'((cookie +'((footnote + (version "1.01" + filename "footnote-1.01-pkg.tar.gz" + md5sum "6cca2b03fe2ed76f664a398d436bf954" + size 17986 + provides (footnote) + requires (mail-lib xemacs-base) + type regular +)) +(gnats + (version "1.01" + filename "gnats-1.01-pkg.tar.gz" + md5sum "6bfb95bc283102cbbe0a5fc7b3f7d727" + size 126295 + provides (gnats gnats-admin send-pr) + requires (mail-lib xemacs-base) + type regular +)) +(mailcrypt (version "1.02" - filename "cookie-1.02-pkg.tar.gz" - md5sum "95e110ddf03202403e45950d2cb53b11" - size 33774 + filename "mailcrypt-1.02-pkg.tar.gz" + md5sum "a4bdb22e770882d1bf465e46736d67e3" + size 66763 + provides (mailcrypt) + requires (gnus vm mail-lib xemacs-base) + type regular +)) +(mh-e + (version "1.03" + filename "mh-e-1.03-pkg.tar.gz" + md5sum "3a82a8fd5c3d69b375b8e6191edef061" + size 128925 + provides (mh-e) + requires (mail-lib xemacs-base) + type regular +)) +(net-utils + (version "1.01" + filename "net-utils-1.01-pkg.tar.gz" + md5sum "a5e186be46e80d01367ca1b2923655e6" + size 48550 + provides (ilisp-browse-cltl2 emacsbug feedmail metamail rcompile shadowfile webjump webster-www) + requires (w3 efs mail-lib xemacs-base) + type regular +)) +(ph + (version "1.01" + filename "ph-1.01-pkg.tar.gz" + md5sum "f7e686b77eb427a505a10348a0e9ec59" + size 27483 + provides (ph) + requires (xemacs-base) + type regular +)) +(rmail + (version "1.01" + filename "rmail-1.01-pkg.tar.gz" + md5sum "d8a0b4457820839c3383d59c2e0c3ed6" + size 83541 + provides (rmail rmailsum) + requires (tm apel mail-lib xemacs-base) + type regular +)) +(supercite + (version "1.02" + filename "supercite-1.02-pkg.tar.gz" + md5sum "19327a45b407218b67c0dfeb143c7a18" + size 69344 + provides (supercite) + requires (mail-lib xemacs-base) + type regular +)) +(tm + (version "1.02" + filename "tm-1.02-pkg.tar.gz" + md5sum "fa55affd4762141dc1a8090565438bbe" + size 180988 + provides (tm tm-edit tm-view mime-setup) + requires (gnus vm mailcrypt mail-lib xemacs-base) + type regular +)) +(vm + (version "1.03" + filename "vm-1.03-pkg.tar.gz" + md5sum "c998cbe419f3d482050632ee7115240f" + size 476245 + provides (vm) + requires (mail-lib xemacs-base) + type regular +)) +(w3 + (version "1.01" + filename "w3-1.01-pkg.tar.gz" + md5sum "7f896771d25cef4e9e606536bdb13f2e" + size 582585 + provides (w3 url) + requires (w3 mail-lib xemacs-base) + type regular +)) +(cookie + (version "1.03" + filename "cookie-1.03-pkg.tar.gz" + md5sum "28b2fee1f0acbc8f19af12a415743c3f" + size 33784 provides (cookie1 yow) - requires (xemacs-base games-misc) + requires (xemacs-base) + type regular +)) +(games + (version "1.01" + filename "games-1.01-pkg.tar.gz" + md5sum "844d4f68950614f11c078649c231c017" + size 29160 + provides (gamegrid snake tetris sokoban) + requires (xemacs-base) type regular )) (mine - (version "1.02" - filename "mine-1.02-pkg.tar.gz" - md5sum "054f2eefb015b2878ba37f6473a47dec" - size 67166 + (version "1.03" + filename "mine-1.03-pkg.tar.gz" + md5sum "ca06e2e17ac4f5695e66e7004fc7b860" + size 67172 provides (xmine) requires (xemacs-base) type regular )) (misc-games - (version "1.01" - filename "misc-games-1.01-pkg.tar.gz" - md5sum "a86cf625a2700a9b0e7f71139df011a7" - size 172861 - provides (decipher gomoku hanoi life tetris) + (version "1.04" + filename "misc-games-1.04-pkg.tar.gz" + md5sum "07ad46ffdf17ef846c40e81d15fcd832" + size 163171 + provides (decipher gomoku hanoi life) requires (xemacs-base) type single )) (Sun - (version "1.02" - filename "Sun-1.02-pkg.tar.gz" - md5sum "22d61bc22784e1509a3b74e38393b828" - size 63707 + (version "1.03" + filename "Sun-1.03-pkg.tar.gz" + md5sum "1c121ffcac7a00a653c144d488b43860" + size 63758 provides (sccs eos-browser eos-common eos-debugger eos-debugger eos-editor eos-init eos-load eos-menubar eos-toolbar sunpro) requires (cc-mode xemacs-base) type regular )) (apel - (version "1.01" - filename "apel-1.01-pkg.tar.gz" - md5sum "6de339aeae8a36be7e954a80bb18bc3c" - size 34546 + (version "1.02" + filename "apel-1.02-pkg.tar.gz" + md5sum "57230c9a3ed91126ea97277c87b9e72b" + size 34606 provides (atype emu-20 emu-e19 emu-x20 emu-xemacs emu file-detect filename install mule-caesar path-util richtext std11-parse std11 tinyrich) requires (xemacs-base) type regular )) (edebug - (version "1.01" - filename "edebug-1.01-pkg.tar.gz" - md5sum "7ebf5f57dc47236f71d38a387d3cdccc" - size 117881 + (version "1.02" + filename "edebug-1.02-pkg.tar.gz" + md5sum "5c89f5421ecabb1f026a93b8a4a1db0b" + size 117931 provides (edebug cl-read cust-print eval-reg cl-specs) requires (xemacs-base) type regular )) (efs - (version "1.01" - filename "efs-1.01-pkg.tar.gz" - md5sum "d2ad5d764d60345e4530dc679715ec26" - size 506222 - provides (efs dired efs-auto) + (version "1.03" + filename "efs-1.03-pkg.tar.gz" + md5sum "7bc6786f8dee4d955d6365f0cbe2b610" + size 540959 + provides (efs diff dired efs-auto) requires (xemacs-base) type regular )) (mail-lib - (version "1.02" - filename "mail-lib-1.02-pkg.tar.gz" - md5sum "2d02a1b69146925c13ae4e2d759b1fb2" - size 118488 + (version "1.04" + filename "mail-lib-1.04-pkg.tar.gz" + md5sum "59b9cd8aefaa035cb6de8ebdfc141b0a" + size 118703 provides (browse-url highlight-headers mail-abbrevs mail-extr mail-utils reporter rfc822 rmail-mini sendmail smtpmail) requires (xemacs-base) type single )) (tooltalk - (version "1.02" - filename "tooltalk-1.02-pkg.tar.gz" - md5sum "3fdf1c49c43dd852d2c8895e074c39ba" - size 9174 + (version "1.03" + filename "tooltalk-1.03-pkg.tar.gz" + md5sum "88845fc4ace46737ef34ff8acbe0be84" + size 9223 provides () + requires () type regular )) (xemacs-base - (version "1.05" - filename "xemacs-base-1.05-pkg.tar.gz" - md5sum "cbfeb7910ba552a47a23cde220156179" - size 394189 + (version "1.07" + filename "xemacs-base-1.07-pkg.tar.gz" + md5sum "b1b4c6a7005a2ee33fee0c992e256ceb" + size 376530 provides (add-log advice annotations assoc case-table chistory comint-xemacs comint compile edmacro ehelp electric enriched env facemenu helper imenu iso-syntax outline passwd pp regi ring shell skeleton sort thing time-stamp timezone xbm-button xpm-button) + requires () type regular )) (xemacs-devel - (version "1.03" - filename "xemacs-devel-1.03-pkg.tar.gz" - md5sum "e806e74988a89ac66314a72b6f0801a8" - size 64241 + (version "1.05" + filename "xemacs-devel-1.05-pkg.tar.gz" + md5sum "e12d383c1c30467d8e683504eb00604c" + size 71065 provides (docref eldoc elp find-func ielm regexp-opt trace) requires (xemacs-base) type single )) (egg-its - (version "1.01" - filename "egg-its-1.01-pkg.tar.gz" - md5sum "ba5e6aca993a2795a1cc3bedfbc7dcc0" - size 316515 + (version "1.02" + filename "egg-its-1.02-pkg.tar.gz" + md5sum "e7fa42a1121fc260f459e4dabac061ac" + size 257713 provides () - requires (xemacs-base mule-base) + requires (leim mule-base xemacs-base) type regular )) (leim - (version "1.01" - filename "leim-1.01-pkg.tar.gz" - md5sum "5c467eb0476c9da9cc6f671da1884685" - size 1743472 + (version "1.02" + filename "leim-1.02-pkg.tar.gz" + md5sum "5697435f2a2d0849b4eebcc22596fdda" + size 1744281 provides () - requires (xemacs-base mule-base) + requires (mule-base xemacs-base) type regular )) (locale - (version "1.01" - filename "locale-1.01-pkg.tar.gz" - md5sum "2f390e23929941a6aa6e3478a3f10ed7" - size 20628 + (version "1.02" + filename "locale-1.02-pkg.tar.gz" + md5sum "9fcdf34a9f3ef696fa143398fb92ce1f" + size 20633 provides () - requires (xemacs-base mule-base) + requires (mule-base) type regular )) (mule-base - (version "1.02" - filename "mule-base-1.02-pkg.tar.gz" - md5sum "bf8754e52b309e130242bf5036de9a3e" - size 499508 + (version "1.03" + filename "mule-base-1.03-pkg.tar.gz" + md5sum "098abbbc88f1702a3a79ec9511475f38" + size 499505 provides (canna-leim canna char-table china-util cyril-util isearch-ext japan-util ccl can-n-egg mule-help) requires (xemacs-base) type regular )) (skk - (version "1.01" - filename "skk-1.01-pkg.tar.gz" - md5sum "9aa608eccfe7da7371ea7924c3523545" - size 1464809 + (version "1.02" + filename "skk-1.02-pkg.tar.gz" + md5sum "9b836a14af426899f172a3d7ec5bc13a" + size 1466604 provides (skk skk-tut) - requires (xemacs-base mule-base) + requires (viper mule-base xemacs-base) type regular )) (calendar - (version "1.01" - filename "calendar-1.01-pkg.tar.gz" - md5sum "bc0908ae5798f662b9cc5cb52325c21e" - size 168660 + (version "1.02" + filename "calendar-1.02-pkg.tar.gz" + md5sum "df5bb1a0d8c53dc94debc1b9f6b625d2" + size 168684 provides (appt cal-dst cal-french cal-mayan cal-x cal-xemacs calendar diary-ins diary-lib holidays lunar solar) requires (xemacs-base) type regular )) (edit-utils - (version "1.03" - filename "edit-utils-1.03-pkg.tar.gz" - md5sum "af2cbb68fce602132f6153bb3814b59a" - size 498040 - provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren mode-motion+ outl-mouse page-ext blink-paren paren recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place toolbar-utils tree-menu uniquify where-was-i-db) + (version "1.06" + filename "edit-utils-1.06-pkg.tar.gz" + md5sum "6b93a01ea3389125c1ea09d035c3eced" + size 517449 + provides (abbrevlist atomic-extents avoid backup-dir balloon-help big-menubar blink-cursor blink-paren bookmark compare-w completion dabbrev desktop detached-minibuf edit-toolbar fast-lock file-part floating-toolbar flow-ctrl foldout func-menu hippie-exp icomplete id-select info-look iswitchb lazy-lock lazy-shot live-icon man mic-paren paren mode-motion+ outl-mouse page-ext blink-paren paren permanent-buffers recent-files redo reportmail rsz-minibuf saveconfsavehist saveplace scroll-in-place toolbar-utils tree-menu uniquify where-was-i-db) requires (xemacs-base) type single )) (forms - (version "1.03" - filename "forms-1.03-pkg.tar.gz" - md5sum "8f8a2d7118102b39e06e6a8766b3efe6" - size 39802 + (version "1.04" + filename "forms-1.04-pkg.tar.gz" + md5sum "9ed253efbb559b54320cd7fda934bf87" + size 39809 provides (forms forms-mode) + requires () type regular )) (hm--html-menus - (version "1.01" - filename "hm--html-menus-1.01-pkg.tar.gz" - md5sum "23e7e4a7e783e70c9d4d68ecf609884f" - size 145889 + (version "1.02" + filename "hm--html-menus-1.02-pkg.tar.gz" + md5sum "79a9958a08c7e40f8316a9bf8637b3c5" + size 144731 provides (adapt hm--date hm--html-configuration hm--html-drag-and-drop hm--html-indentation hm--html-keys hm--html-menu hm--html-mode hm--html-not-standard hm--html html-view tmpl-minor-mode) + requires () type regular )) (ispell - (version "1.02" - filename "ispell-1.02-pkg.tar.gz" - md5sum "2b9140b4b8757b64ccfc59755df5a7ab" - size 55709 + (version "1.03" + filename "ispell-1.03-pkg.tar.gz" + md5sum "1119bf349568fb8004b317f1a58fed57" + size 55723 provides (ispell) + requires () type regular )) (pc - (version "1.03" - filename "pc-1.03-pkg.tar.gz" - md5sum "97eef269303c73dbe5d19c0f2ce6ed4d" - size 11247 + (version "1.04" + filename "pc-1.04-pkg.tar.gz" + md5sum "4933e0ac375397076df583a6e93ba304" + size 11274 provides (delbs pc-select pending-del s-region) requires (xemacs-base) type regular )) +(psgml + (version "1.0" + filename "psgml-1.0-pkg.tar.gz" + md5sum "9d3f8d0909bc2c291955daa6829a9882" + size 379154 + provides (psgml sgml tempo) + requires () + type regular +)) +(sgml + (version "1.0" + filename "sgml-1.0-pkg.tar.gz" + md5sum "e8e744cff0466a77554dfdd477e40cfe" + size 26814 + provides (sgml linuxdoc-sgml) + requires (xemacs-base) + type regular +)) (slider - (version "1.03" - filename "slider-1.03-pkg.tar.gz" - md5sum "b7d54a810b03f394cafcbc4a8e6e5b44" - size 11845 + (version "1.04" + filename "slider-1.04-pkg.tar.gz" + md5sum "b0af411f9c5a2764152cd0e67b11ba8b" + size 11855 provides (slider color-selector) + requires () type regular )) (speedbar - (version "1.01" - filename "speedbar-1.01-pkg.tar.gz" - md5sum "3fe68d6e9ae69036d35189a3ddebcc2e" - size 62397 + (version "1.02" + filename "speedbar-1.02-pkg.tar.gz" + md5sum "c32984d7c232e7049d09f85989e2087c" + size 62424 provides (speedbar) requires (xemacs-base) type regular )) +(strokes + (version "1.0" + filename "strokes-1.0-pkg.tar.gz" + md5sum "a15ce2a1dca07b18a64bf332c8946e79" + size 43588 + provides (strokes) + requires (text-modes edit-utils mail-lib xemacs-base) + type regular +)) (text-modes - (version "1.01" - filename "text-modes-1.01-pkg.tar.gz" - md5sum "6a4a4536bd9397f0af0b5d224f0176d3" - size 84693 + (version "1.02" + filename "text-modes-1.02-pkg.tar.gz" + md5sum "cc787c8b9945415148ddcdb2590fea10" + size 102015 provides (autoinsert crontab-edit filladapt image-mode iso-acc iso-ascii iso-cvt iso-insert iso-swed swedish tabify whitespace-mode winmgr-mode xpm-mode xrdb-mode) requires (xemacs-base) type regular )) (time - (version "1.01" - filename "time-1.01-pkg.tar.gz" - md5sum "d20af53a3a5f2731032e38783db2b9e9" - size 19819 + (version "1.02" + filename "time-1.02-pkg.tar.gz" + md5sum "78751042a5fc579eda833e75fe91b347" + size 19839 provides (time) requires (xemacs-base) type regular )) +(eterm + (version "1.02" + filename "eterm-1.02-pkg.tar.gz" + md5sum "9bc542d4e560e8a00fd555e76079164f" + size 101730 + provides (eterm) + requires (xemacs-base) + type regular +)) +(igrep + (version "1.0" + filename "igrep-1.0-pkg.tar.gz" + md5sum "58c6155767fd01765000d829fabbc790" + size 13899 + provides (igrep) + requires (efs xemacs-base) + type regular +)) +(ilisp + (version "1.02" + filename "ilisp-1.02-pkg.tar.gz" + md5sum "7fc28390ad9ff212de8da2c3add0dba0" + size 213183 + provides (ilisp completer) + requires (xemacs-base) + type regular +)) +(os-utils + (version "1.03" + filename "os-utils-1.03-pkg.tar.gz" + md5sum "579cd4d025e0b20bbf7887250a0ea599" + size 216645 + provides (archive-mode background crypt crypt++ inf-lisp jka-compr lpr ps-print tar-mode telnet terminal uncompress) + requires (xemacs-base) + type single +)) +(view-process + (version "1.02" + filename "view-process-1.02-pkg.tar.gz" + md5sum "e0ee0de2d7116477aee75b82b8d929a5" + size 59824 + provides (view-process-mode) + requires (xemacs-base) + type regular +)) (ada - (version "1.01" - filename "ada-1.01-pkg.tar.gz" - md5sum "3dfd652bb8e2aae934f34f1f015f4a57" - size 55141 + (version "1.02" + filename "ada-1.02-pkg.tar.gz" + md5sum "0788c1e082dd1c01a7014b2d6314c4b5" + size 54261 provides (ada-mode ada-stmt) + requires () type regular )) (c-support - (version "1.01" - filename "c-support-1.01-pkg.tar.gz" - md5sum "eedf97a19d02454a0ac4021a213cd566" - size 41788 + (version "1.02" + filename "c-support-1.02-pkg.tar.gz" + md5sum "9d6e3bb330ca128c13dea88f321c74c3" + size 41817 provides (c-comment-edit cmacexp hideif hideshow) requires (cc-mode xemacs-base) type regular )) (cc-mode - (version "1.02" - filename "cc-mode-1.02-pkg.tar.gz" - md5sum "a6c3aab6e2c0168d981a5dacbab429f3" - size 128544 + (version "1.03" + filename "cc-mode-1.03-pkg.tar.gz" + md5sum "c943e700b28d9c0fe9a870403b913959" + size 126973 provides (cc-mode) requires (xemacs-base) type regular )) +(debug + (version "1.0" + filename "debug-1.0-pkg.tar.gz" + md5sum "b4f7e2d93c10d9b60dd94171d4fe6a7f" + size 87115 + provides () + requires (xemacs-base) + type regular +)) (ediff - (version "1.01" + (version 1.01 filename "ediff-1.01-pkg.tar.gz" md5sum "68431adebf0b9b76b2e347b5cb531378" size 241640 @@ -262,108 +458,139 @@ requires (xemacs-base efs pcl-cvs) type regular )) +(emerge + (version "1.0" + filename "emerge-1.0-pkg.tar.gz" + md5sum "d5a58538014f89a0210530605eac1817" + size 60851 + provides (emerge) + requires () + type regular +)) (pcl-cvs - (version "1.01" - filename "pcl-cvs-1.01-pkg.tar.gz" - md5sum "4fd7beb2f7a61c6bb8be8ebea5bfa03b" - size 134459 + (version "1.02" + filename "pcl-cvs-1.02-pkg.tar.gz" + md5sum "c0d535bee1bb2ed97f209d76a0dad15f" + size 134504 provides (pcl-cvs dll elib-node generic-sc) requires (xemacs-base) type regular )) (prog-modes + (version "1.02" + filename "prog-modes-1.02-pkg.tar.gz" + md5sum "6f49bfdc7c88ac2182d55c1d4f6c0015" + size 535033 + provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod) + requires (mail-lib xemacs-base) + type regular +)) +(scheme (version "1.01" - filename "prog-modes-1.01-pkg.tar.gz" - md5sum "b0af0691a51202322a7d7d800a2d5543" - size 519423 - provides (autoconf-mode cperl-mode eiffel3 f90 fortran ksh-mode m4-mode makefile perl-mode postscript python-mode rexx-mode simula-mode tcl teco verilog-mod) - requires (xemacs-base mail-lib ) + filename "scheme-1.01-pkg.tar.gz" + md5sum "404316bd16588b6a8e743e261a14afb1" + size 34759 + provides (scheme xscheme cmuscheme) + requires (xemacs-base) type regular )) (sh-script - (version "1.02" - filename "sh-script-1.02-pkg.tar.gz" - md5sum "14493ca0455148f4d62b583d3c1562a9" - size 33556 + (version "1.03" + filename "sh-script-1.03-pkg.tar.gz" + md5sum "1f804e9aa1defc8d5f9d35ffb8f26a34" + size 33568 provides (sh-script executable) requires (xemacs-base) type regular )) -(vc - (version "1.01" - filename "vc-cc-1.01-pkg.tar.gz" - md5sum "2e549b7fbebc82e7166a6c225344e46c" - size 95934 +(vc-cc + (version "1.02" + filename "vc-cc-1.02-pkg.tar.gz" + md5sum "d0c0c5a9cdae43971d845858de4aa6bc" + size 95974 provides (vc) - requires (xemacs-base efs) + requires (efs xemacs-base) type regular )) (vc - (version "1.01" - filename "vc-1.01-pkg.tar.gz" - md5sum "3b40953a1a171aed5f3f4e58963be229" - size 74214 + (version "1.02" + filename "vc-1.02-pkg.tar.gz" + md5sum "c2e1a4c4de6b1e9a43dd6b74028fedf5" + size 74142 provides (vc) - requires (xemacs-base efs) + requires (efs xemacs-base) type regular )) (vhdl - (version "1.01" - filename "vhdl-1.01-pkg.tar.gz" - md5sum "cefebce133fae1544bcd4a487493bde4" - size 54036 + (version "1.02" + filename "vhdl-1.02-pkg.tar.gz" + md5sum "3c28c8ab7866519131ee0fe8e5b08f6e" + size 54025 provides (vhdl-mode) + requires () type regular )) (auctex - (version "1.01" - filename "auctex-1.01-pkg.tar.gz" - md5sum "f720a7e3cedae6276079adc2329b335b" - size 289282 + (version "1.02" + filename "auctex-1.02-pkg.tar.gz" + md5sum "31f3845c0cd3178cbd07478da9a0e70e" + size 289385 provides (auc-old bib-cite font-latex latex multi-prompt tex-buf tex-info tex-jp tex-site tex) requires (xemacs-base) type regular )) (crisp - (version "1.01" - filename "crisp-1.01-pkg.tar.gz" - md5sum "a984e6bc7446c14fc33d94d5ced95f57" - size 9029 + (version "1.02" + filename "crisp-1.02-pkg.tar.gz" + md5sum "d1f9279563f71f947d758e5722619aef" + size 9038 provides (crisp scroll-lock) + requires () type regular )) (edt - (version "1.01" - filename "edt-1.01-pkg.tar.gz" - md5sum "7a9f9182ef96250906ec531ee8b81f46" - size 45966 + (version "1.02" + filename "edt-1.02-pkg.tar.gz" + md5sum "eee41be05231820696aa27fcca84a38c" + size 45981 provides (edt) requires (xemacs-base) type regular )) (texinfo - (version "1.03" - filename "texinfo-1.03-pkg.tar.gz" - md5sum "391537d64b8e03a4233d124c0a92a6c9" - size 113799 + (version "1.04" + filename "texinfo-1.04-pkg.tar.gz" + md5sum "6da524a224540b84c7be79cffcc8f966" + size 113831 provides (makeinfo tex-mode texinfmt texinfo texnfo-tex texnfo-upd) requires (xemacs-base) type regular )) +(textools + (version "1.0" + filename "textools-1.0-pkg.tar.gz" + md5sum "c75f9e6b009a6f9892cd0aa68f8df17b" + size 187454 + provides (bib-mode bibtex refer-to-bibtex reftex) + requires (xemacs-base) + type single +)) (tpu - (version "1.01" - filename "tpu-1.01-pkg.tar.gz" - md5sum "c76aa33c56bb7555c5976b42fdf7b391" - size 64845 + (version "1.03" + filename "tpu-1.03-pkg.tar.gz" + md5sum "c9801b4a173570fce0598182408ce90c" + size 57373 provides (tpu) + requires () type regular )) (viper - (version "1.01" - filename "viper-1.01-pkg.tar.gz" - md5sum "c8b1c0c664baeefe4bfccac077d83ad3" - size 252762 + (version "1.02" + filename "viper-1.02-pkg.tar.gz" + md5sum "99145b4a71030c0fc8c93e24ddc29dd3" + size 260582 provides (viper) + requires (xemacs-base) type regular )) ))
--- a/lisp/package-info.el Mon Aug 13 10:15:49 2007 +0200 +++ b/lisp/package-info.el Mon Aug 13 10:16:16 2007 +0200 @@ -70,7 +70,10 @@ (unless noninteractive (error "`batch-update-package-info' is to be used only with -batch")) (let ((version (nth 0 command-line-args-left)) - (filename (nth 1 command-line-args-left))) + (filename (nth 1 command-line-args-left)) + (requires (nth 2 command-line-args-left))) + (unless requires + (setq requires "")) (find-file package-info) (erase-buffer) (insert-file-contents-literally package-info-template) @@ -82,6 +85,7 @@ (file-name-nondirectory filename))) (pi-update-key "SIZE" (format "%d" (nth 7 (file-attributes filename)))) + (pi-update-key "REQUIRES" requires) (save-buffers-kill-emacs 0))) (provide 'package-info)
--- a/src/ChangeLog Mon Aug 13 10:15:49 2007 +0200 +++ b/src/ChangeLog Mon Aug 13 10:16:16 2007 +0200 @@ -1,4 +1,80 @@ -Sat Jan 10 11:36:11 1998 <andyp@parallax.co.uk> +1998-01-12 SL Baur <steve@altair.xemacs.org> + + * profile.c (Fclear_profiling_info): Fix typing error. + + * elhash.c (elisp_map_remhash): Fix typing error. + (elisp_maphash): Ditto. + +1998-01-12 Hrvoje Niksic <hniksic@srce.hr> + + * mule-ccl.c (Fccl_execute_on_string): Use Dynar_free to free a + Dynarr. + +1998-01-13 Hrvoje Niksic <hniksic@srce.hr> + + * profile.c (vars_of_profile): New variable + `call-count-profile-table'. + (Fclear_profiling_info): Clear call-count-profile-table. + + * eval.c (funcall_recording_as): Use it. + + * profile.c (profile_increase_call_count): New function. + + * lstream.c (stdio_flusher): Comment addition. + + * objects-msw.c (mswindows_string_to_color): Support #RRRGGGBBB, + as well as #RRGGBB. + (mswindows_X_color_map): Reformatted. + +1998-01-12 Hrvoje Niksic <hniksic@srce.hr> + + * line-number.c (invalidate_line_number_cache): Comment fixup. + + * symbols.c (Fapropos_internal): Docstring fix. + + * fns.c (Fstring_equal): Docstring fix. + +1998-01-12 Hrvoje Niksic <hniksic@srce.hr> + + * profile.c (get_profiling_info_maphash): Return int. + (mark_profiling_info_maphash): Ditto. + + * elhash.c (Finternal_hash_value): New debugging function, + undefined by default. + +1998-01-11 Hrvoje Niksic <hniksic@srce.hr> + + * mule-coding.c (add_coding_system_to_list_mapper): Ditto. + + * mule-charset.c (add_charset_to_list_mapper): Return int. + + * faces.c (add_face_to_list_mapper): Return int. + (mark_face_as_clean_mapper): Ditto. + (update_face_inheritance_mapper): Ditto. + + * keymap.c (keymap_submaps_mapper_0): Return int. + (keymap_submaps_mapper): Ditto. + (copy_keymap_inverse_mapper): Ditto. + (copy_keymap_mapper): Ditto. + (map_keymap_unsorted_mapper): Ditto. + (map_keymap_sorted_mapper): Ditto. + + * elhash.c (hashtable): Added a hash method. + (hashtable_hash): New function. + +1998-01-09 Hrvoje Niksic <hniksic@srce.hr> + + * elhash.c (lisp_maphash_function): Return 0. + (hashtable_equal_mapper): Bail out when an element is not `equal'. + + * hash.c (maphash): Bail out if map function returns non-zero. + +1998-01-11 SL Baur <steve@altair.xemacs.org> + + * eval.c (Fbacktrace): Treat first parameter to byte-code + specially. + +Sat Jan 10 11:36:11 1998 Andy Piper <andyp@parallax.co.uk> * config.h.in: undef HAVE_SYS_UN_H so that it gets defined by configure for gnuserv with UNIX_DOMAIN_SOCKETS.
--- a/src/elhash.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/elhash.c Mon Aug 13 10:16:16 2007 +0200 @@ -51,9 +51,11 @@ static Lisp_Object mark_hashtable (Lisp_Object, void (*) (Lisp_Object)); static void print_hashtable (Lisp_Object, Lisp_Object, int); static int hashtable_equal (Lisp_Object t1, Lisp_Object t2, int depth); +static unsigned long hashtable_hash (Lisp_Object obj, int depth); DEFINE_LRECORD_IMPLEMENTATION ("hashtable", hashtable, mark_hashtable, print_hashtable, 0, - hashtable_equal, 0, struct hashtable); + hashtable_equal, hashtable_hash, + struct hashtable); static Lisp_Object mark_hashtable (Lisp_Object obj, void (*markobj) (Lisp_Object)) @@ -78,43 +80,38 @@ elements, and for each key in hashtable, the values are `equal'. This is similar to Common Lisp `equalp' of hashtables, with the - difference that CL requires the keys to be compared using the - `:test' function, which we don't do. Doing that would require - consing, and consing is bad idea in `equal'. Anyway, our method - should provide the same result -- if the keys are not equal - according to `:test', then Fgethash() in hashtable_equal_mapper() - will fail. */ + difference that CL requires the keys to be compared with the test + function, which we don't do. Doing that would require consing, and + consing is bad idea in `equal'. Anyway, our method should provide + the same result -- if the keys are not equal according to test + function, then Fgethash() in hashtable_equal_mapper() will fail. */ struct hashtable_equal_closure { int depth; - int equal_so_far; + int equal; Lisp_Object other_table; }; -static void +static int hashtable_equal_mapper (void *key, void *contents, void *arg) { struct hashtable_equal_closure *closure = (struct hashtable_equal_closure *)arg; Lisp_Object keytem, valuetem; + Lisp_Object value_in_other; - /* It would be beautiful if maphash() allowed us to bail out when C - function returns non-zero, a la map_extents() et al. #### Make - it so! */ - if (closure->equal_so_far) + CVOID_TO_LISP (keytem, key); + CVOID_TO_LISP (valuetem, contents); + /* Look up the key in the other hashtable, and compare the values. */ + value_in_other = Fgethash (keytem, closure->other_table, Qunbound); + if (UNBOUNDP (value_in_other) + || !internal_equal (valuetem, value_in_other, closure->depth)) { - Lisp_Object value_in_other; - CVOID_TO_LISP (keytem, key); - CVOID_TO_LISP (valuetem, contents); - /* Look up the key in the other hashtable, and compare the - values. */ - value_in_other = Fgethash (keytem, closure->other_table, Qunbound); - if (UNBOUNDP (value_in_other) - || !internal_equal (valuetem, value_in_other, closure->depth)) - closure->equal_so_far = 0; - /* return 1; */ + /* Give up. */ + closure->equal = 0; + return 1; } - /* return 0; */ + return 0; } static int @@ -133,10 +130,71 @@ return 0; closure.depth = depth + 1; - closure.equal_so_far = 1; + closure.equal = 1; closure.other_table = t2; elisp_maphash (hashtable_equal_mapper, t1, &closure); - return closure.equal_so_far; + return closure.equal; +} + +/* Hashtable hash function. This hashes 5 key-value pairs. For EQ + hashtables, keys are used as the hash value themselves, whereas + values are hashed with internal_hash(). For EQUAL hashtables, both + keys and values are hashed properly. EQL tables are handled as + necessary. All of this should make the hash function compatible + with hashtable_equal(). The elements hashed are the first five + mapped over by maphash(). */ + +struct hashtable_hash_closure +{ + struct hashtable *table; + int depth; + unsigned long hash; + int count; +}; + +/* Needed for tests. */ +static int lisp_object_eql_equal (CONST void *x1, CONST void *x2); +static int lisp_object_equal_equal (CONST void *x1, CONST void *x2); + +static int +hashtable_hash_mapper (void *key, void *contents, void *arg) +{ + struct hashtable_hash_closure *closure = + (struct hashtable_hash_closure *)arg; + Lisp_Object valuetem, keytem; + unsigned long keyhash; + + CVOID_TO_LISP (keytem, key); + CVOID_TO_LISP (valuetem, contents); + + if (!closure->table->test_function) + /* For eq, use key itself as hash. */ + keyhash = LISP_HASH (keytem); + else if (closure->table->test_function == lisp_object_eql_equal) + /* The same as eq, unless the key is float. */ + keyhash = (FLOATP (keytem) + ? internal_hash (keytem, closure->depth) : LISP_HASH (keytem)); + else + /* equal: hash the key properly. */ + keyhash = internal_hash (keytem, closure->depth); + + closure->hash = HASH3 (closure->hash, keyhash, + internal_hash (valuetem, closure->depth)); + return (++closure->count > 5) ? 1 : 0; +} + +static unsigned long +hashtable_hash (Lisp_Object obj, int depth) +{ + struct hashtable_hash_closure closure; + + closure.table = XHASHTABLE (obj); + closure.depth = depth + 1; + closure.hash = 0; + closure.count = 0; + + elisp_maphash (hashtable_hash_mapper, obj, &closure); + return closure.hash; } /* Printing hashtables. @@ -157,7 +215,7 @@ #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d> The data is truncated to four pairs, and the rest is shown with - `...'. The actual printer is non-consing. */ + `...'. This printer does not cons. */ struct print_hashtable_data_closure { @@ -168,7 +226,7 @@ Lisp_Object printcharfun; }; -static void +static int print_hashtable_data_mapper (void *key, void *contents, void *arg) { Lisp_Object keytem, valuetem; @@ -188,6 +246,7 @@ print_internal (valuetem, closure->printcharfun, 1); } ++closure->count; + return 0; } /* Print the data of the hashtable. This maps through a Lisp @@ -205,10 +264,6 @@ printcharfun); } -/* Needed for tests. */ -static int lisp_object_eql_equal (CONST void *x1, CONST void *x2); -static int lisp_object_equal_equal (CONST void *x1, CONST void *x2); - static void print_hashtable (Lisp_Object obj, Lisp_Object printcharfun, int escapeflag) { @@ -226,8 +281,10 @@ "you-d-better-not-see-this")); write_c_string (buf, printcharfun); } - /* These checks are way kludgy... */ - if (table->test_function == NULL) + /* These checks have a kludgy look to them, but they are safe. Due + to nature of hashing, you cannot use arbitrary test functions + anyway. */ + if (!table->test_function) write_c_string (" test eq", printcharfun); else if (table->test_function == lisp_object_equal_equal) write_c_string (" test equal", printcharfun); @@ -521,6 +578,8 @@ int lisp_string_equal (CONST void *x1, CONST void *x2) { + /* This is wrong anyway. You can't use strcmp() on Lisp strings, + because they can contain zero characters. */ Lisp_Object str1, str2; CVOID_TO_LISP (str1, x1); CVOID_TO_LISP (str2, x2); @@ -803,7 +862,7 @@ signal_error (Qinvalid_function, list1 (function)); } -static void +static int lisp_maphash_function (CONST void *void_key, void *void_val, void *void_fn) @@ -814,6 +873,7 @@ VOID_TO_LISP (val, void_val); VOID_TO_LISP (fn, void_fn); call2 (fn, key, val); + return 0; } @@ -840,7 +900,9 @@ lisp hashtable. */ void -elisp_maphash (maphash_function function, Lisp_Object hashtable, void *closure) +elisp_maphash (void (*function) (CONST void *key, void *contents, + void *extra_arg), + Lisp_Object hashtable, void *closure) { struct _C_hashtable htbl; @@ -850,7 +912,10 @@ } void -elisp_map_remhash (remhash_predicate function, Lisp_Object hashtable, +elisp_map_remhash (int (*function) (CONST void *key, + CONST void *contents, + void *extra_arg), + Lisp_Object hashtable, void *closure) { struct _C_hashtable htbl; @@ -933,7 +998,7 @@ int did_mark; }; -static void +static int marking_mapper (CONST void *key, void *contents, void *closure) { Lisp_Object keytem, valuetem; @@ -1001,7 +1066,7 @@ abort (); /* Huh? */ } - return; + return 0; } int @@ -1189,6 +1254,19 @@ return LISP_HASH (obj); } +#if 0 +xxDEFUN ("internal-hash-value", Finternal_hash_value, 1, 1, 0, /* +Hash value of OBJECT. For debugging. +The value is returned as (HIGH . LOW). +*/ + (object)) +{ + /* This function is pretty 32bit-centric. */ + unsigned long hash = internal_hash (object, 0); + return Fcons (hash >> 16, hash & 0xffff); +} +#endif + /************************************************************************/ /* initialization */ @@ -1209,6 +1287,9 @@ DEFSUBR (Fmake_weak_hashtable); DEFSUBR (Fmake_key_weak_hashtable); DEFSUBR (Fmake_value_weak_hashtable); +#if 0 + DEFSUBR (Finternal_hash_value); +#endif defsymbol (&Qhashtablep, "hashtablep"); defsymbol (&Qhashtable, "hashtable"); defsymbol (&Qweak, "weak");
--- a/src/eval.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/eval.c Mon Aug 13 10:16:16 2007 +0200 @@ -51,6 +51,9 @@ #define POP_BACKTRACE(bt) \ do { backtrace_list = (bt).next; } while (0) +extern int profiling_active; +void profile_increase_call_count (Lisp_Object); + /* This is the list of current catches (and also condition-cases). This is a stack: the most recent catch is at the head of the list. Catches are created by declaring a 'struct catchtag' @@ -3199,6 +3202,10 @@ } #endif + /* It might be useful to place this *after* all the checks. */ + if (profiling_active) + profile_increase_call_count (fun); + if (SYMBOLP (fun)) fun = indirect_function (fun, 1); @@ -5047,6 +5054,10 @@ int i; for (i = 0; i < backlist->nargs; i++) { + if (!i && EQ(tem, Qbyte_code)) { + write_c_string("\"...\"", stream); + continue; + } if (i != 0) write_c_string (" ", stream); Fprin1 (backlist->args[i], stream); }
--- a/src/faces.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/faces.c Mon Aug 13 10:16:16 2007 +0200 @@ -390,7 +390,7 @@ Lisp_Object *face_list; }; -static void +static int add_face_to_list_mapper (CONST void *hash_key, void *hash_contents, void *face_list_closure) { @@ -404,6 +404,7 @@ face_list = fcl->face_list; *face_list = Fcons (XFACE (contents)->name, *face_list); + return 0; } static Lisp_Object @@ -434,7 +435,7 @@ } -static void +static int mark_face_as_clean_mapper (CONST void *hash_key, void *hash_contents, void *flag_closure) { @@ -444,6 +445,7 @@ CVOID_TO_LISP (key, hash_key); VOID_TO_LISP (contents, hash_contents); XFACE (contents)->dirty = *flag; + return 0; } static void @@ -501,7 +503,7 @@ UNGCPRO; } -static void +static int update_face_inheritance_mapper (CONST void *hash_key, void *hash_contents, void *face_inheritance_closure) { @@ -536,6 +538,7 @@ update_inheritance_mapper_internal (contents, fcl->face, Qblinking); update_inheritance_mapper_internal (contents, fcl->face, Qreverse); } + return 0; } static void
--- a/src/fns.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/fns.c Mon Aug 13 10:16:16 2007 +0200 @@ -269,11 +269,12 @@ DEFUN ("string-equal", Fstring_equal, 2, 2, 0, /* T if two strings have identical contents. Case is significant. Text properties are ignored. -(Under XEmacs, `equal' also ignores text properties and extents in -strings, but this is not the case under FSF Emacs.) +\(Under XEmacs, `equal' also ignores text properties and extents in +strings, but this is not the case under FSF Emacs 19. In FSF Emacs 20 +`equal' is the same as in XEmacs, in that respect.) Symbols are also allowed; their print names are used instead. */ - (s1, s2)) + (s1, s2)) { int len;
--- a/src/hash.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/hash.c Mon Aug 13 10:16:16 2007 +0200 @@ -453,12 +453,18 @@ hentry *limit; if (hash->zero_set) - ((*mf) (0, hash->zero_entry, arg)); + { + if (((*mf) (0, hash->zero_entry, arg))) + return; + } for (e = hash->harray, limit = e + hash->size; e < limit; e++) { if (e->key) - ((*mf) (e->key, e->contents, arg)); + { + if (((*mf) (e->key, e->contents, arg))) + return; + } } }
--- a/src/hash.h Mon Aug 13 10:15:49 2007 +0200 +++ b/src/hash.h Mon Aug 13 10:16:16 2007 +0200 @@ -70,7 +70,7 @@ /* delete the entry which key is key */ void remhash (CONST void *key, c_hashtable hash); -typedef void (*maphash_function) (CONST void* key, void* contents, void* arg); +typedef int (*maphash_function) (CONST void* key, void* contents, void* arg); typedef int (*remhash_predicate) (CONST void* key, CONST void* contents, void* arg);
--- a/src/keymap.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/keymap.c Mon Aug 13 10:16:16 2007 +0200 @@ -681,7 +681,7 @@ Lisp_Object *result_locative; }; -static void +static int keymap_submaps_mapper_0 (CONST void *hash_key, void *hash_contents, void *keymap_submaps_closure) { @@ -690,9 +690,10 @@ VOID_TO_LISP (contents, hash_contents); /* Perform any autoloads, etc */ Fkeymapp (contents); + return 0; } -static void +static int keymap_submaps_mapper (CONST void *hash_key, void *hash_contents, void *keymap_submaps_closure) { @@ -707,6 +708,7 @@ if (!NILP (Fkeymapp (contents))) *result_locative = Fcons (Fcons (key, contents), *result_locative); + return 0; } static int map_keymap_sort_predicate (Lisp_Object obj1, Lisp_Object obj2, @@ -1110,7 +1112,7 @@ Lisp_Object inverse_table; }; -static void +static int copy_keymap_inverse_mapper (CONST void *hash_key, void *hash_contents, void *copy_keymap_inverse_closure) { @@ -1125,6 +1127,8 @@ if (CONSP (inverse_contents)) inverse_contents = Fcopy_sequence (inverse_contents); Fputhash (key, inverse_contents, closure->inverse_table); + + return 0; } @@ -1157,7 +1161,7 @@ struct keymap *self; }; -static void +static int copy_keymap_mapper (CONST void *hash_key, void *hash_contents, void *copy_keymap_closure) { @@ -1178,6 +1182,7 @@ if (KEYMAPP (contents)) keymap_store_internal (key, closure->self, copy_keymap (contents)); + return 0; } static Lisp_Object @@ -2765,7 +2770,7 @@ }; /* used by map_keymap() */ -static void +static int map_keymap_unsorted_mapper (CONST void *hash_key, void *hash_contents, void *map_keymap_unsorted_closure) { @@ -2796,6 +2801,7 @@ key.modifiers = modifiers; ((*closure->fn) (&key, contents, closure->arg)); } + return 0; } @@ -2805,7 +2811,7 @@ }; /* used by map_keymap_sorted() */ -static void +static int map_keymap_sorted_mapper (CONST void *hash_key, void *hash_contents, void *map_keymap_sorted_closure) { @@ -2816,6 +2822,7 @@ CVOID_TO_LISP (key, hash_key); VOID_TO_LISP (contents, hash_contents); *list = Fcons (Fcons (key, contents), *list); + return 0; }
--- a/src/line-number.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/line-number.c Mon Aug 13 10:16:16 2007 +0200 @@ -134,8 +134,15 @@ if (!CONSP (ring[i])) break; /* As the marker stays behind the insertions, this check might - as well be >=. However, Finsert_before_markers can move the - marker anyway, which bites in shell buffers. */ + as well be `>'. However, Finsert_before_markers can move the + marker anyway, which bites in shell buffers. + + #### This is wrong; it works right, but forces recreation of + the cached marker (and recalculation of newlines) every time + a newline is inserted at point, which is way losing. Isn't + there a way to make a marker impervious to + Finsert_before_markers()?? Maybe I should convert to using + extents. */ if (marker_position (XCAR (ring[i])) >= pos) { /* Get the marker out of the way. */
--- a/src/lstream.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/lstream.c Mon Aug 13 10:16:16 2007 +0200 @@ -898,7 +898,9 @@ if (stream->flags & LSTREAM_FL_WRITE) return fflush (str->file); else - /* call fpurge? Only exists on some systems. */ + /* call fpurge? Only exists on some systems. #### Why not add a + configure check for HAVE_FPURGE and utilize it on systems that + support it? --hniksic */ return 0; }
--- a/src/mule-ccl.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/mule-ccl.c Mon Aug 13 10:16:16 2007 +0200 @@ -967,7 +967,7 @@ CHECK_VECTOR (ccl_prog); CHECK_VECTOR (reg); if (XVECTOR_LENGTH (reg) != 8) - error ("Invalid length of vector REGISTERS"); + signal_simple_error ("Vector should be of length 8", reg); setup_ccl_program (&ccl, ccl_prog); for (i = 0; i < 8; i++) @@ -1012,7 +1012,7 @@ CHECK_VECTOR (ccl_prog); CHECK_VECTOR (status); if (XVECTOR_LENGTH (status) != 9) - error ("Invalid length of vector STATUS"); + signal_simple_error ("Vector should be of length 9", status); CHECK_STRING (str); GCPRO3 (ccl_prog, status, str); @@ -1040,7 +1040,7 @@ UNGCPRO; val = make_string (Dynarr_atp (outbuf, 0), produced); - free (outbuf); + Dynarr_free (outbuf); QUIT; if (ccl.status != CCL_STAT_SUCCESS && ccl.status != CCL_STAT_SUSPEND)
--- a/src/mule-charset.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/mule-charset.c Mon Aug 13 10:16:16 2007 +0200 @@ -561,7 +561,7 @@ Lisp_Object *charset_list; }; -static void +static int add_charset_to_list_mapper (CONST void *hash_key, void *hash_contents, void *charset_list_closure) { @@ -575,6 +575,7 @@ charset_list = chcl->charset_list; *charset_list = Fcons (XCHARSET_NAME (contents), *charset_list); + return 0; } DEFUN ("charset-list", Fcharset_list, 0, 0, 0, /*
--- a/src/mule-coding.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/mule-coding.c Mon Aug 13 10:16:16 2007 +0200 @@ -439,7 +439,7 @@ Lisp_Object *coding_system_list; }; -static void +static int add_coding_system_to_list_mapper (CONST void *hash_key, void *hash_contents, void *coding_system_list_closure) { @@ -454,6 +454,7 @@ *coding_system_list = Fcons (XCODING_SYSTEM (contents)->name, *coding_system_list); + return 0; } DEFUN ("coding-system-list", Fcoding_system_list, 0, 0, 0, /*
--- a/src/profile.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/profile.c Mon Aug 13 10:16:16 2007 +0200 @@ -1,5 +1,6 @@ /* Why the hell is XEmacs so fucking slow? Copyright (C) 1996 Ben Wing. + Copyright (C) 1998 Free Software Foundation, Inc. This file is part of XEmacs. @@ -28,27 +29,35 @@ #include "syssignal.h" #include "systime.h" -/* +/* We implement our own profiling scheme so that we can determine + things like which Lisp functions are occupying the most time. Any + standard OS-provided profiling works on C functions, which is + somewhat useless. -We implement our own profiling scheme so that we can determine things -like which Lisp functions are occupying the most time. Any standard -OS-provided profiling works on C functions, which is somewhat useless. + The basic idea is simple. We set a profiling timer using setitimer + (ITIMER_PROF), which generates a SIGPROF every so often. (This + runs not in real time but rather when the process is executing or + the system is running on behalf of the process.) When the signal + goes off, we see what we're in, and add by 1 the count associated + with that function. -The basic idea is simple. We set a profiling timer using -setitimer (ITIMER_PROF), which generates a SIGPROF every so often. -\(This runs not in real time but rather when the process is executing -or the system is running on behalf of the process.) When the signal -goes off, we see what we're in, and add by 1 the count associated with -that function. + It would be nice to use the Lisp allocation mechanism etc. to keep + track of the profiling information, but we can't because that's not + safe, and trying to make it safe would be much more work than is + worth. + -It would be nice to use the Lisp allocation mechanism etc. to keep -track of the profiling information, but we can't because that's not -safe, and trying to make it safe would be much more work than is -worth. - -*/ + Jan 1998: In addition to this, I have added code to remember call + counts of Lisp funcalls. The profile_increase_call_count() + function is called from funcall_recording_as(), and serves to add + data to Vcall_count_profile_table. This mechanism is much simpler + and independent of the SIGPROF-driven one. It uses the Lisp + allocation mechanism normally, since it is not called from a + handler. It may even be useful to provide a way to turn on only + one profiling mechanism, but I haven't done so yet. --hniksic */ c_hashtable big_profile_table; +Lisp_Object Vcall_count_profile_table; int default_profiling_interval; @@ -69,6 +78,22 @@ enough to catch us while we're already in there. */ static volatile int inside_profiling; +/* Increase the value of OBJ in Vcall_count_profile_table hashtable. + If hashtable is nil, create it first. */ +void +profile_increase_call_count (Lisp_Object obj) +{ + Lisp_Object count; + + if (NILP (Vcall_count_profile_table)) + Vcall_count_profile_table = Fmake_hashtable (make_int (100), Qeq); + + count = Fgethash (obj, Vcall_count_profile_table, Qzero); + if (!INTP (count)) + count = Qzero; + Fputhash (obj, make_int (1 + XINT (count)), Vcall_count_profile_table); +} + static SIGTYPE sigprof_handler (int signo) { @@ -194,7 +219,7 @@ Lisp_Object accum; }; -static void +static int get_profiling_info_maphash (CONST void *void_key, void *void_val, void *void_closure) @@ -209,6 +234,7 @@ val = (EMACS_INT) void_val; closure->accum = Fcons (Fcons (key, make_int (val)), closure->accum); + return 0; } DEFUN ("get-profiling-info", Fget_profiling_info, 0, 0, 0, /* @@ -236,7 +262,7 @@ void (*markfun) (Lisp_Object); }; -static void +static int mark_profiling_info_maphash (CONST void *void_key, void *void_val, void *void_closure) @@ -245,6 +271,7 @@ CVOID_TO_LISP (key, void_key); (((struct mark_profiling_info_closure *) void_closure)->markfun) (key); + return 0; } void @@ -274,6 +301,8 @@ clrhash (big_profile_table); inside_profiling = 0; } + if (!NILP(Vcall_count_profile_table)) + Fclrhash (Vcall_count_profile_table); return Qnil; } @@ -306,6 +335,13 @@ */ ); default_profiling_interval = 1000; + DEFVAR_LISP ("call-count-profile-table", &Vcall_count_profile_table /* +The table where call-count information is stored by the profiling primitives. +This is a hashtable whose keys are funcallable objects, and whose + values are their call counts (integers). +*/ ); + Vcall_count_profile_table = Qnil; + inside_profiling = 0; QSin_redisplay = build_string ("(in redisplay)");
--- a/src/symbols.c Mon Aug 13 10:15:49 2007 +0200 +++ b/src/symbols.c Mon Aug 13 10:16:16 2007 +0200 @@ -445,8 +445,9 @@ DEFUN ("apropos-internal", Fapropos_internal, 1, 2, 0, /* Show all symbols whose names contain match for REGEXP. -If optional 2nd arg PREDICATE is non-nil, (funcall PRED SYM) is done -for each symbol and a symbol is mentioned only if that returns non-nil. +If optional 2nd arg PREDICATE is non-nil, (funcall PREDICATE SYMBOL) + is done for each symbol and a symbol is mentioned only if that + returns non-nil. Return list of symbols found. */ (regexp, predicate))