]> git.eshelyaron.com Git - emacs.git/commitdiff
Improve documentation of 'alist-get' (Bug#34708)
authorMichael Heerdegen <michael_heerdegen@web.de>
Tue, 12 Mar 2019 14:13:55 +0000 (15:13 +0100)
committerMichael Heerdegen <michael_heerdegen@web.de>
Wed, 27 Mar 2019 18:40:49 +0000 (19:40 +0100)
* lisp/subr.el (alist-get): Enhance part of docstring explaining usage
in place expressions.

lisp/subr.el

index 6dc53cd720155cc280f5606b52b788289e43e115..f1a1dddd81c1f634cba2eda179f63e50f742f737 100644 (file)
@@ -756,9 +756,31 @@ Elements of ALIST that are not conses are ignored."
 If KEY is not found in ALIST, return DEFAULT.
 Use TESTFN to lookup in the alist if non-nil.  Otherwise, use `assq'.
 
-This is a generalized variable suitable for use with `setf'.
+You can use `alist-get' in PLACE expressions.  This will modify
+an existing association (more precisely, the first one if
+multiple exist), or add a new element to the beginning of ALIST,
+destructively modifying the list stored in ALIST.
+
+Example:
+
+   (setq foo '((a . 0)))
+   (setf (alist-get 'a foo) 1
+         (alist-get 'b foo) 2)
+
+   foo => ((b . 2) (a . 1))
+
+
 When using it to set a value, optional argument REMOVE non-nil
-means to remove KEY from ALIST if the new value is `eql' to DEFAULT."
+means to remove KEY from ALIST if the new value is `eql' to
+DEFAULT (more precisely the first found association will be
+deleted from the alist).
+
+Example:
+
+  (setq foo '((a . 1) (b . 2)))
+  (setf (alist-get 'b foo nil 'remove) nil)
+
+  foo => ((a . 1))"
   (ignore remove) ;;Silence byte-compiler.
   (let ((x (if (not testfn)
                (assq key alist)