Function: mhtml-ts-mode-flymake-mhtml
mhtml-ts-mode-flymake-mhtml is a byte-compiled function defined in
mhtml-ts-mode.el.gz.
Signature
(mhtml-ts-mode-flymake-mhtml REPORT-FN &rest ARGS)
Documentation
MHTML backend for Flymake.
Calls REPORT-FN directly. Requires tidy.
Source Code
;; Defined in /usr/src/emacs/lisp/textmodes/mhtml-ts-mode.el.gz
(defun mhtml-ts-mode-flymake-mhtml (report-fn &rest _args)
"MHTML backend for Flymake.
Calls REPORT-FN directly. Requires tidy."
(when (process-live-p mhtml-ts-mode--flymake-process)
(kill-process mhtml-ts-mode--flymake-process))
(let ((tidy (executable-find "tidy"))
(source (current-buffer))
(diagnostics-pattern (eval-when-compile
(rx bol
"line " (group (+ num)) ;; :1 line
" column " (group (+ num)) ;; :2 column
" - " (group (+? nonl)) ;; :3 type
": " (group (+? nonl)) ;; :4 msg
eol))))
(if (not tidy)
(error "Unable to find tidy command")
(save-restriction
(widen)
(setq mhtml-ts-mode--flymake-process
(make-process
:name "mhtml-ts-mode-flymake"
:noquery t
:connection-type 'pipe
:buffer (generate-new-buffer "*mhtml-ts-mode-flymake*")
:command `(,tidy "--gnu-emacs" "yes" "-e" "-q")
:sentinel
(lambda (proc _event)
(when (eq 'exit (process-status proc))
(unwind-protect
(if (with-current-buffer source
(eq proc mhtml-ts-mode--flymake-process))
(with-current-buffer (process-buffer proc)
(goto-char (point-min))
(let (diags)
(while (search-forward-regexp diagnostics-pattern nil t)
(let* ((pos
(flymake-diag-region
source
(string-to-number (match-string 1))
(string-to-number (match-string 2)))) ;; line and column
(type (cond ((equal (match-string 3) "Warning") :warning)
((equal (match-string 3) "Error") :error))) ;; type of message
(msg (match-string 4))) ;; message
(push (flymake-make-diagnostic source (car pos) (cdr pos) type msg)
diags)))
(funcall report-fn diags)))
(flymake-log :warning "Canceling obsolete check %s" proc))
(kill-buffer (process-buffer proc)))))))
(process-send-region mhtml-ts-mode--flymake-process (point-min) (point-max))
(process-send-eof mhtml-ts-mode--flymake-process)))))