2009-08-11 14 views

Respuesta

34

Bueno, flymake solo está buscando un comando ejecutable que sea líneas de salida en un formato predefinido. Usted puede hacer un script de shell, por ejemplo, que va a llamar sucesivamente todas las fichas que desee ...

También debe asegurarse de que termina la secuencia de comandos mediante la devolución de nivel de error 0. Así que este es un ejemplo:

Este es lo que he hecho en un guión "pycheckers":

#!/bin/bash 

epylint "$1" 2>/dev/null 
pyflakes "$1" 
pep8 --ignore=E221,E701,E202 --repeat "$1" 
true 

Para los Emacs Lisp parte:

(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))) 
+0

¡Funciona! ¡Gracias! – dixon

+0

Aunque puedo ver los errores ocultos, emacs 23 no muestra qué es realmente el error. ¿Puede usted ayudar? – RichieHH

+0

ver manual de flymake bajo emacs. Lo que necesita es estar en la línea y: M-x flymake-display-err-menu-for-current-line. Puedes vincular esto a una clave. – vaab

0

Es posible que desee comprobar la secuencia de comandos Lisp aquí (http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html), lo que debería ayudar a comprobar PEP8 a la pep8.py. No uso pyflakes o pylint, pero imagino que podrías ajustar esto fácilmente para trabajar con otras damas.

+0

Trato uso pep8.py. de vaab El mismo problema: no puedo corregir fusionar dos configuraciones. Trabaja solo uno: pyflakes o pep8.py. – dixon

7

Por lo general, uno puede permitir flymake el modo en el python-mode-hook. Lamentablemente, esto causa problemas con elementos como py-execute-buffer, que crean búferes temporales que invocan el gancho y luego hacen que el modo flymake se cague debido a la falta de "archivo real". La solución es modificar las condiciones en las que se agregan el gancho: - por ejemplo la mina 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) 
     )) 
+0

es posible que desee agregar '(local-set-key [f4] 'flymake-display-err-menu-for-current-line)' también –

0

versión de Windows lotes de pychechker

@echo on 
pylint %1 
pep8 --ignore=E221,E701,E202 --repeat %1 
pyflakes %1 
Cuestiones relacionadas