diff options
Diffstat (limited to '')
-rw-r--r-- | emacs.d/custom/fcuny-flycheck.el | 67 |
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) |