1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-06 06:20:55 -08:00

Show log suppression buttons in display-warning buffer

* etc/NEWS: Describe 'display-warning' button change (bug#30757).
* lisp/emacs-lisp/warnings.el (warning-suppress-warning):
Define button.
(warning-suppress-action): New function.
(warning-suppress-log-warning): Define button.
(warning-suppress-log-action): New function.
(display-warning): Show buttons to allow permanent
modification of warning-suppress-types and
warning-suppress-log-types per warning.
This commit is contained in:
Robert Pluim 2020-09-04 06:28:21 +02:00 committed by Lars Ingebrigtsen
parent 7769cad1e3
commit 66d01012ba
2 changed files with 37 additions and 1 deletions

View file

@ -200,6 +200,21 @@ SUPPRESS-LIST is the list of kinds of warnings to suppress."
;; we return t.
some-match))
(define-button-type 'warning-suppress-warning
'action #'warning-suppress-action
'help-echo "mouse-2, RET: Don't display this warning automatically")
(defun warning-suppress-action (button)
(customize-save-variable 'warning-suppress-types
(cons (list (button-get button 'warning-type))
warning-suppress-types)))
(define-button-type 'warning-suppress-log-warning
'action #'warning-suppress-log-action
'help-echo "mouse-2, RET: Don't log this warning")
(defun warning-suppress-log-action (button)
(customize-save-variable 'warning-suppress-log-types
(cons (list (button-get button 'warning-type))
warning-suppress-types)))
;;;###autoload
(defun display-warning (type message &optional level buffer-name)
"Display a warning message, MESSAGE.
@ -227,7 +242,12 @@ See the `warnings' custom group for user customization features.
See also `warning-series', `warning-prefix-function',
`warning-fill-prefix', and `warning-fill-column' for additional
programming features."
programming features.
This will also display buttons allowing the user to permanently
disable automatic display of the warning or disable the warning
entirely by setting `warning-suppress-types' or
`warning-suppress-log-types' on their behalf."
(if (not (or after-init-time noninteractive (daemonp)))
;; Ensure warnings that happen early in the startup sequence
;; are visible when startup completes (bug#20792).
@ -272,6 +292,14 @@ programming features."
(insert (format (nth 1 level-info)
(format warning-type-format typename))
message)
(insert " ")
(insert-button "Disable showing"
'type 'warning-suppress-warning
'warning-type type)
(insert " ")
(insert-button "Disable logging"
'type 'warning-suppress-log-warning
'warning-type type)
(funcall newline)
(when (and warning-fill-prefix (not (string-match "\n" message)))
(let ((fill-prefix warning-fill-prefix)