From d425b8a18ab3c8155fdc7376192434f8878e954f Mon Sep 17 00:00:00 2001 From: w0rp Date: Thu, 9 Nov 2017 23:42:54 +0000 Subject: Simplfy semver handling and share the semver version cache across everything --- ale_linters/python/flake8.vim | 43 ++++++------------------------------------- 1 file changed, 6 insertions(+), 37 deletions(-) (limited to 'ale_linters/python/flake8.vim') 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 . ' -' -- cgit v1.2.3