From b47fe819f70cd48c5ca26e37843b878ecc0d0b66 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sat, 4 Apr 2015 21:00:38 +0100 Subject: emacs-lisp/package.el: Prevent outdated downloads-in-progress. --- lisp/emacs-lisp/package.el | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'lisp/emacs-lisp') diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 32a3e015f0b..83c5b2f6b10 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)))))) -- cgit v1.2.3 From fdc521952e6d68fa603aac899fe4c08e0a2ed480 Mon Sep 17 00:00:00 2001 From: Artur Malabarba Date: Sun, 5 Apr 2015 11:01:09 +0100 Subject: emacs-lisp/package.el: Add package-initialize to user-init-file. --- lisp/ChangeLog | 6 ++++++ lisp/emacs-lisp/package.el | 26 ++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) (limited to 'lisp/emacs-lisp') diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 0870f0cad31..fb82b5b574a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2015-04-05 Artur Malabarba + + * emacs-lisp/package.el: Add package-initialize to user-init-file. + (package--ensure-init-file): New function. + (package-install, package-install-from-buffer): Use it. + 2015-04-05 Pete Williamson (tiny-change) Fix .emacs and .emacs.d/init file recursion problem for NaCl diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el index 83c5b2f6b10..18802701a0a 100644 --- a/lisp/emacs-lisp/package.el +++ b/lisp/emacs-lisp/package.el @@ -1723,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. @@ -1751,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))) @@ -1794,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) -- cgit v1.2.3