Package: emacs;
Reported by: Stefan Monnier <monnier <at> iro.umontreal.ca>
Date: Mon, 17 Nov 2025 13:22:01 UTC
Severity: normal
Found in version 31.0.50
To reply to this bug, email your comments to 79852 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
monnier <at> iro.umontreal.ca, jdtsmith <at> gmail.com, bug-gnu-emacs <at> gnu.org:bug#79852; Package emacs.
(Mon, 17 Nov 2025 13:22:01 GMT) Full text and rfc822 format available.Stefan Monnier <monnier <at> iro.umontreal.ca>:monnier <at> iro.umontreal.ca, jdtsmith <at> gmail.com, bug-gnu-emacs <at> gnu.org.
(Mon, 17 Nov 2025 13:22:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: bug-gnu-emacs <at> gnu.org Subject: Incomplete autoload: `ert-deftest` docstring highlighted as a mere string Date: Mon, 17 Nov 2025 08:20:35 -0500
Package: Emacs
Version: 31.0.50
Upon Emacs startup `ert-deftest` does not have any `doc-string-elt` nor
`lisp-indent-function` properties any more, so indentation gets it wrong
and the docstring is highlighted as a mere string.
After loading `ert` the problem disappears.
This is a regression compared to Emacs-30. I'm not sure why this
affects `ert-deftest` and not say `define-inline` or `pcase`.
Maybe it's because it's defined with `cl-defmacro`?
Here is what I see right after Emacs startup for those three autoloaded macros:
ELISP> (symbol-plist 'ert-deftest)
nil
ELISP> (symbol-plist 'define-inline)
(lisp-indent-function defun doc-string-elt 3 autoload-macro expand)
ELISP> (symbol-plist 'pcase)
(lisp-indent-function 1 function-documentation (pcase--make-docstring))
ELISP>
- Stefan
In GNU Emacs 31.0.50 (build 2, i686-pc-linux-gnu, GTK+ Version 3.24.51,
cairo version 1.18.4) of 2025-10-25 built on asado
Repository revision: de156dfd83760bab65119164b924d77b327d1bb7
Repository branch: work
Windowing system distributor 'The X.Org Foundation', version 11.0.12101016
System Description: Debian GNU/Linux forky/sid
Configured using:
'configure -C --enable-checking --enable-check-lisp-object-type --with-modules --with-cairo --with-tiff=ifavailable
'CFLAGS=-Wall -g3 -Og -Wno-pointer-sign'
PKG_CONFIG_PATH=/home/monnier/lib/pkgconfig'
Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCMS2
LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES NOTIFY INOTIFY
PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TOOLKIT_SCROLL_BARS
TREE_SITTER WEBP X11 XDBE XIM XINERAMA XINPUT2 XPM XRANDR GTK3 ZLIB
Important settings:
value of $LANG: fr_CH.UTF-8
locale-coding-system: utf-8-unix
Major mode: Summary
Minor modes in effect:
c-electric-flag: t
gnus-mailing-list-mode: t
server-mode: t
electric-pair-mode: t
url-handler-mode: t
global-reveal-mode: t
reveal-mode: t
auto-insert-mode: t
savehist-mode: t
minibuffer-electric-default-mode: t
global-compact-docstrings-mode: t
global-corfu-mode: t
global-eldoc-mode: t
eldoc-mode: t
show-paren-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
global-prettify-symbols-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
minibuffer-nonselected-mode: t
minibuffer-regexp-mode: t
global-sanity-check-change-functions-mode: t
buffer-read-only: t
line-number-mode: t
transient-mark-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
Load-path shadows:
/home/monnier/src/emacs/nongnu/packages/flx-ido/flx hides /home/monnier/src/emacs/nongnu/packages/flx/flx
/home/monnier/src/emacs/nongnu/packages/flx-ido/flx-ido hides /home/monnier/src/emacs/nongnu/packages/flx/flx-ido
/home/monnier/src/emacs/nongnu/packages/helm/helm-sys hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-sys
/home/monnier/src/emacs/nongnu/packages/helm/helm-files hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-files
/home/monnier/src/emacs/nongnu/packages/helm/helm-x-files hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-x-files
/home/monnier/src/emacs/nongnu/packages/helm/helm-external hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-external
/home/monnier/src/emacs/nongnu/packages/helm/helm-regexp hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-regexp
/home/monnier/src/emacs/nongnu/packages/helm/helm-net hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-net
/home/monnier/src/emacs/nongnu/packages/helm/helm-buffers hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-buffers
/home/monnier/src/emacs/nongnu/packages/helm/helm-help hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-help
/home/monnier/src/emacs/nongnu/packages/helm/helm hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm
/home/monnier/src/emacs/nongnu/packages/helm/helm-lib hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-lib
/home/monnier/src/emacs/nongnu/packages/helm/helm-elisp hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-elisp
/home/monnier/src/emacs/nongnu/packages/helm/helm-global-bindings hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-global-bindings
/home/monnier/src/emacs/nongnu/packages/helm/helm-types hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-types
/home/monnier/src/emacs/nongnu/packages/helm/helm-locate hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-locate
/home/monnier/src/emacs/nongnu/packages/helm/helm-for-files hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-for-files
/home/monnier/src/emacs/nongnu/packages/helm/helm-x-icons hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-x-icons
/home/monnier/src/emacs/nongnu/packages/helm/helm-font hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-font
/home/monnier/src/emacs/nongnu/packages/helm/helm-adaptive hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-adaptive
/home/monnier/src/emacs/nongnu/packages/helm/helm-dabbrev hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-dabbrev
/home/monnier/src/emacs/nongnu/packages/helm/helm-semantic hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-semantic
/home/monnier/src/emacs/nongnu/packages/helm/helm-easymenu hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-easymenu
/home/monnier/src/emacs/nongnu/packages/helm/helm-tags hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-tags
/home/monnier/src/emacs/nongnu/packages/helm/helm-epa hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-epa
/home/monnier/src/emacs/nongnu/packages/helm/helm-mode hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-mode
/home/monnier/src/emacs/nongnu/packages/helm/helm-command hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-command
/home/monnier/src/emacs/nongnu/packages/helm/helm-info hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-info
/home/monnier/src/emacs/nongnu/packages/helm/helm-misc hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-misc
/home/monnier/src/emacs/nongnu/packages/helm/helm-packages hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-packages
/home/monnier/src/emacs/nongnu/packages/helm/helm-bookmark hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-bookmark
/home/monnier/src/emacs/nongnu/packages/helm/helm-grep hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-grep
/home/monnier/src/emacs/nongnu/packages/helm/helm-imenu hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-imenu
/home/monnier/src/emacs/nongnu/packages/helm/helm-eval hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-eval
/home/monnier/src/emacs/nongnu/packages/helm/helm-color hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-color
/home/monnier/src/emacs/nongnu/packages/helm/helm-find hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-find
/home/monnier/src/emacs/nongnu/packages/helm/helm-id-utils hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-id-utils
/home/monnier/src/emacs/nongnu/packages/helm/helm-man hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-man
/home/monnier/src/emacs/nongnu/packages/helm/helm-fd hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-fd
/home/monnier/src/emacs/nongnu/packages/helm/helm-eshell hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-eshell
/home/monnier/src/emacs/nongnu/packages/helm/helm-ring hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-ring
/home/monnier/src/emacs/nongnu/packages/helm/helm-core hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-core
/home/monnier/src/emacs/nongnu/packages/helm/helm-utils hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-utils
/home/monnier/src/emacs/nongnu/packages/helm/helm-occur hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-occur
/home/monnier/src/emacs/nongnu/packages/helm/helm-source hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-source
/home/monnier/src/emacs/nongnu/packages/helm/helm-multi-match hides /home/monnier/src/emacs/nongnu/packages/helm-core/helm-multi-match
/home/monnier/src/emacs/nongnu/packages/jade-mode/stylus-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/stylus-mode
/home/monnier/src/emacs/nongnu/packages/jade-mode/jade-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/jade-mode
/home/monnier/src/emacs/nongnu/packages/jade-mode/sws-mode hides /home/monnier/src/emacs/nongnu/packages/stylus-mode/sws-mode
/home/monnier/src/emacs/nongnu/packages/totp-auth/totp-auth hides /home/monnier/src/emacs/nongnu/packages/base32/totp-auth
/home/monnier/src/emacs/nongnu/packages/totp-auth/base32 hides /home/monnier/src/emacs/nongnu/packages/base32/base32
/home/monnier/src/emacs/nongnu/packages/totp-auth/totp-auth-hmac hides /home/monnier/src/emacs/nongnu/packages/base32/totp-auth-hmac
/home/monnier/src/emacs/nongnu/packages/totp-auth/totp-auth-interop hides /home/monnier/src/emacs/nongnu/packages/base32/totp-auth-interop
/home/monnier/src/emacs/elpa/packages/denote-sequence/denote-sequence hides /home/monnier/src/emacs/elpa/packages/denote/denote-sequence
/home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/easy-kill/test
/home/monnier/src/emacs/nongnu/packages/sweeprolog/theme-loaddefs hides /home/monnier/src/emacs/elpa/packages/ef-themes/theme-loaddefs
/home/monnier/src/emacs/elpa/packages/embark-consult/embark hides /home/monnier/src/emacs/elpa/packages/embark/embark
/home/monnier/src/emacs/elpa/packages/embark-consult/embark-consult hides /home/monnier/src/emacs/elpa/packages/embark/embark-consult
/home/monnier/src/emacs/elpa/packages/embark-consult/embark-org hides /home/monnier/src/emacs/elpa/packages/embark/embark-org
/home/monnier/src/emacs/elpa/packages/embark-consult/avy-embark-collect hides /home/monnier/src/emacs/elpa/packages/embark/avy-embark-collect
/home/monnier/src/emacs/elpa/packages/ada-mode/prj hides /home/monnier/src/emacs/elpa/packages/gpr-query/prj
/home/monnier/src/emacs/nongnu/packages/forth-mode/build hides /home/monnier/src/emacs/elpa/packages/lentic/build
/home/monnier/src/emacs/nongnu/packages/paredit/test hides /home/monnier/src/emacs/elpa/packages/num3-mode/test
/home/monnier/src/emacs/elpa/packages/llm/plz-event-source hides /home/monnier/src/emacs/elpa/packages/plz-event-source/plz-event-source
/home/monnier/src/emacs/elpa/packages/llm/plz-media-type hides /home/monnier/src/emacs/elpa/packages/plz-media-type/plz-media-type
/home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud-trepan-ni/cask-install
/home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/realgud/cask-install
/home/monnier/src/emacs/elpa/packages/realgud-lldb/cask-install hides /home/monnier/src/emacs/elpa/packages/loc-changes/cask-install
/home/monnier/src/emacs/nongnu/packages/sweeprolog/theme-loaddefs hides /home/monnier/src/emacs/elpa/packages/standard-themes/theme-loaddefs
/home/monnier/src/emacs/nongnu/packages/sweeprolog/theme-loaddefs hides /home/monnier/src/emacs/elpa/packages/modus-themes/theme-loaddefs
/home/monnier/src/emacs/nongnu/packages/vm/lisp/vcard hides /home/monnier/src/emacs/elpa/packages/vcard/vcard
/home/monnier/src/emacs/elpa/packages/hydra/hydra-examples hides /home/monnier/src/emacs/elpa/packages/lv/hydra-examples
/home/monnier/src/emacs/elpa/packages/hydra/lv hides /home/monnier/src/emacs/elpa/packages/lv/lv
/home/monnier/src/emacs/elpa/packages/hydra/hydra hides /home/monnier/src/emacs/elpa/packages/lv/hydra
/home/monnier/src/emacs/elpa/packages/hydra/hydra-ox hides /home/monnier/src/emacs/elpa/packages/lv/hydra-ox
/home/monnier/src/emacs/elpa/packages/hydra/hydra-test hides /home/monnier/src/emacs/elpa/packages/lv/hydra-test
/home/monnier/src/emacs/elpa/packages/transient/lisp/transient hides /home/monnier/src/emacs/work/lisp/transient
/home/monnier/src/emacs/nongnu/packages/sweeprolog/theme-loaddefs hides /home/monnier/src/emacs/work/lisp/theme-loaddefs
/home/monnier/src/emacs/elpa/packages/csharp-mode/csharp-mode hides /home/monnier/src/emacs/work/lisp/progmodes/csharp-mode
/home/monnier/src/emacs/nongnu/packages/lua-mode/lua-mode hides /home/monnier/src/emacs/work/lisp/progmodes/lua-mode
/home/monnier/src/emacs/nongnu/packages/teco/teco hides /home/monnier/src/emacs/work/lisp/emulation/teco
/home/monnier/src/emacs/work/lisp/keymap hides /home/monnier/src/emacs/work/lisp/emacs-lisp/keymap
/home/monnier/src/emacs/elpa/packages/crisp/crisp hides /home/monnier/src/emacs/work/lisp/obsolete/crisp
/home/monnier/src/emacs/elpa/packages/idlwave/idlw-complete-structtag hides /home/monnier/src/emacs/work/lisp/obsolete/idlw-complete-structtag
/home/monnier/src/emacs/elpa/packages/package-x/package-x hides /home/monnier/src/emacs/work/lisp/obsolete/package-x
/home/monnier/src/emacs/elpa/packages/landmark/landmark hides /home/monnier/src/emacs/work/lisp/obsolete/landmark
/home/monnier/src/emacs/elpa/packages/idlwave/idlw-shell hides /home/monnier/src/emacs/work/lisp/obsolete/idlw-shell
/home/monnier/src/emacs/elpa/packages/idlwave/idlwave hides /home/monnier/src/emacs/work/lisp/obsolete/idlwave
/home/monnier/src/emacs/elpa/packages/idlwave/idlw-toolbar hides /home/monnier/src/emacs/work/lisp/obsolete/idlw-toolbar
/home/monnier/src/emacs/elpa/packages/idlwave/idlw-help hides /home/monnier/src/emacs/work/lisp/obsolete/idlw-help
Features:
(shadow emacsbug tabify markdown-mode edit-indirect package vc-annotate
vc-dir ewoc vc-filewise helm-bookmark helm-x-icons helm-net
helm-adaptive helm-info helm-utils helm-types helm-help helm
helm-global-bindings helm-easymenu helm-core helm-source
helm-multi-match helm-lib async bookmark pg-custom proof-config
proof-faces proof-useropts pg-vars pg-pamacs proof-compat completion
completion-table pcmpl-unix shell etags fileloop wisi-run-indent-test
wisi-process-parse wisi-prj wisi xref wisi-fringe wisi-parse-common
semantic/lex semantic/fw mode-local find-file descr-text quail oc-basic
org-element org-persist org-id org-refile org-element-ast inline
avl-tree generator ol-eww eww vtable url-queue mm-url ol-rmail ol-mhe
ol-irc ol-info ol-gnus nnselect ol-docview ol-bibtex bibtex ol-bbdb
ol-w3m ol-doi org-link-doi cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-langs cc-vars cc-defs sm-c-mode
prefixed-core shortdoc comp-common eev-intro rect view cal-china lunar
solar cal-dst cal-bahai cal-islam cal-hebrew holidays holiday-loaddefs
cal-french org-journal org-crypt ob-octave org ob ob-tangle ob-ref
ob-lob ob-table ob-exp org-macro org-src sh-script smie treesit
make-mode ob-comint org-pcomplete pcomplete org-list org-footnote
org-faces org-entities org-version ob-emacs-lisp ob-core ob-eval
org-cycle org-table ol rx org-fold org-fold-core org-keys oc
org-loaddefs org-compat org-macs cal-iso diary-lib diary-loaddefs
cal-move cal-menu calendar cal-loaddefs bbdb-com gnus-fun debbugs-gnu
debbugs soap-client rng-xsd rng-dt rng-util xsd-regexp debbugs-compat
nndoc url-http-oauth url-http-ntlm ntlm hmac-md5 hex-util md4 url-http
url-gw url-cache crm bug-reference autorevert doc-view filenotify
image-mode exif epa-file misearch multi-isearch help-fns radix-tree
cl-print debug backtrace find-func emoji-labels emoji multisession
sqlite transient edmacro kmacro cond-let utf-7 flow-fill nnfolder
jka-compr cursor-sensor smerge-mode mailalias smtpmail dabbrev vc-git
diff-mode track-changes files-x filecache bbdb bbdb-site timezone
ecomplete shr-color color mule-util sort smiley gnus-cite matlab
matlab-scan matlab-syntax matlab-sections matlab-org
matlab-is-matlab-file matlab-compat matlab--shared raku-detect
mm-archive mail-extr textsec uni-scripts idna-mapping ucs-normalize
uni-confusable textsec-check gnus-async gnus-bcklg qp gnus-ml nndraft
nnmh network-stream nsm executable vc-backup log-view log-edit add-log
pcvs-util vc vc-dispatcher diff copyright nnnil gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime cl-seq gnutls dig nntp gnus-cache gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo server
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail browse-url xdg
url url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mail-source utf7 nnoo parse-time
iso8601 gnus-spec gnus-int gnus-range message sendmail mailcap
yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg
rfc6068 epg-config mm-decode mm-bodies mm-encode mail-parse rfc2231
rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader gnus-win gnus
nnheader gnus-util mail-utils range mm-util mail-prsvr time-date flymake
project compile text-property-search comint ansi-osc ansi-color ring
warnings noutline outline flyspell ispell checkdoc lisp-mnt thingatpt
elec-pair url-handlers reveal autoinsert engine-mode format-spec
savehist minibuf-eldef disp-table compact-docstrings easy-mmode corfu
compat info adoc-mode-autoloads afternoon-theme-autoloads
aidermacs-autoloads alect-themes-autoloads ample-theme-autoloads
annotate-autoloads anti-zenburn-theme-autoloads apache-mode-autoloads
apropospriate-theme-autoloads arduino-mode-autoloads ede/auto eieio-base
auto-dim-other-buffers-autoloads bash-completion-autoloads
beancount-autoloads better-jumper-autoloads bison-mode-autoloads
blow-autoloads blueprint-ts-mode-autoloads boxquote-autoloads
buttercup-autoloads camera-autoloads cdlatex-autoloads cider-autoloads
clojure-ts-mode-autoloads coffee-mode-autoloads
consult-flycheck-autoloads corfu-terminal-autoloads crux-autoloads
csv2ledger-autoloads cyberpunk-theme-autoloads cycle-at-point-autoloads
d-mode-autoloads dart-mode-autoloads denote-refs-autoloads
devhelp-autoloads devil-autoloads diff-ansi-autoloads dirvish-autoloads
doc-show-inline-autoloads dockerfile-mode-autoloads
dracula-theme-autoloads dslide-autoloads eat-autoloads
edit-indirect-autoloads eglot-inactive-regions-autoloads
eldoc-diffstat-autoloads elixir-mode-autoloads elpher-autoloads
engine-mode-autoloads evil-anzu-autoloads anzu-autoloads
evil-args-autoloads evil-escape-autoloads evil-exchange-autoloads
evil-goggles-autoloads evil-iedit-state-autoloads
evil-indent-plus-autoloads evil-lisp-state-autoloads bind-map-autoloads
evil-matchit-autoloads evil-nerd-commenter-autoloads
evil-numbers-autoloads evil-surround-autoloads
evil-visual-mark-mode-autoloads evil-visualstar-autoloads evil-autoloads
exec-path-from-shell-autoloads flx-ido-autoloads flx-autoloads
flycheck-autoloads flymake-collection-autoloads flymake-guile-autoloads
flymake-kondor-autoloads flymake-popon-autoloads
flymake-pyrefly-autoloads focus-autoloads forth-mode-autoloads
free-keys-autoloads gc-buffers-autoloads geiser-chez-autoloads
geiser-chibi-autoloads geiser-chicken-autoloads geiser-gambit-autoloads
geiser-gauche-autoloads geiser-guile-autoloads geiser-kawa-autoloads
geiser-mit-autoloads geiser-racket-autoloads geiser-stklos-autoloads
geiser-autoloads git-modes-autoloads gnosis-autoloads
gnu-apl-mode-autoloads gnu-indent-autoloads gnuplot-autoloads
go-mode-autoloads golden-ratio-autoloads gotham-theme-autoloads
goto-chg-autoloads gptel-autoloads graphql-mode-autoloads
gruber-darker-theme-autoloads gruvbox-theme-autoloads
autothemer-autoloads guru-mode-autoloads haskell-mode-autoloads
haskell-tng-mode-autoloads haskell-ts-mode-autoloads helm-autoloads
helm-core-autoloads hideshowvis-autoloads
highlight-parentheses-autoloads hl-block-mode-autoloads
hl-column-autoloads htmlize-autoloads
hyperdrive-org-transclusion-autoloads hyperdrive-autoloads
idle-highlight-mode-autoloads idris-mode-autoloads iedit-autoloads
inf-clojure-autoloads clojure-mode-autoloads inf-ruby-autoloads
inkpot-theme-autoloads iwindow-autoloads j-mode-autoloads
jade-mode-autoloads jinja2-mode-autoloads julia-mode-autoloads
keycast-autoloads kotlin-mode-autoloads logview-autoloads
datetime-autoloads extmap-autoloads loopy-dash-autoloads loopy-autoloads
lorem-ipsum-autoloads lua-mode-autoloads markdown-mode-autoloads
mastodon-autoloads material-theme-autoloads mentor-autoloads
meow-autoloads minibar-autoloads moc-autoloads moe-theme-autoloads
monokai-theme-autoloads mpv-autoloads multiple-cursors-autoloads
nasm-mode-autoloads nginx-mode-autoloads nix-mode-autoloads
oblivion-theme-autoloads opam-switch-mode-autoloads
org-auto-tangle-autoloads org-contrib-autoloads org-drill-autoloads
org-journal-autoloads org-mime-autoloads org-present-autoloads
org-superstar-autoloads org-transclusion-http-autoloads
org-tree-slide-autoloads orgit-autoloads magit-autoloads
p4-16-mode-autoloads package-lint-autoloads pacmacs-autoloads
page-break-lines-autoloads paredit-autoloads parseedn-autoloads
parseclj-autoloads pcmpl-args-autoloads pcre2el-autoloads
pdf-tools-autoloads php-mode-autoloads popon-autoloads popup-autoloads
projectile-autoloads proof-general-autoloads proof-site proof-autoloads
prop-menu-autoloads racket-mode-autoloads radio-autoloads
rainbow-delimiters-autoloads raku-mode-autoloads recomplete-autoloads
rfc-mode-autoloads rpm-spec-mode-autoloads rubocop-autoloads
rust-mode-autoloads sass-mode-autoloads haml-mode-autoloads
scad-mode-autoloads scala-mode-autoloads scroll-on-drag-autoloads
scroll-on-jump-autoloads sesman-autoloads shellcop-autoloads
slime-autoloads macrostep-autoloads sly-autoloads smartparens-autoloads
solarized-theme-autoloads spacemacs-theme-autoloads spell-fu-autoloads
sqlite3-autoloads standard-keys-mode-autoloads stylus-mode-autoloads
subatomic-theme-autoloads subed-autoloads sweeprolog-autoloads
swift-mode-autoloads symbol-overlay-autoloads systemd-autoloads
tablist-autoloads tangotango-theme-autoloads teco-autoloads
telephone-line-autoloads testcover-mark-line-autoloads
textile-mode-autoloads toc-org-autoloads totp-auth-autoloads
base32-autoloads tp-autoloads treesit-fold-autoloads tuareg-autoloads
caml-autoloads typescript-mode-autoloads typst-ts-mode-autoloads
ujelly-theme-autoloads undo-fu-autoloads undo-fu-session-autoloads
vc-fossil-autoloads vcomplete-autoloads visual-fill-column-autoloads
vm-autoloads web-mode-autoloads webpaste-autoloads wfnames-autoloads
wgrep-autoloads why-this-autoloads with-editor-autoloads
with-simulated-input-autoloads workroom-autoloads
writegood-mode-autoloads ws-butler-autoloads xah-fly-keys-autoloads
xkcd-autoloads xml-rpc-autoloads yaml-mode-autoloads
yasnippet-snippets-autoloads zenburn-theme-autoloads zig-mode-autoloads
reformatter-autoloads a68-mode-autoloads ace-window-autoloads
ack-autoloads activities-autoloads ada-mode-autoloads
ada-ref-man-autoloads adaptive-wrap-autoloads adjust-parens-autoloads
advice-patch-autoloads aggressive-completion-autoloads
aggressive-indent-autoloads agitate-autoloads ahungry-theme-autoloads
aircon-theme-autoloads all-autoloads altcaps-autoloads ampc-autoloads
arbitools-autoloads assess-autoloads auctex-cont-latexmk-autoloads
auctex-label-numbers-autoloads aumix-mode-autoloads
auth-source-xoauth2-plugin-autoloads auto-correct-autoloads
auto-header-autoloads auto-overlays-autoloads autocrypt-autoloads
autorevert-tail-truncate-autoloads bbdb-autoloads beacon-autoloads
beardbolt-autoloads beframe-autoloads bicep-ts-mode-autoloads
blist-autoloads bluetooth-autoloads bnf-mode-autoloads
boxy-headings-autoloads breadcrumb-autoloads brief-autoloads
buffer-env-autoloads buffer-expose-autoloads bufferlo-autoloads
buframe-autoloads bug-hunter-autoloads buildbot-autoloads
calibre-autoloads cape-autoloads capf-autosuggest-autoloads
caps-lock-autoloads captain-autoloads chess-autoloads
clipboard-collector-autoloads cobol-mode-autoloads code-cells-autoloads
colorful-mode-autoloads compact-docstrings-autoloads
company-ebdb-autoloads company-math-autoloads
company-statistics-autoloads company-autoloads constants-autoloads
consult-denote-autoloads consult-hoogle-autoloads
consult-recoll-autoloads context-coloring-autoloads corfu-autoloads
coterm-autoloads counsel-autoloads cpio-mode-autoloads
cpupower-autoloads crdt-autoloads crisp-autoloads csharp-mode-autoloads
csv-mode-autoloads cursor-undo-autoloads cursory-autoloads
cus-abbrev-autoloads cycle-quotes-autoloads dape-autoloads
darkroom-autoloads dbus-codegen-autoloads debbugs-autoloads
delight-autoloads denote-journal-autoloads denote-markdown-autoloads
denote-menu-autoloads denote-org-autoloads denote-search-autoloads
denote-sequence-autoloads denote-silo-autoloads denote-autoloads
detached-autoloads devdocs-autoloads devicetree-ts-mode-autoloads
dicom-autoloads dict-tree-autoloads diff-hl-autoloads diffview-autoloads
diminish-autoloads dired-du-autoloads dired-duplicates-autoloads
dired-git-info-autoloads dired-preview-autoloads disk-usage-autoloads
dismal-autoloads djvu-autoloads do-at-point-autoloads doc-toc-autoloads
doc-view-follow-autoloads docbook-autoloads doric-themes-autoloads
drepl-autoloads comint-mime-autoloads dts-mode-autoloads
easy-escape-autoloads easy-kill-autoloads ebdb-gnorb-autoloads
ebdb-i18n-chn-autoloads ebdb-autoloads cl-extra help-mode
ediprolog-autoloads eev-autoloads ef-themes-autoloads el-job-autoloads
el-search-autoloads electric-spacing-autoloads elisa-autoloads
elisp-benchmarks-autoloads ellama-autoloads emacs-gc-stats-autoloads
embark-consult-autoloads consult-autoloads embark-autoloads
ement-autoloads emms-autoloads engrave-faces-autoloads enwc-autoloads
epoch-view-autoloads ergoemacs-mode-autoloads ess-autoloads
excorporate-autoloads expand-region-autoloads expreg-autoloads
exwm-autoloads f90-interface-browser-autoloads face-shift-autoloads
filechooser-autoloads filladapt-autoloads
firefox-javascript-repl-autoloads flylisp-autoloads
flymake-clippy-autoloads flymake-codespell-autoloads
flymake-proselint-autoloads fontaine-autoloads frame-tabs-autoloads
frog-menu-autoloads fsm-autoloads ftable-autoloads gcmh-autoloads
ggtags-autoloads gited-autoloads gle-mode-autoloads
gnome-c-style-autoloads gnome-dark-style-autoloads gnorb-autoloads
gnu-elpa-autoloads gnu-elpa-features gnu-elpa-keyring-update-autoloads
gnugo-autoloads ascii-art-to-unicode-autoloads gnus-mock-autoloads
gpastel-autoloads gpr-mode-autoloads gpr-query-autoloads
gnat-compiler-autoloads graphql-autoloads greader-autoloads
greenbar-autoloads gtags-mode-autoloads guess-language-autoloads
hcel-autoloads hiddenquote-autoloads
highlight-escape-sequences-autoloads hook-helpers-autoloads
html5-schema-autoloads hugoista-autoloads idlwave-autoloads
ilist-autoloads indent-bars-autoloads inspector-autoloads
ioccur-autoloads isearch-mb-autoloads iso-date-autoloads
iterators-autoloads ivy-avy-autoloads avy-autoloads
ivy-explorer-autoloads ivy-hydra-autoloads ivy-posframe-autoloads
jarchive-autoloads javaimp-autoloads jgraph-mode-autoloads
jinx-autoloads jit-spell-autoloads js2-mode-autoloads
json-mode-autoloads jumpc-autoloads kind-icon-autoloads kiwix-autoloads
request-autoloads kmb-autoloads kubed-autoloads landmark-autoloads
latex-table-wizard-autoloads leaf-autoloads lentic-server-autoloads
lentic-autoloads lex-autoloads lin-autoloads listen-autoloads
literate-scratch-autoloads llm-autoloads lmc-autoloads
load-dir-autoloads loccur-autoloads logos-autoloads luwak-autoloads
m-buffer-autoloads marginalia-autoloads markchars-autoloads
math-symbol-lists-autoloads mathjax-autoloads mathsheet-autoloads
matlab-mode-autoloads mct-autoloads memory-usage-autoloads
metar-autoloads midi-kbd-autoloads mines-autoloads
minibuffer-header-autoloads minibuffer-line-autoloads minimail-autoloads
minimap-autoloads minuet-autoloads mode-line-maker-autoloads
mpdired-autoloads multi-mode-autoloads multishell-autoloads
muse-autoloads myers-autoloads nameless-autoloads names-autoloads
nano-agenda-autoloads nano-modeline-autoloads nano-theme-autoloads
nftables-mode-autoloads nhexl-mode-autoloads nlinum-autoloads
notes-mode-autoloads notmuch-indicator-autoloads num3-mode-autoloads
oauth2-autoloads ob-asymptote-autoloads ob-haxe-autoloads
objed-autoloads omn-mode-autoloads on-screen-autoloads openpgp-autoloads
orderless-autoloads org-contacts-autoloads org-edna-autoloads
org-gnosis-autoloads emacsql-autoloads org-jami-bot-autoloads
jami-bot-autoloads org-modern-autoloads org-notify-autoloads
org-real-autoloads boxy-autoloads org-remark-autoloads
org-transclusion-autoloads org-translate-autoloads orgalist-autoloads
osc-autoloads osm-autoloads other-frame-window-autoloads
pabbrev-autoloads paced-autoloads package-x-autoloads parsec-autoloads
parser-generator-autoloads path-iterator-autoloads perl-doc-autoloads
persist-autoloads phpinspect-autoloads phps-mode-autoloads
pinentry-autoloads plz-event-source-autoloads plz-media-type-autoloads
plz-see-autoloads poke-autoloads poke-mode-autoloads poker-autoloads
polymode-autoloads popper-autoloads pq-autoloads prefixed-core-autoloads
preview-auto-autoloads preview-tailor-autoloads auctex-autoloads
psgml-autoloads pspp-mode-autoloads pulsar-autoloads
pyim-basedict-autoloads pyim-autoloads async-autoloads
quarter-plane-autoloads rainbow-mode-autoloads rbit-autoloads
rcirc-color-autoloads rcirc-mentions-autoloads rcirc-menu-autoloads
rcirc-sqlite-autoloads realgud-ipdb-autoloads realgud-jdb-autoloads
realgud-lldb-autoloads realgud-node-debug-autoloads
realgud-node-inspect-autoloads realgud-pdbpp-autoloads
realgud-trepan-ni-autoloads realgud-trepan-xpy-autoloads
realgud-autoloads loc-changes-autoloads load-relative-autoloads
rec-mode-autoloads register-list-autoloads relint-autoloads
repology-autoloads rich-minority-autoloads rnc-mode-autoloads
rt-liberation-autoloads ruby-end-autoloads rudel-autoloads
satchel-autoloads scanner-autoloads scroll-restore-autoloads
sed-mode-autoloads setup-autoloads shelisp-autoloads
shell-command+-autoloads shell-quasiquote-autoloads shen-mode-autoloads
show-font-autoloads sisu-mode-autoloads site-lisp-autoloads
sketch-mode-autoloads slime-volleyball-autoloads sm-c-mode-autoloads
smalltalk-mode-autoloads smart-yank-autoloads sml-mode-autoloads
sokoban-autoloads sotlisp-autoloads spacious-padding-autoloads
speedrect-autoloads spinner-autoloads sql-beeline-autoloads
sql-cassandra-autoloads sql-indent-autoloads sql-smie-autoloads
srht-autoloads ssh-deploy-autoloads standard-themes-autoloads
modus-themes-autoloads stream-autoloads substitute-autoloads
svg-clock-autoloads svg-tag-mode-autoloads svg-lib-autoloads
swiper-autoloads ivy-autoloads switchy-window-autoloads
sxhkdrc-mode-autoloads system-packages-autoloads tam-autoloads
taxy-magit-section-autoloads taxy-autoloads magit-section-autoloads
llama-autoloads dash-autoloads temp-buffer-browse-autoloads
tempel-autoloads termint-autoloads test-simple-autoloads
tex-item-autoloads tex-parens-autoloads theme-buffet-autoloads
timerfunctions-autoloads tiny-autoloads tmr-autoloads tomelr-autoloads
topspace-autoloads tramp-nspawn-autoloads tramp-theme-autoloads
transcribe-autoloads transient-autoloads cond-let-autoloads
transient-cycles-autoloads tree-inspector-autoloads treeview-autoloads
trie-autoloads heap-autoloads tNFA-autoloads trinary-autoloads
triples-autoloads typo-autoloads ulisp-repl-autoloads
undo-tree-autoloads uni-confusables-autoloads uniquify-files-autoloads
urgrep-autoloads url-http-ntlm-autoloads url-http-oauth-autoloads
url-auth url-parse auth-source eieio eieio-core cl-macs pcase
password-cache json subr-x map byte-opt bytecomp byte-compile url-vars
url-scgi-autoloads validate-autoloads valign-autoloads
vc-backup-autoloads vc-got-autoloads vc-hgcmd-autoloads vc-jj-autoloads
vcard-autoloads vcl-mode-autoloads vdiff-autoloads hydra-autoloads
lv-autoloads vecdb-autoloads pg-autoloads plz-autoloads
vertico-posframe-autoloads vertico-autoloads posframe-autoloads
vigenere-autoloads visual-filename-abbrev-autoloads
visual-fill-autoloads vlf-autoloads vundo-autoloads
wcheck-mode-autoloads wconf-autoloads web-server-autoloads
webfeeder-autoloads websocket-autoloads window-commander-autoloads
windower-autoloads windresize-autoloads wisitoken-grammar-mode-autoloads
mmm-mode-autoloads wisi-autoloads wpuzzle-autoloads
wrap-search-autoloads xclip-autoloads xeft-autoloads xelb-autoloads
xpm-autoloads queue-autoloads xr-autoloads xref-union-autoloads
yaml-autoloads yasnippet-classic-snippets-autoloads yasnippet-autoloads
zones-autoloads ztree-autoloads zuul-autoloads cus-edit pp cus-start
cus-load icons wid-edit cl-loaddefs cl-lib gv rmc iso-transl tooltip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type
elisp-mode mwheel term/x-win x-win term/common-win x-dnd touch-screen
tool-bar dnd fontset image fringe tabulated-list replace newcomment
text-mode lisp-mode prog-mode register page tab-bar menu-bar regexp-opt
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray button loaddefs
theme-loaddefs oclosure cl-preloaded faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget keymap hashtable-print-readable backquote threads
dbusbind inotify lcms2 dynamic-setting system-font-setting
font-render-setting cairo gtk x-toolkit xinput2 x multi-tty move-toolbar
make-network-process tty-child-frames emacs)
Memory information:
((conses 16 9636413 1970867) (symbols 48 69915 569)
(strings 32 292675 62058) (string-bytes 1 9954045) (vectors 16 140296)
(vector-slots 8 2671658 1238590) (floats 8 1235 13393)
(intervals 56 15111 3976) (buffers 1064 80))
bug-gnu-emacs <at> gnu.org:bug#79852; Package emacs.
(Mon, 17 Nov 2025 16:44:01 GMT) Full text and rfc822 format available.Message #8 received at 79852 <at> debbugs.gnu.org (full text, mbox):
From: "J.D. Smith" <jdtsmith <at> gmail.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 79852 <at> debbugs.gnu.org Subject: Re: bug#79852: Incomplete autoload: `ert-deftest` docstring highlighted as a mere string Date: Mon, 17 Nov 2025 11:43:33 -0500
Stefan Monnier <monnier <at> iro.umontreal.ca> writes: > Package: Emacs > Version: 31.0.50 > > > Upon Emacs startup `ert-deftest` does not have any `doc-string-elt` nor > `lisp-indent-function` properties any more, so indentation gets it wrong > and the docstring is highlighted as a mere string. > After loading `ert` the problem disappears. > > This is a regression compared to Emacs-30. I'm not sure why this > affects `ert-deftest` and not say `define-inline` or `pcase`. > Maybe it's because it's defined with `cl-defmacro`? > > Here is what I see right after Emacs startup for those three autoloaded macros: > > ELISP> (symbol-plist 'ert-deftest) > nil > > ELISP> (symbol-plist 'define-inline) > (lisp-indent-function defun doc-string-elt 3 autoload-macro expand) > > ELISP> (symbol-plist 'pcase) > (lisp-indent-function 1 function-documentation (pcase--make-docstring)) > Does your build not have the following in lisp/loaddefs.el? (function-put 'ert-deftest 'doc-string-elt 3) (function-put 'ert-deftest 'lisp-indent-function 2) We added: (autoload-macro expand)) ; expand to defmacro on autoload gen to cl-defmacro. Do you have (function-get 'cl-defmacro 'autoload-macro)?
bug-gnu-emacs <at> gnu.org:bug#79852; Package emacs.
(Mon, 17 Nov 2025 18:32:01 GMT) Full text and rfc822 format available.Message #11 received at 79852 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: "J.D. Smith" <jdtsmith <at> gmail.com> Cc: 79852 <at> debbugs.gnu.org Subject: Re: bug#79852: Incomplete autoload: `ert-deftest` docstring highlighted as a mere string Date: Mon, 17 Nov 2025 13:31:39 -0500
> Does your build not have the following in lisp/loaddefs.el?
>
> (function-put 'ert-deftest 'doc-string-elt 3)
> (function-put 'ert-deftest 'lisp-indent-function 2)
Nope:
% rm **/*loaddefs.el src/bootstrap-emacs src/emacs
% make -j4
[...]
% grep ert-deftest lisp/loaddefs.el
(autoload 'ert-deftest "ert" "\
the same arguments and keywords as `ert-deftest' and is intended to be
same arguments and keywords as `ert-deftest' and is intended to be used
%
Do you?
> We added:
>
> (autoload-macro expand)) ; expand to defmacro on autoload gen
>
> to cl-defmacro. Do you have (function-get 'cl-defmacro 'autoload-macro)?
Before loading `cl-lib` it's nil and after loading it, it's `expand`,
as expected.
Stefan
bug-gnu-emacs <at> gnu.org:bug#79852; Package emacs.
(Tue, 18 Nov 2025 22:03:02 GMT) Full text and rfc822 format available.Message #14 received at 79852 <at> debbugs.gnu.org (full text, mbox):
From: "J.D. Smith" <jdtsmith <at> gmail.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 79852 <at> debbugs.gnu.org Subject: Re: bug#79852: Incomplete autoload: `ert-deftest` docstring highlighted as a mere string Date: Tue, 18 Nov 2025 17:01:56 -0500
[Message part 1 (text/plain, inline)]
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> Does your build not have the following in lisp/loaddefs.el?
>>
>> (function-put 'ert-deftest 'doc-string-elt 3)
>> (function-put 'ert-deftest 'lisp-indent-function 2)
>
> Nope:
>
> % rm **/*loaddefs.el src/bootstrap-emacs src/emacs
> % make -j4
> [...]
> % grep ert-deftest lisp/loaddefs.el
> (autoload 'ert-deftest "ert" "\
> the same arguments and keywords as `ert-deftest' and is intended to be
> same arguments and keywords as `ert-deftest' and is intended to be used
> %
>
> Do you?
FYI, I run the autoload-expand patch via v30. Just gave it another try
and indeed, no sign of the `function-put's.
>> We added:
>>
>> (autoload-macro expand)) ; expand to defmacro on autoload gen
>>
>> to cl-defmacro. Do you have (function-get 'cl-defmacro 'autoload-macro)?
>
> Before loading `cl-lib` it's nil and after loading it, it's `expand`,
> as expected.
OK, that's the problem. It would appear in path #78995 we never closed
the loop on what to do about `cl-macs' macros not yet being available
during bootstrap (because `cl-loaddefs.el' does not yet exist). There I
said:
> 3. Some macros' autoload treatment depend on whether they are defined at
> autoload-generation time.
>
> Such macros are both on the short-cut list /and/ request expansion. So
> they are expanded, but only if they are defined at the time autoload
> generation occurs. Most are, but some, e.g. cl-macs, are not. So they
> go through the "short-cut" instead.
and you said:
> So, the general problem is: your patch will sometimes `eval-buffer` for
> a buffer which doesn't expect to be evaluated before its package's
> `FOO-loaddefs.el` has been created. I suspect that in most cases this
> can be fixed by replacing
>
> (require 'foo-loaddefs)
> by
> (require 'foo-loaddefs nil t)
>
> It's not ideal, but I think it's acceptable. Maybe it won't always be
> sufficient either. E.g. in `cl-lib` we solved this problem (for
> a different reason) with:
>
> (unless (load "cl-loaddefs" 'noerror 'quiet)
> ;; When bootstrapping, cl-loaddefs hasn't been built yet!
> (require 'cl-macs)
> (require 'cl-seq)
It appears there's a subtle version of this very issue which
`ert-defmacro' is dealing with. There are two paths by which a macro
call (like `(cl-defmacro ert-deftest ...') can get turned into an
`autoload' statement:
1. By being expanded, because the macro requests it, all the way to a
form which will be mapped to `autoload' (e.g. `defalias').
2. By taking the "shortcut" and getting transmuted directly into an
`autoload'.
What happens for `ert-defmacro' is as follows (in
`loaddefs-generate--make-autoload'):
1. `cl-defmacro' is /not defined/ during bootstrap loaddefs generation.
2. `cl-defmacro' /is/ on the list `loaddefs--defining-macros', which
tells our new code from 78995 not to bother loading the `ert.el' file
to attempt to get `cl-defmacro' defined. This /would/ have worked.
3. Naturally, being undefined, it also has no `autoload-macro' property
value. So we fall through to the next stanza.
4. In the `cond' stanza below that, we handle the "known special macros"
(including `cl-defmacro') by direct conversion to an `autoload' form.
Since we are never expanding `defmacro', the `declare' forms don't
enter.
We /could/ simply load `cl-macs' (as in the attached). But I guess
instead we should ask ourselves which of `loaddefs--defining-macros'
are:
a) not likely to be defined during bootstrap, and
b) would benefit from real macro expansion (vs. shortcut transmutation).
Then we can take these off the list, so they can be loaded "on demand"?
Current list:
(defconst loaddefs--defining-macros
'(define-skeleton define-derived-mode
define-compilation-mode define-generic-mode
easy-mmode-define-global-mode define-global-minor-mode
define-globalized-minor-mode
easy-mmode-define-minor-mode define-minor-mode
cl-defun defun* cl-defmacro defmacro*
define-overloadable-function
transient-define-prefix transient-define-suffix
transient-define-infix transient-define-argument))
Thoughts?
[0001-lisp-emacs-lisp-loaddefs-gen.el-loaddefs-generate-em.patch (text/x-patch, attachment)]
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.