Mercurial > emacs
diff lisp/info.el @ 16609:21c4e4e580a9
(Info-follow-reference): Add each cross-reference to
completions list just once, case-insensitively.
author | Karl Heuer <kwzh@gnu.org> |
---|---|
date | Thu, 05 Dec 1996 19:53:00 +0000 |
parents | a0cfcb9f8033 |
children | ee85ec2c4203 |
line wrap: on
line diff
--- a/lisp/info.el Thu Dec 05 19:52:46 1996 +0000 +++ b/lisp/info.el Thu Dec 05 19:53:00 1996 +0000 @@ -894,9 +894,18 @@ ;; Record as a completion and perhaps as default. (if (eq default t) (setq default str)) (if (eq alt-default t) (setq alt-default str)) - (setq completions - (cons (cons str nil) - completions)))) + ;; Don't add this string if it's a duplicate. + ;; We use a loop instead of "(assoc str completions)" because + ;; we want to do a case-insensitive compare. + (let ((tail completions) + (tem (downcase str))) + (while (and tail + (not (string-equal tem (downcase (car (car tail)))))) + (setq tail (cdr tail))) + (or tail + (setq completions + (cons (cons str nil) + completions)))))) ;; If no good default was found, try an alternate. (or default (setq default alt-default))