From 3d1743f7e08eafdc689ec38da0fd0d33f1db184e Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 27 Dec 1994 20:14:13 +0000 Subject: [PATCH] (run-hook-with-args-until-failure): Return non-nil if no hook functions. --- lisp/subr.el | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/lisp/subr.el b/lisp/subr.el index 261a7b670d..ffaab47507 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -598,21 +598,22 @@ If all the functions return non-nil, we return non-nil. To make a hook variable buffer-local, use `make-local-hook', not `make-local-variable'." - (and (boundp hook) - (symbol-value hook) - (let ((value (symbol-value hook)) - (success t)) - (while (and value success) - (if (eq (car value) t) - ;; t indicates this hook has a local binding; - ;; it means to run the global binding too. - (let ((functions (default-value hook))) - (while (and functions success) - (setq success (apply (car functions) args)) - (setq functions (cdr functions)))) - (setq success (apply (car value) args))) - (setq value (cdr value))) - success))) + ;; We must return non-nil if there are no hook functions! + (or (not (boundp hook)) + (not (symbol-value hook)) + (let ((value (symbol-value hook)) + (success t)) + (while (and value success) + (if (eq (car value) t) + ;; t indicates this hook has a local binding; + ;; it means to run the global binding too. + (let ((functions (default-value hook))) + (while (and functions success) + (setq success (apply (car functions) args)) + (setq functions (cdr functions)))) + (setq success (apply (car value) args))) + (setq value (cdr value))) + success))) ;; Tell C code how to call this function. (defconst run-hooks 'run-hooks -- 2.20.1