summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fixers/black.vim24
-rw-r--r--autoload/ale/references.vim1
-rw-r--r--doc/ale-python.txt11
-rw-r--r--test/fixers/test_black_fixer_callback.vader13
-rw-r--r--test/test_find_references.vader6
5 files changed, 38 insertions, 17 deletions
diff --git a/autoload/ale/fixers/black.vim b/autoload/ale/fixers/black.vim
index 4169322a..27249c55 100644
--- a/autoload/ale/fixers/black.vim
+++ b/autoload/ale/fixers/black.vim
@@ -4,22 +4,28 @@
call ale#Set('python_black_executable', 'black')
call ale#Set('python_black_use_global', get(g:, 'ale_use_global_executables', 0))
call ale#Set('python_black_options', '')
+call ale#Set('python_black_auto_pipenv', 0)
+
+function! ale#fixers#black#GetExecutable(buffer) abort
+ if (ale#Var(a:buffer, 'python_auto_pipenv') || ale#Var(a:buffer, 'python_black_auto_pipenv'))
+ \ && ale#python#PipenvPresent(a:buffer)
+ return 'pipenv'
+ endif
+
+ return ale#python#FindExecutable(a:buffer, 'python_black', ['black'])
+endfunction
function! ale#fixers#black#Fix(buffer) abort
- let l:executable = ale#python#FindExecutable(
- \ a:buffer,
- \ 'python_black',
- \ ['black'],
- \)
+ let l:executable = ale#fixers#black#GetExecutable(a:buffer)
- if !executable(l:executable)
- return 0
- endif
+ let l:exec_args = l:executable =~? 'pipenv$'
+ \ ? ' run black'
+ \ : ''
let l:options = ale#Var(a:buffer, 'python_black_options')
return {
- \ 'command': ale#Escape(l:executable)
+ \ 'command': ale#Escape(l:executable) . l:exec_args
\ . (!empty(l:options) ? ' ' . l:options : '')
\ . ' -',
\}
diff --git a/autoload/ale/references.vim b/autoload/ale/references.vim
index d00a1fa9..24267bb4 100644
--- a/autoload/ale/references.vim
+++ b/autoload/ale/references.vim
@@ -27,6 +27,7 @@ function! ale#references#HandleTSServerResponse(conn_id, response) abort
\ 'filename': l:response_item.file,
\ 'line': l:response_item.start.line,
\ 'column': l:response_item.start.offset,
+ \ 'match': substitute(l:response_item.lineText, '^\s*\(.\{-}\)\s*$', '\1', ''),
\})
endfor
diff --git a/doc/ale-python.txt b/doc/ale-python.txt
index f3f2801a..a1ad1500 100644
--- a/doc/ale-python.txt
+++ b/doc/ale-python.txt
@@ -75,7 +75,7 @@ g:ale_python_black_executable *g:ale_python_black_executable*
See |ale-integrations-local-executables|
-autopep8
+
g:ale_python_black_options *g:ale_python_black_options*
*b:ale_python_black_options*
Type: |String|
@@ -92,6 +92,15 @@ g:ale_python_black_use_global *g:ale_python_black_use_global*
See |ale-integrations-local-executables|
+g:ale_python_black_auto_pipenv *g:ale_python_black_auto_pipenv*
+ *b:ale_python_black_auto_pipenv*
+ Type: |Number|
+ Default: `0`
+
+ Detect whether the file is inside a pipenv, and set the executable to `pipenv`
+ if true. This is overridden by a manually-set executable.
+
+
===============================================================================
flake8 *ale-python-flake8*
diff --git a/test/fixers/test_black_fixer_callback.vader b/test/fixers/test_black_fixer_callback.vader
index 365b0fa6..7843783a 100644
--- a/test/fixers/test_black_fixer_callback.vader
+++ b/test/fixers/test_black_fixer_callback.vader
@@ -5,6 +5,7 @@ Before:
" Use an invalid global executable, so we don't match it.
let g:ale_python_black_executable = 'xxxinvalid'
let g:ale_python_black_options = ''
+ let g:ale_python_black_auto_pipenv = 0
call ale#test#SetDirectory('/testplugin/test/fixers')
silent cd ..
@@ -21,10 +22,6 @@ After:
call ale#test#RestoreDirectory()
Execute(The black callback should return the correct default values):
- AssertEqual
- \ 0,
- \ ale#fixers#black#Fix(bufnr(''))
-
silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
AssertEqual
\ {'command': ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/black')) . ' -'},
@@ -37,3 +34,11 @@ Execute(The black callback should include options):
AssertEqual
\ {'command': ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/black')) . ' --some-option -' },
\ ale#fixers#black#Fix(bufnr(''))
+
+Execute(Pipenv is detected when python_black_auto_pipenv is set):
+ let g:ale_python_black_auto_pipenv = 1
+ call ale#test#SetFilename('/testplugin/test/python_fixtures/pipenv/whatever.py')
+
+ AssertEqual
+ \ {'command': ale#Escape('pipenv') . ' run black -'},
+ \ ale#fixers#black#Fix(bufnr(''))
diff --git a/test/test_find_references.vader b/test/test_find_references.vader
index 88b2d762..14b5e37b 100644
--- a/test/test_find_references.vader
+++ b/test/test_find_references.vader
@@ -135,9 +135,9 @@ Execute(Results should be shown for tsserver responses):
AssertEqual
\ [
- \ {'filename': '/foo/bar/app.ts', 'column': 9, 'line': 9},
- \ {'filename': '/foo/bar/app.ts', 'column': 3, 'line': 804},
- \ {'filename': '/foo/bar/other/app.ts', 'column': 3, 'line': 51},
+ \ {'filename': '/foo/bar/app.ts', 'column': 9, 'line': 9, 'match': 'import {doSomething} from ''./whatever'''},
+ \ {'filename': '/foo/bar/app.ts', 'column': 3, 'line': 804, 'match': 'doSomething()'},
+ \ {'filename': '/foo/bar/other/app.ts', 'column': 3, 'line': 51, 'match': 'doSomething()'},
\ ],
\ g:item_list
AssertEqual {}, ale#references#GetMap()