Mercurial > hg > xemacs-beta
annotate lisp/callers-of-rpt.el @ 5602:c9e5612f5424
Support the MP library on recent FreeBSD, have it pass relevant tests.
src/ChangeLog addition:
2011-11-26 Aidan Kehoe <kehoea@parhasard.net>
* number-mp.c (bignum_to_string):
Don't overwrite the accumulator we've just set up for this
function.
* number-mp.c (BIGNUM_TO_TYPE):
mp_itom() doesn't necessarily do what this code used to think with
negative numbers, it can treat them as unsigned ints. Subtract
numbers from bignum_zero instead of multiplying them by -1 to
convert them to their negative equivalents.
* number-mp.c (bignum_to_int):
* number-mp.c (bignum_to_uint):
* number-mp.c (bignum_to_long):
* number-mp.c (bignum_to_ulong):
* number-mp.c (bignum_to_double):
Use the changed BIGNUM_TO_TYPE() in these functions.
* number-mp.c (bignum_ceil):
* number-mp.c (bignum_floor):
In these functions, be more careful about rounding to positive and
negative infinity, respectively. Don't use the sign of QUOTIENT
when working out out whether to add or subtract one, rather use
the sign QUOTIENT would have if arbitrary-precision division were
done.
* number-mp.h:
* number-mp.h (MP_GCD):
Wrap #include <mp.h> in BEGIN_C_DECLS/END_C_DECLS.
* number.c (Fbigfloat_get_precision):
* number.c (Fbigfloat_set_precision):
Don't attempt to call XBIGFLOAT_GET_PREC if this build doesn't
support big floats.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 26 Nov 2011 17:59:14 +0000 |
parents | 308d34e9f07d |
children |
rev | line source |
---|---|
428 | 1 ;;; callers-of-rpt.el --- generate call graph of lisp in XEmacs |
2 | |
3 ;; Copyright (C) 1997 Karl Hegbloom | |
4 ;; Copyright (C) 1997 Free Software Foundation, Inc. | |
5 | |
6 ;; Author: Karl Hegbloom <karlheg@inetarena.com> | |
7 ;; Maintainer: XEmacs Development Team | |
8 ;; Keywords: internal | |
9 | |
10 ;; This file is part of XEmacs. | |
11 | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
12 ;; XEmacs is free software: you can redistribute it and/or modify it |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
13 ;; under the terms of the GNU General Public License as published by the |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
14 ;; Free Software Foundation, either version 3 of the License, or (at your |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
15 ;; option) any later version. |
428 | 16 |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
17 ;; XEmacs is distributed in the hope that it will be useful, but WITHOUT |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
18 ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
19 ;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
20 ;; for more details. |
428 | 21 |
22 ;; You should have received a copy of the GNU General Public License | |
5402
308d34e9f07d
Changed bulk of GPLv2 or later files identified by script
Mats Lidell <matsl@xemacs.org>
parents:
428
diff
changeset
|
23 ;; along with XEmacs. If not, see <http://www.gnu.org/licenses/>. |
428 | 24 |
25 ;;; Synched up with: not in FSF | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;; Grep-2.1 is required. | |
30 ;; Modify the `xemacs-src-lisp-dir' and `xemacs-pkg-lisp-dir' to reflect | |
31 ;; where these directories live on your local system. | |
32 | |
33 ;;; Code: | |
34 | |
35 (defvar xemacs-src-lisp-dir "/usr/src/xemacs-20.0/lisp/" | |
36 "Where the XEmacs 20 lisp sources live.") | |
37 (defvar xemacs-pkg-lisp-dir "/home/xemacs/packages/" | |
38 "Where the package lisp sources live.") | |
39 | |
40 ;; (makunbound 'caller-table) | |
41 (defconst caller-table (make-hash-table :test 'equal) | |
42 "Hash table keyed on the symbols being required. Each element will | |
43 be a list of file-names of programs that depend on them.") | |
44 | |
45 ;;./apel/atype.el:(require 'emu) | |
46 ;;./apel/atype.el:(require 'alist) | |
47 ;;./apel/emu-e19.el: (require 'emu-xemacs)) | |
48 ;;./apel/emu-e19.el: (require 'emu-19) | |
49 | |
50 (defun make-caller-report () | |
51 "Generate a simple report showing .el files that are `require'd by | |
52 other .el files, and the list of programs that depend on them." | |
53 (interactive) | |
54 (let ((cmd-out (get-buffer-create "*caller-report find-grep output*")) | |
55 (rpt (get-buffer-create "* caller report *")) | |
56 file-name) | |
57 (switch-to-buffer cmd-out) | |
58 (buffer-disable-undo cmd-out) | |
59 (set-syntax-table emacs-lisp-mode-syntax-table cmd-out) | |
60 (erase-buffer cmd-out) | |
61 (message "Running the find | grep...") | |
62 (sit-for 0) | |
63 ;; Note: Edit this part as needed for your installation. | |
64 (shell-command (concat | |
65 ;; First the installed lisp | |
66 "cd " xemacs-src-lisp-dir " ;" | |
67 "grep -H '(require ' $(find -name '*.el' -print) |" | |
68 " grep -v 'auto-autoloads\\.el\\|callers-of-rpt\\.el' |" | |
69 " grep -v 'el:[ \t]*;\\|require load' ;" ; ones commented off, and cus-edit.el | |
70 ;; Then the packages | |
71 "cd " xemacs-pkg-lisp-dir " ;" | |
72 "grep -H '(require ' $(find -name '*.el' -print) |" | |
73 " grep -v 'auto-autoloads\\.el\\|callers-of-rpt\\.el' |" | |
74 " grep -v 'el:[ \t]*;' ;" ; ones commented off | |
75 ) | |
76 cmd-out) | |
77 (message "Running the find | grep... Done.") | |
78 (goto-char (point-min)) | |
79 (sit-for 0) | |
80 (while (not (eobp)) | |
81 (setq file-name (buffer-substring (+ (point) 2) ; skip the leading "./" | |
82 (progn | |
83 (skip-chars-forward "^:") | |
84 (point)) | |
85 cmd-out)) | |
86 (re-search-forward "(require '" nil t) | |
87 (let* ((key (buffer-substring (point) (progn | |
88 (skip-chars-forward "^) ") | |
89 (point)) | |
90 cmd-out)) | |
91 (lst (gethash key caller-table))) | |
92 (unless (member file-name lst) | |
93 (puthash key (cons file-name lst) caller-table))) | |
94 (forward-line 1) | |
95 (sit-for 0)) | |
96 (switch-to-buffer rpt) | |
97 (buffer-disable-undo rpt) | |
98 (erase-buffer rpt) | |
99 (sit-for 0) | |
100 (let (keys) | |
101 (maphash #'(lambda (key val) (push key keys)) caller-table) | |
102 (setq keys (sort keys #'string<)) | |
103 (mapc #'(lambda (key) | |
104 (insert (format "(%s '(" key)) | |
105 (let ((lst (gethash key caller-table))) | |
106 (while lst | |
107 (insert (format "%S" (car lst))) | |
108 (setq lst (cdr lst)) | |
109 (when lst (insert " ")))) | |
110 (insert "))\n") | |
111 (sit-for 0)) | |
112 keys)))) | |
113 | |
114 (byte-compile 'make-caller-report) | |
115 (delete-other-windows) | |
116 (make-caller-report) | |
117 | |
118 ;;; callers-of-rpt.el ends here |