Como posso usar o modo Emacs Flymake para python com pyflakes e pylint código de verificação?

StackOverflow https://stackoverflow.com/questions/1259873

Pergunta

Para verificar código no modo de python Eu uso flymake com pyflakes

Também quero estilo do código de verificação (pep8) com pylint (descrição na mesma página com pyflakes)

Esta soluções trabalho. Mas eu não posso flymake configure para trabalhar com pyflakes e pylint juntos. Como posso fazê-lo?

Foi útil?

Solução

Bem, flymake está apenas à procura de linhas de saída de um comando executável isso é em um formato predefinido. Você pode fazer um script shell por exemplo, que vai chamar sucessivamente todas as peças que você quer ...

Você também deve certificar-se de que suas extremidades roteiro de retornar errorlevel 0. Portanto, este é um exemplo:

Este é o que eu fiz em um script "pycheckers":

#!/bin/bash

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

Para os 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)))

Outras dicas

Normalmente, pode-se ativar o modo flymake na python-mode-hook. Infelizmente que causa problemas com coisas como py-executá-tampão que criam buffers temporários que invocam o gancho e depois causa o modo flymake a soluçar por causa da falta de "arquivo real". A solução é modificar as condições em que você adicionar o gancho: - por exemplo a minha é:

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

Você pode querer verificar para fora o script Lisp aqui ( http://charlie137-2.blogspot.com/2009/08/check-python-coding-style-on-fly-with.html ), que deve ajudar com verificação PEP8 a la pep8.py. Não uso pyflakes ou pylint, mas eu imagino que você poderia facilmente ajustar isso para trabalhar com outras damas.

Windows versão lote de pychechker de vaab

@echo on
pylint %1
pep8 --ignore=E221,E701,E202 --repeat %1
pyflakes %1
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top