From 01516b21e71862f3496e3a1f75bb86d436afaa3b Mon Sep 17 00:00:00 2001 From: Eric Abrahamsen Date: Sat, 15 May 2021 09:36:05 -0700 Subject: [PATCH] Provide a 'silent option for native-comp-asyncreport-warnings-errors * lisp/emacs-lisp/comp.el (native-comp-async-report-warnings-errors): Set to 'silent to log warnings, but not pop up the *Warnings* buffer. * lisp/emacs-lisp/comp.el (comp-accept-and-process-async-output): Check value. --- lisp/emacs-lisp/comp.el | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 3e7f17ef1c..8fa9dee1ed 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -148,8 +148,13 @@ native-comp-async-report-warnings-errors environment, it is more sensitive to such omissions, and might be unable to compile such Lisp source files correctly. -Set this variable to nil if these warnings annoy you." - :type 'boolean +Set this variable to nil to suppress warnings altogether, or to +the symbol `quiet' to log warnings but not pop up the *Warnings* +buffer." + :type '(choice + (const :tag "Do not report warnings" nil) + (const :tag "Report and display warnings" t) + (const :tag "Report but do not display warnings" 'silent)) :version "28.1") (defcustom native-comp-async-query-on-exit nil @@ -3874,14 +3879,18 @@ comp-last-scanned-async-output (defun comp-accept-and-process-async-output (process) "Accept PROCESS output and check for diagnostic messages." (if native-comp-async-report-warnings-errors - (with-current-buffer (process-buffer process) - (save-excursion - (accept-process-output process) - (goto-char (or comp-last-scanned-async-output (point-min))) - (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$" - nil t) - (display-warning 'comp (match-string 0))) - (setq comp-last-scanned-async-output (point-max)))) + (let ((warning-suppress-types + (if (eq native-comp-async-report-warnings-errors 'silent) + (cons '(comp) warning-suppress-types) + warning-suppress-types))) + (with-current-buffer (process-buffer process) + (save-excursion + (accept-process-output process) + (goto-char (or comp-last-scanned-async-output (point-min))) + (while (re-search-forward "^.*?\\(?:Error\\|Warning\\): .*$" + nil t) + (display-warning 'comp (match-string 0))) + (setq comp-last-scanned-async-output (point-max))))) (accept-process-output process))) (defun comp-run-async-workers () -- 2.31.1