Package: emacs;
Reported by: Noam Postavsky <npostavs <at> gmail.com>
Date: Fri, 9 Mar 2018 12:32:01 UTC
Severity: wishlist
Tags: fixed
Fixed in version 28.1
Done: Lars Ingebrigtsen <larsi <at> gnus.org>
Bug is archived. No further changes may be made.
View this message in rfc822 format
From: Robert Pluim <rpluim <at> gmail.com> To: Eli Zaretskii <eliz <at> gnu.org> Cc: 30757 <at> debbugs.gnu.org, npostavs <at> gmail.com Subject: bug#30757: Better manipulation (suppressing, examining type) of warnings from *Warnings* buffer Date: Fri, 09 Mar 2018 17:54:23 +0100
[Message part 1 (text/plain, inline)]
Eli Zaretskii <eliz <at> gnu.org> writes: >> From: Robert Pluim <rpluim <at> gmail.com> >> Date: Fri, 09 Mar 2018 16:53:26 +0100 >> Cc: 30757 <at> debbugs.gnu.org >> >> Here's what I've got so far. Suggestions welcome for wording, style >> changes, etc. > > Thanks. > >> --- a/etc/NEWS >> +++ b/etc/NEWS >> @@ -71,6 +71,12 @@ moved to the early init file (see above). >> >> * Changes in Emacs 27.1 >> >> ++++ > > "+++" means this change was documented in the manual(s), but this > change wasn't, AFAIU. Shkuld this be documented in the ELisp manual? > etc/NEWS says: +++ indicates that all necessary documentation updates are complete. (This means all relevant manuals in doc/ AND lisp doc-strings.) I'd looked through the manuals and couldn't see anywhere where I thought it should be documented, hence I only changed the doc-string. We can go for '---' in that case. >> +** Warning types can now be disabled from the warning buffer. >> +For each warning 'display-warning' now adds buttons to the buffer it >> +uses to allow permanent suppression of the warning popup or of the >> +warning itself. > > This entry should be made more clear. "Warning types" is never > explained, the reference to 'display-warning' is confusing (this is a > user-level feature, so why mention the function which is involved?), > it is unclear what buffer is alluded to by "the buffer it uses", and > the difference between "warning popup" and "warning itself" is left > unexplained. I've rewritten it. See attached. >> +(define-button-type 'warning-suppress-warning >> + 'action #'warning-suppress-action >> + 'help-echo "mouse-2, RET: Permanently disable popping up this warning") >> +(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: Never generate this warning") > > Likewise here: the difference between "disable popping up" and "never > generate" is unclear. maybe a different wording will clarify that, > but I cannot suggest one because frankly I don't understand well > enough what each one does. Yes. I'm stuck between being precise but verbose, and more general and succinct, and expressing the permanence of the resulting change. I've make another attempt, although I'm still not entirely happy with it, especially since the button texts are now quite long (I thought about using the verb 'hide', but that's not accurate either). Robert
[0001-Show-log-suppression-buttons-in-display-warning-buff.patch (text/x-diff, inline)]
From ba62307cfb0633637cc1fa9351c942cf79f34b90 Mon Sep 17 00:00:00 2001 From: Robert Pluim <rpluim <at> gmail.com> Date: Fri, 9 Mar 2018 16:41:36 +0100 Subject: [PATCH] Show log suppression buttons in display-warning buffer * 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. * etc/NEWS: Describe 'display-warning' button change. --- etc/NEWS | 10 +++++++++- lisp/emacs-lisp/warnings.el | 26 +++++++++++++++++++++++++- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 14926ba2e3..a36967d473 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -69,7 +69,15 @@ in your init file. However, if your init file changes the values of moved to the early init file (see above). -* Changes in Emacs 27.1 +* Changes in Emacs 27. + +--- +** Specific warnings can now be disabled from the warning buffer. +When a warning is displayed to the user, the resulting buffer now has +buttons which allow making permanent changes to the treatment of that +warning. Automatic showing of the warning can be disabled (although +it is still generated), or generation of the warning can be disabled +entirely. --- ** The new option 'tooltip-resize-echo-area' avoids truncating tooltip text diff --git a/lisp/emacs-lisp/warnings.el b/lisp/emacs-lisp/warnings.el index 489611d4d1..245cd3f39a 100644 --- a/lisp/emacs-lisp/warnings.el +++ b/lisp/emacs-lisp/warnings.el @@ -197,6 +197,21 @@ warning-suppress-p ;; 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: Never generate this warning again") +(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. @@ -223,7 +238,12 @@ display-warning See the `warnings' custom group for user customization features. See also `warning-series', `warning-prefix-function' and -`warning-fill-prefix' for additional programming features." +`warning-fill-prefix' for additional 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). @@ -264,6 +284,10 @@ display-warning (insert (format (nth 1 level-info) (format warning-type-format typename)) message) + (insert " ") + (insert-button "Disable showing automatically" 'type 'warning-suppress-warning 'warning-type type) + (insert " ") + (insert-button "Never generate" 'type 'warning-suppress-log-warning 'warning-type type) (newline) (when (and warning-fill-prefix (not (string-match "\n" message))) (let ((fill-prefix warning-fill-prefix) -- 2.16.1.72.g5be1f00a9
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.