Mercurial > hg > xemacs-beta
diff lisp/vm/make-autoloads @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/vm/make-autoloads Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,48 @@ +(defun member (e list) + (while (and list (not (equal e (car list)))) + (setq list (cdr list))) + list ) + +(defun print-autoloads () + (let ((files (cdr (member "print-autoloads" command-line-args))) + ;; kludge for broken v19 emacs. it's supposed to accept + ;; t in autoloads to mean 'macro but it doesn't. this + ;; kludge will screw people who try to byte-compile VM + ;; with emacs18 for emacs19. + (macro-flag (if (string-match "^19" emacs-version) ''macro t)) + sexp function doc interactive macro) + (setq expanded-files (mapcar (function expand-file-name) files)) + (while files + (set-buffer (find-file-noselect (car expanded-files))) + (goto-char (point-min)) + (condition-case nil + (while t + (setq sexp (read (current-buffer))) + (if (and (consp sexp) (cdr sexp) + (or (eq (car sexp) 'defun) + (eq (car sexp) 'defmacro))) + (progn + (if (eq (car sexp) 'defmacro) + (setq macro macro-flag) + (setq macro nil)) + (setq sexp (cdr sexp) + function (car sexp) + sexp (cdr (cdr sexp))) + (if (stringp (car sexp)) + (setq doc (car sexp) + sexp (cdr sexp)) + (setq doc nil)) + (if (and (consp (car sexp)) + (eq (car (car sexp)) 'interactive)) + (setq interactive t) + (setq interactive nil)) + (if (string-match "\\.el$" (car files)) + (setq file (substring (car files) 0 -3)) + (setq file (car files))) + (print (list 'autoload (list 'quote function) file + doc interactive macro))))) + (end-of-file nil)) + (kill-buffer (current-buffer)) + (setq files (cdr files) + expanded-files (cdr expanded-files)))) + (kill-emacs))