Fix #1278
Refactors :after-call to not fmakunbound the transient hook function, as it may get executed multiple times before getting a chance to fully remove itself, causing void-function errors.
This commit is contained in:
parent
a934ade46e
commit
d7e9b47266
1 changed files with 9 additions and 9 deletions
|
@ -248,17 +248,17 @@ non-nil, return paths of possible modules, activated or otherwise."
|
||||||
`((fset ',fn
|
`((fset ',fn
|
||||||
(lambda (&rest _)
|
(lambda (&rest _)
|
||||||
(doom-log "Loading deferred package %s from %s" ',name ',fn)
|
(doom-log "Loading deferred package %s from %s" ',name ',fn)
|
||||||
(condition-case e (require ',name)
|
(condition-case e
|
||||||
|
(require ',name)
|
||||||
((debug error)
|
((debug error)
|
||||||
(message "Failed to load deferred package %s: %s" ',name e)))
|
(message "Failed to load deferred package %s: %s" ',name e)))
|
||||||
(dolist (hook (cdr (assq ',name doom--deferred-packages-alist)))
|
(when-let* ((deferral-list (assq ',name doom--deferred-packages-alist)))
|
||||||
(if (functionp hook)
|
(dolist (hook (cdr deferral-list))
|
||||||
(advice-remove hook #',fn)
|
(if (functionp hook)
|
||||||
(remove-hook hook #',fn)))
|
(advice-remove hook #',fn)
|
||||||
(setq doom--deferred-packages-alist
|
(remove-hook hook #',fn)))
|
||||||
(delq (assq ',name doom--deferred-packages-alist)
|
(setq doom--deferred-packages-alist
|
||||||
doom--deferred-packages-alist))
|
(delq deferral-list doom--deferred-packages-alist))))))
|
||||||
(fmakunbound ',fn))))
|
|
||||||
(let (forms)
|
(let (forms)
|
||||||
(dolist (hook hooks forms)
|
(dolist (hook hooks forms)
|
||||||
(push (if (functionp hook)
|
(push (if (functionp hook)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue