diff options
author | Karl Heuer <kwzh@gnu.org> | 1996-12-05 19:53:00 +0000 |
---|---|---|
committer | Karl Heuer <kwzh@gnu.org> | 1996-12-05 19:53:00 +0000 |
commit | ec6d29af5e52b4e0b1c4962cd77685a78c26e84f (patch) | |
tree | 50aaab116e81fcf39599962ea5ba3b67fb73da71 /lisp/info.el | |
parent | fc21ed035b436427dff35a6b3417eaf7842d0cb2 (diff) | |
download | emacs-ec6d29af5e52b4e0b1c4962cd77685a78c26e84f.tar.gz |
(Info-follow-reference): Add each cross-reference to
completions list just once, case-insensitively.
Diffstat (limited to 'lisp/info.el')
-rw-r--r-- | lisp/info.el | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/lisp/info.el b/lisp/info.el index 9e001469073..c3df1a843be 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -894,9 +894,18 @@ NAME may be an abbreviation of the reference name." ;; 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)) |