Autoloading transient-define-prefix form fails · Issue #280 · magit/transient (original) (raw)

Hi Jonas,

This seems to be the issue described in #254.

Please see this code in my listen package:

https://github.com/alphapapa/listen.el/blob/5abe25ff1678ffa694f7b062ca748ac143af47a1/listen.el#L331-L344

I explicitly (require 'transient), and I do:

;;;###autoload (transient-define-prefix listen-menu () ...

But when I start Emacs, I get this error:

Error loading autoloads: (void-function transient-prefix)

Frustratingly, that error doesn't point to the source of the error. But I've narrowed it down to the autoloads for listen, as (featurep 'listen-autoloads) returns nil, and the functions autoloaded in listen-autoloads.el after this line are not defined:

(put 'listen-menu 'transient--prefix (transient-prefix :command 'listen-menu :info-manual "(listen)" :refresh-suffixes t))

If I manually M-x load-library RET listen-autoloads RET, then the rest of the file gets loaded and the functions are defined.

I don't understand how I could be the first (or even second) to encounter this problem, and I don't know how to fix it. By preventing my package's autoloads from loading completely, it's breaking some important functionality in the package.

I'd appreciate any help. Thanks.