]> code.delx.au - gnu-emacs/commitdiff
* lisp/emacs-lisp/package.el: Don't ensure-init during startup
authorArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 15 May 2015 09:54:48 +0000 (10:54 +0100)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Fri, 15 May 2015 10:18:53 +0000 (11:18 +0100)
(package--init-file-ensured): New variable.
(package-initialize, package--ensure-init-file): Use it.

lisp/emacs-lisp/package.el

index 1d27bf752dfd9fb0192e136811b145fdd8aab28b..55fa962719d41fd99aacc866fcbaa82ed39aa3b2 100644 (file)
@@ -1346,6 +1346,9 @@ If successful, set `package-archive-contents'."
 ;; available on disk.
 (defvar package--initialized nil)
 
+(defvar package--init-file-ensured nil
+  "Whether we know the init file has package-initialize.")
+
 ;;;###autoload
 (defun package-initialize (&optional no-activate)
   "Load Emacs Lisp packages, and activate them.
@@ -1355,7 +1358,11 @@ If `user-init-file' does not mention `(package-initialize)', add
 it to the file."
   (interactive)
   (setq package-alist nil)
-  (package--ensure-init-file)
+  (if (equal user-init-file load-file-name)
+      ;; If `package-initialize' is being called as part of loading
+      ;; the init file, it's obvious we don't need to ensure-init.
+      (setq package--init-file-ensured t)
+    (package--ensure-init-file))
   (package-load-all-descriptors)
   (package-read-all-archive-contents)
   (unless no-activate
@@ -1802,6 +1809,7 @@ present somewhere in the file, even as a comment.  If it is not,
 add a call to it along with some explanatory comments."
   ;; Don't mess with the init-file from "emacs -Q".
   (when (and (stringp user-init-file)
+             (not package--init-file-ensured)
              (file-readable-p user-init-file)
              (file-writable-p user-init-file))
     (let* ((buffer (find-buffer-visiting user-init-file))
@@ -1841,7 +1849,8 @@ add a call to it along with some explanatory comments."
               (let ((file-precious-flag t))
                 (save-buffer))
               (unless buffer
-                (kill-buffer (current-buffer))))))))))
+                (kill-buffer (current-buffer)))))))))
+  (setq package--init-file-ensured t))
 
 ;;;###autoload
 (defun package-install (pkg &optional dont-select async callback)