blob: ab3388784ed1c68047d95a23de2876e446dfda0b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
(use-package flycheck
:ensure t
:defer t
:preface (progn
(defun check-source-predicate ()
(and (executable-find "check.pex")
(buffer-file-name)
(string-match "src/source/.*\.py$" (buffer-file-name)))))
:init
(progn
(add-hook 'prog-mode-hook 'flycheck-mode)
(setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc)))
:config
(progn
(setq flycheck-mode-line
'(:eval
(pcase flycheck-last-status-change
(`not-checked nil)
(`no-checker (propertize " -" 'face 'warning))
(`running "")
(`errored (propertize " ✘" 'face 'error))
(`finished
(if flycheck-current-errors
(let* ((error-counts (flycheck-count-errors flycheck-current-errors))
(no-errors (cdr (assq 'error error-counts)))
(no-warnings (cdr (assq 'warning error-counts)))
(flycheck-face (cond (no-errors 'error)
(no-warnings 'warning))))
(propertize (format " [✗:%s/%s]" (or no-errors 0) (or no-warnings 0)) 'face flycheck-face))
(propertize " [✓]" 'face 'success)))
(`interrupted " -")
(`suspicious '(propertize " ?" 'face 'warning)))))
(flycheck-define-checker source-check
"A syntax checker for python source code in Source, using `check.pex'"
:command ("check.pex" source)
;;; errors are reported like this:
;;; E241:ERROR <file name>:<line> <message>
:error-patterns ((error line-start (id (1+ nonl)) ":ERROR" (1+ nonl) ":" line (message) line-end)
(warning line-start (id (1+ nonl)) ":WARNING" (1+ nonl) ":" line (message) line-end))
:predicate check-source-predicate
:modes (python-mode))
(add-to-list 'flycheck-checkers 'source-check)))
(use-package flycheck-pos-tip
:defer t
:init
(progn
(eval-after-load 'feature-flycheck
'(setq-default flycheck-display-errors-function #'flycheck-pos-tip-error-messages)))
:ensure t)
(provide 'core-flycheck)
|