Mercurial > emacs
changeset 111244:6a10cca95d2b
Check more carefully for packages before loading package.el.
* startup.el (command-line): Search for package directories, and
don't load package.el if none are found.
* emacs-lisp/package.el (describe-package, list-packages): Call
package-initialize if it has not been called yet.
author | Chong Yidong <cyd@stupidchicken.com> |
---|---|
date | Sat, 30 Oct 2010 20:06:18 -0400 |
parents | 0989a3a741bd |
children | dd1304e89176 |
files | lisp/ChangeLog lisp/emacs-lisp/package.el lisp/startup.el |
diffstat | 3 files changed, 41 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/ChangeLog Sat Oct 30 15:01:14 2010 +0000 +++ b/lisp/ChangeLog Sat Oct 30 20:06:18 2010 -0400 @@ -1,3 +1,11 @@ +2010-10-30 Chong Yidong <cyd@stupidchicken.com> + + * startup.el (command-line): Search for package directories, and + don't load package.el if none are found. + + * emacs-lisp/package.el (describe-package, list-packages): Call + package-initialize if it has not been called yet. + 2010-10-30 Alan Mackenzie <acm@muc.de> * progmodes/cc-fonts.el (c-font-lock-enum-tail): New function
--- a/lisp/emacs-lisp/package.el Sat Oct 30 15:01:14 2010 +0000 +++ b/lisp/emacs-lisp/package.el Sat Oct 30 20:06:18 2010 -0400 @@ -1037,10 +1037,13 @@ (defun describe-package (package) "Display the full documentation of PACKAGE (a symbol)." (interactive - (let* ((packages (append (mapcar 'car package-alist) + (let* ((guess (function-called-at-point)) + packages val) + ;; Initialize the package system if it's not. + (unless package-alist + (package-initialize)) + (setq packages (append (mapcar 'car package-alist) (mapcar 'car package-archive-contents))) - (guess (function-called-at-point)) - val) (unless (memq guess packages) (setq guess nil)) (setq packages (mapcar 'symbol-name packages)) @@ -1617,6 +1620,9 @@ Fetches the updated list of packages before displaying. The list is displayed in a buffer named `*Packages*'." (interactive) + ;; Initialize the package system if necessary. + (unless package-alist + (package-initialize)) (package-refresh-contents) (package--list-packages))
--- a/lisp/startup.el Sat Oct 30 15:01:14 2010 +0000 +++ b/lisp/startup.el Sat Oct 30 20:06:18 2010 -0400 @@ -1172,8 +1172,30 @@ (eq face-ignored-fonts old-face-ignored-fonts)) (clear-face-cache))) - ;; Load ELPA packages. - (and user-init-file package-enable-at-startup (package-initialize)) + ;; If any package directory exists, initialize the package system. + (and user-init-file + package-enable-at-startup + (catch 'package-dir-found + (let (dirs) + (if (boundp 'package-directory-list) + (setq dirs package-directory-list) + (dolist (f load-path) + (and (stringp f) + (equal (file-name-nondirectory f) "site-lisp") + (push (expand-file-name "elpa" f) dirs)))) + (push (if (boundp 'package-user-dir) + package-user-dir + (locate-user-emacs-file "elpa")) + dirs) + (dolist (dir dirs) + (when (file-directory-p dir) + (dolist (subdir (directory-files dir)) + (when (and (file-directory-p (expand-file-name subdir dir)) + ;; package-subdirectory-regexp from package.el + (string-match "^\\([^.].*\\)-\\([0-9]+\\(?:[.][0-9]+\\)*\\)$" + subdir)) + (throw 'package-dir-found t))))))) + (package-initialize)) (setq after-init-time (current-time)) (run-hooks 'after-init-hook)