summaryrefslogtreecommitdiff
path: root/ale_linters/python
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-11-09 23:42:54 +0000
committerw0rp <devw0rp@gmail.com>2017-11-09 23:42:54 +0000
commitd425b8a18ab3c8155fdc7376192434f8878e954f (patch)
tree8a702b7b398fe43e9b8b3a05e3011b3ca530fd83 /ale_linters/python
parentc1fa88e78ccfeb98a688a209cd9f67da1bf076aa (diff)
downloadale-d425b8a18ab3c8155fdc7376192434f8878e954f.zip
Simplfy semver handling and share the semver version cache across everything
Diffstat (limited to 'ale_linters/python')
-rw-r--r--ale_linters/python/flake8.vim43
1 files changed, 6 insertions, 37 deletions
diff --git a/ale_linters/python/flake8.vim b/ale_linters/python/flake8.vim
index 8aa4c4df..501db0b1 100644
--- a/ale_linters/python/flake8.vim
+++ b/ale_linters/python/flake8.vim
@@ -10,10 +10,6 @@ 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! s:UsingModule(buffer) abort
return ale#Var(a:buffer, 'python_flake8_options') =~# ' *-m flake8'
endfunction
@@ -26,62 +22,35 @@ function! ale_linters#python#flake8#GetExecutable(buffer) abort
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)
" If we have previously stored the version number in a cache, then
" don't look it up again.
- if has_key(s:version_cache, l:executable)
+ if ale#semver#HasVersion(l:executable)
" Returning an empty string skips this command.
return ''
endif
- let l:executable = ale#Escape(ale_linters#python#flake8#GetExecutable(a:buffer))
+ let l:executable = ale#Escape(l:executable)
let l:module_string = s:UsingModule(a:buffer) ? ' -m flake8' : ''
return l:executable . l:module_string . ' --version'
endfunction
-" Get the flake8 version from the output, or the cache.
-function! s:GetVersion(buffer, version_output) abort
- let l:executable = ale_linters#python#flake8#GetExecutable(a:buffer)
- let l:version = []
-
- " Get the version from the cache.
- if has_key(s:version_cache, l:executable)
- return s:version_cache[l:executable]
- endif
-
- if !empty(a:version_output)
- " Parse the version string, and store it in the cache.
- let l:version = ale#semver#Parse(a:version_output[0])
- let s:version_cache[l:executable] = l:version
- endif
-
- return l:version
-endfunction
-
-" flake8 versions 3 and up support the --stdin-display-name argument.
-function! s:SupportsDisplayName(version) abort
- return !empty(a:version) && ale#semver#GreaterOrEqual(a:version, [3, 0, 0])
-endfunction
-
function! ale_linters#python#flake8#GetCommand(buffer, version_output) abort
- let l:version = s:GetVersion(a:buffer, a:version_output)
+ let l:executable = ale_linters#python#flake8#GetExecutable(a:buffer)
+ let l:version = ale#semver#GetVersion(l:executable, a:version_output)
" 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)
+ let l:display_name_args = ale#semver#GTE(l:version, [3, 0, 0])
\ ? ' --stdin-display-name %s'
\ : ''
let l:options = ale#Var(a:buffer, 'python_flake8_options')
- return ale#Escape(ale_linters#python#flake8#GetExecutable(a:buffer))
+ return ale#Escape(l:executable)
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' --format=default'
\ . l:display_name_args . ' -'