summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorThien-Thi Nguyen <ttn@gnu.org>2014-05-25 18:32:08 +0200
committerThien-Thi Nguyen <ttn@gnu.org>2014-05-25 18:32:08 +0200
commite50a0b6e9df98aa4bfd904b82edd8c0d7b3a2da4 (patch)
treedc962565851bab1e1d8125662721caf820379550 /lisp/emacs-lisp
parentcbe8e343e6ac5aaa0bf35b2014f49332bcc7add8 (diff)
downloademacs-e50a0b6e9df98aa4bfd904b82edd8c0d7b3a2da4.tar.gz
Fix bug: Properly quote args to generated -pkg.el `define-package'.
* lisp/emacs-lisp/package.el (package-generate-description-file): Inline `package--alist-to-plist'; rewrite to selectively quote alist values that are not self-quoting. (package--alist-to-plist): Delete func.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el21
1 files changed, 16 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index c194e1352ac..c23be253b37 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -702,14 +702,25 @@ untar into a directory named DIR; otherwise, signal an error."
(list (car elt)
(package-version-join (cadr elt))))
requires))))
- (package--alist-to-plist
- (package-desc-extras pkg-desc))))
+ (let ((alist (package-desc-extras pkg-desc))
+ flat)
+ (while alist
+ (let* ((pair (pop alist))
+ (key (car pair))
+ (val (cdr pair)))
+ ;; Don't bother ‘quote’ing ‘key’; it is always a keyword.
+ (push key flat)
+ (push (if (and (not (consp val))
+ (or (keywordp val)
+ (not (symbolp val))
+ (memq val '(nil t))))
+ val
+ `',val)
+ flat)))
+ (nreverse flat))))
"\n")
nil pkg-file nil 'silent))))
-(defun package--alist-to-plist (alist)
- (apply #'nconc (mapcar (lambda (pair) (list (car pair) (cdr pair))) alist)))
-
(defun package-unpack (pkg-desc)
"Install the contents of the current buffer as a package."
(let* ((name (package-desc-name pkg-desc))