Fix #1507 - Add an option for disabling switching directories for pylint

This commit is contained in:
w0rp 2018-04-17 13:30:30 +01:00
parent fb720251bf
commit f9ba3d924f
No known key found for this signature in database
GPG Key ID: 0FC1ECAA8C81CD83
3 changed files with 33 additions and 8 deletions

View File

@ -1,20 +1,21 @@
" Author: keith <k@keith.so>
" 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'

View File

@ -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|

View File

@ -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'