diff options
author | w0rp <devw0rp@gmail.com> | 2017-05-07 16:16:17 +0100 |
---|---|---|
committer | w0rp <devw0rp@gmail.com> | 2017-05-07 16:16:17 +0100 |
commit | 4228c503f4e89c50606bf225958363ceb349fecd (patch) | |
tree | d01507848d40f6c74ec219cea95e0e7c3bc2de90 /ale_linters/python | |
parent | 02f6fba6cbab2adfefb52de5f52ced4dbe153c10 (diff) | |
download | ale-4228c503f4e89c50606bf225958363ceb349fecd.zip |
#335 Detect flake8 in vritualenv, and escape the executable path
Diffstat (limited to 'ale_linters/python')
-rw-r--r-- | ale_linters/python/flake8.vim | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/ale_linters/python/flake8.vim b/ale_linters/python/flake8.vim index a30dc03b..ab074567 100644 --- a/ale_linters/python/flake8.vim +++ b/ale_linters/python/flake8.vim @@ -8,15 +8,32 @@ let g:ale_python_flake8_executable = let s:default_options = get(g:, 'ale_python_flake8_args', '') let g:ale_python_flake8_options = \ get(g:, 'ale_python_flake8_options', s:default_options) +let g:ale_python_flake8_use_global = get(g:, 'ale_python_flake8_use_global', 0) " A map from Python executable paths to semver strings parsed for those " executables, so we don't have to look up the version number constantly. let s:version_cache = {} function! ale_linters#python#flake8#GetExecutable(buffer) abort + if !ale#Var(a:buffer, 'python_flake8_use_global') + let l:virtualenv = ale#python#FindVirtualenv(a:buffer) + + if !empty(l:virtualenv) + let l:ve_flake8 = l:virtualenv . '/bin/flake8' + + if executable(l:ve_flake8) + return l:ve_flake8 + endif + endif + endif + return ale#Var(a:buffer, 'python_flake8_executable') endfunction +function! ale_linters#python#flake8#ClearVersionCache() abort + let s:version_cache = {} +endfunction + function! ale_linters#python#flake8#VersionCheck(buffer) abort let l:executable = ale_linters#python#flake8#GetExecutable(a:buffer) @@ -27,7 +44,8 @@ function! ale_linters#python#flake8#VersionCheck(buffer) abort return '' endif - return ale_linters#python#flake8#GetExecutable(a:buffer) . ' --version' + return fnameescape(ale_linters#python#flake8#GetExecutable(a:buffer)) + \ . ' --version' endfunction " Get the flake8 version from the output, or the cache. @@ -60,12 +78,14 @@ function! ale_linters#python#flake8#GetCommand(buffer, version_output) abort " Only include the --stdin-display-name argument if we can parse the " flake8 version, and it is recent enough to support it. let l:display_name_args = s:SupportsDisplayName(l:version) - \ ? '--stdin-display-name %s' + \ ? ' --stdin-display-name %s' \ : '' - return ale_linters#python#flake8#GetExecutable(a:buffer) - \ . ' ' . ale#Var(a:buffer, 'python_flake8_options') - \ . ' ' . l:display_name_args . ' -' + let l:options = ale#Var(a:buffer, 'python_flake8_options') + + return fnameescape(ale_linters#python#flake8#GetExecutable(a:buffer)) + \ . (!empty(l:options) ? ' ' . l:options : '') + \ . l:display_name_args . ' -' endfunction call ale#linter#Define('python', { |