2009-08-11 17 views

Odpowiedz

34

Cóż, flymake szuka tylko polecenia wykonywalnego, które wyprowadza linie w predefiniowanym formacie. Można zrobić skrypt na przykład, że wezwie kolejno wszystkie pionki chcesz ...

Należy również upewnić się, że skrypt kończy powrocie ERRORLEVEL 0. Jest to więc przykład:

Jest co zrobiłem w "pycheckers" skryptu:

#!/bin/bash 

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

Dla emacs lisp udział:

(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

To działa! Dzięki! – dixon

+0

Podczas gdy widzę, że błędy są podnoszone, emacs 23 nie wyświetla, jaki błąd faktycznie jest. Możesz pomóc? – RichieHH

+0

zobacz instrukcję flymake pod emacs. Musisz być na linii i: M-x flymake-display-err-menu-for-current-line. Możesz powiązać to z kluczem. – vaab

7

Zazwyczaj można włączyć tryb flymake w python-mode-hook. Niestety, powoduje to problemy z takimi obiektami, jak bufor typu "py-execute", który tworzy tymczasowe bufory, które wywołują hak, a następnie powodują czkawkę w trybie flymake z powodu braku "prawdziwego pliku". Rozwiązaniem jest zmiana warunków gdzie dodasz Hak: - np kopalnia:

(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

możesz chcieć dodać '(local-set-key [f4] 'flymake-display-err-menu-for-current-line)' –

0

Windows wersja partia vaab za pychechker

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