(defmacro use-package (name &rest args)
+"Use a package with configuration options.
+
+For full documentation. please see commentary.
+
+ (use-package package-name
+ :keyword option)
+
+:init Code to run when `use-package' form evals.
+:bind Perform key bindings, and define autoload for bound
+ commands.
+:commands Define autoloads for given commands.
+:mode Form to be added to `auto-mode-alist'.
+:interpreter Form to be added to `auto-interpreter-alist'.
+:defer Defer loading of package -- automatic
+ if :commands, :bind, :mode or :interpreter are used.
+:config Runs if and when package loads.
+:if Conditional loading.
+:disabled Ignore everything.
+:defines Define vars to silence byte-compiler.
+:load-path Add to `load-path' before loading.
+:diminish Support for diminish package (if it's installed).
+"
(let* ((commands (plist-get args :commands))
(pre-init-body (plist-get args :pre-init))
(init-body (plist-get args :init))
(unless (plist-get args :disabled)
;; force this immediately -- one off cost!
- (if (plist-get args :ensure)
- (use-package-ensure-elpa name))
+ (let* ((ensure (plist-get args :ensure))
+ (package-name
+ (or (and (eq ensure t)
+ name)
+ ensure)))
+ (when package-name
+ (use-package-ensure-elpa package-name)))
(if diminish-var
(setq config-body