aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Gutov2014-01-15 06:58:06 +0200
committerDmitry Gutov2014-01-15 06:58:06 +0200
commit5c92e00da487df29752ec5dc21bc59fca2598626 (patch)
treee8a7b9fdef76c02ab73b35c5d1df67a7cc14e6b0
parent39c871402ffc2f56bcb1f0c00b4c99ea5bfd7415 (diff)
downloademacs-5c92e00da487df29752ec5dc21bc59fca2598626.tar.gz
emacs-5c92e00da487df29752ec5dc21bc59fca2598626.zip
* lisp/emacs-lisp/package.el (package-desc-keywords): New function.
(describe-package-1, package-all-keywords) (package--has-keyword-p): Use it. Fixes: debbugs:16222
-rw-r--r--lisp/ChangeLog7
-rw-r--r--lisp/emacs-lisp/package.el17
2 files changed, 20 insertions, 4 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 2f447877b75..5bd724527df 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,10 @@
12014-01-15 Dmitry Gutov <dgutov@yandex.ru>
2
3 * emacs-lisp/package.el (package-desc-keywords): New function
4 (Bug#16222).
5 (describe-package-1, package-all-keywords)
6 (package--has-keyword-p): Use it.
7
12014-01-14 Nicolas Richard <theonewiththeevillook@yahoo.fr> 82014-01-14 Nicolas Richard <theonewiththeevillook@yahoo.fr>
2 9
3 * simple.el (define-alternatives): When creating the 10 * simple.el (define-alternatives): When creating the
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index f22221f3dee..465eac9daf7 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -332,7 +332,10 @@ contrast, `package-user-dir' contains packages for personal use."
332 (unless (memq (car rest-plist) '(:kind :archive)) 332 (unless (memq (car rest-plist) '(:kind :archive))
333 (let ((value (cadr rest-plist))) 333 (let ((value (cadr rest-plist)))
334 (when value 334 (when value
335 (push (cons (car rest-plist) value) 335 (push (cons (car rest-plist)
336 (if (eq (car-safe value) 'quote)
337 (cdr value)
338 value))
336 alist)))) 339 alist))))
337 (setq rest-plist (cddr rest-plist))) 340 (setq rest-plist (cddr rest-plist)))
338 alist))))) 341 alist)))))
@@ -384,6 +387,12 @@ Slots:
384 (`tar ".tar") 387 (`tar ".tar")
385 (kind (error "Unknown package kind: %s" kind)))) 388 (kind (error "Unknown package kind: %s" kind))))
386 389
390(defun package-desc-keywords (pkg-desc)
391 (let ((keywords (assoc :keywords (package-desc-extras pkg-desc))))
392 (if (eq (car-safe keywords) 'quote)
393 (cdr keywords)
394 keywords)))
395
387;; Package descriptor format used in finder-inf.el and package--builtins. 396;; Package descriptor format used in finder-inf.el and package--builtins.
388(cl-defstruct (package--bi-desc 397(cl-defstruct (package--bi-desc
389 (:constructor package-make-builtin (version summary)) 398 (:constructor package-make-builtin (version summary))
@@ -1378,7 +1387,7 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages."
1378 (archive (if desc (package-desc-archive desc))) 1387 (archive (if desc (package-desc-archive desc)))
1379 (extras (and desc (package-desc-extras desc))) 1388 (extras (and desc (package-desc-extras desc)))
1380 (homepage (cdr (assoc :url extras))) 1389 (homepage (cdr (assoc :url extras)))
1381 (keywords (cdr (assoc :keywords extras))) 1390 (keywords (if desc (package-desc-keywords desc)))
1382 (built-in (eq pkg-dir 'builtin)) 1391 (built-in (eq pkg-dir 'builtin))
1383 (installable (and archive (not built-in))) 1392 (installable (and archive (not built-in)))
1384 (status (if desc (package-desc-status desc) "orphan")) 1393 (status (if desc (package-desc-status desc) "orphan"))
@@ -1729,7 +1738,7 @@ KEYWORDS should be nil or a list of keywords."
1729 (let (keywords) 1738 (let (keywords)
1730 (package--mapc (lambda (desc) 1739 (package--mapc (lambda (desc)
1731 (let* ((extras (and desc (package-desc-extras desc))) 1740 (let* ((extras (and desc (package-desc-extras desc)))
1732 (desc-keywords (cdr (assoc :keywords extras)))) 1741 (desc-keywords (and desc (package-desc-keywords desc))))
1733 (setq keywords (append keywords desc-keywords))))) 1742 (setq keywords (append keywords desc-keywords)))))
1734 keywords)) 1743 keywords))
1735 1744
@@ -1771,7 +1780,7 @@ Built-in packages are converted with `package--from-builtin'."
1771When none are given, the package matches." 1780When none are given, the package matches."
1772 (if keywords 1781 (if keywords
1773 (let* ((extras (and desc (package-desc-extras desc))) 1782 (let* ((extras (and desc (package-desc-extras desc)))
1774 (desc-keywords (cdr (assoc :keywords extras))) 1783 (desc-keywords (and desc (package-desc-keywords desc)))
1775 found) 1784 found)
1776 (dolist (k keywords) 1785 (dolist (k keywords)
1777 (when (and (not found) 1786 (when (and (not found)