[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master fdc5219 2/2: emacs-lisp/package.el: Add package-ini
From: |
Artur Malabarba |
Subject: |
[Emacs-diffs] master fdc5219 2/2: emacs-lisp/package.el: Add package-initialize to user-init-file. |
Date: |
Sun, 05 Apr 2015 10:08:30 +0000 |
branch: master
commit fdc521952e6d68fa603aac899fe4c08e0a2ed480
Author: Artur Malabarba <address@hidden>
Commit: Artur Malabarba <address@hidden>
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(+), 0 deletions(-)
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 0870f0c..fb82b5b 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,9 @@
+2015-04-05 Artur Malabarba <address@hidden>
+
+ * 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 <address@hidden> (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 83c5b2f..1880270 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)