diff --git a/ale_linters/python/pylint.vim b/ale_linters/python/pylint.vim index 5eafd8f..a6fc8ed 100644 --- a/ale_linters/python/pylint.vim +++ b/ale_linters/python/pylint.vim @@ -1,20 +1,21 @@ " Author: keith " Description: pylint for python files -let g:ale_python_pylint_executable = -\ get(g:, 'ale_python_pylint_executable', 'pylint') - -let g:ale_python_pylint_options = -\ get(g:, 'ale_python_pylint_options', '') - -let g:ale_python_pylint_use_global = get(g:, 'ale_python_pylint_use_global', get(g:, 'ale_use_global_executables', 0)) +call ale#Set('python_pylint_executable', 'pylint') +call ale#Set('python_pylint_options', '') +call ale#Set('python_pylint_use_global', get(g:, 'ale_use_global_executables', 0)) +call ale#Set('python_pylint_change_directory', 1) function! ale_linters#python#pylint#GetExecutable(buffer) abort return ale#python#FindExecutable(a:buffer, 'python_pylint', ['pylint']) endfunction function! ale_linters#python#pylint#GetCommand(buffer) abort - return ale#path#BufferCdString(a:buffer) + let l:cd_string = ale#Var(a:buffer, 'python_pylint_change_directory') + \ ? ale#path#BufferCdString(a:buffer) + \ : '' + + return l:cd_string \ . ale#Escape(ale_linters#python#pylint#GetExecutable(a:buffer)) \ . ' ' . ale#Var(a:buffer, 'python_pylint_options') \ . ' --output-format text --msg-template="{path}:{line}:{column}: {msg_id} ({symbol}) {msg}" --reports n' diff --git a/doc/ale-python.txt b/doc/ale-python.txt index 396603e..e161426 100644 --- a/doc/ale-python.txt +++ b/doc/ale-python.txt @@ -231,6 +231,17 @@ g:ale_python_pycodestyle_use_global *g:ale_python_pycodestyle_use_global* =============================================================================== pylint *ale-python-pylint* +g:ale_python_pylint_change_directory *g:ale_python_pylint_change_directory* + *b:ale_python_pylint_change_directory* + Type: |Number| + Default: `1` + + If set to `1`, ALE will switch to the directory the Python file being + checked with `pylint` is in before checking it. This helps `pylint` find + configuration files more easily. This option can be turned off if you want + to control the directory Python is executed from yourself. + + g:ale_python_pylint_executable *g:ale_python_pylint_executable* *b:ale_python_pylint_executable* Type: |String| diff --git a/test/command_callback/test_pylint_command_callback.vader b/test/command_callback/test_pylint_command_callback.vader index 5dc6abe..1cdc34d 100644 --- a/test/command_callback/test_pylint_command_callback.vader +++ b/test/command_callback/test_pylint_command_callback.vader @@ -2,10 +2,12 @@ Before: Save g:ale_python_pylint_executable Save g:ale_python_pylint_options Save g:ale_python_pylint_use_global + Save g:ale_python_pylint_change_directory unlet! g:ale_python_pylint_executable unlet! g:ale_python_pylint_options unlet! g:ale_python_pylint_use_global + unlet! g:ale_python_pylint_change_directory runtime ale_linters/python/pylint.vim call ale#test#SetDirectory('/testplugin/test/command_callback') @@ -32,6 +34,17 @@ Execute(The pylint callbacks should return the correct default values): \ . ale#Escape('pylint') . ' ' . b:command_tail, \ ale_linters#python#pylint#GetCommand(bufnr('')) +Execute(The option for disabling changing directories should work): + let g:ale_python_pylint_change_directory = 0 + + AssertEqual + \ 'pylint', + \ ale_linters#python#pylint#GetExecutable(bufnr('')) + \ + AssertEqual + \ ale#Escape('pylint') . ' ' . b:command_tail, + \ ale_linters#python#pylint#GetCommand(bufnr('')) + Execute(The pylint executable should be configurable, and escaped properly): let g:ale_python_pylint_executable = 'executable with spaces'