pyflakes.vim 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. "============================================================================
  2. "File: pyflakes.vim
  3. "Description: Syntax checking plugin for syntastic.vim
  4. "Authors: Martin Grenfell <martin.grenfell@gmail.com>
  5. " kstep <me@kstep.me>
  6. " Parantapa Bhattacharya <parantapa@gmail.com>
  7. "
  8. "============================================================================
  9. if exists('g:loaded_syntastic_python_pyflakes_checker')
  10. finish
  11. endif
  12. let g:loaded_syntastic_python_pyflakes_checker = 1
  13. let s:save_cpo = &cpo
  14. set cpo&vim
  15. function! SyntaxCheckers_python_pyflakes_GetHighlightRegex(i)
  16. if stridx(a:i['text'], 'is assigned to but never used') >= 0
  17. \ || stridx(a:i['text'], 'imported but unused') >= 0
  18. \ || stridx(a:i['text'], 'undefined name') >= 0
  19. \ || stridx(a:i['text'], 'redefinition of') >= 0
  20. \ || stridx(a:i['text'], 'referenced before assignment') >= 0
  21. \ || stridx(a:i['text'], 'duplicate argument') >= 0
  22. \ || stridx(a:i['text'], 'after other statements') >= 0
  23. \ || stridx(a:i['text'], 'shadowed by loop variable') >= 0
  24. " fun with Python's %r: try "..." first, then '...'
  25. let term = matchstr(a:i['text'], '\m^.\{-}"\zs.\{-1,}\ze"')
  26. if term !=# ''
  27. return '\V\<' . escape(term, '\') . '\>'
  28. endif
  29. let term = matchstr(a:i['text'], '\m^.\{-}''\zs.\{-1,}\ze''')
  30. if term !=# ''
  31. return '\V\<' . escape(term, '\') . '\>'
  32. endif
  33. endif
  34. return ''
  35. endfunction
  36. function! SyntaxCheckers_python_pyflakes_GetLocList() dict
  37. let makeprg = self.makeprgBuild({})
  38. let errorformat =
  39. \ '%E%f:%l: could not compile,'.
  40. \ '%-Z%p^,'.
  41. \ '%E%f:%l:%c: %m,'.
  42. \ '%E%f:%l: %m,'.
  43. \ '%-G%.%#'
  44. let env = syntastic#util#isRunningWindows() ? {} : { 'TERM': 'dumb' }
  45. let loclist = SyntasticMake({
  46. \ 'makeprg': makeprg,
  47. \ 'errorformat': errorformat,
  48. \ 'env': env,
  49. \ 'defaults': {'text': 'Syntax error'} })
  50. for e in loclist
  51. let e['vcol'] = 0
  52. endfor
  53. return loclist
  54. endfunction
  55. call g:SyntasticRegistry.CreateAndRegisterChecker({
  56. \ 'filetype': 'python',
  57. \ 'name': 'pyflakes'})
  58. let &cpo = s:save_cpo
  59. unlet s:save_cpo
  60. " vim: set sw=4 sts=4 et fdm=marker: