diff options
| author | Chong Yidong | 2010-08-29 18:15:09 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-08-29 18:15:09 -0400 |
| commit | 96ae4c8fa704b0385d6f2cf10b69bf289e2fb7ef (patch) | |
| tree | 8103ecf3d53c19b0dc714f71b682572c7686b4d2 /lisp/info.el | |
| parent | aad4679e7ddbc55a998a4b1111b0cc8c5d3a359f (diff) | |
| download | emacs-96ae4c8fa704b0385d6f2cf10b69bf289e2fb7ef.tar.gz emacs-96ae4c8fa704b0385d6f2cf10b69bf289e2fb7ef.zip | |
Merge Finder and package-menu functionality.
* lisp/finder.el: Require `package'.
(finder-known-keywords): Tweak descriptions. Retire `oop' keyword.
(finder-package-info): Var deleted.
(finder-keywords-hash, finder--builtins-alist): New vars.
(finder-compile-keywords): Compute package--builtins and
finder-keywords-hash instead of finder-keywords-hash, respecting
the "Package" header.
(finder-unknown-keywords, finder-list-matches): Use
finder-keywords-hash and package--list-packages.
(finder-mode): Don't set font-lock-defaults.
(finder-exit): We don't use "*Finder-package*" and "*Finder
Category*" buffers anymore.
* lisp/info.el (Info-finder-find-node): Search package-alist instead of
finder-package-info.
* lisp/emacs-lisp/package.el (package--builtins-base): Var deleted.
(package--builtins): Set default value to nil.
(package-initialize): Load precomputed value of package--builtins
from finder-inf.el.
(package-alist, package-compute-transaction)
(package-download-transaction): Improve docstring.
(package-read-all-archive-contents): Do not change
package--builtins here.
(list-packages): Make package-list-packages an alias for this.
Sort by status by default.
(package--list-packages): Add optional PACKAGES arg.
(describe-package-1): Use font-lock-face property. For built-in
packages, insert file commentary.
(package--generate-package-list): Rename from
package-list-packages-internal; all callers changed. Add optional
PACKAGES arg. Add alphabetical sort fallbacks.
(package-menu--version-predicate, package-menu--status-predicate)
(package-menu--description-predicate)
(package-menu--name-predicate): New functions.
Diffstat (limited to 'lisp/info.el')
| -rw-r--r-- | lisp/info.el | 83 |
1 files changed, 39 insertions, 44 deletions
diff --git a/lisp/info.el b/lisp/info.el index 65b9492e351..4fa9503b14e 100644 --- a/lisp/info.el +++ b/lisp/info.el | |||
| @@ -3372,7 +3372,6 @@ Build a menu of the possible matches." | |||
| 3372 | filename) | 3372 | filename) |
| 3373 | 3373 | ||
| 3374 | (defvar finder-known-keywords) | 3374 | (defvar finder-known-keywords) |
| 3375 | (defvar finder-package-info) | ||
| 3376 | (declare-function find-library-name "find-func" (library)) | 3375 | (declare-function find-library-name "find-func" (library)) |
| 3377 | (declare-function finder-unknown-keywords "finder" ()) | 3376 | (declare-function finder-unknown-keywords "finder" ()) |
| 3378 | (declare-function lm-commentary "lisp-mnt" (&optional file)) | 3377 | (declare-function lm-commentary "lisp-mnt" (&optional file)) |
| @@ -3388,15 +3387,14 @@ Build a menu of the possible matches." | |||
| 3388 | (insert "Finder Keywords\n") | 3387 | (insert "Finder Keywords\n") |
| 3389 | (insert "***************\n\n") | 3388 | (insert "***************\n\n") |
| 3390 | (insert "* Menu:\n\n") | 3389 | (insert "* Menu:\n\n") |
| 3391 | (mapc | 3390 | (dolist (assoc (append '((all . "All package info") |
| 3392 | (lambda (assoc) | 3391 | (unknown . "unknown keywords")) |
| 3393 | (let ((keyword (car assoc))) | 3392 | finder-known-keywords)) |
| 3394 | (insert (format "* %-14s %s.\n" | 3393 | (let ((keyword (car assoc))) |
| 3395 | (concat (symbol-name keyword) "::") | 3394 | (insert (format "* %s %s.\n" |
| 3396 | (cdr assoc))))) | 3395 | (concat (symbol-name keyword) ": " |
| 3397 | (append '((all . "All package info") | 3396 | "kw:" (symbol-name keyword) ".") |
| 3398 | (unknown . "unknown keywords")) | 3397 | (cdr assoc)))))) |
| 3399 | finder-known-keywords))) | ||
| 3400 | ((equal nodename "unknown") | 3398 | ((equal nodename "unknown") |
| 3401 | ;; Display unknown keywords | 3399 | ;; Display unknown keywords |
| 3402 | (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" | 3400 | (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" |
| @@ -3416,17 +3414,36 @@ Build a menu of the possible matches." | |||
| 3416 | Info-finder-file nodename)) | 3414 | Info-finder-file nodename)) |
| 3417 | (insert "Finder Package Info\n") | 3415 | (insert "Finder Package Info\n") |
| 3418 | (insert "*******************\n\n") | 3416 | (insert "*******************\n\n") |
| 3419 | (mapc (lambda (package) | 3417 | (dolist (package package-alist) |
| 3420 | (insert (format "%s - %s\n" | 3418 | (insert (format "%s - %s\n" |
| 3421 | (format "*Note %s::" (nth 0 package)) | 3419 | (format "*Note %s::" (nth 0 package)) |
| 3422 | (nth 1 package))) | 3420 | (nth 1 package))))) |
| 3423 | (insert "Keywords: " | 3421 | ((string-match "\\`kw:" nodename) |
| 3424 | (mapconcat (lambda (keyword) | 3422 | (setq nodename (substring nodename (match-end 0))) |
| 3425 | (format "*Note %s::" (symbol-name keyword))) | 3423 | ;; Display packages that match the keyword |
| 3426 | (nth 2 package) ", ") | 3424 | ;; or the list of keywords separated by comma. |
| 3427 | "\n\n")) | 3425 | (insert (format "\n\^_\nFile: %s, Node: kw:%s, Up: Top\n\n" |
| 3428 | finder-package-info)) | 3426 | Info-finder-file nodename)) |
| 3429 | ((string-match-p "\\.el\\'" nodename) | 3427 | (insert "Finder Packages\n") |
| 3428 | (insert "***************\n\n") | ||
| 3429 | (insert | ||
| 3430 | "The following packages match the keyword `" nodename "':\n\n") | ||
| 3431 | (insert "* Menu:\n\n") | ||
| 3432 | (let ((keywords | ||
| 3433 | (mapcar 'intern (if (string-match-p "," nodename) | ||
| 3434 | (split-string nodename ",[ \t\n]*" t) | ||
| 3435 | (list nodename)))) | ||
| 3436 | hits desc) | ||
| 3437 | (dolist (kw keywords) | ||
| 3438 | (push (copy-tree (gethash kw finder-keywords-hash)) hits)) | ||
| 3439 | (setq hits (delete-dups (apply 'append hits))) | ||
| 3440 | (dolist (package hits) | ||
| 3441 | (setq desc (cdr-safe (assq package package-alist))) | ||
| 3442 | (when (vectorp desc) | ||
| 3443 | (insert (format "* %-16s %s.\n" | ||
| 3444 | (concat (symbol-name package) "::") | ||
| 3445 | (aref desc 2))))))) | ||
| 3446 | (t | ||
| 3430 | ;; Display commentary section | 3447 | ;; Display commentary section |
| 3431 | (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" | 3448 | (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" |
| 3432 | Info-finder-file nodename)) | 3449 | Info-finder-file nodename)) |
| @@ -3447,29 +3464,7 @@ Build a menu of the possible matches." | |||
| 3447 | (goto-char (point-min)) | 3464 | (goto-char (point-min)) |
| 3448 | (while (re-search-forward "^;+ ?" nil t) | 3465 | (while (re-search-forward "^;+ ?" nil t) |
| 3449 | (replace-match "" nil nil)) | 3466 | (replace-match "" nil nil)) |
| 3450 | (buffer-string)))))) | 3467 | (buffer-string)))))))) |
| 3451 | (t | ||
| 3452 | ;; Display packages that match the keyword | ||
| 3453 | ;; or the list of keywords separated by comma. | ||
| 3454 | (insert (format "\n\^_\nFile: %s, Node: %s, Up: Top\n\n" | ||
| 3455 | Info-finder-file nodename)) | ||
| 3456 | (insert "Finder Packages\n") | ||
| 3457 | (insert "***************\n\n") | ||
| 3458 | (insert | ||
| 3459 | "The following packages match the keyword `" nodename "':\n\n") | ||
| 3460 | (insert "* Menu:\n\n") | ||
| 3461 | (let ((keywords | ||
| 3462 | (mapcar 'intern (if (string-match-p "," nodename) | ||
| 3463 | (split-string nodename ",[ \t\n]*" t) | ||
| 3464 | (list nodename))))) | ||
| 3465 | (mapc | ||
| 3466 | (lambda (package) | ||
| 3467 | (unless (memq nil (mapcar (lambda (k) (memq k (nth 2 package))) | ||
| 3468 | keywords)) | ||
| 3469 | (insert (format "* %-16s %s.\n" | ||
| 3470 | (concat (nth 0 package) "::") | ||
| 3471 | (nth 1 package))))) | ||
| 3472 | finder-package-info))))) | ||
| 3473 | 3468 | ||
| 3474 | ;;;###autoload | 3469 | ;;;###autoload |
| 3475 | (defun info-finder (&optional keywords) | 3470 | (defun info-finder (&optional keywords) |