2009-08-11 24 views

risposta

34

Beh, flymake sta cercando un comando eseguibile che restituisca le righe di output in un formato predefinito. È possibile effettuare uno script di shell per esempio che chiamerà in successione tutte le pedine che si desidera ...

È inoltre necessario assicurarsi che lo script si conclude con il ritorno errorlevel 0. Quindi questo è un esempio:

Questo è quello che ho fatto in uno script "pycheckers":

#!/bin/bash 

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

Per i 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

Funziona! Grazie! – dixon

+0

Mentre riesco a visualizzare gli errori, emacs 23 non visualizza ciò che l'errore è effettivamente. Puoi aiutare? – RichieHH

+0

vedere il manuale di flymake sotto emacs. Quello di cui hai bisogno è essere in linea e: M-x flymake-display-err-menu-per-corrente-line. È possibile associarlo a una chiave. – vaab

7

di solito si può attivare la modalità flymake in python-mode-hook. Sfortunatamente questo causa problemi con cose come py-execute-buffer che creano buffer temporanei che invocano l'hook e quindi causano la modalità flymake a causa della mancanza di "file reale". La soluzione è quella di modificare le condizioni in cui si aggiunge il gancio: - per esempio il mio è:

(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

potresti voler aggiungere '(local-set-key [f4] 'flymake-display-err-menu-per-current-line)' pure –

0

versione batch di Windows di pychechker

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