¿Cómo puedo usar el modo Emacs Flymake para python con pyflakes y el código de verificación de pylint?
pep8 (4)
Bueno, flymake solo está buscando un comando ejecutable que sea líneas de salida en un formato predefinido. Puede hacer un script de shell, por ejemplo, que llamará sucesivamente a todas las verificadoras que desee ...
También debe asegurarse de que su script termine devolviendo errorlevel 0. Así que este es un ejemplo:
Esto es lo que he hecho en un script "pycheckers":
#!/bin/bash
epylint "$1" 2>/dev/null
pyflakes "$1"
pep8 --ignore=E221,E701,E202 --repeat "$1"
true
Para la parte de emacs lisp:
(when (load "flymake" t)
(defun flymake-pyflakes-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
''flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "pycheckers" (list local-file))))
(add-to-list ''flymake-allowed-file-name-masks
''("//.py//'" flymake-pyflakes-init)))
Para verificar el código en modo python, uso flymake con pyflakes
También quiero verificar el estilo de código (pep8) con pylint (descripción en la misma página con pyflakes)
Estas soluciones funcionan. Pero no puedo configurar flymake para trabajar con pyflakes y pylint juntos. ¿Cómo puedo hacerlo?
Es posible que desee revisar el script Lisp aquí ( http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html ), que debería ayudar con la comprobación de PEP8 a la pep8.py. No uso pyflakes o pylint, pero imagino que podría ajustar esto fácilmente para trabajar con otras damas.
Por lo general, uno puede habilitar el modo flymake en el modo de enganche de python. Desafortunadamente, eso causa problemas con cosas como py-execute-buffer que crean búferes temporales que invocan el gancho y luego causan que el modo flymake tenga problemas debido a la falta de "archivo real". La solución es modificar las condiciones donde se agrega el gancho: por ejemplo, el mío es:
(add-hook ''python-mode-hook
(lambda ()
(unless (eq buffer-file-name nil) (flymake-mode 1)) ;dont invoke flymake on temporary buffers for the interpreter
(local-set-key [f2] ''flymake-goto-prev-error)
(local-set-key [f3] ''flymake-goto-next-error)
))
Versión por lotes de Windows del pychechker de pychechker
@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1