]> git.eshelyaron.com Git - emacs.git/commitdiff
Lispref: Explain avoiding lambdas on hooks.
authorRichard Stallman <rms@gnu.org>
Thu, 6 Feb 2020 23:28:49 +0000 (18:28 -0500)
committerRichard Stallman <rms@gnu.org>
Thu, 6 Feb 2020 23:28:49 +0000 (18:28 -0500)
(lispref/modes.texi): Explain avoiding lambdas on hooks.

doc/lispref/modes.texi

index 7354eb1b9f8794a95e9fce39b70683d9a1030ff0..b52871ef70b6afe47f92b51cf3fc2b633f7562b1 100644 (file)
@@ -135,13 +135,26 @@ non-@code{nil} value, it returns that value; otherwise it returns
 @node Setting Hooks
 @subsection Setting Hooks
 
-  Here's an example that uses a mode hook to turn on Auto Fill mode when
-in Lisp Interaction mode:
+  Here's an example that adds a funtion to a mode hook to turn
+on Auto Fill mode when in Lisp Interaction mode:
 
 @example
 (add-hook 'lisp-interaction-mode-hook 'auto-fill-mode)
 @end example
 
+  The value of a hook variable should be a list of functions.  You can
+manipulate that list using the normal Lisp facilities, but the modular
+way is to use the functions @code{add-hook} and @code{remove-hook},
+defined below.  They take care to handle some unusual situations and
+avoid problems.
+
+  It works to put a @code{lambda}-expression function on a hook, but
+we recommend avoiding this because it can lead to confusion.  If you
+add the same @code{lambda}-expression a second time but write it
+slightly differently, you will get two equivalent but distinct
+functions on the hook.  If you then remove one of them, the other will
+still be on it.
+
 @defun add-hook hook function &optional depth local
 This function is the handy way to add function @var{function} to hook
 variable @var{hook}.  You can use it for abnormal hooks as well as for