diff options
-rw-r--r-- | ale_linters/python/pylint.vim | 14 | ||||
-rw-r--r-- | autoload/ale/python.vim | 2 | ||||
-rw-r--r-- | autoload/ale/toggle.vim | 4 | ||||
-rw-r--r-- | doc/ale-python.txt | 12 | ||||
-rw-r--r-- | doc/ale.txt | 2 | ||||
-rw-r--r-- | test/command_callback/test_pylint_command_callback.vader | 6 |
6 files changed, 29 insertions, 11 deletions
diff --git a/ale_linters/python/pylint.vim b/ale_linters/python/pylint.vim index da845b7a..f0f79cd7 100644 --- a/ale_linters/python/pylint.vim +++ b/ale_linters/python/pylint.vim @@ -17,9 +17,17 @@ function! ale_linters#python#pylint#GetExecutable(buffer) abort endfunction function! ale_linters#python#pylint#GetCommand(buffer) abort - let l:cd_string = ale#Var(a:buffer, 'python_pylint_change_directory') - \ ? ale#path#BufferCdString(a:buffer) - \ : '' + let l:cd_string = '' + + if ale#Var(a:buffer, 'python_pylint_change_directory') + " pylint only checks for pylintrc in the packages above its current + " directory before falling back to user and global pylintrc. + " Run from project root, if found, otherwise buffer dir. + let l:project_root = ale#python#FindProjectRoot(a:buffer) + let l:cd_string = l:project_root isnot# '' + \ ? ale#path#CdString(l:project_root) + \ : ale#path#BufferCdString(a:buffer) + endif let l:executable = ale_linters#python#pylint#GetExecutable(a:buffer) diff --git a/autoload/ale/python.vim b/autoload/ale/python.vim index c911c046..2f28214b 100644 --- a/autoload/ale/python.vim +++ b/autoload/ale/python.vim @@ -28,6 +28,8 @@ function! ale#python#FindProjectRootIni(buffer) abort \|| filereadable(l:path . '/flake8.cfg') \|| filereadable(l:path . '/.flake8rc') \|| filereadable(l:path . '/pylama.ini') + \|| filereadable(l:path . '/pylintrc') + \|| filereadable(l:path . '/.pylintrc') \|| filereadable(l:path . '/Pipfile') \|| filereadable(l:path . '/Pipfile.lock') return l:path diff --git a/autoload/ale/toggle.vim b/autoload/ale/toggle.vim index 8e642b3f..1311e527 100644 --- a/autoload/ale/toggle.vim +++ b/autoload/ale/toggle.vim @@ -13,6 +13,10 @@ function! s:DisablePostamble() abort if g:ale_set_highlights call ale#highlight#UpdateHighlights() endif + + if g:ale_virtualtext_cursor + call ale#virtualtext#Clear() + endif endfunction function! ale#toggle#Toggle() abort diff --git a/doc/ale-python.txt b/doc/ale-python.txt index 9326d6d5..dd946ad4 100644 --- a/doc/ale-python.txt +++ b/doc/ale-python.txt @@ -32,6 +32,8 @@ ALE will look for configuration files with the following filenames. > flake8.cfg .flake8rc pylama.ini + pylintrc + .pylintrc Pipfile Pipfile.lock < @@ -523,10 +525,12 @@ g:ale_python_pylint_change_directory *g: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. + If set to `1`, `pylint` will be run from a detected project root, per + |ale-python-root|. Since `pylint` only checks for `pylintrc` in the packages + above its current directory before falling back to user and global `pylintrc` + files, this is necessary for `pylint` to use a project `pylintrc` file, if + present. 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* diff --git a/doc/ale.txt b/doc/ale.txt index 85d4de3b..22639251 100644 --- a/doc/ale.txt +++ b/doc/ale.txt @@ -2648,7 +2648,7 @@ ALEGoToDefinitionInVSplit *ALEGoToDefinitionInVSplit* ALEGoToTypeDefinition *ALEGoToTypeDefinition* This works similar to |ALEGoToDefinition| but instead jumps to the - definition of a type of a symbol undert the cursor. ALE will jump to a + definition of a type of a symbol under the cursor. ALE will jump to a definition if an LSP server provides a location to jump to. Otherwise, ALE will do nothing. diff --git a/test/command_callback/test_pylint_command_callback.vader b/test/command_callback/test_pylint_command_callback.vader index 6b21b127..c41c8398 100644 --- a/test/command_callback/test_pylint_command_callback.vader +++ b/test/command_callback/test_pylint_command_callback.vader @@ -39,7 +39,7 @@ Execute(The pylint callbacks shouldn't detect virtualenv directories where they silent execute 'file ' . fnameescape(g:dir . '/python_paths/no_virtualenv/subdir/foo/bar.py') AssertLinter 'pylint', - \ ale#path#BufferCdString(bufnr('')) + \ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/no_virtualenv/subdir')) \ . ale#Escape('pylint') . ' ' . b:command_tail Execute(The pylint callbacks should detect virtualenv directories): @@ -50,7 +50,7 @@ Execute(The pylint callbacks should detect virtualenv directories): \) AssertLinter b:executable, - \ ale#path#BufferCdString(bufnr('')) + \ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir')) \ . ale#Escape(b:executable) . ' ' . b:command_tail Execute(You should able able to use the global pylint instead): @@ -58,7 +58,7 @@ Execute(You should able able to use the global pylint instead): let g:ale_python_pylint_use_global = 1 AssertLinter 'pylint', - \ ale#path#BufferCdString(bufnr('')) + \ ale#path#CdString(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir')) \ . ale#Escape('pylint') . ' ' . b:command_tail Execute(Setting executable to 'pipenv' appends 'run pylint'): |