fix: Mark transient hooks as permanent-local

This commit is contained in:
Madeleine Sydney
2025-02-02 11:52:10 -07:00
parent 09a2e8f309
commit ed588077de

View File

@@ -51,13 +51,15 @@
(defun ,hook-name (&rest _) (defun ,hook-name (&rest _)
"Transient hook defined by `with-transient-after'." "Transient hook defined by `with-transient-after'."
(cond ((functionp ,hook-or-function*) (cond ((functionp ,hook-or-function*)
(advice-remove ,hook-or-function* (function ,hook-name))) (advice-remove ,hook-or-function* #',hook-name))
((symbolp ,hook-or-function*) ((symbolp ,hook-or-function*)
(remove-hook ,hook-or-function* (function ,hook-name)))) (remove-hook ,hook-or-function* #',hook-name)))
,@forms) ,@forms)
(cond ((functionp ,hook-or-function*) (cond ((functionp ,hook-or-function*)
(advice-add ,hook-or-function* :before (function ,hook-name))) (advice-add ,hook-or-function* :before #',hook-name))
((symbolp ,hook-or-function*) ((symbolp ,hook-or-function*)
(add-hook ,hook-or-function* (function ,hook-name))))))) ;; https://www.gnu.org/software/emacs/manual/html_node/elisp/Setting-Hooks.html#Setting-Hooks-1
(put ',hook-name 'permanent-local-hook t)
(add-hook ,hook-or-function* #',hook-name))))))
(provide 'syd-prelude) (provide 'syd-prelude)