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.
(cl-flet
((wrap (map bindings)
(if (and map pkg (not (eq map 'global-map)))
- (if (boundp map)
- bindings
- `((eval-after-load
+ `((if (boundp ',map)
+ (progn ,@bindings)
+ (eval-after-load
,(if (symbolp pkg) `',pkg pkg)
'(progn ,@bindings))))
bindings)))