]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new customization variable `use-package-deferring-keywords'
authorJohn Wiegley <johnw@newartisans.com>
Mon, 4 Dec 2017 08:11:46 +0000 (00:11 -0800)
committerJohn Wiegley <johnw@newartisans.com>
Mon, 4 Dec 2017 08:11:46 +0000 (00:11 -0800)
etc/USE-PACKAGE-NEWS
up-core.el

index 805272f43e19fcbdb58ae3b8321220d7a2c2119e..4e1a6e949e655459bd98db28064c98deac4109f9 100644 (file)
   declaration, and the macro-expanded version (without verbosity-related
   code). Note that this still does not help if there are parsing errors, which
   will still cause Emacs to encounter a Lisp error at startup time.
+  
+- New customization variable `use-package-deferring-keywords`, mainly intended
+  for use by extension packages, indicates keywords that, if used without
+  `:demand`, cause deferred loading (as if `:defer t` had been specified).
 
 - New `:hook` keyword.
 
index a00f2bf6ab2e7d836f2a8675af4f211502e27b72..6e9daadb2115295668d05d833c64c3bbf62ce0fe 100644 (file)
@@ -97,6 +97,21 @@ declaration is incorrect."
   :type '(repeat symbol)
   :group 'use-package)
 
+(defcustom use-package-deferring-keywords
+  '(:bind
+    :bind*
+    :bind-keymap
+    :bind-keymap*
+    :interpreter
+    :mode
+    :magic
+    :magic-fallback
+    :commands
+    :hook)
+  "Unless `:demand' is used, keywords in this list imply deferred loading."
+  :type '(repeat symbol)
+  :group 'use-package)
+
 (defcustom use-package-verbose nil
   "Whether to report about loading and configuration details.
 If you customize this, then you should require the `use-package'
@@ -499,16 +514,9 @@ This is in contrast to merely setting it to 0."
     ;; Certain keywords imply :defer, if :demand was not specified.
     (when (and (not (plist-member args :demand))
                (not (plist-member args :defer))
-               (or (plist-member args :bind)
-                   (plist-member args :bind*)
-                   (plist-member args :bind-keymap)
-                   (plist-member args :bind-keymap*)
-                   (plist-member args :interpreter)
-                   (plist-member args :mode)
-                   (plist-member args :magic)
-                   (plist-member args :magic-fallback)
-                   (plist-member args :commands)
-                   (plist-member args :hook)))
+               (cl-some #'identity
+                        (mapcar (apply-partially #'plist-member args)
+                                use-package-deferring-keywords)))
       (setq args (append args '(:defer t))))
 
     (when (and (plist-member args :load)