Add :defer support to add-hook! macro

See add-hook's DEPTH argument (replaces APPEND in Emacs 27+).
This commit is contained in:
Henrik Lissner 2021-05-09 13:06:24 -04:00
parent 10f9ec44a0
commit d44c57f01a

View file

@ -510,10 +510,12 @@ This macro accepts, in order:
append-p append-p
local-p local-p
remove-p remove-p
depth
forms) forms)
(while (keywordp (car rest)) (while (keywordp (car rest))
(pcase (pop rest) (pcase (pop rest)
(:append (setq append-p t)) (:append (setq append-p t))
(:depth (setq depth (pop rest)))
(:local (setq local-p t)) (:local (setq local-p t))
(:remove (setq remove-p t)))) (:remove (setq remove-p t))))
(let ((first (car-safe (car rest)))) (let ((first (car-safe (car rest))))
@ -535,7 +537,7 @@ This macro accepts, in order:
(dolist (func func-forms) (dolist (func func-forms)
(push (if remove-p (push (if remove-p
`(remove-hook ',hook #',func ,local-p) `(remove-hook ',hook #',func ,local-p)
`(add-hook ',hook #',func ,append-p ,local-p)) `(add-hook ',hook #',func ,(or depth append-p) ,local-p))
forms))) forms)))
(macroexp-progn (macroexp-progn
(append defn-forms (append defn-forms