diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-05-29 02:11:27 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2006-05-29 02:11:27 +0000 |
commit | 7feacfe4279f61a0d08e06626a71eb2bd97d62da (patch) | |
tree | 2f85d172703489da311e1d46c643749824eec0bd /lisp/emacs-lisp | |
parent | f6e2704035e4798537cde023cffac62afe2d1b22 (diff) | |
download | emacs-7feacfe4279f61a0d08e06626a71eb2bd97d62da.tar.gz |
(autoload-find-file): New fun. This one calls hack-local-variables.
(generate-file-autoloads, update-file-autoloads): Use it.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/autoload.el | 63 |
1 files changed, 30 insertions, 33 deletions
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index ee2d74c5646..57e767db873 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -273,6 +273,20 @@ which lists the file name and which functions are in it, etc." (or (eolp) (insert "\n" generate-autoload-section-continuation)))))) +(defun autoload-find-file (file) + "Fetch file and put it in a temp buffer. Return the buffer." + ;; It is faster to avoid visiting the file. + (with-current-buffer (get-buffer-create " *autoload-file*") + (kill-all-local-variables) + (erase-buffer) + (setq buffer-undo-list t + buffer-read-only nil) + (emacs-lisp-mode) + (insert-file-contents file nil) + (let ((enable-local-variables :safe)) + (hack-local-variables)) + (current-buffer))) + (defun generate-file-autoloads (file) "Insert at point a loaddefs autoload section for FILE. autoloads are generated for defuns and defmacros in FILE @@ -313,16 +327,9 @@ are used." (save-excursion (unwind-protect (progn - (if visited - (set-buffer visited) - ;; It is faster to avoid visiting the file. - (set-buffer (get-buffer-create " *generate-autoload-file*")) - (kill-all-local-variables) - (erase-buffer) - (setq buffer-undo-list t - buffer-read-only nil) - (emacs-lisp-mode) - (insert-file-contents file nil)) + (set-buffer (or visited + ;; It is faster to avoid visiting the file. + (autoload-find-file file))) (save-excursion (save-restriction (widen) @@ -340,8 +347,7 @@ are used." (or (bolp) (forward-line 1)))) (autoload (make-autoload form load-name))) (if autoload - (setq autoloads-done (cons (nth 1 form) - autoloads-done)) + (push (nth 1 form) autoloads-done) (setq autoload form)) (let ((autoload-print-form-outbuf outbuf)) (autoload-print-form autoload))) @@ -460,31 +466,22 @@ Autoload section for %s is up to date." (and (eq found 'new) ;; Check that FILE has any cookies before generating a ;; new section for it. - (save-excursion - (if existing-buffer - (set-buffer existing-buffer) - ;; It is faster to avoid visiting the file. - (set-buffer (get-buffer-create " *autoload-file*")) - (kill-all-local-variables) - (erase-buffer) - (setq buffer-undo-list t - buffer-read-only nil) - (emacs-lisp-mode) - (insert-file-contents file nil)) - (save-excursion + (with-current-buffer + (or existing-buffer + ;; It is faster to avoid visiting the file. + (autoload-find-file file)) + (save-excursion (save-restriction (widen) (goto-char (point-min)) (prog1 - (if (re-search-forward - (concat "^" (regexp-quote - generate-autoload-cookie)) - nil t) - nil - (if (interactive-p) - (message "%s has no autoloads" file)) - (setq no-autoloads t) - t) + (setq no-autoloads + (not (re-search-forward + (concat "^" (regexp-quote + generate-autoload-cookie)) + nil t))) + (if (and no-autoloads (interactive-p)) + (message "%s has no autoloads" file)) (or existing-buffer (kill-buffer (current-buffer)))))))) (generate-file-autoloads file)))) |