aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/info.el
diff options
context:
space:
mode:
authorChong Yidong2010-08-29 18:15:09 -0400
committerChong Yidong2010-08-29 18:15:09 -0400
commit96ae4c8fa704b0385d6f2cf10b69bf289e2fb7ef (patch)
tree8103ecf3d53c19b0dc714f71b682572c7686b4d2 /lisp/info.el
parentaad4679e7ddbc55a998a4b1111b0cc8c5d3a359f (diff)
downloademacs-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.el83
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)