blob: 26e9b72f402cd5213fd73050c7933ba74f3b162b (
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
(require 'fcuny-common)
(use-package flycheck
:ensure t
:custom ((flycheck-idle-change-delay 2)
(flycheck-emacs-lisp-load-path 'inherit))
:config
(progn
(use-package flycheck-pos-tip
:ensure t
:config
(flycheck-pos-tip-mode))
(add-hook 'prog-mode-hook 'flycheck-mode)
(setq-default flycheck-disabled-checkers '(emacs-lisp-checkdoc))
(setq flycheck-highlighting-mode 'lines)
(setq flycheck-check-syntax-automatically '(mode-enabled save))
(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 fcuny/check-source-predicate-python-p
:modes (python-mode))
(add-to-list 'flycheck-checkers 'source-check)
(defface fc/flycheck-error
'((t (:foreground "#f40000")))
"Face for flycheck error feedback in the modeline."
:group 'fc/flycheck)
(defface fc/flycheck-warning
'((t (:foreground "#724a09")))
"Face for flycheck warning feedback in the modeline."
:group 'fc/flycheck)
;;; errors are reported like this:
;;; E241:ERROR <file name>:<line> <message>
(defface fc/flycheck-info
'((t (:foreground "#19baff")))
"Face for flycheck info feedback in the modeline."
:group 'fc/flycheck)
(defface fc/flycheck-success
'((t (:foreground "#2cb250")))
"Face for flycheck success feedback in the modeline."
:group 'fc/flycheck)
(setq flycheck-mode-line
'(:eval
(pcase flycheck-last-status-change
(`running (propertize " ⟲ Running" 'face 'fc/flycheck-info))
(`errored (propertize " ⚠ Error" 'face 'fc/flycheck-error))
(`no-checker (propertize " ⚠ No Checker" 'face 'fc/flycheck-info))
(`suspicious (propertize " ⚠ Suspicious" 'face 'fc/flycheck-warning))
(`not-checked (propertize " ✖ Disabled" 'face 'fc/flycheck-info))
(`interrupted (propertize " ⚠ Interrupted" 'face 'fc/flycheck-warning))
(`finished
(let* ((error-counts (flycheck-count-errors flycheck-current-errors))
(no-errors (cdr (assq 'error error-counts)))
(no-warnings (cdr (assq 'warning error-counts)))
(face (cond (no-errors 'fc/flycheck-error)
(no-warnings 'fc/flycheck-warning)
(t 'fc/flycheck-success))))
(propertize (if (or no-errors no-warnings) (format " ✘ %s/%s Issues" (or no-errors 0) (or no-warnings 0)) " ✔ No Issues") 'face face))))))))
(provide 'fcuny-flycheck)
|