summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2013-06-22 16:09:19 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2013-06-22 16:09:19 -0400
commit5b165ade1eff0fd62ac22f9b3ccf84933d15c61a (patch)
tree8ac1a04a98ae67e01283375f0f926f74316091a0 /lisp/emacs-lisp
parent0dfeed58d3244487a545bb4d4e19658eb299937b (diff)
downloademacs-5b165ade1eff0fd62ac22f9b3ccf84933d15c61a.tar.gz
emacs-5b165ade1eff0fd62ac22f9b3ccf84933d15c61a.tar.bz2
emacs-5b165ade1eff0fd62ac22f9b3ccf84933d15c61a.zip
* lisp/emacs-lisp/package.el (package-el-version): Remove.
(package-process-define-package): Fix inf-loop. (package-install): Allow symbols as arguments again.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/package.el42
1 files changed, 20 insertions, 22 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index e5833703ad5..37f20e0cfed 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -233,7 +233,7 @@ a package can run arbitrary code."
Each element has the form (SYM . ID).
SYM is a package, as a symbol.
- ID is an archive name, as a string. This should correspond to an
+ ID is an archive name. This should correspond to an
entry in `package-archives'.
If the archive of name ID does not contain the package SYM, no
@@ -249,9 +249,6 @@ package unavailable."
"Version number of the package archive understood by this file.
Lower version numbers than this will probably be understood as well.")
-(defconst package-el-version "1.0.1"
- "Version of package.el.")
-
;; We don't prime the cache since it tends to get out of date.
(defvar package-archive-contents nil
"Cache of the contents of the Emacs Lisp Package Archive.
@@ -557,13 +554,13 @@ EXTRA-PROPERTIES is currently unused."
;; If there's no old package, just add this to `package-alist'.
(push (list name new-pkg-desc) package-alist)
;; If there is, insert the new package at the right place in the list.
- (while old-pkgs
- (cond
- ((null (cdr old-pkgs)) (push new-pkg-desc (cdr old-pkgs)))
- ((version-list-< (package-desc-version (cadr old-pkgs)) version)
- (push new-pkg-desc (cdr old-pkgs))
- (setq old-pkgs nil)))
- (setq old-pkgs (cdr old-pkgs))))
+ (while
+ (if (and (cdr old-pkgs)
+ (version-list-< version
+ (package-desc-version (cadr old-pkgs))))
+ (setq old-pkgs (cdr old-pkgs))
+ (push new-pkg-desc (cdr old-pkgs))
+ nil)))
new-pkg-desc))
;; From Emacs 22, but changed so it adds to load-path.
@@ -914,10 +911,10 @@ using `package-compute-transaction'."
(package-install-from-archive desc))))
;;;###autoload
-(defun package-install (pkg-desc)
- "Install the package PKG-DESC.
-PKG-DESC should be one of the available packages in an
-archive in `package-archives'. Interactively, prompt for its name."
+(defun package-install (pkg)
+ "Install the package PKG.
+PKG can be a package-desc or the package name of one the available packages
+in an archive in `package-archives'. Interactively, prompt for its name."
(interactive
(progn
;; Initialize the package system to get the list of package
@@ -926,22 +923,22 @@ archive in `package-archives'. Interactively, prompt for its name."
(package-initialize t))
(unless package-archive-contents
(package-refresh-contents))
- (let* ((name (intern (completing-read
+ (list (intern (completing-read
"Install package: "
(mapcar (lambda (elt)
(cons (symbol-name (car elt))
nil))
package-archive-contents)
- nil t)))
- (pkg-desc (cdr (assq name package-archive-contents))))
+ nil t)))))
+ (let ((pkg-desc
+ (if (package-desc-p pkg) pkg
+ (cdr (assq pkg package-archive-contents)))))
(unless pkg-desc
- (error "Package `%s' is not available for installation"
- name))
- (list pkg-desc))))
+ (error "Package `%s' is not available for installation" pkg))
(package-download-transaction
;; FIXME: Use (list pkg-desc) instead of just the name.
(package-compute-transaction (list (package-desc-name pkg-desc))
- (package-desc-reqs pkg-desc))))
+ (package-desc-reqs pkg-desc)))))
(defun package-strip-rcs-id (str)
"Strip RCS version ID from the version string STR.
@@ -1082,6 +1079,7 @@ similar to an entry in `package-alist'. Save the cached copy to
This informs Emacs about the latest versions of all packages, and
makes them available for download."
(interactive)
+ ;; FIXME: Do it asynchronously.
(unless (file-exists-p package-user-dir)
(make-directory package-user-dir t))
(dolist (archive package-archives)