summary refs log tree commit diff
path: root/emacs.d/core/core-flycheck.el
diff options
context:
space:
mode:
Diffstat (limited to 'emacs.d/core/core-flycheck.el')
-rw-r--r--emacs.d/core/core-flycheck.el33
1 files changed, 33 insertions, 0 deletions
diff --git a/emacs.d/core/core-flycheck.el b/emacs.d/core/core-flycheck.el
new file mode 100644
index 0000000..9c64bb1
--- /dev/null
+++ b/emacs.d/core/core-flycheck.el
@@ -0,0 +1,33 @@
+(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
+    (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 (1+ nonl) ":ERROR" (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)