.emacs-my
changeset 1344 131e20ea7dad
parent 1343 059cd8b7e3b3
child 1345 6fe0ba3b4dc4
--- a/.emacs-my	Tue Feb 16 14:24:05 2016 +0200
+++ b/.emacs-my	Tue Feb 16 21:52:27 2016 +0200
@@ -2855,6 +2855,49 @@
       (python-shell-send-region (point) (mark))))
   (define-key python-mode-map [?\C-c ?\C-h] 'my-python/send-paragraph))
 
+(defgroup my/python nil
+  "My Python extentions in Emacs."
+  :group 'python)
+
+(defvar my/python-pylint-command "pylint"
+  "Command to run pylint executable.")
+(defvar my/python-pylint-args "-f parseable"
+  "Arguments to pass to pylint executable.")
+
+(defvar my/python-pep8-command "pep8"
+  "Command to run pep8 executable.")
+(defvar my/python-pep8-args ""
+  "Arguments to pass to pep8 executable.")
+
+(defvar my/python-pyflakes-command "pyflakes"
+  "Command to run pyflakes executable.")
+(defvar my/python-pyflakes-args ""
+  "Arguments to pass to pyflakes executable.")
+
+(defvar my/python-checker-alist
+  '((pylint . (my/python-pylint-command my/python-pylint-args))
+    (pep8 . (my/python-pep8-command my/python-pep8-args))
+    (pyflakes . (my/python-pyflakes-command my/python-pyflakes-args)))
+  "Known Python source code checkers.")
+
+(defcustom my/python-default-checker 'pyflakes
+  "Default Python source code checker. See `my/python-checker-alist' for full alist."
+  :group 'my/python
+  :type (cons 'choice (mapcar (lambda (e) (cons 'const e)) my/python-checker-alist)))
+
+(defvar my/python-check-history nil)
+
+(defun my/python-check (&optional checker)
+  (interactive
+   (list
+    (completing-read "Select cheker: " (mapcar (lambda (e) (car e)) my/python-checker-alist) nil t (symbol-name my/python-default-checker) 'my/python-check-history)))
+  (let ( entry )
+    (unless (setq entry (cdr (assoc (intern-soft checker) my/python-checker-alist)))
+      (error "Unknown checker..."))
+    (compilation-start (format "%s %s %s" (symbol-value (car entry)) (symbol-value (cadr entry)) (shell-quote-argument (buffer-file-name))))))
+
+(my--eval-after-load python
+  (define-key python-mode-map [?\C-c ?\C-v] #'my/python-check))
 
 ;; For 3rd party python-mode.el.
 (my--eval-after-load python-mode