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))