Commit graph

68 commits

Author SHA1 Message Date
Jonas Bernoulli
167d9b9040 Allow trivially autoloading uses of transient's define macros
Since 49e41991b2 transient-define-prefix itself was autoloaded, but
that meant that when ever an autoload file was loaded, which contained
an autoload for a command defined using that macro, transient itself
had to be loaded.

That shouldn't be necessary.  For commands using these macros, an
autoload that is identical to what would have been generated if it
had been defined using defun, works just fine.

* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--make-autoload): Allow uses of
transient-define-prefix, transient-define-suffix,
transient-define-infix and transient-define-argument
to be autoloaded using just ";;;autoload".

* lisp/transient.el (transient-define-prefix): No longer autoload.
2024-02-20 22:04:51 +01:00
Stefan Monnier
57544fa2a2 loaddefs-gen.el: Generate an autoload for pcase-defmacro
Autoload cookies on uses of `pcase-defmacro` used to copy
the definition wholesale instead of generating the expected autoload.

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Look inside `eval-and-compile` as well.
2024-02-11 22:19:49 -05:00
Stefan Monnier
77f240012f (loaddefs-generate--compute-prefixes): Fix thinko in last change
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--compute-prefixes):
 Fix thinko in last change.  Also,       reduce memory allocation.
2024-02-06 15:36:18 -05:00
Stefan Monnier
a2201a2034 (loaddefs-generate--parse-file): Be a bit more defensive
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Don't fail in case of an error while generating the prefixes.
(loaddefs-generate--compute-prefixes): Don't burp when
`read-from-string` returns something else than a symbol.
2024-02-06 13:21:22 -05:00
Eli Zaretskii
ecb69c8bd8 ; Fix a comment in loaddefs-gen.el 2024-02-03 18:05:55 +02:00
Joseph Turner
f266622cdb ; Optimize shorthand insertion in loaddefs-generate--parse-file
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Optimize.
2024-02-03 08:40:03 -06:00
João Távora
817140a852 Fix prefix discovery for files with read-symbol-shorthands (bug#67325)
In a previous commit, the local-variable read-symbol-shorthands is
already read into the temporary buffer used for the autoload parsing
aerobatics, so all we needed to do in 'l-g--compute-prefixes' is
use 'read' to give 'read-symbol-shorthands' a chance to kick in.

* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--compute-prefixes):
2024-02-03 08:40:03 -06:00
João Távora
c52d17d91a Also teach loaddefs-gen.el about shorthands (bug#63480)
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Make aware of read-symbol-shorthands.
2024-02-03 08:40:03 -06:00
Po Lu
ecf08f0621 Merge from savannah/emacs-29
dc4e6b1329 ; Update copyright years in more files
64b3777631 ; Run set-copyright from admin.el
8e1c56ae46 ; Add 2024 to copyright years

# Conflicts:
#	doc/misc/modus-themes.org
#	doc/misc/texinfo.tex
#	etc/NEWS
#	etc/refcards/ru-refcard.tex
#	etc/themes/modus-operandi-theme.el
#	etc/themes/modus-themes.el
#	etc/themes/modus-vivendi-theme.el
#	lib/alloca.in.h
#	lib/binary-io.h
#	lib/c-ctype.h
#	lib/c-strcasecmp.c
#	lib/c-strncasecmp.c
#	lib/careadlinkat.c
#	lib/cloexec.c
#	lib/close-stream.c
#	lib/diffseq.h
#	lib/dup2.c
#	lib/filemode.h
#	lib/fpending.c
#	lib/fpending.h
#	lib/fsusage.c
#	lib/getgroups.c
#	lib/getloadavg.c
#	lib/gettext.h
#	lib/gettime.c
#	lib/gettimeofday.c
#	lib/group-member.c
#	lib/malloc.c
#	lib/md5-stream.c
#	lib/md5.c
#	lib/md5.h
#	lib/memmem.c
#	lib/memrchr.c
#	lib/nanosleep.c
#	lib/save-cwd.h
#	lib/sha1.c
#	lib/sig2str.c
#	lib/stdlib.in.h
#	lib/strtoimax.c
#	lib/strtol.c
#	lib/strtoll.c
#	lib/time_r.c
#	lib/xalloc-oversized.h
#	lisp/auth-source-pass.el
#	lisp/emacs-lisp/lisp-mnt.el
#	lisp/emacs-lisp/timer.el
#	lisp/info-look.el
#	lisp/jit-lock.el
#	lisp/loadhist.el
#	lisp/mail/rmail.el
#	lisp/net/ntlm.el
#	lisp/net/webjump.el
#	lisp/progmodes/asm-mode.el
#	lisp/progmodes/project.el
#	lisp/progmodes/sh-script.el
#	lisp/textmodes/flyspell.el
#	lisp/textmodes/reftex-toc.el
#	lisp/textmodes/reftex.el
#	lisp/textmodes/tex-mode.el
#	lisp/url/url-gw.el
#	m4/alloca.m4
#	m4/clock_time.m4
#	m4/d-type.m4
#	m4/dirent_h.m4
#	m4/dup2.m4
#	m4/euidaccess.m4
#	m4/fchmodat.m4
#	m4/filemode.m4
#	m4/fsusage.m4
#	m4/getgroups.m4
#	m4/getloadavg.m4
#	m4/getrandom.m4
#	m4/gettime.m4
#	m4/gettimeofday.m4
#	m4/gnulib-common.m4
#	m4/group-member.m4
#	m4/inttypes.m4
#	m4/malloc.m4
#	m4/manywarnings.m4
#	m4/mempcpy.m4
#	m4/memrchr.m4
#	m4/mkostemp.m4
#	m4/mktime.m4
#	m4/nproc.m4
#	m4/nstrftime.m4
#	m4/pathmax.m4
#	m4/pipe2.m4
#	m4/pselect.m4
#	m4/pthread_sigmask.m4
#	m4/readlink.m4
#	m4/realloc.m4
#	m4/sig2str.m4
#	m4/ssize_t.m4
#	m4/stat-time.m4
#	m4/stddef_h.m4
#	m4/stdint.m4
#	m4/stdio_h.m4
#	m4/stdlib_h.m4
#	m4/stpcpy.m4
#	m4/strnlen.m4
#	m4/strtoimax.m4
#	m4/strtoll.m4
#	m4/time_h.m4
#	m4/timegm.m4
#	m4/timer_time.m4
#	m4/timespec.m4
#	m4/unistd_h.m4
#	m4/warnings.m4
#	nt/configure.bat
#	nt/preprep.c
#	test/lisp/register-tests.el
2024-01-02 10:28:14 +08:00
Po Lu
8e1c56ae46 ; Add 2024 to copyright years 2024-01-02 09:47:10 +08:00
João Távora
f4bdc9b092 Add autoload cookie to autoload-compute-prefixes (bug#67325)
* lisp/emacs-lisp/loaddefs-gen.el (autoload-compute-prefixes): Add
autoload cookie.
2023-11-26 15:04:06 -06:00
Jim Porter
8574ef314c Fix loaddef generation with ";;;foo-autoload" cookies in external packages
This caused an issue where package-specific autoload cookies weren't
being correctly recognized, so they got dumped into the package's main
"<pkg>-autoloads.el" file, instead of "<pkg>-loaddefs.el" as they
should (bug#65023).

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Save match data when checking syntax.
2023-08-04 11:01:31 -07:00
Philip Kaludercic
6fa9332e7c Ensure that EXTRA-DATA are always written when generating autoloads
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Handle
edge-case where no autoloads are found.  (Bug#63260)
2023-05-12 09:41:55 +02:00
Robert Pluim
94e984e670 Make loaddefs-generate slightly more tolerant
There are packages in the wild, such as vlf-20191126.2250, which have
entries that are not terminated by three ';', but by two.  Tolerate
such entries.

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Search for two
';' as a delimiter, not three.  (Bug#63236)
2023-05-04 16:03:13 +02:00
Philip Kaludercic
dd21003878 Prevent generating empty autoload files
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Remove
optimisation that would mistakenly discard old loaddefs in case a file
was not modified by EXTRA-DATA is non-nil.  (Bug#62734)
2023-04-30 18:42:58 +02:00
Eli Zaretskii
cae528457c ; Add 2023 to copyright years. 2023-01-01 05:31:12 -05:00
Kyle Meyer
6c86faec29 loaddefs-gen: Group results by absolute file name
loaddefs-generate produced an incomplete output file if 1) it
was called with a relative file name and 2) that same file was
specified via a generated-autoload-file cookie in a subset of
the input files.  In that case, autoload entries were lost
because loaddefs-generate writes the same output file twice:
once for the relative name specified by the caller and once
for the absolute name that loaddefs-generate--parse-file
returns for the generated-autoload-file value.
This has been fixed.  (Bug#60318)

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Expand file
names when grouping loaddef files.
2022-12-26 14:55:08 +02:00
Eli Zaretskii
4dec4aadf6 Fix generation of autoloads on MS-Windows
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--file-load-name): Handle the case when FILE and
OUTFILE don't share any common ancestor directory.  (Bug#59507)
2022-11-26 12:59:06 +02:00
Lars Ingebrigtsen
6cabef8799 Fix previous loaddefs-gen fix 2022-10-18 13:17:52 +02:00
Lars Ingebrigtsen
86581698ac Fix faulty loaddefs detection
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--emacs-batch): Fix faulty loaddefs detection.
2022-10-18 13:14:08 +02:00
Philip Kaludercic
5fc064f14c
Handle ;;;###theme-autoload comments in etc/themes
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--emacs-batch):
Extract the autoloads and have them loaded along with loaddefs.el.
* etc/NEWS: Mention the new feature.  (Bug#57639)
2022-10-15 17:22:48 +02:00
Philip Kaludercic
da2e6da722
Tag themes with properties
* doc/emacs/custom.texi (Custom Themes): Document 'theme-choose-variant'.
* doc/lispref/customize.texi (Custom Themes): Document the new
optional argument to 'deftheme'.
(Autoload): Mention that 'deftheme' is not copied verbatim.
* etc/themes/adwaita-theme.el (adwaita): Add properties.
* etc/themes/deeper-blue-theme.el (deeper-blue): Add properties.
* etc/themes/dichromacy-theme.el (dichromacy): Add properties.
* etc/themes/light-blue-theme.el (light-blue): Add properties.
* etc/themes/manoj-dark-theme.el (manoj-dark): Add properties.
* etc/themes/misterioso-theme.el (misterioso): Add properties.
* etc/themes/tango-dark-theme.el (tango-dark): Add properties.
* etc/themes/tango-theme.el (tango): Add properties.
* etc/themes/tsdh-dark-theme.el (tsdh-dark): Add properties.
* etc/themes/tsdh-light-theme.el (tsdh-light): Add properties.
* etc/themes/wheatgrass-theme.el (wheatgrass): Add properties.
* etc/themes/whiteboard-theme.el (whiteboard): Add properties.
* etc/themes/wombat-theme.el (wombat): Add properties.
* etc/themes/modus-operandi-theme.el: Add properties.
* etc/themes/modus-vivendi-theme.el: Add properties.
* etc/themes/leuven-dark-theme.el (leuven-dark): Add properties.
* etc/themes/leuven-theme.el (leuven): Add properties.
* lisp/custom.el (deftheme): Allow for optional arguments to set the
property list.
(custom-declare-theme): Accept the same optional arguments as 'deftheme'.
(theme-list-variants): Add new function.
(theme-choose-variant): Add new command for switching between members
of a theme family.
(toggle-theme): Add an alias for 'theme-choose-variant'.
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Handle 'defcustom's by extracting the properties.  (Bug#57639)
2022-10-15 17:22:48 +02:00
Lars Ingebrigtsen
9fb0aaa1ce Make loaddefs-generate more resilient
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't bug
out when there's an existing loaddefs file that's not formatted
properly (bug#58280).
2022-10-04 13:04:16 +02:00
Lars Ingebrigtsen
212e94c3f4 Make loaddefs-gen register parent :groups from defcustom
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--make-autoload): Also register parent :groups from
`defgroup' entries (bug#58015).
2022-09-23 17:58:41 +02:00
Eli Zaretskii
48d8543ff1 ; Fix doc string of 'loaddefs-generate'
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Doc fix.
(Bug#57815)
2022-09-15 09:16:41 +03:00
Eli Zaretskii
52a3ba102c Revert "; Fix doc string of 'loaddefs-generate'"
This reverts commit 5fe9a1a85a.
It included unrelated changes.
2022-09-15 09:14:59 +03:00
Eli Zaretskii
5fe9a1a85a ; Fix doc string of 'loaddefs-generate'
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Doc fix.
(Bug#57815)
2022-09-15 09:12:13 +03:00
Lars Ingebrigtsen
6c11214dc1 Inhibit nativecomp of loaddefs files
* lisp/emacs-lisp/generate-lisp-file.el
(generate-lisp-file-trailer): Allow inhibiting nativecomp.

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
Inhibit native-comp, because it's not very useful for loaddefs files.
2022-09-03 14:23:26 +02:00
Lars Ingebrigtsen
74e830768d Make GEN message from loaddefs-generate nicer
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Shorten the
informational GEN file relative to the stated directory
(bug#57265).  This makes the message nicer for ELPA packages.
2022-08-18 15:12:55 +02:00
Lars Ingebrigtsen
ead4b914ca Fix up the exclusion logic in loaddefs-generate
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Allow
excluding files completely (bug#57144).
2022-08-15 08:29:28 +02:00
Lars Ingebrigtsen
d33a6b9069 Tweak autoloads of defsubsts containing spaces/control chars
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Escape control chars in bodies so that we don't end up with
trailing spaces if we're autoloading a defsubst containing
"\\`[ \t\n\r]*\\'".
2022-08-15 08:24:29 +02:00
Lars Ingebrigtsen
2bbb007e16 Allow EXCLUDED-FILES in loaddefs-generate to be relative
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Allow the
excluded files to be relative (bug#57144).
2022-08-13 14:07:41 +02:00
Lars Ingebrigtsen
316d3111a3 Don't update loaddefs.el timestamps uselessly in loaddefs-generate
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't
re-write the loaddefs.el file when there's no reason to.
2022-08-12 20:22:26 +02:00
Eli Zaretskii
a99ea4b761 ; Fix documentation of 'loaddefs-generate' (bug#57144)
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Doc fix.
2022-08-12 09:49:35 +03:00
Lars Ingebrigtsen
ee201bc77b Make the loaddefs.el file slightly shorter
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--shorten-autoload): New function.
(loaddefs-generate--make-autoload): Use it to drop optional nil
values from the `autoloads' forms.  This makes the loaddefs.el
file about 12K shorter.
2022-08-09 16:36:41 +02:00
Stefan Kangas
ea6c2e9295 Allow newline after def*-form for definition-prefix
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add another semantic function.
(loaddefs-generate--compute-prefixes): Allow newline after the "(def*"
form.  (Bug#57000)
2022-08-05 20:17:23 +02:00
Stefan Kangas
d73a104dd3 Be more lax when picking up prefixes for loaddefs
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--compute-prefixes): Allow tabs and spaces before
symbol name, so that "(defvar\tfoo-bar nil)" is properly picked up.
Before this change, such a definition would be wrongly picked up as
the symbol "nil".
2022-08-04 23:21:03 +02:00
Lars Ingebrigtsen
f038695085 Minor cleanups in autoload.el/loaddefs-gen.el
* lisp/subr.el (package--builtin-versions): Adjust comments.

* lisp/emacs-lisp/loaddefs-gen.el (no-update-autoloads): Moved
here from autoload.el.
* lisp/emacs-lisp/loaddefs-gen.el: Removed now that it's no longer
used.

* lisp/emacs-lisp/package.el
(package-autoload-ensure-default-file): Don't warn about
soon-to-be obsolete functon.
2022-08-04 16:41:39 +02:00
Lars Ingebrigtsen
9129808496 Add define-keymap to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Ignore `define-keymap', too (bug#56973).
2022-08-04 15:27:47 +02:00
Stefan Kangas
385511f1a2 Add define-key-after to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-key-after and define-ibuffer-sorter.
2022-08-04 15:03:42 +02:00
Stefan Kangas
e2eee46247 Add more autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-ibuffer-column.
2022-08-04 14:36:34 +02:00
Lars Ingebrigtsen
459b1b8fbc Add more autoload-ignored-definitions defs
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add more definition forms that shouldn't trigger prefix
registration (bug#56970).
2022-08-04 11:27:03 +02:00
Lars Ingebrigtsen
4ebdc558f6 Adjust loaddefs-generate--print-form comments
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Adjust doc string and comments now that make-docfile doesn't scan
this.
2022-08-04 07:44:53 +02:00
Lars Ingebrigtsen
261d6afd6e Byte-compile the in-tree loaddefs.el files
* lisp/Makefile.in (all): Add "autoloads", which now otherwise
won't be done.
($(lisp)/loaddefs.el): Remove this target, since it's always done,
and would then trigger a re-compilation of loaddefs.elc.

* lisp/loadup.el: Load loaddefs.elc (if it exists).

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't
include no-byte-compile cookies in the Emacs build.

* src/Makefile.in ($(pdmp)): Depend on loaddefs.elc to ensure that
it's built by this point.
($(etc)/DOC): Don't scan loaddefs.el for doc strings, since they
are now picked up from the .elc file (bug#53024).
2022-08-03 14:22:16 +02:00
Lars Ingebrigtsen
6ef058cec2 Allow specifying that loaddefs files shouldn't not be compiled
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
Allow specifying that we shouldn't include a no-compile cookie
(bug#53024).
2022-07-31 19:57:55 +02:00
Lars Ingebrigtsen
bd7a15ef78 Remove loaddefs debug code
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--rubric):
Remove code inadvertantly checked in.
2022-07-31 11:39:00 +02:00
Lars Ingebrigtsen
5276519255 Fix cl byte-compile warning in cl-loaddefs.el
* lisp/emacs-lisp/cl-macs.el (cl--optimize)
(cl-struct-sequence-type, cl-struct-slot-offset): Autoload since
they are referred to by code in cl-loaddefs.el.
2022-07-31 11:39:00 +02:00
Lars Ingebrigtsen
49e41991b2 Allow ;;;###autoloading transient-define-prefix
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--make-autoload): Allow ;;;###autoloading
transient-define-prefix (bug#48694).

* lisp/transient.el (transient-define-prefix): Autoload.
2022-07-16 12:40:12 +02:00
Stefan Kangas
41e612cfd6 ; Fix typos 2022-07-14 12:52:32 +02:00
Lars Ingebrigtsen
2736e61274 Fix define-obsolete-function-alias formatting in loaddefs-gen.el
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Fix formatting of define-obsolete-function-alias statements
(bug#56292).
2022-06-30 21:33:46 +02:00