Reduce some code duplication

This commit is contained in:
John Wiegley 2017-12-04 09:33:10 -08:00
parent ac906479a7
commit 1e560c5140
2 changed files with 26 additions and 35 deletions

View file

@ -273,6 +273,16 @@ Must be set before loading use-package."
"Report MSG as an error, so the user knows it came from this package." "Report MSG as an error, so the user knows it came from this package."
(error "use-package: %s" msg)) (error "use-package: %s" msg))
(defun use-package-hush (f body)
(condition-case-unless-debug err
(macroexp-progn body)
(error
(if (stringp f)
(ignore (display-warning 'use-package
(format f (error-message-string err))
:error))
(funcall f err)))))
(defsubst use-package-concat (&rest elems) (defsubst use-package-concat (&rest elems)
"Delete all empty lists from ELEMS (nil or (list nil)), and append them." "Delete all empty lists from ELEMS (nil or (list nil)), and append them."
(apply #'append (delete nil (delete (list nil) elems)))) (apply #'append (delete nil (delete (list nil) elems))))
@ -1297,11 +1307,6 @@ no keyword implies `:all'."
;;; The main macro ;;; The main macro
;; ;;
(defsubst use-package-hush (context body)
`((condition-case-unless-debug err
,(macroexp-progn body)
(error (funcall ,context err)))))
(defun use-package-core (name args) (defun use-package-core (name args)
(let* ((context (gensym "use-package--warning")) (let* ((context (gensym "use-package--warning"))
(args* (use-package-normalize-keywords name args)) (args* (use-package-normalize-keywords name args))
@ -1404,14 +1409,9 @@ this file. Usage:
(macroexp-progn (macroexp-progn
(if (eq use-package-verbose 'errors) (if (eq use-package-verbose 'errors)
(use-package-core name args) (use-package-core name args)
(condition-case-unless-debug err (use-package-hush
(use-package-core name args) (format "Failed to parse package %s: %%s" name)
(error '((use-package-core name args)))))))
(ignore
(display-warning
'use-package
(format "Failed to parse package %s: %s"
name (error-message-string err)) :error))))))))
(put 'use-package 'lisp-indent-function 'defun) (put 'use-package 'lisp-indent-function 'defun)

View file

@ -143,31 +143,22 @@ manually updated package."
"(an unquoted symbol name)"))))))) "(an unquoted symbol name)")))))))
(defun use-package-ensure-elpa (name ensure state &optional no-refresh) (defun use-package-ensure-elpa (name ensure state &optional no-refresh)
(let ((package (let ((package (or (and (eq ensure t) (use-package-as-symbol name))
(or (and (eq ensure t) (use-package-as-symbol name)) ensure)))
ensure)))
(when package (when package
(require 'package) (require 'package)
(unless (package-installed-p package) (unless (package-installed-p package)
(condition-case-unless-debug err (use-package-hush
(progn (format "Failed to install %s: %%s" name)
(when (assoc package (bound-and-true-p '((when (assoc package (bound-and-true-p package-pinned-packages))
package-pinned-packages)) (package-read-all-archive-contents))
(package-read-all-archive-contents)) (if (assoc package package-archive-contents)
(if (assoc package package-archive-contents) (package-install package)
(package-install package) (package-refresh-contents)
(package-refresh-contents) (when (assoc package (bound-and-true-p package-pinned-packages))
(when (assoc package (bound-and-true-p (package-read-all-archive-contents))
package-pinned-packages)) (package-install package))
(package-read-all-archive-contents)) t))))))
(package-install package))
t)
(error
(ignore
(display-warning 'use-package
(format "Failed to install %s: %s"
name (error-message-string err))
:error))))))))
(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)))