From d7e9b47266adc57787b7145e8b925bc572b0fff6 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 22 Mar 2019 14:11:59 -0400 Subject: [PATCH] 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. --- core/core-modules.el | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/core-modules.el b/core/core-modules.el index 0542a0225..f91778076 100644 --- a/core/core-modules.el +++ b/core/core-modules.el @@ -248,17 +248,17 @@ non-nil, return paths of possible modules, activated or otherwise." `((fset ',fn (lambda (&rest _) (doom-log "Loading deferred package %s from %s" ',name ',fn) - (condition-case e (require ',name) + (condition-case e + (require ',name) ((debug error) (message "Failed to load deferred package %s: %s" ',name e))) - (dolist (hook (cdr (assq ',name doom--deferred-packages-alist))) - (if (functionp hook) - (advice-remove hook #',fn) - (remove-hook hook #',fn))) - (setq doom--deferred-packages-alist - (delq (assq ',name doom--deferred-packages-alist) - doom--deferred-packages-alist)) - (fmakunbound ',fn)))) + (when-let* ((deferral-list (assq ',name doom--deferred-packages-alist))) + (dolist (hook (cdr deferral-list)) + (if (functionp hook) + (advice-remove hook #',fn) + (remove-hook hook #',fn))) + (setq doom--deferred-packages-alist + (delq deferral-list doom--deferred-packages-alist)))))) (let (forms) (dolist (hook hooks forms) (push (if (functionp hook)