From 144e5244d2076eac0e0216a0b09f39a21a9c8dbf Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Fri, 6 May 2022 10:20:46 -0500
Subject: Demote errors more better-er

---
 lisp/+setup.el | 28 +++++++++++++++++++++-------
 1 file changed, 21 insertions(+), 7 deletions(-)

(limited to 'lisp')

diff --git a/lisp/+setup.el b/lisp/+setup.el
index 194baa8..d5a3a77 100644
--- a/lisp/+setup.el
+++ b/lisp/+setup.el
@@ -29,23 +29,37 @@
   "Warn the user that something bad happened in `setup'."
   (display-warning 'setup (format message args)))
 
+(defun +setup-wrap-to-demote-errors (body name)
+  "Wrap BODY in a `with-demoted-errors' block.
+This behavior is prevented if `setup-attributes' contains the
+symbol `without-error-demotion'.
+
+This function differs from `setup-wrap-to-demote-errors' in that
+it includes the NAME of the setup form in the warning output."
+  (if (memq 'without-error-demotion setup-attributes)
+      body
+    `(with-demoted-errors ,(format "Error in setup form on line %d (%s): %%S"
+                                   (line-number-at-pos)
+                                   name)
+       ,body)))
+
 (setup-define :quit
   'setup-quit
   :documentation "Quit the current `setup' form.
 Good for commenting.")
 
 (setup-define :face
-    (lambda (face spec)
-      `(custom-set-faces (list ,face ,spec 'now "Customized by `setup'.")))
+  (lambda (face spec)
+    `(custom-set-faces (list ,face ,spec 'now "Customized by `setup'.")))
   :documentation "Customize FACE with SPEC using `custom-set-faces'."
   :repeatable t)
 
 (setup-define :load-after
-    (lambda (&rest features)
-      (let ((body `(require ',(setup-get 'feature))))
-    (dolist (feature (nreverse features))
-      (setq body `(with-eval-after-load ',feature ,body)))
-    body))
+  (lambda (&rest features)
+    (let ((body `(require ',(setup-get 'feature))))
+      (dolist (feature (nreverse features))
+        (setq body `(with-eval-after-load ',feature ,body)))
+      body))
   :documentation "Load the current feature after FEATURES.")
 
 (setup-define :load-from
-- 
cgit 1.4.1-21-gabe81