summaryrefslogtreecommitdiff
path: root/emacs.d/custom/fcuny-flycheck.el
diff options
context:
space:
mode:
authorFranck Cuny <fcuny@twitter.com>2019-02-16 14:10:22 -0800
committerFranck Cuny <fcuny@twitter.com>2019-02-16 14:10:22 -0800
commit67c2168998c829c8739a0a4f73ab9d6117d07f0a (patch)
treea4dcb9f8a99f527187b08e77aea85e632c6a1396 /emacs.d/custom/fcuny-flycheck.el
parent[emacs] Add a function to select and copy buffer. (diff)
downloademacs.d-67c2168998c829c8739a0a4f73ab9d6117d07f0a.tar.gz
[emacs] Split configuration in multiple files.
This is actually an easier thing to maintain.
Diffstat (limited to 'emacs.d/custom/fcuny-flycheck.el')
-rw-r--r--emacs.d/custom/fcuny-flycheck.el67
1 files changed, 67 insertions, 0 deletions
diff --git a/emacs.d/custom/fcuny-flycheck.el b/emacs.d/custom/fcuny-flycheck.el
new file mode 100644
index 0000000..26e9b72
--- /dev/null
+++ b/emacs.d/custom/fcuny-flycheck.el
@@ -0,0 +1,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)