]> code.delx.au - gnu-emacs/commitdiff
(save-buffers-kill-emacs): Use run-hook-with-args-until-failure.
authorRichard M. Stallman <rms@gnu.org>
Fri, 30 Sep 1994 20:47:37 +0000 (20:47 +0000)
committerRichard M. Stallman <rms@gnu.org>
Fri, 30 Sep 1994 20:47:37 +0000 (20:47 +0000)
(find-file-noselect): Use run-hook-with-args-until-success.
(after-find-file): Use run-hooks for find-file-hooks.
(basic-save-buffer): Use run-hook-with-args-until-success.

lisp/files.el

index 8f5727ee6cc2d49a4482aabb8df59caa4844682a..691d3dae790a4e401526b181123521512c738e65 100644 (file)
@@ -703,16 +703,10 @@ The buffer is not selected, just returned to the caller."
          (condition-case ()
              (insert-file-contents filename t)
            (file-error
-            (setq error t)
             ;; Run find-file-not-found-hooks until one returns non-nil.
-            (let ((hooks find-file-not-found-hooks))
-              (while (and hooks
-                          (not (and (funcall (car hooks))
-                                    ;; If a hook succeeded, clear error.
-                                    (progn (setq error nil)
-                                           ;; Also exit the loop.
-                                           t))))
-                (setq hooks (cdr hooks))))))
+            (or (run-hook-with-args-until-success 'find-file-not-found-hooks)
+                ;; If they fail too, set error.
+                (setq error t))))
          ;; Find the file's truename, and maybe use that as visited name.
          (setq buffer-file-truename truename)
          (setq buffer-file-number number)
@@ -787,7 +781,7 @@ Finishes by calling the functions in `find-file-hooks'."
     (if (and auto-save-default (not noauto))
        (auto-save-mode t)))
   (normal-mode t)
-  (mapcar 'funcall find-file-hooks))
+  (run-hooks 'find-file-hooks))
 
 (defun normal-mode (&optional find-file)
   "Choose the major mode for this buffer automatically.
@@ -1635,15 +1629,12 @@ the last real save, but optional arg FORCE non-nil means delete anyway."
               (save-excursion
                 (goto-char (point-max))
                 (insert ?\n)))
-         (let ((hooks (append write-contents-hooks local-write-file-hooks
-                              write-file-hooks))
-               (done nil))
-           (while (and hooks
-                       (not (setq done (funcall (car hooks)))))
-             (setq hooks (cdr hooks)))
-           ;; If a hook returned t, file is already "written".
-           (cond ((not done)
-                  (setq setmodes (basic-save-buffer-1)))))
+         (or (run-hook-with-args-until-success 'write-contents-hooks)
+             (run-hook-with-args-until-success 'local-write-file-hooks)
+             (run-hook-with-args-until-success 'write-file-hooks)
+             ;; If a hook returned t, file is already "written".
+             ;; Otherwise, write it the usual way now.
+             (setq setmodes (basic-save-buffer-1)))
          (setq buffer-file-number (nth 10 (file-attributes buffer-file-name)))
          (if setmodes
              (condition-case ()
@@ -2229,12 +2220,7 @@ With prefix arg, silently save all file-visiting buffers, then kill."
             (or (not active)
                 (yes-or-no-p "Active processes exist; kill them and exit anyway? "))))
        ;; Query the user for other things, perhaps.
-       (let ((functions kill-emacs-query-functions)
-            (yes t))
-        (while (and functions yes)
-          (setq yes (and yes (funcall (car functions))))
-          (setq functions (cdr functions)))
-        yes)
+       (run-hook-with-args-until-failure 'kill-emacs-query-functions)
        (kill-emacs)))
 \f
 (define-key ctl-x-map "\C-f" 'find-file)