I�m not sure but IMHO the attached code is wrong in one place:
Look at the line with the *** I think this must be (cdr o) instead of
(cdr pair).
What do you think?
Klaus
(defun jde-which-function-rec (o name min)
(cond
((null o)
(list name min))
((stringp o)
(list (concat name "." o ) min))
((listp o)
(if (and (cdr o)
(number-or-marker-p (cdr o)))
;;*** Klaus (if (and (> (point) (cdr pair))
(if (and (> (point) (cdr o))
(or (null min) (< (- (point) (cdr o)) min)))
(list (car o) (- (point) (cdr o))))
(progn
(let ((pair (car-safe o))