Fix #624 - Ask for the Vint version in the background

This commit is contained in:
w0rp 2017-06-06 09:47:08 +01:00
parent f6109d2e4e
commit 02ac28dbe6

View File

@ -4,18 +4,32 @@
" This flag can be used to change enable/disable style issues. " This flag can be used to change enable/disable style issues.
let g:ale_vim_vint_show_style_issues = let g:ale_vim_vint_show_style_issues =
\ get(g:, 'ale_vim_vint_show_style_issues', 1) \ get(g:, 'ale_vim_vint_show_style_issues', 1)
let s:vint_version = ale#semver#Parse(system('vint --version'))
let s:can_use_no_color_flag = ale#semver#GreaterOrEqual(s:vint_version, [0, 3, 7])
let s:enable_neovim = has('nvim') ? ' --enable-neovim ' : '' let s:enable_neovim = has('nvim') ? ' --enable-neovim ' : ''
let s:format = '-f "{file_path}:{line_number}:{column_number}: {severity}: {description} (see {reference})"' let s:format = '-f "{file_path}:{line_number}:{column_number}: {severity}: {description} (see {reference})"'
function! ale_linters#vim#vint#GetCommand(buffer) abort function! ale_linters#vim#vint#VersionCommand(buffer) abort
if !exists('s:vint_version')
" Check the Vint version if we haven't checked it already.
return 'vint --version'
endif
return ''
endfunction
function! ale_linters#vim#vint#GetCommand(buffer, version_output) abort
if !empty(a:version_output)
" Parse the version out of the --version output.
let s:vint_version = ale#semver#Parse(join(a:version_output, "\n"))
endif
let l:can_use_no_color_flag = exists('s:vint_version')
\ && ale#semver#GreaterOrEqual(s:vint_version, [0, 3, 7])
let l:warning_flag = ale#Var(a:buffer, 'vim_vint_show_style_issues') ? '-s' : '-w' let l:warning_flag = ale#Var(a:buffer, 'vim_vint_show_style_issues') ? '-s' : '-w'
return 'vint ' return 'vint '
\ . l:warning_flag . ' ' \ . l:warning_flag . ' '
\ . (s:can_use_no_color_flag ? '--no-color ' : '') \ . (l:can_use_no_color_flag ? '--no-color ' : '')
\ . s:enable_neovim \ . s:enable_neovim
\ . s:format \ . s:format
\ . ' %t' \ . ' %t'
@ -24,6 +38,9 @@ endfunction
call ale#linter#Define('vim', { call ale#linter#Define('vim', {
\ 'name': 'vint', \ 'name': 'vint',
\ 'executable': 'vint', \ 'executable': 'vint',
\ 'command_callback': 'ale_linters#vim#vint#GetCommand', \ 'command_chain': [
\ {'callback': 'ale_linters#vim#vint#VersionCommand', 'output_stream': 'stderr'},
\ {'callback': 'ale_linters#vim#vint#GetCommand', 'output_stream': 'stdout'},
\ ],
\ 'callback': 'ale#handlers#gcc#HandleGCCFormat', \ 'callback': 'ale#handlers#gcc#HandleGCCFormat',
\}) \})