diff options
Diffstat (limited to 'lisp/emacs-lisp/package.el')
| -rw-r--r-- | lisp/emacs-lisp/package.el | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index e42103a7a01..caf0ec2e8b8 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -570,11 +570,11 @@ EXTRA-PROPERTIES is currently unused." file) (defun package-generate-autoloads (name pkg-dir) + (require 'autoload) ;Load before we let-bind generated-autoload-file! (let* ((auto-name (concat name "-autoloads.el")) (ignore-name (concat name "-pkg.el")) (generated-autoload-file (expand-file-name auto-name pkg-dir)) (version-control 'never)) - (require 'autoload) (unless (fboundp 'autoload-ensure-default-file) (package-autoload-ensure-default-file generated-autoload-file)) (update-directory-autoloads pkg-dir))) @@ -852,18 +852,26 @@ using `package-compute-transaction'." (t (error "Unknown package kind: %s" (symbol-name kind))))))) +(defvar package--initialized nil) + ;;;###autoload (defun package-install (name) "Install the package named NAME. -Interactively, prompt for the package name. -The package is found on one of the archives in `package-archives'." +NAME should be the name of one of the available packages in an +archive in `package-archives'. Interactively, prompt for NAME." (interactive - (list (intern (completing-read "Install package: " - (mapcar (lambda (elt) - (cons (symbol-name (car elt)) - nil)) - package-archive-contents) - nil t)))) + (progn + ;; Initialize the package system to get the list of package + ;; symbols for completion. + (unless package--initialized + (package-initialize t)) + (list (intern (completing-read + "Install package: " + (mapcar (lambda (elt) + (cons (symbol-name (car elt)) + nil)) + package-archive-contents) + nil t))))) (let ((pkg-desc (assq name package-archive-contents))) (unless pkg-desc (error "Package `%s' is not available for installation" @@ -1076,8 +1084,6 @@ makes them available for download." (car archive))))) (package-read-all-archive-contents)) -(defvar package--initialized nil) - ;;;###autoload (defun package-initialize (&optional no-activate) "Load Emacs Lisp packages, and activate them. @@ -1434,7 +1440,7 @@ If optional arg BUTTON is non-nil, describe its associated package." (defun package-menu-mark-delete (num) "Mark a package for deletion and move to the next line." (interactive "p") - (if (string-equal (package-menu-get-status) "installed") + (if (member (package-menu-get-status) '("installed" "obsolete")) (tabulated-list-put-tag "D" t) (forward-line))) |
