mirror of
https://github.com/dense-analysis/ale.git
synced 2026-02-26 19:47:21 +08:00
Fix 1695 - Change rubocop fixer to use stdin (#3230)
* Fix 1695 - Change rubocop fixer to use stdin * Update test_rubocop_fixer_callback.vader Co-authored-by: Horacio Sanson <horacio@allm.inc> Co-authored-by: w0rp <w0rp@users.noreply.github.com>
This commit is contained in:
@@ -2,6 +2,23 @@ call ale#Set('ruby_rubocop_options', '')
|
||||
call ale#Set('ruby_rubocop_auto_correct_all', 0)
|
||||
call ale#Set('ruby_rubocop_executable', 'rubocop')
|
||||
|
||||
" Rubocop fixer outputs diagnostics first and then the fixed
|
||||
" output. These are delimited by a "=======" string that we
|
||||
" look for to remove everything before it.
|
||||
function! ale#fixers#rubocop#PostProcess(buffer, output) abort
|
||||
let l:line = 0
|
||||
|
||||
for l:output in a:output
|
||||
let l:line = l:line + 1
|
||||
|
||||
if l:output =~# "^=\\+$"
|
||||
break
|
||||
endif
|
||||
endfor
|
||||
|
||||
return a:output[l:line :]
|
||||
endfunction
|
||||
|
||||
function! ale#fixers#rubocop#GetCommand(buffer) abort
|
||||
let l:executable = ale#Var(a:buffer, 'ruby_rubocop_executable')
|
||||
let l:config = ale#path#FindNearestFile(a:buffer, '.rubocop.yml')
|
||||
@@ -12,12 +29,13 @@ function! ale#fixers#rubocop#GetCommand(buffer) abort
|
||||
\ . (!empty(l:config) ? ' --config ' . ale#Escape(l:config) : '')
|
||||
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||
\ . (l:auto_correct_all ? ' --auto-correct-all' : ' --auto-correct')
|
||||
\ . ' --force-exclusion %t'
|
||||
\ . ' --force-exclusion --stdin '
|
||||
\ . ale#Escape(expand('#' . a:buffer . ':p'))
|
||||
endfunction
|
||||
|
||||
function! ale#fixers#rubocop#Fix(buffer) abort
|
||||
return {
|
||||
\ 'command': ale#fixers#rubocop#GetCommand(a:buffer),
|
||||
\ 'read_temporary_file': 1,
|
||||
\ 'process_with': 'ale#fixers#rubocop#PostProcess'
|
||||
\}
|
||||
endfunction
|
||||
|
||||
Reference in New Issue
Block a user