flymakeライクなvimプラグインの続き(with pep8.py)

Reddit経由 で PEP8な形式に従っているかをチェックする pep8.pyというのがある と知った。

以前紹介したflymakeライク(quickfix)なvimプラグイン に組み込んで 使えるようにしてみた。ついでにquickfixのON/OFFのトグル設定とmakeに 使用するプログラムをpylint,pyflakes,pep8.pyの中で切り替えれるようにしてみた。

"" flyquickfixmake.vim (Modified to Python)
"" [Install] copy to $HOME/.vim/ftplugin/python/
"" [Require] pylint,pyflakes,pep8.py

function! FlyquickfixPrgSet(mode)
    if a:mode == 0
        """ setting for pylint
        setlocal makeprg=/usr/bin/pylint\ --rcfile=$HOME/.pylint\ -e\ %
        setlocal errorformat=%t:%l:%m
        echo "flymake prg: pylint"
    elseif a:mode == 1
        """ setting for pyflakes
        setlocal makeprg=/usr/local/bin/pyflakes\ %
        setlocal errorformat=%f:%l:%m
        echo "flymake prg: pyflakes"
    else
        """ setting for pep8.py
        setlocal makeprg=/usr/local/bin/pep8.py\ %
        setlocal errorformat=%f:%l:%c:%m
        echo "flymake prg: pep8.py"
    endif
endfunction

function! FlyquickfixToggleSet()
    if g:python_flyquickfixmake == 1
        au! BufWritePost
        echo "not-used flymake"
        let g:python_flyquickfixmake = 0
    else
        echo "used flymake"
        let g:python_flyquickfixmake = 1
        au BufWritePost *.py make
    endif
endfunction

if !exists("g:python_flyquickfixmake")
    let g:python_flyquickfixmake = 1
    call FlyquickfixPrgSet(8)
    "au BufWritePost *.py silent make
    au BufWritePost *.py make
endif

map fs :call FlyquickfixToggleSet()<CR>
map pl :call FlyquickfixPrgSet(0)<CR>
map pf :call FlyquickfixPrgSet(1)<CR>
map p8 :call FlyquickfixPrgSet(8)<CR>

http://www.hexacosa.net/hgrepos/my-dot-vim/file/2b0b8dadb0e1/ftplugin/python/flyquickfixmake.vim

pl  " pylintに切り替え
pf  " pyflakesに切り替え
p8  " pep8.pyに切り替え
fs  " quickfixのON/OFF

au BufWritePostを無効にするやり方を調べるのに一番時間がかかるという...

2009.11.04: タイトルを修正しました。(pep8.pyだけだとこのスクリプト自体がpep8.pyみたいに見えちゃうので。)