From eb064887a570ac75feccfd3b3d658c63ebac350e Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 12 May 2017 11:48:37 +0200 Subject: [PATCH] core-lib: add-transient-hook! add support for appending hooks/advice --- core/core-lib.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/core-lib.el b/core/core-lib.el index 0e37eed8c..6a8c2a312 100644 --- a/core/core-lib.el +++ b/core/core-lib.el @@ -99,14 +99,15 @@ compilation." advised instead). These forms will be evaluated only once when that function/hook is first invoked, then it detaches itself." (declare (indent 1)) - (let ((fn (intern (format "doom--transient-hook-%s" hook)))) + (let ((fn (intern (format "doom--transient-hook-%s" hook))) + (append (eq (car forms) :after))) `(progn (defun ,fn (&rest _) ,@forms ,(cond ((functionp hook) `(advice-remove #',hook #',fn)) ((symbolp hook) `(remove-hook ',hook #',fn)))) - ,(cond ((functionp hook) `(advice-add #',hook :before #',fn)) - ((symbolp hook) `(add-hook ',hook #',fn)))))) + ,(cond ((functionp hook) `(advice-add #',hook ,(if append :after :before) #',fn)) + ((symbolp hook) `(add-hook ',hook #',fn ,append)))))) (defmacro add-hook! (&rest args) "A convenience macro for `add-hook'. Takes, in order: