[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master d1bc95b3a4: Improve completion in `C-h R'
From: |
Lars Ingebrigtsen |
Subject: |
master d1bc95b3a4: Improve completion in `C-h R' |
Date: |
Sat, 16 Apr 2022 10:36:10 -0400 (EDT) |
branch: master
commit d1bc95b3a4ab4ddfcb8c97104e1a2dbb306ea515
Author: Lars Ingebrigtsen <larsi@gnus.org>
Commit: Lars Ingebrigtsen <larsi@gnus.org>
Improve completion in `C-h R'
* lisp/info.el (info-display-manual): Use it (bug#54961).
(info--filter-manual-names): Filter away duplicates and irrelevant
files.
---
lisp/info.el | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/lisp/info.el b/lisp/info.el
index db95574bf7..ac4169b550 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5440,7 +5440,8 @@ completion alternatives to currently visited manuals."
(progn
(info-initialize)
(completing-read "Manual name: "
- (info--manual-names current-prefix-arg)
+ (info--filter-manual-names
+ (info--manual-names current-prefix-arg))
nil t))))
(let ((blist (buffer-list))
(manual-re (concat "\\(/\\|\\`\\)" manual "\\(\\.\\|\\'\\)"))
@@ -5468,6 +5469,22 @@ completion alternatives to currently visited manuals."
(info (Info-find-file manual)
(generate-new-buffer-name "*info*")))))
+(defun info--filter-manual-names (names)
+ (cl-flet ((strip (name)
+ (replace-regexp-in-string "\\([-.]info\\)?\\(\\.gz\\)?\\'"
+ "" name)))
+ (seq-uniq (sort (seq-filter
+ (lambda (name)
+ (and (not (string-match-p "info-[0-9]" name))
+ (not (member name '("./" "../" "ChangeLog"
+ "NEWS" "README")))))
+ names)
+ ;; We prefer the shorter names ("foo" over "foo.gz").
+ (lambda (s1 s2)
+ (< (length s1) (length s2))))
+ (lambda (s1 s2)
+ (equal (strip s1) (strip s2))))))
+
(defun info--manual-names (visited-only)
(let (names)
(dolist (buffer (buffer-list))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master d1bc95b3a4: Improve completion in `C-h R',
Lars Ingebrigtsen <=