New checker for python: prospector.
This commit is contained in:
parent
77c125170a
commit
72a7cb3898
@ -76,6 +76,39 @@ function! syntastic#preprocess#perl(errors) " {{{2
|
||||
return syntastic#util#unique(out)
|
||||
endfunction " }}}2
|
||||
|
||||
function! syntastic#preprocess#prospector(errors) " {{{2
|
||||
let true = 1
|
||||
let false = 0
|
||||
let null = ''
|
||||
let errs = eval(join(a:errors, ''))
|
||||
|
||||
let out = []
|
||||
let warn_issued = 0
|
||||
if type(errs) == type({}) && has_key(errs, 'messages') && type(errs['messages']) == type([])
|
||||
for e in errs['messages']
|
||||
if type(e) == type({})
|
||||
try
|
||||
let msg =
|
||||
\ e['locaton']['path'] . ':' .
|
||||
\ e['location']['line'] . ':' .
|
||||
\ (e['location']['character'] + 1) . ': ' .
|
||||
\ e['code'] . ' ' .
|
||||
\ e['message'] . ' ' .
|
||||
\ '[' . e['source'] . ']'
|
||||
call add(out, msg)
|
||||
catch /\m^Vim\%((\a\+)\)\=:E716/
|
||||
if !warn_issued
|
||||
call add(out, '.:0:0: unknown error format')
|
||||
let warn_issued = 1
|
||||
endif
|
||||
endtry
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
|
||||
return out
|
||||
endfunction " }}}2
|
||||
|
||||
function! syntastic#preprocess#rparse(errors) " {{{2
|
||||
let errlist = copy(a:errors)
|
||||
|
||||
|
76
syntax_checkers/python/prospector.vim
Normal file
76
syntax_checkers/python/prospector.vim
Normal file
@ -0,0 +1,76 @@
|
||||
"============================================================================
|
||||
"File: prospector.vim
|
||||
"Description: Syntax checking plugin for syntastic.vim
|
||||
"Maintainer: LCD 47 <lcd047 at gmail dot com>
|
||||
"License: This program is free software. It comes without any warranty,
|
||||
" to the extent permitted by applicable law. You can redistribute
|
||||
" it and/or modify it under the terms of the Do What The Fuck You
|
||||
" Want To Public License, Version 2, as published by Sam Hocevar.
|
||||
" See http://sam.zoy.org/wtfpl/COPYING for more details.
|
||||
"
|
||||
"============================================================================
|
||||
|
||||
if exists("g:loaded_syntastic_python_prospector_checker")
|
||||
finish
|
||||
endif
|
||||
let g:loaded_syntastic_python_prospector_checker = 1
|
||||
|
||||
let s:save_cpo = &cpo
|
||||
set cpo&vim
|
||||
|
||||
function! SyntaxCheckers_python_prospector_GetLocList() dict
|
||||
let base = syntastic#util#var('prospector_base_dir')
|
||||
if base == ''
|
||||
let base = expand('%:p:h')
|
||||
let init = findfile('setup.py', base . ';')
|
||||
if init == ''
|
||||
let init = findfile('__init__.py', base . ';')
|
||||
endif
|
||||
if init != ''
|
||||
let base = fnamemodify(init, '%:p:h')
|
||||
endif
|
||||
endif
|
||||
|
||||
let makeprg = self.makeprgBuild({
|
||||
\ 'args': '--external-config merge',
|
||||
\ 'args_after': '--messages-only --absolute-paths --die-on-tool-error --output-format json',
|
||||
\ 'fname': syntastic#util#shescape(base) })
|
||||
|
||||
let errorformat = '%f:%l:%c: %m'
|
||||
|
||||
let env = syntastic#util#isRunningWindows() ? {} : { 'TERM': 'dumb' }
|
||||
|
||||
let loclist = SyntasticMake({
|
||||
\ 'makeprg': makeprg,
|
||||
\ 'errorformat': errorformat,
|
||||
\ 'env': env,
|
||||
\ 'preprocess': 'prospector',
|
||||
\ 'returns': [0, 1] })
|
||||
|
||||
for e in loclist
|
||||
if e['text'] =~# '\v\[%(dodgy|mccabe|pep8|pep257|pyroma)\]$'
|
||||
let e['subtype'] = 'Style'
|
||||
endif
|
||||
|
||||
if e['text'] =~# '\v\[pylint\]$'
|
||||
let e['type'] = e['text'] =~? '\m^[CRW]' ? 'W' : 'E'
|
||||
elseif e['text'] =~# '\v\[%(frosted|pep8)\]$'
|
||||
let e['type'] = e['text'] =~? '\m^W' ? 'W' : 'E'
|
||||
elseif e['text'] =~# '\v\[%(dodgy|pyroma|vulture)\]$'
|
||||
let e['type'] = 'W'
|
||||
else
|
||||
let e['type'] = 'E'
|
||||
endif
|
||||
endfor
|
||||
|
||||
return loclist
|
||||
endfunction
|
||||
|
||||
call g:SyntasticRegistry.CreateAndRegisterChecker({
|
||||
\ 'filetype': 'python',
|
||||
\ 'name': 'prospector'})
|
||||
|
||||
let &cpo = s:save_cpo
|
||||
unlet s:save_cpo
|
||||
|
||||
" vim: set et sts=4 sw=4:
|
Loading…
x
Reference in New Issue
Block a user