From fb619c1c22b986841964b09b7effe42785f3fed8 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 27 Dec 2017 17:49:39 -0500 Subject: (delayed-after-hook-functions): Tighten the code a bit * lisp/subr.el (delayed-mode-hooks, delayed-after-hook-functions): Use defvar-local. (run-mode-hooks): Reset delayed-after-hook-functions before running those functions, in case an error is signaled. * lisp/emacs-lisp/derived.el (define-derived-mode): Don't duplicate code. --- lisp/emacs-lisp/derived.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) (limited to 'lisp/emacs-lisp/derived.el') diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el index c0ef199424b..3bb8eb4f2f2 100644 --- a/lisp/emacs-lisp/derived.el +++ b/lisp/emacs-lisp/derived.el @@ -281,12 +281,10 @@ No problems result if this variable is not bound. ; Splice in the body (if any). ,@body ) - ;; Run the hooks, if any. - (run-mode-hooks ',hook) - ,@(when after-hook - `((if delay-mode-hooks - (push (lambda () ,after-hook) delayed-after-hook-functions) - ,after-hook))))))) + ,@(when after-hook + `((push (lambda () ,after-hook) delayed-after-hook-functions))) + ;; Run the hooks (and delayed-after-hook-functions), if any. + (run-mode-hooks ',hook))))) ;; PUBLIC: find the ultimate class of a derived mode. -- cgit v1.2.3