diff options
| author | Karl Heuer | 1996-12-05 19:53:00 +0000 |
|---|---|---|
| committer | Karl Heuer | 1996-12-05 19:53:00 +0000 |
| commit | ec6d29af5e52b4e0b1c4962cd77685a78c26e84f (patch) | |
| tree | 50aaab116e81fcf39599962ea5ba3b67fb73da71 | |
| parent | fc21ed035b436427dff35a6b3417eaf7842d0cb2 (diff) | |
| download | emacs-ec6d29af5e52b4e0b1c4962cd77685a78c26e84f.tar.gz emacs-ec6d29af5e52b4e0b1c4962cd77685a78c26e84f.zip | |
(Info-follow-reference): Add each cross-reference to
completions list just once, case-insensitively.
| -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." | |||
| 894 | ;; Record as a completion and perhaps as default. | 894 | ;; Record as a completion and perhaps as default. |
| 895 | (if (eq default t) (setq default str)) | 895 | (if (eq default t) (setq default str)) |
| 896 | (if (eq alt-default t) (setq alt-default str)) | 896 | (if (eq alt-default t) (setq alt-default str)) |
| 897 | (setq completions | 897 | ;; Don't add this string if it's a duplicate. |
| 898 | (cons (cons str nil) | 898 | ;; We use a loop instead of "(assoc str completions)" because |
| 899 | completions)))) | 899 | ;; we want to do a case-insensitive compare. |
| 900 | (let ((tail completions) | ||
| 901 | (tem (downcase str))) | ||
| 902 | (while (and tail | ||
| 903 | (not (string-equal tem (downcase (car (car tail)))))) | ||
| 904 | (setq tail (cdr tail))) | ||
| 905 | (or tail | ||
| 906 | (setq completions | ||
| 907 | (cons (cons str nil) | ||
| 908 | completions)))))) | ||
| 900 | ;; If no good default was found, try an alternate. | 909 | ;; If no good default was found, try an alternate. |
| 901 | (or default | 910 | (or default |
| 902 | (setq default alt-default)) | 911 | (setq default alt-default)) |