For context, I'm writing an extension.

I need to check if a particular symbol is an autoload symbol, such that autoloadp = t.

After doing some digging I found that the defined autoloads in loaddefs.el do not match up with every declared autoload in the repository.

Check these screenshots out for clarity:

enter image description here

enter image description here

enter image description here

As shown, symbol org-capture-string is declared to be an autoload, which is accurately reflected in the loaddefs.el file.

But symbols orgtbl-exp-regexp and org-table-to-lisp are also declared to be an autoload, which is inaccurately reflected in the loaddefs.el file, since they are no where to be found.

What gives?

  • Which version of Emacs?
    – phils
    Commented Aug 25, 2021 at 7:28
  • @phils Currently using the master branch. Are those symbols (and all others for that matter) accurately reflected in the loaddefs.el file in the most recent release? Commented Aug 25, 2021 at 8:07
  • I'm also seeing this pattern with the finder-inf.el file. cl-macs is clearly a built-in Emacs package, but it's no where to be found in the finder-inf.el file Commented Aug 25, 2021 at 9:11

3 Answers 3


loaddefs.el is automatically generated at build time. See src/Makefile.in line 774 (in whatever version I happened to have checked out; it might be a different line in yours).

  • How is the cus-load.el file even generated when the function custom-make-dependencies isn't even defined? github.com/emacs-mirror/emacs/blob/…. Am I missing something? Commented Aug 25, 2021 at 9:26
  • 1
    Note the -l cus-dep on that line. This tells it to load the cus-dep.el file first, where custom-make-dependencies is located. Since that function isn’t needed most of the time, it isn’t even marked for autoloading. You can load the file if you want: (load "cus-dep")
    – db48x
    Commented Aug 25, 2021 at 9:42
  • not sure how I skipped over that when grepping for it; thanks Commented Aug 25, 2021 at 18:33

You'll find the org loaddefs in org-loaddefs.el, due to the file-local variable generated-autoload-file.

cl-macs is not a package, it is an internal component of cl-lib, which is in finder-inf.el.

  • What's the difference between a feature/package/library/internal-component? Can you give any examples of each and where that's explained in the documentation? Commented Aug 25, 2021 at 18:35
  • 1
    It’s all documented in chapter 27.8 Libraries of Lisp Code for Emacs as well as chapter 48 Emacs Lisp Packages of the Emacs Lisp manual. (You can also use the built–in Info viewer to read the Emacs manuals, type C-h i to open it.)
    – db48x
    Commented Aug 26, 2021 at 5:27

In addition to what @db48x said, this is how it happens, and how you can yourself update loaddefs.el (or another file of autoloads). C-h f batch-update-autoloads tells us:

batch-update-autoloads is an autoloaded Lisp function in autoload.el.


Update loaddefs.el autoloads in batch mode.

Calls update-directory-autoloads on the command line arguments. Definitions are written to generated-autoload-file (which should be non-nil).

See also update-directory-autoloads, update-file-autoloads, and w32-batch-update-autoloads.

  • So from my understanding, someone forgot to update ldefs-boot.el for the symbols orgtbl-exp-regexp and org-table-to-lisp (in my example (I'm assuming there are others as well))? Commented Aug 25, 2021 at 20:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.