summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--autoload/ale/fixers/isort.vim5
-rw-r--r--doc/ale-python.txt8
-rw-r--r--test/fixers/test_isort_fixer_callback.vader17
3 files changed, 29 insertions, 1 deletions
diff --git a/autoload/ale/fixers/isort.vim b/autoload/ale/fixers/isort.vim
index 74ba3bc8..9070fb27 100644
--- a/autoload/ale/fixers/isort.vim
+++ b/autoload/ale/fixers/isort.vim
@@ -2,9 +2,12 @@
" Description: Fixing Python imports with isort.
call ale#Set('python_isort_executable', 'isort')
+call ale#Set('python_isort_options', '')
call ale#Set('python_isort_use_global', get(g:, 'ale_use_global_executables', 0))
function! ale#fixers#isort#Fix(buffer) abort
+ let l:options = ale#Var(a:buffer, 'python_isort_options')
+
let l:executable = ale#python#FindExecutable(
\ a:buffer,
\ 'python_isort',
@@ -17,6 +20,6 @@ function! ale#fixers#isort#Fix(buffer) abort
return {
\ 'command': ale#path#BufferCdString(a:buffer)
- \ . ale#Escape(l:executable) . ' -',
+ \ . ale#Escape(l:executable) . (!empty(l:options) ? ' ' . l:options : '') . ' -',
\}
endfunction
diff --git a/doc/ale-python.txt b/doc/ale-python.txt
index de706896..be8ad118 100644
--- a/doc/ale-python.txt
+++ b/doc/ale-python.txt
@@ -145,6 +145,14 @@ g:ale_python_isort_executable *g:ale_python_isort_executable*
See |ale-integrations-local-executables|
+g:ale_python_isort_options *g:ale_python_isort_options*
+ *b:ale_python_isort_options*
+ Type: |String|
+ Default: `''`
+
+ This variable can be set to pass extra options to isort.
+
+
g:ale_python_isort_use_global *g:ale_python_isort_use_global*
*b:ale_python_isort_use_global*
Type: |Number|
diff --git a/test/fixers/test_isort_fixer_callback.vader b/test/fixers/test_isort_fixer_callback.vader
index 7c2b515f..56c08d26 100644
--- a/test/fixers/test_isort_fixer_callback.vader
+++ b/test/fixers/test_isort_fixer_callback.vader
@@ -1,5 +1,6 @@
Before:
Save g:ale_python_isort_executable
+ Save g:ale_python_isort_options
" Use an invalid global executable, so we don't match it.
let g:ale_python_isort_executable = 'xxxinvalid'
@@ -30,3 +31,19 @@ Execute(The isort callback should return the correct default values):
\ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/isort')) . ' -',
\ },
\ ale#fixers#isort#Fix(bufnr(''))
+
+Execute(The isort callback should respect custom options):
+ let g:ale_python_isort_options = '--multi-line=3 --trailing-comma'
+
+ AssertEqual
+ \ 0,
+ \ ale#fixers#isort#Fix(bufnr(''))
+
+ silent execute 'file ' . fnameescape(g:dir . '/python_paths/with_virtualenv/subdir/foo/bar.py')
+ AssertEqual
+ \ {
+ \ 'command': 'cd ' . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/subdir/foo')) . ' && '
+ \ . ale#Escape(ale#path#Simplify(g:dir . '/python_paths/with_virtualenv/env/' . b:bin_dir . '/isort'))
+ \ . ' --multi-line=3 --trailing-comma -',
+ \ },
+ \ ale#fixers#isort#Fix(bufnr(''))