1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-19 04:10:18 -08:00

; Improve documentation of 'add-to-list'

* doc/lispref/lists.texi (List Variables):
* lisp/subr.el (add-to-list): Add/clarify caveats of using
'add-to-list'.
This commit is contained in:
Eli Zaretskii 2024-08-09 08:45:30 +03:00
parent bd6dfb97ff
commit a0406f7c12
2 changed files with 12 additions and 3 deletions

View file

@ -840,6 +840,13 @@ The argument @var{symbol} is not implicitly quoted; @code{add-to-list}
is an ordinary function, like @code{set} and unlike @code{setq}. Quote is an ordinary function, like @code{set} and unlike @code{setq}. Quote
the argument yourself if that is what you want. the argument yourself if that is what you want.
This function is for adding elements to configuration variables such as
@code{load-path} (@pxref{Library Search}), @code{image-load-path}
(@pxref{Defining Images}), etc. Its code includes quite a few special
checks for these uses, and emits warnings in support of them. For this
reason, we recommend against using it in Lisp programs for constructing
arbitrary lists; use @code{push} instead. @xref{List Variables}.
Do not use this function when @var{symbol} refers to a lexical Do not use this function when @var{symbol} refers to a lexical
variable. variable.
@end defun @end defun

View file

@ -2386,9 +2386,11 @@ LIST-VAR should not refer to a lexical variable.
The return value is the new value of LIST-VAR. The return value is the new value of LIST-VAR.
This is handy to add some elements to configuration variables, This is meant to be used for adding elements to configuration
but please do not abuse it in Elisp code, where you are usually variables, such as adding a directory to a path variable
better off using `push' or `cl-pushnew'. like `load-path', but please do not abuse it to construct
arbitrary lists in Elisp code, where using `push' or `cl-pushnew'
will get you more efficient code.
If you want to use `add-to-list' on a variable that is not If you want to use `add-to-list' on a variable that is not
defined until a certain package is loaded, you should put the defined until a certain package is loaded, you should put the