Ответ от saltycrane работал отлично для меня. Благодаря! Решение дает очень короткие сообщения об ошибках, как он указывает. Я улучшил сообщения об ошибках, чтобы быть более подробными и больше походить на выходные данные потока cli.
Заметка для новых пользователей, которые хотят использовать этот скрипт, чтобы убедиться, что вы отредактировали его, чтобы использовать правильный режим в flycheck-define-checker
внизу. Я использую это в js2-mode
, а saltycrane использует react-mode
. Отредактируйте его, чтобы использовать все, что вы используете.
(require 'f)
(require 'json)
(require 'flycheck)
(defun flycheck-parse-flow (output checker buffer)
(let ((json-array-type 'list))
(let ((o (json-read-from-string output)))
(mapcar #'(lambda (errp)
(let ((err (cadr (assoc 'message errp)))
(err2 (cadr (cdr (assoc 'message errp)))))
(flycheck-error-new
:line (cdr (assoc 'line err))
:column (cdr (assoc 'start err))
:level 'error
:message (concat (cdr (assoc 'descr err)) ". " (cdr (assoc 'descr err2)))
:filename (f-relative
(cdr (assoc 'path err))
(f-dirname (file-truename
(buffer-file-name))))
:buffer buffer
:checker checker)))
(cdr (assoc 'errors o))))))
(flycheck-define-checker javascript-flow
"Static type checking using Flow."
:command ("flow" "--json" source-original)
:error-parser flycheck-parse-flow
:modes js2-mode)
(add-to-list 'flycheck-checkers 'javascript-flow)