From 02ac28dbe6ae2b60d359d601c20f9f7f532a49f6 Mon Sep 17 00:00:00 2001 From: w0rp Date: Tue, 6 Jun 2017 09:47:08 +0100 Subject: [PATCH] Fix #624 - Ask for the Vint version in the background --- ale_linters/vim/vint.vim | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) diff --git a/ale_linters/vim/vint.vim b/ale_linters/vim/vint.vim index 1bb3a5b..2f506c2 100644 --- a/ale_linters/vim/vint.vim +++ b/ale_linters/vim/vint.vim @@ -4,18 +4,32 @@ " This flag can be used to change enable/disable style issues. let g:ale_vim_vint_show_style_issues = \ 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: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' return 'vint ' \ . l:warning_flag . ' ' - \ . (s:can_use_no_color_flag ? '--no-color ' : '') + \ . (l:can_use_no_color_flag ? '--no-color ' : '') \ . s:enable_neovim \ . s:format \ . ' %t' @@ -24,6 +38,9 @@ endfunction call ale#linter#Define('vim', { \ 'name': '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', \})