1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-02-05 23:21:22 -08:00
emacs/doc/lispref
JD Smith 7486e5c368 Implement new autoload macro expansion declare form
Currently, a hard-coded set of macros is automatically expanded
during generation of autoloads.  To allow user macros to request
such expansion, this implements a new declare form
`autoload-macro' (Bug#78995), with supported value `expand'.
For example, macros which wrap `define-minor-mode', can declare
`(autoload-macro expand)' to request that ;;;###autoload-adorned
calls to the macro are expanded during generation, such that an
autoload for the resulting function is created.

* lisp/emacs-lisp/byte-run.el (byte-run--set-autoload-macro):
Handle autoload-macro declare forms.
(macro-declarations-alist) Add handler for 'autoload-macro
declare forms.
(defmacro, defun):
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric, cl-defun)
(cl-iter-defun, cl-defmacro, cl-defstruct):
* lisp/emacs-lisp/easy-mmode.el
(define-minor-mode, define-globalized-minor-mode, iter-defun):
* lisp/emacs-lisp/inline.el (define-inline):
* lisp/emacs-lisp/pcase.el (pcase-defmacro):
Declare (autoload-macro expand) to request expansion of the
macro during autoload generation.

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--make-autoload):
Handle the `autoload-macro=expand' property for macros.  Load
the ;;;###autoload-containing file if an unknown symbol is
encountered in the car of the following form, to give packages a
chance to define their macros and request expansion.  Factor
list of special function-defining macros out as a constant
variable: `loaddefs--defining-macros'.

* doc/lispref/functions.texi (Declare Form):
* doc/lispref/loading.texi (Autoload): Document `autoload-macro'.
2025-08-10 18:14:23 -04:00
..
abbrevs.texi
anti.texi
back.texi
backups.texi Rename variables *-in-progress-p to *-in-progress 2025-08-09 14:21:23 +02:00
book-spine.texi
buffers.texi Move documentation of this-command buffer display condition entry 2025-05-02 12:49:35 +08:00
ChangeLog.1
commands.texi Merge from origin/emacs-30 2025-03-24 10:41:45 +08:00
compile.texi ; Grammar fixes for "native-compiled" 2025-02-28 20:20:55 +01:00
control.texi Add static-when, static-unless like static-if 2025-03-07 22:22:30 -08:00
customize.texi
debugging.texi
display.texi Update documentation and NEWS with SVG changes (bug#77841) 2025-07-10 17:54:33 +01:00
doclicense.texi
edebug.texi
elisp.texi ; Fix documentation of last change (bug#78844) 2025-07-12 10:11:09 +03:00
elisp_type_hierarchy.jpg
elisp_type_hierarchy.txt
errors.texi
eval.texi
files.texi Merge from origin/emacs-30 2025-08-02 11:13:41 -04:00
frames.texi Add frame parameter which allows border transparency 2025-07-26 18:02:18 +03:00
functions.texi Implement new autoload macro expansion declare form 2025-08-10 18:14:23 -04:00
gpl.texi
hash.texi New function 'hash-table-contains-p' 2025-03-29 14:59:36 +01:00
help.texi
hooks.texi
index.texi
internals.texi Merge from origin/emacs-30 2025-08-02 11:13:41 -04:00
intro.texi
keymaps.texi Merge from savannah/emacs-30 2025-03-16 20:14:48 +08:00
lay-flat.texi
lists.texi
loading.texi Implement new autoload macro expansion declare form 2025-08-10 18:14:23 -04:00
macros.texi
Makefile.in
maps.texi
markers.texi
minibuf.texi ; Fix last change. 2025-06-08 21:58:18 +02:00
modes.texi Merge from origin/emacs-30 2025-06-14 11:23:54 -04:00
nonascii.texi Fix the values and documentation of 'printable-chars' table 2025-02-28 16:22:30 +02:00
numbers.texi Merge from origin/emacs-30 2025-03-01 09:59:08 -05:00
objects.texi ; Improve type specifier documentation 2025-03-25 23:44:01 +01:00
os.texi Load site-start.el before early-init.el 2025-06-24 17:33:39 +01:00
package.texi ; Fix documentation of last change (bug#78844) 2025-07-12 10:11:09 +03:00
parsing.texi ; * doc/lispref/parsing.texi (Using Parser): Fix wording. 2025-07-09 15:43:00 +03:00
peg.texi peg.texi: Fix bug#76555 even a bit more 2025-03-27 08:59:33 -04:00
positions.texi
processes.texi Add function exec-suffixes 2025-07-22 17:47:38 +02:00
README
records.texi
searching.texi Merge from origin/emacs-30 2025-05-31 08:29:51 -04:00
sequences.texi
spellfile
streams.texi Improve Vprint_variable_mapping 2025-08-09 15:34:51 +03:00
strings.texi
symbols.texi
syntax.texi
text.texi Merge from origin/emacs-30 2025-08-02 11:13:41 -04:00
threads.texi Allow thread's buffer to be killed, by default 2025-08-09 22:40:07 +03:00
tips.texi Merge from origin/emacs-30 2025-05-10 07:40:30 -04:00
two-volume-cross-refs.txt
two-volume.make
variables.texi Merge from origin/emacs-30 2025-05-17 06:52:01 -04:00
windows.texi Merge from origin/emacs-30 2025-07-26 06:58:12 -04:00

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Copyright (C) 2001-2025 Free Software Foundation, Inc.  -*- outline -*-
See the end of the file for license conditions.


README for the Emacs Lisp Reference Manual.

* This directory contains the texinfo source files for the Emacs Lisp
Reference Manual.

* Report bugs in the Lisp Manual (or in Emacs) using M-x report-emacs-bug.
To ask questions, use the help-gnu-emacs mailing list.

* The Emacs Lisp Reference Manual is quite large.  It totals around
1100 pages in smallbook format; the info files total around 3.0 megabytes.

* You can format this manual for Info, for printing hardcopy using TeX,
or for HTML.

* You can buy nicely printed copies from the Free Software Foundation.
Buying a manual from the Free Software Foundation helps support our GNU
development work.  See <https://shop.fsf.org/>.
(At time of writing, this manual is out of print.)

* The master file for formatting this manual for Tex is called 'elisp.texi'.
It contains @include commands to include all the chapters that make up
the manual.

* This distribution contains a Makefile that you can use with GNU Make.

** To make an Info file, you need to install Texinfo, then run 'make info'.

** Use 'make elisp.pdf' or 'make elisp.html' to create PDF or HTML versions.


This file is part of GNU Emacs.

GNU Emacs is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.