diff options
author | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-12-27 17:49:39 -0500 |
---|---|---|
committer | Stefan Monnier <monnier@iro.umontreal.ca> | 2017-12-27 17:49:39 -0500 |
commit | fb619c1c22b986841964b09b7effe42785f3fed8 (patch) | |
tree | 4714b2126dd72ce07b9aebe0f4f1321171d8b0b8 /lisp/emacs-lisp | |
parent | f16ba58809fa9b83d42f2bb6b4722599bc98b408 (diff) | |
download | emacs-fb619c1c22b986841964b09b7effe42785f3fed8.tar.gz emacs-fb619c1c22b986841964b09b7effe42785f3fed8.tar.bz2 emacs-fb619c1c22b986841964b09b7effe42785f3fed8.zip |
(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.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/derived.el | 10 |
1 files changed, 4 insertions, 6 deletions
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. |