Como posso usar o modo Emacs Flymake para python com pyflakes e pylint código de verificação?
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?
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