2009-08-11 6 views
22

私はpyflakespyflakesとpylintのチェックコードでPythonにEmacs Flymakeモードを使用するにはどうすればいいですか? Pythonのモードでコードをチェックするための

でflymakeを使用また、私はこのソリューションの作業pylint(pyflakesと同じページに記述)

でコードスタイル(pep8)をチェックします。 しかし、私はpyflakesとpylintを一緒に使ってflymakeを設定することはできません。 どうすればいいですか?

答えて

34

まあ、flymakeは、出力行をあらかじめ定義された形式で出力する実行可能なコマンドを探しているだけです。あなたはまた、あなたのスクリプトがエラーレベル0を返すことによって終了することを確認する必要があり...

を連続的にしたいすべてのチェッカーを呼び出します例えばシェルスクリプトを作ることができるので、これは一例です:

です私が "pycheckers" スクリプトでやった:Emacs用

#!/bin/bash 

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

は一部を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))) 
+0

それは動作します!ありがとう! – dixon

+0

エラーが発生するのを見ることができますが、emacs 23はエラーが実際に何であるか表示していません。手伝ってくれますか? – RichieHH

+0

emacsの下でflymakeのマニュアルを参照してください。あなたが必要とするものは、ライン上にあり、M-x flymake-display-err-menu-for-current-lineです。これをキーにバインドすることができます。 – vaab

0

ここでLispスクリプト(http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html)をチェックして、PEP8 a la pep8.pyのチェックに役立てることができます。私はpyflakesやpylintを使用しませんが、他のチェッカーと一緒に使うためにこれを簡単に調整できると思います。

+0

私はpep8.py.を使用してみてください同じ問題 - 私は2つの設定をマージすることはできません。 1つだけ作業する - pyflakesまたはpep8.py。 – dixon

7

通常1のpython-モードフックでflymakeモードを有効にすることができます。残念ながら、py-execute-bufferなどのフックを起動する一時バッファを作成し、「実際のファイル」がないためにフライメイクモードが正常に動作しないなどの問題が発生します。解決策は、あなたがフックを追加条件を変更することである: - 例えば鉱山がある:

(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

'(local-set-key [f4] 'flymake-display-err-menu-for-current-line)'を追加することもできます –

0

vaabののWindowsバッチバージョンpychechker

@echo on 
pylint %1 
pep8 --ignore=E221,E701,E202 --repeat %1 
pyflakes %1 
関連する問題