# HG changeset patch # User Oleksandr Gavenko # Date 1455652347 -7200 # Node ID 131e20ea7dadad5f52bf5a7742b9332162c5a3aa # Parent 059cd8b7e3b34b4a125ffd1f6bee55480df314f2 My Python checkers mode. diff -r 059cd8b7e3b3 -r 131e20ea7dad .emacs-my --- 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