summaryrefslogtreecommitdiff
path: root/lisp/use-package/use-package.el
diff options
context:
space:
mode:
authorPhillip Lord <phillip.lord@russet.org.uk>2015-11-04 22:45:37 +0000
committerPhillip Lord <phillip.lord@russet.org.uk>2015-11-04 22:50:48 +0000
commit564f9bb74b872ea7df534733c25ccc413cd6cab0 (patch)
treed8e3654ebaaa0e8cb209502df0b24ca701b94510 /lisp/use-package/use-package.el
parentff8bdfcdca1901e3920d1c1d12d753f855260ebe (diff)
downloademacs-564f9bb74b872ea7df534733c25ccc413cd6cab0.tar.gz
emacs-564f9bb74b872ea7df534733c25ccc413cd6cab0.tar.bz2
emacs-564f9bb74b872ea7df534733c25ccc413cd6cab0.zip
Support for after keyword
After provides `eval-after-load' functionality for any number of features. This helps to avoid deeply nested `use-package' statements. Closes https://github.com/jwiegley/use-package/issues/274
Diffstat (limited to 'lisp/use-package/use-package.el')
-rw-r--r--lisp/use-package/use-package.el32
1 files changed, 32 insertions, 0 deletions
diff --git a/lisp/use-package/use-package.el b/lisp/use-package/use-package.el
index 0fb6734ab48..c398ebbef1e 100644
--- a/lisp/use-package/use-package.el
+++ b/lisp/use-package/use-package.el
@@ -126,6 +126,7 @@ the user specified."
:defines
:functions
:defer
+ :after
:demand
:init
:config
@@ -854,6 +855,33 @@ deferred until the prefix key sequence is pressed."
body)))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; :after
+;;
+
+(defalias 'use-package-normalize/:after 'use-package-normalize-symlist)
+
+(defun use-package-require-after-load (features name)
+ "Return form for after any of FEATURES require NAME."
+ `(progn
+ ,@(mapcar
+ (lambda (feat)
+ `(eval-after-load
+ (quote ,feat)
+ (quote (require (quote ,name)))))
+ features)))
+
+(defun use-package-handler/:after (name keyword arg rest state)
+ (let ((body (use-package-process-keywords name rest
+ (plist-put state :deferred t)))
+ (name-string (use-package-as-string name)))
+ (use-package-concat
+ (when arg
+ (list (use-package-require-after-load arg name)))
+ body)))
+
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; :demand
@@ -1019,6 +1047,10 @@ this file. Usage:
`: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.
+
+:after Defer loading of a package until after any of the named
+ features are loaded.
+
:demand Prevent deferred loading in all cases.
:if EXPR Initialize and load only if EXPR evaluates to a non-nil value.