From: Dmitry Gutov Date: Wed, 15 Jan 2014 04:58:06 +0000 (+0200) Subject: * lisp/emacs-lisp/package.el (package-desc-keywords): New function. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~376 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=5c92e00da487df29752ec5dc21bc59fca2598626;p=emacs.git * 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 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2f447877b75..5bd724527df 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2014-01-15 Dmitry Gutov + + * emacs-lisp/package.el (package-desc-keywords): New function + (Bug#16222). + (describe-package-1, package-all-keywords) + (package--has-keyword-p): Use it. + 2014-01-14 Nicolas Richard * 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." (unless (memq (car rest-plist) '(:kind :archive)) (let ((value (cadr rest-plist))) (when value - (push (cons (car rest-plist) value) + (push (cons (car rest-plist) + (if (eq (car-safe value) 'quote) + (cdr value) + value)) alist)))) (setq rest-plist (cddr rest-plist))) alist))))) @@ -384,6 +387,12 @@ Slots: (`tar ".tar") (kind (error "Unknown package kind: %s" kind)))) +(defun package-desc-keywords (pkg-desc) + (let ((keywords (assoc :keywords (package-desc-extras pkg-desc)))) + (if (eq (car-safe keywords) 'quote) + (cdr keywords) + keywords))) + ;; Package descriptor format used in finder-inf.el and package--builtins. (cl-defstruct (package--bi-desc (:constructor package-make-builtin (version summary)) @@ -1378,7 +1387,7 @@ If optional arg NO-ACTIVATE is non-nil, don't activate packages." (archive (if desc (package-desc-archive desc))) (extras (and desc (package-desc-extras desc))) (homepage (cdr (assoc :url extras))) - (keywords (cdr (assoc :keywords extras))) + (keywords (if desc (package-desc-keywords desc))) (built-in (eq pkg-dir 'builtin)) (installable (and archive (not built-in))) (status (if desc (package-desc-status desc) "orphan")) @@ -1729,7 +1738,7 @@ KEYWORDS should be nil or a list of keywords." (let (keywords) (package--mapc (lambda (desc) (let* ((extras (and desc (package-desc-extras desc))) - (desc-keywords (cdr (assoc :keywords extras)))) + (desc-keywords (and desc (package-desc-keywords desc)))) (setq keywords (append keywords desc-keywords))))) keywords)) @@ -1771,7 +1780,7 @@ Built-in packages are converted with `package--from-builtin'." When none are given, the package matches." (if keywords (let* ((extras (and desc (package-desc-extras desc))) - (desc-keywords (cdr (assoc :keywords extras))) + (desc-keywords (and desc (package-desc-keywords desc))) found) (dolist (k keywords) (when (and (not found)