summaryrefslogtreecommitdiff
path: root/doc/lispref/lists.texi
diff options
context:
space:
mode:
authorTino Calancha <tino.calancha@gmail.com>2017-07-17 21:30:50 +0900
committerTino Calancha <tino.calancha@gmail.com>2017-07-17 21:30:50 +0900
commit76e1f7d00fbff7bf8183ba85db2f67a11aa2d5ce (patch)
treeac3d9fbe5fa46dbad70b527355e2f1ba997f36f8 /doc/lispref/lists.texi
parent4968aa685b85840d79258ff6b61ba2bcfb99e2bc (diff)
downloademacs-76e1f7d00fbff7bf8183ba85db2f67a11aa2d5ce.tar.gz
emacs-76e1f7d00fbff7bf8183ba85db2f67a11aa2d5ce.tar.bz2
emacs-76e1f7d00fbff7bf8183ba85db2f67a11aa2d5ce.zip
alist-get: Add optional arg TESTFN
If TESTFN is non-nil, then it is the predicate to lookup the alist. Otherwise, use 'eq' (Bug#27584). * lisp/subr.el (alist-get): Add optional arg FULL. * lisp/emacs-lisp/map.el (map-elt, map-put): Add optional arg TESTFN. * lisp/emacs-lisp/gv.el (alist-get): Update expander. * doc/lispref/lists.texi (Association Lists): Update manual. * etc/NEWS: Announce the changes. * test/lisp/emacs-lisp/map-tests.el (test-map-put-testfn-alist) (test-map-elt-testfn): New tests.
Diffstat (limited to 'doc/lispref/lists.texi')
-rw-r--r--doc/lispref/lists.texi24
1 files changed, 14 insertions, 10 deletions
diff --git a/doc/lispref/lists.texi b/doc/lispref/lists.texi
index 966d8f18b17..0c993806824 100644
--- a/doc/lispref/lists.texi
+++ b/doc/lispref/lists.texi
@@ -1589,16 +1589,20 @@ keys may not be symbols:
@end smallexample
@end defun
-@defun alist-get key alist &optional default remove
-This function is like @code{assq}, but instead of returning the entire
-association for @var{key} in @var{alist},
-@w{@code{(@var{key} . @var{value})}}, it returns just the @var{value}.
-If @var{key} is not found in @var{alist}, it returns @var{default}.
-
-This is a generalized variable (@pxref{Generalized Variables}) that
-can be used to change a value with @code{setf}. When using it to set
-a value, optional argument @var{remove} non-@code{nil} means to remove
-@var{key} from @var{alist} if the new value is @code{eql} to @var{default}.
+@defun alist-get key alist &optional default remove testfn
+This function is similar to @code{assq}. It finds the first
+association @w{@code{(@var{key} . @var{value})}} by comparing
+@var{key} with @var{alist} elements, and, if found, returns the
+@var{value} of that association. If no association is found, the
+function returns @var{default}. Comparison of @var{key} against
+@var{alist} elements uses the function specified by @var{testfn},
+defaulting to @code{eq}.
+
+This is a generalized variable (@pxref{Generalized Variables})
+that can be used to change a value with @code{setf}. When
+using it to set a value, optional argument @var{remove} non-@code{nil}
+means to remove @var{key}'s association from @var{alist} if the new
+value is @code{eql} to @var{default}.
@end defun
@defun rassq value alist