In comp.editors DJK <[EMAIL PROTECTED]> wrote:
> Does anybody know of any scripts to check python syntax when you type
> :make?

The problem I had doing this with Python was that the Python 
interpreter spits out errors in the opposite order from that in 
which I wanted to traverse them in vim's quickfix error list.  I 
wrote the following compiler file and helper script to work around 
this.  I don't use Python very often and haven't used in it a while, 
so this still isn't very polished, but you might find it useful 
anyway.  Note also that I did this on a Unix system.

------------------------- compiler/python.vim --------------------------
" Vim compiler file
" Compiler:     Python
" Maintainer:   Gary Johnson <[EMAIL PROTECTED]>
" Last Change:  2002-06-26 00:27:56

if exists("current_compiler")
    finish
endif
let current_compiler = "python"

setlocal makeprg=python\ %
setlocal shellpipe=2>&1\ \|\ ~/.vim/tools/efm_filter.py\ \|\ tee
" Note:  efm_filter.py could be rewritten to send its input to stdout
" and to write its output to the file given on the command line.  This
" way the user could see the familiar output from Python while the
" quickfix error file received the format the vim can understand.  E.g.,
"
"     setlocal shellpipe=2>&1\ \|\ ~/.vim/tools/efm_filter.py
"
" or
"
"     setlocal shellpipe=2>&1\ \|\ tee\ /dev/tty\ \|\ ~/.vim/tools/efm_filter.py

setlocal errorformat=\ \ File\ \"%f\"\\,\ line\ %l\\,\ in\ %*[^\\,]\\,\ %m
------------------------------------------------------------------------

------------------------- tools/efm_filter.py --------------------------
#!/usr/bin/env python

import sys
import string

errors = sys.stdin.readlines()

message = errors.pop()[:-1]
errors.reverse()

for error in errors:
    if string.find(error, '  File') == 0:
        print error[:-1] + ", " + message
        message = "Traceback"
------------------------------------------------------------------------

To use these, put them in the indicated directories under ~/.vim and 
execute ":compiler python".  Also see ":help compiler".

HTH,
Gary
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to