Correction to error detection at both :init and :config times

This commit is contained in:
John Wiegley 2017-12-03 19:54:57 -08:00
parent 8428dafcfa
commit 35b975563c

View file

@ -1115,8 +1115,7 @@ deferred until the prefix key sequence is pressed."
',(use-package-as-symbol name) nil t))) ',(use-package-as-symbol name) nil t)))
(if (or (not arg) (null body)) (if (or (not arg) (null body))
body body
`((eval-after-load ',name `((eval-after-load ',name ',(macroexp-progn body)))))))
',(funcall use-package--hush-function body)))))))
;;;; :after ;;;; :after
@ -1242,10 +1241,12 @@ no keyword implies `:all'."
(let ((init-body (let ((init-body
(use-package-hook-injector (use-package-as-string name) (use-package-hook-injector (use-package-as-string name)
:init arg))) :init arg)))
(if use-package-check-before-init (when init-body
`((if (locate-library ,(use-package-as-string name)) (funcall use-package--hush-function
,(macroexp-progn init-body))) (if use-package-check-before-init
init-body)) `((when (locate-library ,(use-package-as-string name))
,@init-body))
init-body))))
(use-package-process-keywords name rest state))) (use-package-process-keywords name rest state)))
;;;; :load ;;;; :load
@ -1269,16 +1270,16 @@ no keyword implies `:all'."
(defun use-package-handler/:config (name keyword arg rest state) (defun use-package-handler/:config (name keyword arg rest state)
(let* ((body (use-package-process-keywords name rest state)) (let* ((body (use-package-process-keywords name rest state))
(name-symbol (use-package-as-symbol name))) (name-symbol (use-package-as-symbol name)))
(if (or (null arg) (if (or (null arg) (equal arg '(t)))
(equal arg '(t)))
body body
(use-package-with-elapsed-timer (use-package-with-elapsed-timer
(format "Configuring package %s" name-symbol) (format "Configuring package %s" name-symbol)
(use-package-concat (funcall use-package--hush-function
(use-package-hook-injector (use-package-concat
(symbol-name name-symbol) :config arg) (use-package-hook-injector
body (symbol-name name-symbol) :config arg)
(list t)))))) body
(list t)))))))
;;;; :diminish ;;;; :diminish
@ -1324,32 +1325,32 @@ no keyword implies `:all'."
;; ;;
(defun use-package-hush (name args args* expanded body) (defun use-package-hush (name args args* expanded body)
`(condition-case-unless-debug err `((condition-case-unless-debug err
,(macroexp-progn body) ,(macroexp-progn body)
(error (error
(let ((msg (format "%s: %s" ',name (error-message-string err)))) (let ((msg (format "%s: %s" ',name (error-message-string err))))
,(when (eq use-package-verbose 'debug) ,(when (eq use-package-verbose 'debug)
`(progn `(progn
(setq msg (concat msg " (see the *use-package* buffer)")) (setq msg (concat msg " (see the *use-package* buffer)"))
(with-current-buffer (get-buffer-create "*use-package*") (with-current-buffer (get-buffer-create "*use-package*")
(goto-char (point-max)) (goto-char (point-max))
(insert "-----\n" msg (insert "-----\n" msg
,(concat ,(concat
"\n\n" "\n\n"
(pp-to-string `(use-package ,name ,@args)) (pp-to-string `(use-package ,name ,@args))
"\n -->\n\n" "\n -->\n\n"
(pp-to-string `(use-package ,name ,@args*)) (pp-to-string `(use-package ,name ,@args*))
"\n ==>\n\n" "\n ==>\n\n"
(pp-to-string (macroexp-progn expanded)))) (pp-to-string (macroexp-progn expanded))))
(emacs-lisp-mode)))) (emacs-lisp-mode))))
(ignore (display-warning 'use-package msg :error)))))) (ignore (display-warning 'use-package msg :error)))))))
(defun use-package-core (name args) (defun use-package-core (name args)
(let* ((args* (use-package-normalize-keywords name args)) (let* ((args* (use-package-normalize-keywords name args))
(use-package--hush-function (use-package--hush-function
(if use-package-expand-minimally (if use-package-expand-minimally
#'macroexp-progn #'identity
(let ((use-package--hush-function #'macroexp-progn)) (let ((use-package--hush-function #'identity))
(apply-partially (apply-partially
#'use-package-hush name args args* #'use-package-hush name args args*
(let ((use-package-verbose 'errors) (let ((use-package-verbose 'errors)
@ -1419,15 +1420,16 @@ this file. Usage:
:pin Pin the package to an archive." :pin Pin the package to an archive."
(declare (indent 1)) (declare (indent 1))
(unless (memq :disabled args) (unless (memq :disabled args)
(if (eq use-package-verbose 'errors) (macroexp-progn
(use-package-core name args) (if (eq use-package-verbose 'errors)
(condition-case-unless-debug err (use-package-core name args)
(use-package-core name args) (condition-case-unless-debug err
(error (use-package-core name args)
(ignore (error
(let ((msg (format "Failed to parse package %s: %s" (ignore
name (error-message-string err)))) (let ((msg (format "Failed to parse package %s: %s"
(display-warning 'use-package msg :error)))))))) name (error-message-string err))))
(display-warning 'use-package msg :error)))))))))
(put 'use-package 'lisp-indent-function 'defun) (put 'use-package 'lisp-indent-function 'defun)