diff options
author | Richard Stallman <rms@gnu.org> | 2015-04-05 08:44:01 -0400 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 2015-04-05 08:44:01 -0400 |
commit | 5842e489eef061766a747e26ca81e1ef6e2ece5a (patch) | |
tree | a6e85ecc7233dbc1aad578f5532e133447ee78d4 /lisp/emacs-lisp | |
parent | 4e23cd0ccde4ad1e14fe2870ccf140487af649b2 (diff) | |
parent | fdc521952e6d68fa603aac899fe4c08e0a2ed480 (diff) | |
download | emacs-5842e489eef061766a747e26ca81e1ef6e2ece5a.tar.gz emacs-5842e489eef061766a747e26ca81e1ef6e2ece5a.tar.bz2 emacs-5842e489eef061766a747e26ca81e1ef6e2ece5a.zip |
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Conflicts:
lisp/ChangeLog
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r-- | lisp/emacs-lisp/package.el | 36 |
1 files changed, 35 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 32a3e015f0b..18802701a0a 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1397,8 +1397,12 @@ similar to an entry in `package-alist'. Save the cached copy to ;; If we care, check it (perhaps async) and *then* write the file. (package--check-signature location file content async + ;; This function will be called after signature checking. (lambda (&optional good-sigs) (unless (or good-sigs (eq package-check-signature 'allow-unsigned)) + ;; Even if the sig fails, this download is done, so + ;; remove it from the in-progress list. + (package--update-downloads-in-progress archive) (error "Unsigned archive `%s'" name)) ;; Write out the archives file. (write-region content nil local-file nil 'silent) @@ -1419,7 +1423,11 @@ perform the downloads asynchronously." package--downloads-in-progress)) (dolist (archive package-archives) (condition-case-unless-debug nil - (package--download-one-archive archive "archive-contents" async) + (package--download-one-archive + archive "archive-contents" + ;; Called if the async download fails + (when async + (lambda () (package--update-downloads-in-progress archive)))) (error (message "Failed to download `%s' archive." (car archive)))))) @@ -1715,6 +1723,30 @@ PACKAGES are satisfied, i.e. that PACKAGES is computed using `package-compute-transaction'." (mapc #'package-install-from-archive packages)) +(defun package--ensure-init-file () + "Ensure that the user's init file calls `package-initialize'." + ;; Don't mess with the init-file from "emacs -Q". + (when user-init-file + (let ((buffer (find-buffer-visiting user-init-file))) + (with-current-buffer (or buffer (find-file-noselect user-init-file)) + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (unless (search-forward "(package-initialize)" nil 'noerror) + (goto-char (point-min)) + (insert + ";; Added by Package.el. This must come before configurations of\n" + ";; installed packages. Don't delete this line. If you don't want it,\n" + ";; just comment it out by adding a semicolon to the start of the line.\n" + "(package-initialize)\n") + (unless (looking-at-p "$") + (insert "\n")) + (let ((file-precious-flag t)) + (save-buffer))) + (unless buffer + (kill-buffer (current-buffer))))))))) + ;;;###autoload (defun package-install (pkg &optional dont-select) "Install the package PKG. @@ -1743,6 +1775,7 @@ to install it but still mark it as selected." package-archive-contents)) nil t)) nil))) + (package--ensure-init-file) (let ((name (if (package-desc-p pkg) (package-desc-name pkg) pkg))) @@ -1786,6 +1819,7 @@ is derived from the main .el file in the directory. Downloads and installs required packages as needed." (interactive) + (package--ensure-init-file) (let* ((pkg-desc (cond ((derived-mode-p 'dired-mode) |