diff options
author | Oliver Albertini <oliverralbertini@users.noreply.github.com> | 2021-09-09 20:53:54 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-09-10 12:53:54 +0900 |
commit | b504eeb094b26a635f260a92e0b9762ad2eb1862 (patch) | |
tree | a8b2a8a6d38c633828eaf9a9b073746af9881b49 | |
parent | c5c58f5bf82bf1cd6782d66e08d22af41de8e8f7 (diff) | |
download | ale-b504eeb094b26a635f260a92e0b9762ad2eb1862.zip |
[python/pyre.vim] Fix pyre persistent behavior (#3895)
It's necessary to provide a `-l` option to pyre with the closest parent
directory containing a `.pyre_configuration.local` file, or simply
change directory (cwd) to the root of the pyre project. Thanks to Ken
Verbosky for the code that fixes this.
Error seen when not using such a solution:
```
1031.473923 on 6: Dropping message 'ƛ Background task unexpectedly quited: Invalid configuration: Cannot find any source files to analyze. Either `source_directories` or `targets` must be specified.
```
Issue with this approach is that if you are editing files under
different projects, the `pyre persistent` process is not re-created for
each file. We have to do `:ALEStopAlllsps` in order for the process to
start with the new working directory.
Co-authored-by: Oliver Ruben Albertini <ora@fb.com>
-rw-r--r-- | ale_linters/python/pyre.vim | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ale_linters/python/pyre.vim b/ale_linters/python/pyre.vim index d9b46763..5e5786f9 100644 --- a/ale_linters/python/pyre.vim +++ b/ale_linters/python/pyre.vim @@ -22,14 +22,17 @@ endfunction function! ale_linters#python#pyre#GetCommand(buffer) abort let l:executable = ale_linters#python#pyre#GetExecutable(a:buffer) - - let l:exec_args = l:executable =~? 'pipenv\|poetry$' - \ ? ' run pyre persistent' - \ : ' persistent' + let l:exec_args = (l:executable =~? 'pipenv\|poetry$' ? ' run pyre' : '') . ' persistent' return ale#Escape(l:executable) . l:exec_args endfunction +function! ale_linters#python#pyre#GetCwd(buffer) abort + let l:local_config = ale#path#FindNearestFile(a:buffer, '.pyre_configuration.local') + + return fnamemodify(l:local_config, ':h') +endfunction + call ale#linter#Define('python', { \ 'name': 'pyre', \ 'lsp': 'stdio', @@ -37,4 +40,5 @@ call ale#linter#Define('python', { \ 'command': function('ale_linters#python#pyre#GetCommand'), \ 'project_root': function('ale#python#FindProjectRoot'), \ 'completion_filter': 'ale#completion#python#CompletionItemFilter', +\ 'cwd': function('ale_linters#python#pyre#GetCwd'), \}) |