" This script is meant to be used in combination with the vim-localvimrc " plug-in, see https://github.com/embear/vim-localvimrc " It will run stylechecks on relevant files on file save in vim, and show the " results in the command window. " The code is inspired from the vim-flake8 plug-in: " https://github.com/nvie/vim-flake8 if g:localvimrc_sourced_once finish endif let s:local_path = expand(':p:h') let s:cmd=s:local_path . '/langkit/langkit/stylechecks/__init__.py' let s:lalcmd=s:local_path . '/ada/manage.py --verbosity=none -Dgnu-full generate --check-only' function Lalcheck() hi Red ctermfg=red echohl Red echon "Running checks" echohl call Stylechecks(s:lalcmd, 0) endfunction function Stylechecks(cmd, file_specific) hi Green ctermfg=green set lazyredraw " delay redrawing cclose " close any existing cwindows " store old grep settings (to restore later) let l:old_gfm=&grepformat let l:old_gp=&grepprg " write any changes before continuing if &readonly == 0 update endif " perform the grep itself let &grepformat="%f:%l:%c: %m\,%f:%l: %m" let &grepprg=a:cmd if a:file_specific silent! grep! % else silent! grep! endif " restore grep settings let &grepformat=l:old_gfm let &grepprg=l:old_gp " open cwindow let has_results=getqflist() != [] if has_results execute 'belowright copen' setlocal wrap nnoremap c :cclose nnoremap q :cclose endif set nolazyredraw redraw! if has_results == 0 " Show OK status echohl Green echon "Style checks OK" echohl endif endfunction autocmd BufWritePost *.py call Stylechecks(s:cmd, 1) autocmd BufWritePost *.adb call Stylechecks(s:cmd, 1) autocmd BufWritePost *.ads call Stylechecks(s:cmd, 1) autocmd BufWritePost *.mako call Stylechecks(s:cmd, 1) map :call Lalcheck()