]> git.eshelyaron.com Git - emacs.git/commitdiff
(autoload-find-file): New fun. This one calls hack-local-variables.
authorStefan Monnier <monnier@iro.umontreal.ca>
Mon, 29 May 2006 02:11:27 +0000 (02:11 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Mon, 29 May 2006 02:11:27 +0000 (02:11 +0000)
(generate-file-autoloads, update-file-autoloads): Use it.

lisp/ChangeLog
lisp/emacs-lisp/autoload.el

index f1698732a04b6808264a80d386c2d182450ef47f..f75a7b7ae99784454ae270ce14d3a9e940b13f8a 100644 (file)
@@ -1,5 +1,9 @@
 2006-05-28  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/autoload.el (autoload-find-file): New fun.
+       This one calls hack-local-variables.
+       (generate-file-autoloads, update-file-autoloads): Use it.
+
        * textmodes/bibtex.el (bibtex-autokey-name-case-convert-function)
        (bibtex-sort-entry-class): Add safe-local-variable predicate.
        (bibtex-sort-entry-class-alist): Don't set the global value.
index ee2d74c564606d28614e8b4e561d70e7b36fe629..57e767db873d215e049fe2b54d0257e6684dfc73 100644 (file)
@@ -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))))