changeset 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 e2858bcbed43
children 45d75ca8dc40
files lisp/info.el
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
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))