如何在pyflakes和pylint检查代码中使用针对python的Emacs Flymake模式?

如何在pyflakes和pylint检查代码中使用针对python的Emacs Flymake模式?,python,emacs,pylint,pep8,pyflakes,Python,Emacs,Pylint,Pep8,Pyflakes,为了在python模式下检查代码,我使用flymake和 此外,我还希望使用pylint检查代码样式(pep8)(使用pyflakes在同一页面上进行描述) 这种解决方案有效。 但我无法将flymake配置为与pyflakes和pylint一起使用。 我该怎么做呢?您可能想在这里查看Lisp脚本(),这将有助于检查PEP8 a la PEP8.py。我不使用pyflakes或pylint,但我想您可以轻松地调整它以与其他跳棋一起工作 嗯,flymake只是在寻找一个可执行命令,它以预定义的格式输

为了在python模式下检查代码,我使用flymake和

此外,我还希望使用pylint检查代码样式(pep8)(使用pyflakes在同一页面上进行描述)

这种解决方案有效。 但我无法将flymake配置为与pyflakes和pylint一起使用。
我该怎么做呢?

您可能想在这里查看Lisp脚本(),这将有助于检查PEP8 a la PEP8.py。我不使用pyflakes或pylint,但我想您可以轻松地调整它以与其他跳棋一起工作

嗯,flymake只是在寻找一个可执行命令,它以预定义的格式输出行。例如,您可以创建一个shell脚本,该脚本将依次调用您想要的所有checker

您还必须确保脚本以返回errorlevel 0结束。这是一个例子:

这就是我在“pycheckers”脚本中所做的:

#/bin/bash
epylint“$1”2>/dev/null
pyflakes“$1”
pep8——忽略=E221、E701、E202——重复“$1”
真的
对于emacs 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)))

通常可以在python模式挂钩中启用flymake模式。不幸的是,这会导致诸如pyexecutebuffer之类的问题,pyexecutebuffer会创建临时缓冲区来调用钩子,然后由于缺少“真正的文件”,导致flymake模式打嗝。解决方案是修改添加挂钩的条件:-例如,我的是:

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

vaab的Windows批处理版本
pychechker

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

我试着用pep8.py。同样的问题-我无法更正合并两个配置。只工作一次-pyflakes或pep8.py。虽然我可以看到显示的错误,但emacs 23没有显示错误的实际内容。您能帮忙吗?请参阅emacs下的flymake手册。您需要的是在线和:M-x flymake显示当前行的错误菜单。您可以将其绑定到一个键。最好的方法是使用flymake光标。需要点击按键或鼠标悬停来查看已经格式化的错误行上的错误是相当愚蠢的。flymake光标在状态栏中回显错误。我目前的设置工作非常出色:-我写了一篇关于这个主题的博客文章。为不同语言(python、php、javascript)提供了多个检查程序示例@dustin确保
pycheckers
二进制文件是可执行的,并在emacs脚本中指定它的完整绝对路径,或者更简单一些,确保
pycheckers
位于
$path
中列出的目录之一。每次更改文件时都会调用它。有关更多信息,请检查您可能希望添加
(本地设置键[f4]'flymake显示当前行的错误菜单)
以及我可以设置不同于
f2
f3