diff options
author | Glenn Morris <rgm@gnu.org> | 2014-09-02 21:21:40 -0700 |
---|---|---|
committer | Glenn Morris <rgm@gnu.org> | 2014-09-02 21:21:40 -0700 |
commit | 62fca47221fc9d248511cd94fbcb41ddb46763e6 (patch) | |
tree | d039e0d0580f884abbfd7515b63ef7bc4aabeaaa /lisp/emacs-lisp | |
parent | e6769f18909edfd1bbf6473a1f754ab29e2fb114 (diff) | |
parent | af86b05fd4b79c3d1c3b71c6193c4295a1265594 (diff) | |
download | emacs-62fca47221fc9d248511cd94fbcb41ddb46763e6.tar.gz emacs-62fca47221fc9d248511cd94fbcb41ddb46763e6.tar.bz2 emacs-62fca47221fc9d248511cd94fbcb41ddb46763e6.zip |
Merge from emacs-24; up to 2014-07-04T02:28:54Z!dmantipov@yandex.ru
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/package.el | 38 |
1 files changed, 16 insertions, 22 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 4d7ed8f121c..1649ee0ea1a 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -689,11 +689,9 @@ untar into a directory named DIR; otherwise, signal an error." (error "Package does not untar cleanly into directory %s/" dir))))) (tar-untar-buffer)) -(defun package-generate-description-file (pkg-desc pkg-dir) +(defun package-generate-description-file (pkg-desc pkg-file) "Create the foo-pkg.el file for single-file packages." - (let* ((name (package-desc-name pkg-desc)) - (pkg-file (expand-file-name (package--description-file pkg-dir) - pkg-dir))) + (let* ((name (package-desc-name pkg-desc))) (let ((print-level nil) (print-quoted t) (print-length nil)) @@ -714,25 +712,20 @@ untar into a directory named DIR; otherwise, signal an error." (list (car elt) (package-version-join (cadr elt)))) requires)))) - (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)))) + (package--alist-to-plist-args + (package-desc-extras pkg-desc)))) "\n") nil pkg-file nil 'silent)))) +(defun package--alist-to-plist-args (alist) + (mapcar (lambda (x) + (if (and (not (consp x)) + (or (keywordp x) + (not (symbolp x)) + (memq x '(nil t)))) + x `',x)) + (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)) @@ -764,9 +757,10 @@ untar into a directory named DIR; otherwise, signal an error." (defun package--make-autoloads-and-stuff (pkg-desc pkg-dir) "Generate autoloads, description file, etc.. for PKG-DESC installed at PKG-DIR." (package-generate-autoloads (package-desc-name pkg-desc) pkg-dir) - (let ((desc-file (package--description-file pkg-dir))) + (let ((desc-file (expand-file-name (package--description-file pkg-dir) + pkg-dir))) (unless (file-exists-p desc-file) - (package-generate-description-file pkg-desc pkg-dir))) + (package-generate-description-file pkg-desc desc-file))) ;; FIXME: Create foo.info and dir file from foo.texi? ) |