[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#66326: 29.1.50; There should be a way to promote warnings to errors
From: |
Spencer Baugh |
Subject: |
bug#66326: 29.1.50; There should be a way to promote warnings to errors |
Date: |
Wed, 04 Oct 2023 08:20:49 -0400 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
Eli Zaretskii <eliz@gnu.org> writes:
> And in this case, duplication is a lesser evil than reordering of
> logic, since the chances of unintended consequences would be lower in
> the former case.
OK, how about this version then?
>From 11fdd0cdd2d0da28848ad42d8087ebb1a4e05430 Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh@janestreet.com>
Date: Tue, 3 Oct 2023 14:36:25 -0400
Subject: [PATCH] Support turning warnings into errors
Support turning warnings into errors in a user-configurable way. This
is especially useful in combination with (setq debug-on-error t) to
drop to the debugger when a warning happens.
* lisp/emacs-lisp/warnings.el (warning-suppress-types): Improve
docstring.
(warning-to-error-types, warning-to-error): Add.
(display-warning): Check warning-to-error-types.
---
lisp/emacs-lisp/warnings.el | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el
index 31b840d6c83..0e8464c4455 100644
--- a/lisp/emacs-lisp/warnings.el
+++ b/lisp/emacs-lisp/warnings.el
@@ -114,11 +114,20 @@ warning-suppress-types
The element must match an initial segment of the list TYPE.
Thus, (foo bar) as an element matches (foo bar)
or (foo bar ANYTHING...) as TYPE.
+An empty list as an element matches any TYPE.
If TYPE is a symbol FOO, that is equivalent to the list (FOO),
so only the element (FOO) will match it.
See also `warning-suppress-log-types'."
:type '(repeat (repeat symbol))
:version "22.1")
+
+(defcustom warning-to-error-types nil
+ "List of warning types to signal as an error instead.
+If any element of this list matches the TYPE argument to `display-warning',
+`display-warning' signals an error instead of logging a warning.
+See `warning-suppress-types' for the format of elements in this list."
+ :type '(repeat (repeat symbol))
+ :version "30.1")
;; The autoload cookie is so that programs can bind this variable
;; safely, testing the existing value, before they call one of the
@@ -230,6 +239,14 @@ warnings-suppress
(cons (list type) warning-suppress-types)))
(_ (message "Exiting"))))
+(defun warning-to-error (type message level)
+ (unless level
+ (setq level :warning))
+ (let* ((typename (if (consp type) (car type) type))
+ (level-info (assq level warning-levels)))
+ (error (nth 1 level-info)
+ (format warning-type-format typename))))
+
;;;###autoload
(defun display-warning (type message &optional level buffer-name)
"Display a warning message, MESSAGE.
@@ -263,6 +280,11 @@ display-warning
disable automatic display of the warning or disable the warning
entirely by setting `warning-suppress-types' or
`warning-suppress-log-types' on their behalf."
+ (when (and (> (warning-numeric-level (or level :warning))
+ (warning-numeric-level warning-minimum-log-level))
+ (not (warning-suppress-p type warning-suppress-log-types))
+ (warning-suppress-p type warning-to-error-types))
+ (warning-to-error type message level))
(if (not (or after-init-time noninteractive (daemonp)))
;; Ensure warnings that happen early in the startup sequence
;; are visible when startup completes (bug#20792).
--
2.39.3
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/03
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/03
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/03
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, sbaugh, 2023/10/03
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/04
- bug#66326: 29.1.50; There should be a way to promote warnings to errors,
Spencer Baugh <=
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/14
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, sbaugh, 2023/10/14
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/15
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/16
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/19
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/19
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/19
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/19
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Eli Zaretskii, 2023/10/19
- bug#66326: 29.1.50; There should be a way to promote warnings to errors, Spencer Baugh, 2023/10/19