diff --git a/autoload/ale/fix.vim b/autoload/ale/fix.vim index c4143aa..76cd135 100644 --- a/autoload/ale/fix.vim +++ b/autoload/ale/fix.vim @@ -114,9 +114,11 @@ function! s:HandleExit(job_id, exit_code) abort " otherwise skip this job and use the input from before. " " We'll use the input from before for chained commands. - let l:input = l:chain_callback is v:null && !empty(l:job_info.output) - \ ? l:job_info.output - \ : l:job_info.input + if l:chain_callback is v:null && !empty(split(join(l:job_info.output))) + let l:input = l:job_info.output + else + let l:input = l:job_info.input + endif let l:next_index = l:chain_callback is v:null \ ? l:job_info.callback_index + 1 diff --git a/test/test_ale_fix.vader b/test/test_ale_fix.vader index ac6427a..c5deabb 100644 --- a/test/test_ale_fix.vader +++ b/test/test_ale_fix.vader @@ -105,6 +105,11 @@ Before: return {'command': ''} endfunction + " echo will output a single blank line, and we should ingore it. + function! IgnoredEmptyOutput(buffer, output) + return {'command': 'echo'} + endfunction + function! SetUpLinters() call ale#linter#Define('testft', { \ 'name': 'testlinter', @@ -149,6 +154,7 @@ After: delfunction ChainEndSkipped delfunction SetUpLinters delfunction GetLastMessage + delfunction IgnoredEmptyOutput call ale#test#RestoreDirectory() @@ -568,3 +574,12 @@ Expect(The lines should be the same): a b c + +Execute(Empty output should be ignored): + let g:ale_fixers.testft = ['IgnoredEmptyOutput'] + ALEFix + +Expect(The lines should be the same): + a + b + c