Install packages when byte-compiling (fix by @npostavs)

This commit is contained in:
Ivan Goncharov 2015-11-13 11:08:02 +13:00
parent b1f442c15b
commit d9f37b4f0c

View file

@ -463,12 +463,19 @@ manually updated package."
(use-package-ensure-elpa package t))))) (use-package-ensure-elpa package t)))))
(defun use-package-handler/:ensure (name keyword ensure rest state) (defun use-package-handler/:ensure (name keyword ensure rest state)
(let ((body (use-package-process-keywords name rest state))) (let* ((body (use-package-process-keywords name rest state))
`((let ((package-name (or (and (eq ',ensure t) (use-package-as-symbol ',name)) ',ensure))) (package-name (or (and (eq ensure t) (use-package-as-symbol name)) ensure))
(when package-name (ensure-form (if package-name
(require 'package) `(progn (require 'package)
(use-package-ensure-elpa package-name))) (use-package-ensure-elpa ',package-name)))))
,@body))) ;; We want to avoid installing packages when the `use-package'
;; macro is being macro-expanded by elisp completion (see
;; `lisp--local-variables'), but still do install packages when
;; byte-compiling to avoid requiring `package' at runtime.
(if (bound-and-true-p byte-compile-current-file)
(eval ensure-form) ; Eval when byte-compiling,
(push ensure-form body)) ; or else wait until runtime.
body))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ;;