Delay decision whether to use eval-after-load until run-time

Just because a keymap variable is bound at macro-expansion-time
doesn't mean that it must be bound at run-time too.

Change `bind-keys-form', which is used by `bind-keys' and other
macros, to return a form which delays the decision on whether to
wrap the binding forms with `eval-after-load' until run-time.

Fixes https://github.com/jwiegley/use-package/issues/378.
This commit is contained in:
Jonas Bernoulli 2016-12-18 15:47:36 +01:00
parent 42b7a774cf
commit 75e0cd93c5

View file

@ -241,9 +241,9 @@ function symbol (unquoted)."
(cl-flet (cl-flet
((wrap (map bindings) ((wrap (map bindings)
(if (and map pkg (not (eq map 'global-map))) (if (and map pkg (not (eq map 'global-map)))
(if (boundp map) `((if (boundp ',map)
bindings (progn ,@bindings)
`((eval-after-load (eval-after-load
,(if (symbolp pkg) `',pkg pkg) ,(if (symbolp pkg) `',pkg pkg)
'(progn ,@bindings)))) '(progn ,@bindings))))
bindings))) bindings)))