diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-06-25 05:09:05 +0000 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2007-06-25 05:09:05 +0000 |
commit | e66466a6fb52a1f661842325fdc03110e667288b (patch) | |
tree | 85a184f627c865e3772f3ca7ba682feea9580116 /lisp/emacs-lisp/autoload.el | |
parent | ceea9b1803ec19805fd887c58eff545ae102b01c (diff) | |
download | emacs-e66466a6fb52a1f661842325fdc03110e667288b.tar.gz |
(autoload-modified-buffers): New var.
(autoload-find-destination): Keep it uptodate.
(autoload-save-buffers): New fun.
(update-file-autoloads): Use it. Re-add the "up to date" message.
Diffstat (limited to 'lisp/emacs-lisp/autoload.el')
-rw-r--r-- | lisp/emacs-lisp/autoload.el | 32 |
1 files changed, 21 insertions, 11 deletions
diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 01abb242ea8..970df447548 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -402,6 +402,13 @@ Return non-nil in the case where no autoloads were added in the buffer." (kill-buffer (current-buffer)))) (not output-start))) +(defvar autoload-modified-buffers nil) + +(defun autoload-save-buffers () + (while autoload-modified-buffers + (with-current-buffer (pop autoload-modified-buffers) + (save-buffer)))) + ;;;###autoload (defun update-file-autoloads (file &optional save-after) "Update the autoloads for FILE in `generated-autoload-file' @@ -411,23 +418,24 @@ save the buffer too. Return FILE if there was no autoload cookie in it, else nil." (interactive "fUpdate autoloads for file: \np") - (let ((existing-buffer (get-file-buffer file))) + (let ((existing-buffer (get-file-buffer file)) + (no-autoloads nil)) (with-temp-buffer ;; Let's presume the file is not visited, so we call ;; autoload-find-destination from a dummy buffer, except if the file ;; is visited, in which case we use that buffer instead. (if existing-buffer (set-buffer existing-buffer)) - (catch 'up-to-date - (let ((buf (autoload-find-destination file))) - (with-current-buffer buf - (let ((no-autoloads (generate-file-autoloads file))) - - (and save-after - (buffer-modified-p) - (save-buffer)) - - (if no-autoloads file)))))))) + (if (catch 'up-to-date + (with-current-buffer (autoload-find-destination file) + (setq no-autoloads (generate-file-autoloads file)) + t)) + (if save-after (autoload-save-buffers)) + (if (interactive-p) + (message "Autoload section for %s is up to date." file)))) + ;; If we caught `up-to-date', it means there are autoload entries, since + ;; otherwise we wouldn't have detected their up-to-dateness. + (if no-autoloads file))) (defun autoload-find-destination (file) "Find the destination point of the current buffer's autoloads. @@ -486,6 +494,8 @@ to call it from a dummy buffer if FILE is not currently visited." ;; No later sections in the file. Put before the last page. (goto-char (point-max)) (search-backward "\f" nil t))) + (unless (memq (current-buffer) autoload-modified-buffers) + (push (current-buffer) autoload-modified-buffers)) (current-buffer)))) (defun autoload-remove-section (begin) |