Optimize set-transient-hook!
In case HOOK-OR-FUNCTION is an expensive lisp form.
This commit is contained in:
parent
1103db1679
commit
7f004f321a
1 changed files with 6 additions and 6 deletions
|
@ -228,18 +228,18 @@ advised)."
|
||||||
(fn (if (symbolp (car forms))
|
(fn (if (symbolp (car forms))
|
||||||
(intern (format "doom|transient-hook-%s" (pop forms)))
|
(intern (format "doom|transient-hook-%s" (pop forms)))
|
||||||
(make-symbol "doom|transient-hook-"))))
|
(make-symbol "doom|transient-hook-"))))
|
||||||
`(progn
|
`(let ((sym ,hook-or-function))
|
||||||
(fset ',fn
|
(fset ',fn
|
||||||
(lambda (&rest _)
|
(lambda (&rest _)
|
||||||
,@forms
|
,@forms
|
||||||
(cond ((functionp ,hook-or-function) (advice-remove ,hook-or-function #',fn))
|
(cond ((functionp sym) (advice-remove sym #',fn))
|
||||||
((symbolp ,hook-or-function) (remove-hook ,hook-or-function #',fn)))
|
((symbolp sym) (remove-hook sym #',fn)))
|
||||||
(unintern ',fn nil)))
|
(unintern ',fn nil)))
|
||||||
(cond ((functionp ,hook-or-function)
|
(cond ((functionp sym)
|
||||||
(advice-add ,hook-or-function ,(if append :after :before) #',fn))
|
(advice-add ,hook-or-function ,(if append :after :before) #',fn))
|
||||||
((symbolp ,hook-or-function)
|
((symbolp sym)
|
||||||
(put ',fn 'permanent-local-hook t)
|
(put ',fn 'permanent-local-hook t)
|
||||||
(add-hook ,hook-or-function #',fn ,append))))))
|
(add-hook sym #',fn ,append))))))
|
||||||
|
|
||||||
(defmacro add-hook! (&rest args)
|
(defmacro add-hook! (&rest args)
|
||||||
"A convenience macro for adding N functions to M hooks.
|
"A convenience macro for adding N functions to M hooks.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue