summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/derived.el
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2017-12-27 17:49:39 -0500
committerStefan Monnier <monnier@iro.umontreal.ca>2017-12-27 17:49:39 -0500
commitfb619c1c22b986841964b09b7effe42785f3fed8 (patch)
tree4714b2126dd72ce07b9aebe0f4f1321171d8b0b8 /lisp/emacs-lisp/derived.el
parentf16ba58809fa9b83d42f2bb6b4722599bc98b408 (diff)
downloademacs-fb619c1c22b986841964b09b7effe42785f3fed8.tar.gz
(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/derived.el')
-rw-r--r--lisp/emacs-lisp/derived.el10
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.