2009-08-11 23 views

回答

34

那么,flymake只是寻找一个可执行的命令输出预定义格式的行。

这就是:你可以因此,这是一个例子返回错误级别0做一个shell脚本,例如,将先后调用所有你想要的跳棋......

您还必须确保您的脚本结束我已经在 “pycheckers” 脚本来完成:

#!/bin/bash 

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

有关的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))) 
+0

它的工作!谢谢! – dixon 2009-09-09 10:49:43

+0

虽然我可以看到错误,emacs 23并没有显示错误实际是什么。你能帮我吗? – RichieHH 2009-10-22 01:41:11

+0

参见emacs下的flymake手册。你需要的是在线,并且:M-x flymake-display-err-menu-for-current-line。你可以将它绑定到一个键。 – vaab 2009-10-24 17:59:08

7

通常可以使flymake在Python模式挂机模式。不幸的是,这会导致像py-execute-buffer这样的问题,这些问题会创建临时缓冲区来调用挂钩,然后由于缺少“真实文件”而导致flymake模式打嗝。解决的办法是修改在其中添加挂钩的条件: - e.g矿是:

(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)'' – 2013-04-16 13:01:43

0

vaab的pychechker

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