diff options
| author | Dmitry Gutov | 2014-01-15 06:58:06 +0200 |
|---|---|---|
| committer | Dmitry Gutov | 2014-01-15 06:58:06 +0200 |
| commit | 5c92e00da487df29752ec5dc21bc59fca2598626 (patch) | |
| tree | e8a7b9fdef76c02ab73b35c5d1df67a7cc14e6b0 | |
| parent | 39c871402ffc2f56bcb1f0c00b4c99ea5bfd7415 (diff) | |
| download | emacs-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/ChangeLog | 7 | ||||
| -rw-r--r-- | lisp/emacs-lisp/package.el | 17 |
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 @@ | |||
| 1 | 2014-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 | |||
| 1 | 2014-01-14 Nicolas Richard <theonewiththeevillook@yahoo.fr> | 8 | 2014-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'." | |||
| 1771 | When none are given, the package matches." | 1780 | When 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) |