Run flake8 from project root by default.

Option `per-file-ignores` was introduced in flake8 version 3.7.0.
It allows to ignore specific errors in specific files using glob syntax.
For example `per-file-ignores = src/generated/*.py:F401` will
ignore `F401` error in all python files in `src/generated`.
Thus ale has to run flake8 from project root where .flake8 config
is placed otherwise glob won't match linted file.
This commit is contained in:
Konstantin Alekseev
2019-10-22 00:38:54 +03:00
parent 0989da4a38
commit 1462de6685
3 changed files with 56 additions and 12 deletions

View File

@@ -4,7 +4,7 @@
call ale#Set('python_flake8_executable', 'flake8')
call ale#Set('python_flake8_options', '')
call ale#Set('python_flake8_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_flake8_change_directory', 1)
call ale#Set('python_flake8_change_directory', 'project')
call ale#Set('python_flake8_auto_pipenv', 0)
function! s:UsingModule(buffer) abort
@@ -38,10 +38,34 @@ function! ale_linters#python#flake8#RunWithVersionCheck(buffer) abort
\)
endfunction
function! ale_linters#python#flake8#GetCdString(buffer) abort
let l:change_directory = ale#Var(a:buffer, 'python_flake8_change_directory')
" map legacy options to new ones
if l:change_directory is# 1
let l:change_directory = 'file'
elseif l:change_directory is# 0
let l:change_directory = 'off'
endif
if l:change_directory is# 'file'
return ale#path#BufferCdString(a:buffer)
elseif l:change_directory is# 'off'
return ''
endif
let l:project_root = ale#python#FindProjectRootIni(a:buffer)
if !empty(l:project_root)
return ale#path#CdString(l:project_root)
endif
return ale#path#BufferCdString(a:buffer)
endfunction
function! ale_linters#python#flake8#GetCommand(buffer, version) abort
let l:cd_string = ale#Var(a:buffer, 'python_flake8_change_directory')
\ ? ale#path#BufferCdString(a:buffer)
\ : ''
let l:cd_string = ale_linters#python#flake8#GetCdString(a:buffer)
let l:executable = ale_linters#python#flake8#GetExecutable(a:buffer)
let l:exec_args = l:executable =~? 'pipenv$'