2009-08-11 16 views

Antwort

34

Nun, flymake sucht nur nach einem ausführbaren Befehl, der Zeilen in einem vordefinierten Format ausgibt. Sie können ein Shell-Skript zum Beispiel machen, die nacheinander alle Kontrolleure nennen Sie wollen ...

Sie müssen auch sicherstellen, dass Ihr Skript endet mit der Rückkehr Errorlevel 0, so dass dies ein Beispiel ist:

Dies ist was ich in einer "pycheckers" Skript getan:

#!/bin/bash 

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

Für die emacs Teil lispeln:

(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

Es funktioniert! Vielen Dank! – dixon

+0

Während ich die Fehler hilited sehen kann, zeigt Emacs 23 nicht an, was der Fehler tatsächlich IST. Kannst du helfen? – RichieHH

+0

siehe Handbuch von flymake unter Emacs. Was Sie brauchen, ist auf der Linie zu sein und: M-x flymake-display-err-menu-für-aktuelle-Linie. Sie können dies an einen Schlüssel binden. – vaab

0

Vielleicht möchten Sie das Lisp-Skript hier (http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html), die bei der Überprüfung von PEP8 a la pep8.py helfen sollte. Ich benutze keine Pyflakes oder Pylints, aber ich kann mir vorstellen, dass Sie dies leicht anpassen können, um mit anderen Checkern zu arbeiten.

+0

Ich versuche Verwendung pep8.py. Das gleiche Problem - ich kann zwei Configs nicht zusammenführen. Arbeite nur einen - pyflakes oder pep8.py. – dixon

7

Normalerweise kann man flymake-Modus in dem python-mode-hook aktiviert. Unglücklicherweise verursacht das Probleme mit Dingen wie py-execute-buffer, die temporäre Puffer erzeugen, die den Hook aufrufen und dann den Flymake-Modus wegen des Mangels an "realer Datei" zum Schluckauf bringen. Die Lösung ist, die Bedingungen zu ändern, in dem Sie den Haken hinzufügen: - z Mine ist:

(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

können Sie '' local-set-key [f4] 'flymake-display-err-menu-für-aktuelle-line' auch hinzufügen –

0

Windows-Batch-Version von vaab der pychechker

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