Add a 'silent option for native-comp-async-report-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.
This commit is contained in:
Eric Abrahamsen 2021-05-15 09:36:05 -07:00
parent 0212fb180a
commit e761e12498

View file

@ -148,8 +148,13 @@ As asynchronous native compilation always starts from a pristine
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 `silent' 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 @@ processes from `comp-async-compilations'"
(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 ()