Function: imenu--in-alist
imenu--in-alist is a byte-compiled function defined in imenu.el.gz.
Signature
(imenu--in-alist STR ALIST)
Documentation
Check whether the string STR is contained in multi-level ALIST.
Source Code
;; Defined in /usr/src/emacs/lisp/imenu.el.gz
(defun imenu--in-alist (str alist)
"Check whether the string STR is contained in multi-level ALIST."
(let (elt head tail res)
(setq res nil)
(while alist
(setq elt (car alist)
tail (cdr elt)
alist (cdr alist)
head (car elt))
;; A nested ALIST element looks like
;; (INDEX-NAME (INDEX-NAME . INDEX-POSITION) ...)
;; while a bottom-level element looks like
;; (INDEX-NAME . INDEX-POSITION)
;; or
;; (INDEX-NAME INDEX-POSITION FUNCTION ARGUMENTS...)
;; We are only interested in the bottom-level elements, so we need to
;; recurse if TAIL is a nested ALIST.
(cond ((imenu--subalist-p elt)
(if (setq res (imenu--in-alist str tail))
(setq alist nil)))
((if imenu-name-lookup-function
(funcall imenu-name-lookup-function str head)
(string= str head))
(setq alist nil res elt))))
res))