fix(lib): defer-feature! fallback FNS
If defer-feature! was called with one argument (as is the case in the
:lang common-lisp module), FNS defaulted to an empty list. As a result,
FEATURE was deferred but never re-added to the features list, and after!
blocks were never triggered.
Instead of defaulting to an empty list, fallback to a singleton list
containing just (FEATURE). This aligns with the behavior this macro had
prior to 5b8b04f0c8
, which generalized FNS
to support a list of functions rather than just one.
This commit is contained in:
parent
5ca8c75644
commit
c44bc81a05
1 changed files with 5 additions and 4 deletions
|
@ -595,14 +595,15 @@ serve as a predicated alternative to `after!'."
|
||||||
(add-hook 'after-load-functions #',fn)))))
|
(add-hook 'after-load-functions #',fn)))))
|
||||||
|
|
||||||
(defmacro defer-feature! (feature &rest fns)
|
(defmacro defer-feature! (feature &rest fns)
|
||||||
"Pretend FEATURE hasn't been loaded yet, until FEATURE-hook or FN runs.
|
"Pretend FEATURE hasn't been loaded yet, until FEATURE-hook or FNS run.
|
||||||
|
|
||||||
Some packages (like `elisp-mode' and `lisp-mode') are loaded immediately at
|
Some packages (like `elisp-mode' and `lisp-mode') are loaded immediately at
|
||||||
startup, which will prematurely trigger `after!' (and `with-eval-after-load')
|
startup, which will prematurely trigger `after!' (and `with-eval-after-load')
|
||||||
blocks. To get around this we make Emacs believe FEATURE hasn't been loaded yet,
|
blocks. To get around this we make Emacs believe FEATURE hasn't been loaded yet,
|
||||||
then wait until FEATURE-hook (or MODE-hook, if FN is provided) is triggered to
|
then wait until FEATURE-hook (or any of FNS, if FNS are provided) is triggered
|
||||||
reverse this and trigger `after!' blocks at a more reasonable time."
|
to reverse this and trigger `after!' blocks at a more reasonable time."
|
||||||
(let ((advice-fn (intern (format "doom--defer-feature-%s-a" feature))))
|
(let ((advice-fn (intern (format "doom--defer-feature-%s-a" feature)))
|
||||||
|
(fns (or fns (list feature))))
|
||||||
`(progn
|
`(progn
|
||||||
(delq! ',feature features)
|
(delq! ',feature features)
|
||||||
(defadvice! ,advice-fn (&rest _)
|
(defadvice! ,advice-fn (&rest _)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue