Function: php-ts-mode-flymake-php
php-ts-mode-flymake-php is a byte-compiled function defined in
php-ts-mode.el.gz.
Signature
(php-ts-mode-flymake-php REPORT-FN &rest ARGS)
Documentation
PHP backend for Flymake.
Calls REPORT-FN directly.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/php-ts-mode.el.gz
;; TODO: add phpmd and phpcs
(defun php-ts-mode-flymake-php (report-fn &rest _args)
"PHP backend for Flymake.
Calls REPORT-FN directly."
(when (process-live-p php-ts-mode--flymake-process)
(kill-process php-ts-mode--flymake-process))
(let ((source (current-buffer))
(diagnostics-pattern (eval-when-compile
(rx bol (? "PHP ") ;; every diagnostic line start with PHP
(group (or "Fatal" "Parse")) ;; 1: type
" error:" (+ (syntax whitespace))
(group (+? nonl)) ;; 2: msg
" in " (group (+? nonl)) ;; 3: file
" on line " (group (+ num)) ;; 4: line
eol))))
(save-restriction
(widen)
(setq php-ts-mode--flymake-process
(make-process
:name "php-ts-mode-flymake"
:noquery t
:connection-type 'pipe
:buffer (generate-new-buffer " *php-ts-mode-flymake*")
:command `(,(php-ts-mode--executable)
"-l" "-d" "display_errors=0")
:sentinel
(lambda (proc _event)
(when (eq 'exit (process-status proc))
(unwind-protect
(if (with-current-buffer source
(eq proc php-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* ((beg
(car (flymake-diag-region
source
(string-to-number (match-string 4)))))
(end
(cdr (flymake-diag-region
source
(string-to-number (match-string 4)))))
(msg (match-string 2))
(type :error))
(push (flymake-make-diagnostic
source beg end type msg)
diags)))
(funcall report-fn diags)))
(flymake-log :warning "Canceling obsolete check %s" proc))
(kill-buffer (process-buffer proc)))))))
(process-send-region php-ts-mode--flymake-process (point-min) (point-max))
(process-send-eof php-ts-mode--flymake-process))))