view lisp/vm/make-autoloads @ 30:ec9a17fef872 r19-15b98

Import from CVS: tag r19-15b98
author cvs
date Mon, 13 Aug 2007 08:52:29 +0200
parents 376386a54a3c
children
line wrap: on
line source

(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))