]> git.eshelyaron.com Git - emacs.git/commitdiff
:defer now accepts an optional number of seconds
authorJohn Wiegley <johnw@newartisans.com>
Mon, 16 Mar 2015 15:46:25 +0000 (10:46 -0500)
committerJohn Wiegley <johnw@newartisans.com>
Mon, 16 Mar 2015 15:46:25 +0000 (10:46 -0500)
lisp/use-package/use-package.el

index 96f36e409396b767df21ebc5d2c2faab64443f3f..c31314cd05e47f8724aeb53640ea8f86a7e36d68 100644 (file)
@@ -373,6 +373,7 @@ possible."
   "See docstring for `use-package'."
   (let*
       ((commands (plist-get args :commands))
+       (deferral (plist-get args :defer))
 
        ;; Note: evaluation of this forms possibly extends the value of
        ;; `commands'.
@@ -414,7 +415,7 @@ possible."
 
        ;; Should we defer loading of the package lazily?
        (defer-loading (and (not (plist-get args :demand))
-                           (or commands (plist-get args :defer))))
+                           (or commands deferral)))
 
        ;; These are all the configurations to be made after the package has
        ;; loaded.
@@ -450,6 +451,10 @@ possible."
                              `(autoload #',command ,name-string nil t))
                          commands)))
 
+     (if (numberp deferral)
+         `((run-with-idle-timer ,deferral nil
+                                #'require ',name-symbol nil t)))
+
      (when (bound-and-true-p byte-compile-current-file)
        (mapcar #'(lambda (fn)
                    `(declare-function ,fn ,name-string))
@@ -479,7 +484,7 @@ possible."
               ,(if use-package-expand-minimally
                    (use-package-progn
                     (use-package-cat-maybes
-                     (list `(require ',name-symbol nil t))
+                     (list `(require ',name-symbol))
                      bindings
                      config-body))
                  `(if (not (require ',name-symbol nil t))
@@ -501,6 +506,9 @@ this file.  Usage:
 :config        Code to run after PACKAGE-NAME has been loaded.  Note that if
                loading is deferred for any reason, this code does not execute
                until the lazy load has occurred.
+:preface       Code to be run before everything except `:disabled'; this can
+               be used to define functions for use in `:if', or that should be
+               seen by the byte-compiler.
 
 :mode          Form to be added to `auto-mode-alist'.
 :interpreter   Form to be added to `interpreter-mode-alist'.
@@ -519,6 +527,8 @@ this file.  Usage:
 
 :defer         Defer loading of a package -- this is implied when using
                `:commands', `:bind', `:bind*', `:mode' or `:interpreter'.
+               This can be an integer, to force loading after N seconds of
+               idle time, if the package has not already been loaded.
 :demand        Prevent deferred loading in all cases.
 
 :if EXPR       Initialize and load only if EXPR evaluates to a non-nil value.