]> git.eshelyaron.com Git - emacs.git/commitdiff
Don't reload packages at startup
authorDmitry Gutov <dgutov@yandex.ru>
Thu, 18 Dec 2014 10:10:34 +0000 (12:10 +0200)
committerDmitry Gutov <dgutov@yandex.ru>
Thu, 18 Dec 2014 10:10:34 +0000 (12:10 +0200)
Fixes: debbugs:19390
* lisp/emacs-lisp/package.el (package-activate-1): Add RELOAD argument
and a docstring.
(package-activate): Call itself on dependencies on PACKAGE with
the same FORCE argument.  Pass FORCE as RELOAD into
`package-activate-1' .

lisp/ChangeLog
lisp/emacs-lisp/package.el

index 87c39447d0c91f3e7a44e98831a1dc5f0472187a..0d5cdd1f848cab01c474c4d0571fed494a7b2160 100644 (file)
@@ -1,3 +1,11 @@
+2014-12-18  Dmitry Gutov  <dgutov@yandex.ru>
+
+       * emacs-lisp/package.el (package-activate-1): Add RELOAD argument
+       and a docstring.
+       (package-activate): Call itself on dependencies on PACKAGE with
+       the same FORCE argument.  Pass FORCE as RELOAD into
+       `package-activate-1'  (bug#19390).
+
 2014-12-17  Sam Steingold  <sds@gnu.org>
 
        * emacs-lisp/package.el (package--list-loaded-files): Handle
index 199eac5cf6c6f0f2fb1c290a7323ad7fe3ecd9c3..1949d0d474ce0951ac61e68c5d0a5b91f8046823 100644 (file)
@@ -516,7 +516,11 @@ Return the max version (as a string) if the package is held at a lower version."
              force))
           (t (error "Invalid element in `package-load-list'")))))
 
-(defun package-activate-1 (pkg-desc)
+(defun package-activate-1 (pkg-desc &optional reload)
+  "Activate package given by PKG-DESC, even if it was already active.
+If RELOAD is non-nil, also `load' any files inside the package which
+correspond to previously loaded files (those returned by
+`package--list-loaded-files')."
   (let* ((name (package-desc-name pkg-desc))
         (pkg-dir (package-desc-dir pkg-desc))
          (pkg-dir-dir (file-name-as-directory pkg-dir)))
@@ -527,7 +531,7 @@ Return the max version (as a string) if the package is held at a lower version."
     (let* ((old-lp load-path)
            (autoloads-file (expand-file-name
                             (format "%s-autoloads" name) pkg-dir))
-           (loaded-files-list (package--list-loaded-files pkg-dir)))
+           (loaded-files-list (and reload (package--list-loaded-files pkg-dir))))
       (with-demoted-errors (format "Error loading %s: %%s" name)
         (load autoloads-file nil t))
       (when (and (eq old-lp load-path)
@@ -638,14 +642,14 @@ If FORCE is true, (re-)activate it if it's already activated."
              (fail (catch 'dep-failure
                      ;; Activate its dependencies recursively.
                      (dolist (req (package-desc-reqs pkg-vec))
-                       (unless (package-activate (car req) (cadr req))
+                       (unless (package-activate (car req) force)
                          (throw 'dep-failure req))))))
        (if fail
            (warn "Unable to activate package `%s'.
 Required package `%s-%s' is unavailable"
                  package (car fail) (package-version-join (cadr fail)))
          ;; If all goes well, activate the package itself.
-         (package-activate-1 pkg-vec)))))))
+         (package-activate-1 pkg-vec force)))))))
 
 (defun define-package (_name-string _version-string
                                     &optional _docstring _requirements