aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/info.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/info.el')
-rw-r--r--lisp/info.el83
1 files changed, 39 insertions, 44 deletions
diff --git a/lisp/info.el b/lisp/info.el
index 65b9492e35..4fa9503b14 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -3372,7 +3372,6 @@ Build a menu of the possible matches."
filename)
(defvar finder-known-keywords)
-(defvar finder-package-info)
(declare-function find-library-name "find-func" (library))
(declare-function finder-unknown-keywords "finder" ())
(declare-function lm-commentary "lisp-mnt" (&optional file))
@@ -3388,15 +3387,14 @@ Build a menu of the possible matches."
(insert "Finder Keywords\n")
(insert "***************\n\n")
(insert "* Menu:\n\n")
- (mapc
- (lambda (assoc)
- (let ((keyword (car assoc)))
- (insert (format "* %-14s %s.\n"
- (concat (symbol-name keyword) "::")
- (cdr assoc)))))
- (append '((all . "All package info")
- (unknown . "unknown keywords"))
- finder-known-keywords)))
+ (dolist (assoc (append '((all . "All package info")
+ (unknown . "unknown keywords"))
+ finder-known-keywords))
+ (let ((keyword (car assoc)))
+ (insert (format "* %s %s.\n"
+ (concat (symbol-name keyword) ": "
+ "kw:" (symbol-name keyword) ".")
+ (cdr assoc))))))
((equal nodename "unknown")
;; Display unknown keywords
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
@@ -3416,17 +3414,36 @@ Build a menu of the possible matches."
Info-finder-file nodename))
(insert "Finder Package Info\n")
(insert "*******************\n\n")
- (mapc (lambda (package)
- (insert (format "%s - %s\n"
- (format "*Note %s::" (nth 0 package))
- (nth 1 package)))
- (insert "Keywords: "
- (mapconcat (lambda (keyword)
- (format "*Note %s::" (symbol-name keyword)))
- (nth 2 package) ", ")
- "\n\n"))
- finder-package-info))
- ((string-match-p "\\.el\\'" nodename)
+ (dolist (package package-alist)
+ (insert (format "%s - %s\n"
+ (format "*Note %s::" (nth 0 package))
+ (nth 1 package)))))
+ ((string-match "\\`kw:" nodename)
+ (setq nodename (substring nodename (match-end 0)))
+ ;; Display packages that match the keyword
+ ;; or the list of keywords separated by comma.
+ (insert (format "\n\^_\nFile: %s, Node: kw:%s, Up: Top\n\n"
+ Info-finder-file nodename))
+ (insert "Finder Packages\n")
+ (insert "***************\n\n")
+ (insert
+ "The following packages match the keyword `" nodename "':\n\n")
+ (insert "* Menu:\n\n")
+ (let ((keywords
+ (mapcar 'intern (if (string-match-p "," nodename)
+ (split-string nodename ",[ \t\n]*" t)
+ (list nodename))))
+ hits desc)
+ (dolist (kw keywords)
+ (push (copy-tree (gethash kw finder-keywords-hash)) hits))
+ (setq hits (delete-dups (apply 'append hits)))
+ (dolist (package hits)
+ (setq desc (cdr-safe (assq package package-alist)))
+ (when (vectorp desc)
+ (insert (format "* %-16s %s.\n"
+ (concat (symbol-name package) "::")
+ (aref desc 2)))))))
+ (t
;; Display commentary section
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
Info-finder-file nodename))
@@ -3447,29 +3464,7 @@ Build a menu of the possible matches."
(goto-char (point-min))
(while (re-search-forward "^;+ ?" nil t)
(replace-match "" nil nil))
- (buffer-string))))))
- (t
- ;; Display packages that match the keyword
- ;; or the list of keywords separated by comma.
- (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
- Info-finder-file nodename))
- (insert "Finder Packages\n")
- (insert "***************\n\n")
- (insert
- "The following packages match the keyword `" nodename "':\n\n")
- (insert "* Menu:\n\n")
- (let ((keywords
- (mapcar 'intern (if (string-match-p "," nodename)
- (split-string nodename ",[ \t\n]*" t)
- (list nodename)))))
- (mapc
- (lambda (package)
- (unless (memq nil (mapcar (lambda (k) (memq k (nth 2 package)))
- keywords))
- (insert (format "* %-16s %s.\n"
- (concat (nth 0 package) "::")
- (nth 1 package)))))
- finder-package-info)))))
+ (buffer-string))))))))
;;;###autoload
(defun info-finder (&optional keywords)