Normally :bind
expects that commands are functions that will be
autoloaded from the given package. However, this does not work if one of
those commands is actually a keymap, since keymaps are not functions,
and cannot be autoloaded using the built-in autoload
function.
To handle this case, use-package
offers a special, limited
variant of :bind
called :bind-keymap
. The only difference
is that the “commands” bound to by :bind-keymap
must be keymaps
defined in the package, rather than interactive functions. This is handled
behind the scenes by generating custom code that loads the package
containing the keymap, and then re-executes your keypress after the
first load, to reinterpret that keypress as a prefix key.
For example:
(use-package foo :bind-keymap ("C-c p" . foo-command-map))