Mercurial > hg > xemacs-beta
annotate lisp/make-docfile.el @ 5219:2d0937dc83cf
Tidying of CL files; make docstrings read better, remove commented-out code
2010-05-30 Aidan Kehoe <kehoea@parhasard.net>
* cl.el: Remove extraneous empty lines.
Remove the commented-out Lisp implementation of #'last,
#'copy-list.
Remove #'cl-maclisp-member.
(acons, pairlis): Have the argument list reflect the docstring for
these functions.
* cl-macs.el (defun*): Have the argument list reflect the
docstring.
Document the syntax of keywords in ARGLIST.
(defmacro*): Have the argument list reflect the docstring.
Document &body, &whole and &environment.
(function*): Have the argument list reflect the docstring.
(loop): Have the argument list reflect the docstring.
(eval-when, dolist, dotimes, do-symbols, flet, labels, macrolet,
symbol-macrolet):
Specify the argument list using the arguments: (...) syntax.
(define-setf-method, rotatef, defsubst*): Have the argument list
reflect the docstring.
(letf, letf*):
Specify the argument list using the arguments: (...) syntax.
(svref, acons, pairlis): Add compiler macros for these functions.
* cl-extra.el: Remove the commented-out Lisp implementation of
#'equalp. If we want to look at it, it's in version control.
(cl-expt): Remove this. The subr #'expt is always available.
Call #'cl-float-limits at dump time.
Remove the commented-out Lisp implementation of #'subseq.
(concatenate): Use (error 'invalid-argument ...) here, if TYPE is
not understood.
(list-length): Don't manually get the length of a list, call
#'length and return nil if the list is circular.
* byte-optimize.el (equalp): This needs
byte-optimize-binary-predicate as its optimizer, as do the other
equality predicates.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sun, 30 May 2010 13:27:36 +0100 |
parents | e402e3506a53 |
children | 308d34e9f07d |
rev | line source |
---|---|
428 | 1 ;;; make-docfile.el --- Cache docstrings in external file |
2 | |
3 ;; Copyright (C) 1985, 1986, 1992-1995, 1997 Free Software Foundation, Inc. | |
1303 | 4 ;; Copyright (C) 2002, 2003 Ben Wing. |
428 | 5 |
6 ;; Author: Unknown | |
1330 | 7 ;; Maintainer: XEmacs Development Team |
428 | 8 ;; Keywords: internal |
9 | |
10 ;; This file is part of XEmacs. | |
11 | |
12 ;; XEmacs is free software; you can redistribute it and/or modify it | |
13 ;; under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; XEmacs is distributed in the hope that it will be useful, but | |
18 ;; WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
20 ;; General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with XEmacs; see the file COPYING. If not, write to the Free | |
24 ;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA | |
25 ;; 02111-1307, USA. | |
26 | |
27 ;;; Synched up with: Not in FSF | |
28 | |
29 ;;; Commentary: | |
30 | |
31 ;; This is a front-end to the make-docfile program that gathers up all the | |
32 ;; lisp files that will be dumped with XEmacs. It would probably be best | |
33 ;; to just move make-docfile.c completely to lisp and be done with it. | |
34 | |
35 ;;; Code: | |
36 | |
1261 | 37 ;; Help debug problems. |
38 (setq stack-trace-on-error t | |
39 load-always-display-messages t) | |
40 | |
428 | 41 (defvar options nil) |
42 (defvar processed nil) | |
43 (defvar docfile nil) | |
44 (defvar docfile-buffer nil) | |
45 (defvar site-file-list nil) | |
46 (defvar docfile-out-of-date nil) | |
47 | |
3511 | 48 (defvar build-directory (expand-file-name ".." invocation-directory)) |
49 (defvar build-lib-src (expand-file-name "lib-src" build-directory)) | |
1330 | 50 (defvar source-lisp (file-name-directory (expand-file-name |
51 (nth 2 command-line-args)))) | |
52 (defvar source-src (expand-file-name "../src" source-lisp)) | |
53 | |
1303 | 54 (defun message (fmt &rest args) |
55 (princ (apply #'format fmt args)) | |
56 (terpri)) | |
57 | |
428 | 58 ;; Gobble up the stuff we don't wish to pass on. |
59 (setq command-line-args (cdr (cdr (cdr (cdr command-line-args))))) | |
60 | |
61 ;; First gather up the command line options. | |
62 (let (done) | |
63 (while (and (null done) command-line-args) | |
64 (let ((arg (car command-line-args))) | |
65 (cond ((or (string-equal arg "-o") ; Specify DOC file name | |
66 (string-equal arg "-a") ; Append to DOC file | |
67 (string-equal arg "-d")) ; Set working directory | |
68 (if (string-equal arg "-o") | |
69 (setq docfile (expand-file-name (car (cdr command-line-args))))) | |
70 (setq options (cons arg options)) | |
71 (setq options (cons (expand-file-name (car (cdr command-line-args))) options))) | |
72 ((string-equal arg "-i") ; Set site files to scan | |
73 (setq site-file-list (car (cdr command-line-args)))) | |
74 (t (setq done t))) | |
75 (if (null done) | |
76 (setq command-line-args (cdr (cdr command-line-args))))))) | |
77 (setq options (nreverse options)) | |
78 | |
1303 | 79 ;; (message (concat "Options: " (prin1-to-string options))) |
80 | |
428 | 81 ;; Next process the list of C files. |
1303 | 82 (defun process-args (args) |
83 (while args | |
84 (let ((arg (car args))) | |
85 ;; When called from xemacs.mak, we need to do some frobbing on the | |
86 ;; args given to us -- remove NEEDTODUMP and make-docfile.exe, | |
87 ;; convert .obj files into .c files in the source directory, | |
88 ;; handle response files (beginning with @, specifying arguments), | |
89 ;; due to line-length limitations in the shell. | |
90 (if (string-match "^@" arg) | |
91 ;; MS Windows response file | |
92 ;; no generate-new-buffer so use its implementation. | |
93 (let ((buf (get-buffer-create (generate-new-buffer-name "foo")))) | |
94 (set-buffer buf) | |
5098
e402e3506a53
Use #'subseq, not #'substring, in native-windows-specific code, make-docfile.el
Aidan Kehoe <kehoea@parhasard.net>
parents:
5004
diff
changeset
|
95 (insert-file-contents-internal (subseq arg 1)) |
1303 | 96 ;; now majorly grind up the response file. |
97 ;; backslashes get doubled, quotes around strings, | |
98 ;; get rid of pesky CR's and NL's, and put parens around | |
99 ;; the whole thing so we have a valid list of strings. | |
100 (goto-char (point-max)) | |
101 (insert "\")") | |
102 (goto-char (point-min)) | |
103 (insert "(\"") | |
104 (while (search-forward "\\" nil t) | |
105 (replace-match "\\\\" nil t)) | |
106 (goto-char (point-min)) | |
107 (while (search-forward "\n" nil t) | |
108 (replace-match "" nil t)) | |
109 (goto-char (point-min)) | |
110 (while (search-forward "\r" nil t) | |
111 (replace-match "" nil t)) | |
112 (goto-char (point-min)) | |
113 (while (search-forward " " nil t) | |
114 (replace-match "\" \"" nil t)) | |
115 (goto-char (point-min)) | |
116 (process-args (read buf))) | |
117 ;; remove NEEDTODUMP and make-docfile.exe, convert .obj files into | |
118 ;; .c files in the source directory. | |
119 (when (and (not (string-match "\\(NEEDTODUMP\\|\\.exe$\\)" arg)) | |
120 (not (member arg processed))) | |
121 (when (string-match "\\(.*\\)\\.obj$" arg) | |
1330 | 122 (setq arg (expand-file-name |
123 (concat | |
124 (file-name-nondirectory | |
125 ;; no match-string so use its implementation. | |
5098
e402e3506a53
Use #'subseq, not #'substring, in native-windows-specific code, make-docfile.el
Aidan Kehoe <kehoea@parhasard.net>
parents:
5004
diff
changeset
|
126 (subseq arg (match-beginning 1) (match-end 1))) |
1330 | 127 ".c") |
128 source-src))) | |
428 | 129 (if (and (null docfile-out-of-date) |
130 (file-newer-than-file-p arg docfile)) | |
131 (setq docfile-out-of-date t)) | |
1303 | 132 (setq processed (cons arg processed)))) |
133 (setq args (cdr args))))) | |
134 | |
1330 | 135 ;; Then process the list of Lisp files. |
1303 | 136 (process-args command-line-args) |
428 | 137 |
1330 | 138 (setq load-path (list source-lisp)) |
428 | 139 |
140 ;; Then process the autoloads | |
141 (setq autoload-file-name "auto-autoloads.elc") | |
1333 | 142 (defvar custom-declare-variable-list nil) ; unclean |
428 | 143 (load "find-paths.el") |
144 (load "packages.el") | |
145 (load "setup-paths.el") | |
1261 | 146 (load "raw-process.el") |
428 | 147 |
4547
ab9e8f0fb295
Check absolute source file names against DOC with #'file-newer-than-file-p.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4539
diff
changeset
|
148 (let (preloaded-file-list arg0 arg package-preloaded-file-list absolute) |
1330 | 149 (load (expand-file-name "dumped-lisp.el" source-lisp)) |
428 | 150 |
4539
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
151 (setq package-preloaded-file-list |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
152 (packages-collect-package-dumped-lisps late-package-load-path) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
153 preloaded-file-list |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
154 (append package-preloaded-file-list |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
155 preloaded-file-list |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
156 packages-hardcoded-lisp) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
157 |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
158 processed (cons "-d" processed) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
159 processed (cons source-lisp processed) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
160 ;; Include loadup.el, which is never in preloaded-file-list: |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
161 processed (cons "loadup.el" processed)) |
428 | 162 |
163 (while preloaded-file-list | |
4539
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
164 (setq arg0 (packages-add-suffix (car preloaded-file-list)) |
4547
ab9e8f0fb295
Check absolute source file names against DOC with #'file-newer-than-file-p.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4539
diff
changeset
|
165 arg (locate-library arg0) |
ab9e8f0fb295
Check absolute source file names against DOC with #'file-newer-than-file-p.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4539
diff
changeset
|
166 absolute arg) |
4539
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
167 (if (null arg) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
168 (progn |
1303 | 169 (message "Error: dumped file %s does not exist" arg0) |
428 | 170 ;; Uncomment in case of difficulties |
4539
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
171 ;(message "late-package-hierarchies: %S" |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
172 ; late-package-hierarchies) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
173 ;(message "guessed-roots: %S" (paths-find-emacs-roots |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
174 ; invocation-directory |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
175 ; invocation-name |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
176 ; #'paths-emacs-root-p)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
177 ;(message "guessed-data-roots: %S" (paths-find-emacs-roots |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
178 ; invocation-directory |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
179 ; invocation-name |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
180 ; #'paths-emacs-data-root-p)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
181 ) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
182 (when (equal arg (expand-file-name arg0 source-lisp)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
183 ;; Use relative paths where possible, since this makes file lookup |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
184 ;; in an installed XEmacs easier: |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
185 (setq arg arg0)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
186 (if (null (member arg processed)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
187 (progn |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
188 (if (and (null docfile-out-of-date) |
4547
ab9e8f0fb295
Check absolute source file names against DOC with #'file-newer-than-file-p.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4539
diff
changeset
|
189 ;; We need to check the absolute path here: |
ab9e8f0fb295
Check absolute source file names against DOC with #'file-newer-than-file-p.
Aidan Kehoe <kehoea@parhasard.net>
parents:
4539
diff
changeset
|
190 (file-newer-than-file-p absolute docfile)) |
4539
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
191 (setq docfile-out-of-date t)) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
192 (setq processed (cons arg processed))))) |
061e030e3270
Fix some bugs in load-history construction, built-in symbol file names.
Aidan Kehoe <kehoea@parhasard.net>
parents:
3511
diff
changeset
|
193 (setq preloaded-file-list (cdr preloaded-file-list)))) |
428 | 194 |
195 ;; Finally process the list of site-loaded files. | |
196 (if site-file-list | |
197 (let (site-load-packages) | |
198 (load site-file-list t t) | |
199 (while site-load-packages | |
200 (let ((arg (car site-load-packages))) | |
201 (if (null (member arg processed)) | |
202 (progn | |
203 (if (and (null docfile-out-of-date) | |
204 (file-newer-than-file-p arg docfile)) | |
205 (setq docfile-out-of-date t)) | |
206 (setq processed (cons arg processed))))) | |
207 (setq site-load-packages (cdr site-load-packages))))) | |
208 | |
209 ;(let ((autoloads (packages-list-autoloads-path))) | |
1303 | 210 ; ;; (message (concat "Autoloads: " (prin1-to-string autoloads))) |
428 | 211 ; (while autoloads |
212 ; (let ((arg (car autoloads))) | |
213 ; (if (null (member arg processed)) | |
214 ; (progn | |
1303 | 215 ; ;; (message arg) |
428 | 216 ; (if (and (null docfile-out-of-date) |
217 ; (file-newer-than-file-p arg docfile)) | |
218 ; (setq docfile-out-of-date t)) | |
219 ; (setq processed (cons arg processed)))) | |
220 ; (setq autoloads (cdr autoloads))))) | |
221 | |
222 ;; Now fire up make-docfile and we're done | |
223 | |
224 (setq processed (nreverse processed)) | |
225 | |
1303 | 226 (terpri) |
227 | |
228 ;(message (prin1-to-string (append options processed))) | |
428 | 229 |
1303 | 230 (when docfile-out-of-date |
231 (condition-case nil | |
232 (delete-file docfile) | |
233 (error nil)) | |
234 (message "Spawning make-docfile ...") | |
235 ;; (message (prin1-to-string (append options processed))) | |
236 | |
1330 | 237 (setq exec-path (list build-lib-src)) |
428 | 238 |
1303 | 239 ;; (locate-file-clear-hashing nil) |
240 (if (memq system-type '(berkeley-unix next-mach)) | |
241 ;; Suboptimal, but we have a unresolved bug somewhere in the | |
242 ;; low-level process code. #### Now that we've switched to using | |
243 ;; the regular asynch process code, we should try removing this. | |
244 (call-process-internal | |
245 "/bin/csh" | |
246 nil | |
247 t | |
248 nil | |
249 "-fc" | |
250 (mapconcat | |
251 #'identity | |
252 (append | |
1330 | 253 (list (expand-file-name "make-docfile" build-lib-src)) |
1303 | 254 options processed) |
255 " ")) | |
256 ;; (message (prin1-to-string (append options processed))) | |
257 (apply 'call-process-internal | |
1330 | 258 ;; exec-path is set. |
259 ;; (expand-file-name "make-docfile" build-lib-src) | |
1303 | 260 "make-docfile" |
428 | 261 nil |
262 t | |
263 nil | |
1303 | 264 (append options processed))) |
428 | 265 |
1303 | 266 (message "Spawning make-docfile ...done") |
267 ;; (write-region-internal (point-min) (point-max) "/tmp/DOC") | |
268 ) | |
428 | 269 |
270 (kill-emacs) | |
271 | |
272 ;;; make-docfile.el ends here |