mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2025-01-29 19:48:19 +00:00
* finder.el: Remove TODO tasks.
* info.el (Info-finder-find-node): Add node "all" with all package info. Handle a list of multiple keywords separated by comma. (info-finder): In interactive use with a prefix argument, use `completing-read-multiple' to read a list of keywords separated by comma.
This commit is contained in:
parent
814fb70858
commit
75a3ff20ab
@ -1,3 +1,14 @@
|
||||
2010-03-23 Juri Linkov <juri@jurta.org>
|
||||
|
||||
* finder.el: Remove TODO tasks.
|
||||
|
||||
* info.el (Info-finder-find-node): Add node "all"
|
||||
with all package info. Handle a list of multiple keywords
|
||||
separated by comma.
|
||||
(info-finder): In interactive use with a prefix argument,
|
||||
use `completing-read-multiple' to read a list of keywords
|
||||
separated by comma.
|
||||
|
||||
2010-03-23 Stefan Monnier <monnier@iro.umontreal.ca>
|
||||
|
||||
Add a new completion style `substring'.
|
||||
|
@ -27,12 +27,6 @@
|
||||
|
||||
;; This mode uses the Keywords library header to provide code-finding
|
||||
;; services by keyword.
|
||||
;;
|
||||
;; Things to do:
|
||||
;; 1. Support multiple keywords per search. This could be extremely hairy;
|
||||
;; there doesn't seem to be any way to get completing-read to exit on
|
||||
;; an EOL with no substring pending, which is what we'd want to end the loop.
|
||||
;; 2. Search by string in synopsis line?
|
||||
|
||||
;;; Code:
|
||||
|
||||
|
56
lisp/info.el
56
lisp/info.el
@ -3362,7 +3362,8 @@ Build a menu of the possible matches."
|
||||
(insert (format "* %-14s %s.\n"
|
||||
(concat (symbol-name keyword) "::")
|
||||
(cdr assoc)))))
|
||||
(cons '(unknown . "unknown keywords")
|
||||
(append '((all . "All package info")
|
||||
(unknown . "unknown keywords"))
|
||||
finder-known-keywords)))
|
||||
((equal nodename "unknown")
|
||||
;; Display unknown keywords
|
||||
@ -3377,6 +3378,22 @@ Build a menu of the possible matches."
|
||||
(concat (symbol-name (car assoc)) "::")
|
||||
(cdr assoc))))
|
||||
(finder-unknown-keywords)))
|
||||
((equal nodename "all")
|
||||
;; Display all package info.
|
||||
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
|
||||
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)
|
||||
;; Display commentary section
|
||||
(insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n"
|
||||
@ -3401,6 +3418,7 @@ Build a menu of the possible matches."
|
||||
(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")
|
||||
@ -3408,21 +3426,39 @@ Build a menu of the possible matches."
|
||||
(insert
|
||||
"The following packages match the keyword `" nodename "':\n\n")
|
||||
(insert "* Menu:\n\n")
|
||||
(let ((id (intern nodename)))
|
||||
(let ((keywords
|
||||
(mapcar 'intern (if (string-match-p "," nodename)
|
||||
(split-string nodename ",[ \t\n]*" t)
|
||||
(list nodename)))))
|
||||
(mapc
|
||||
(lambda (x)
|
||||
(when (memq id (cadr (cdr x)))
|
||||
(lambda (package)
|
||||
(unless (memq nil (mapcar (lambda (k) (memq k (nth 2 package)))
|
||||
keywords))
|
||||
(insert (format "* %-16s %s.\n"
|
||||
(concat (car x) "::")
|
||||
(cadr x)))))
|
||||
(concat (nth 0 package) "::")
|
||||
(nth 1 package)))))
|
||||
finder-package-info)))))
|
||||
|
||||
;;;###autoload
|
||||
(defun info-finder ()
|
||||
"Display descriptions of the keywords in the Finder virtual manual."
|
||||
(interactive)
|
||||
(defun info-finder (&optional keywords)
|
||||
"Display descriptions of the keywords in the Finder virtual manual.
|
||||
In interactive use, a prefix argument directs this command to read
|
||||
a list of keywords separated by comma. After that, it displays a node
|
||||
with a list packages that contain all specified keywords."
|
||||
(interactive
|
||||
(when current-prefix-arg
|
||||
(require 'finder)
|
||||
(list
|
||||
(completing-read-multiple
|
||||
"Keywords (separated by comma): "
|
||||
(mapcar 'symbol-name (mapcar 'car (append finder-known-keywords
|
||||
(finder-unknown-keywords))))
|
||||
nil t))))
|
||||
(require 'finder)
|
||||
(Info-find-node Info-finder-file "Top"))
|
||||
(if keywords
|
||||
(Info-find-node Info-finder-file (mapconcat 'identity keywords ", "))
|
||||
(Info-find-node Info-finder-file "Top")))
|
||||
|
||||
|
||||
(defun Info-undefined ()
|
||||
"Make command be undefined in Info."
|
||||
|
Loading…
Reference in New Issue
Block a user