summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2006-05-29 02:11:27 +0000
committerStefan Monnier <monnier@iro.umontreal.ca>2006-05-29 02:11:27 +0000
commit7feacfe4279f61a0d08e06626a71eb2bd97d62da (patch)
tree2f85d172703489da311e1d46c643749824eec0bd /lisp/emacs-lisp
parentf6e2704035e4798537cde023cffac62afe2d1b22 (diff)
downloademacs-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.el63
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))))