#1501 Pass the buffer number from BufWritePost on to ale#fix#Fix
This commit is contained in:
parent
56c7957a75
commit
f5f3424fcf
@ -19,7 +19,7 @@ function! ale#events#SaveEvent(buffer) abort
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if ale#Var(a:buffer, 'fix_on_save')
|
if ale#Var(a:buffer, 'fix_on_save')
|
||||||
let l:will_fix = ale#fix#Fix('save_file')
|
let l:will_fix = ale#fix#Fix(a:buffer, 'save_file')
|
||||||
let l:should_lint = l:should_lint && !l:will_fix
|
let l:should_lint = l:should_lint && !l:will_fix
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -356,14 +356,14 @@ function! s:RunFixer(options) abort
|
|||||||
call ale#fix#ApplyFixes(l:buffer, l:input)
|
call ale#fix#ApplyFixes(l:buffer, l:input)
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! s:GetCallbacks() abort
|
function! s:GetCallbacks(buffer) abort
|
||||||
if type(get(b:, 'ale_fixers')) is type([])
|
if type(get(b:, 'ale_fixers')) is type([])
|
||||||
" Lists can be used for buffer-local variables only
|
" Lists can be used for buffer-local variables only
|
||||||
let l:callback_list = b:ale_fixers
|
let l:callback_list = b:ale_fixers
|
||||||
else
|
else
|
||||||
" buffer and global options can use dictionaries mapping filetypes to
|
" buffer and global options can use dictionaries mapping filetypes to
|
||||||
" callbacks to run.
|
" callbacks to run.
|
||||||
let l:fixers = ale#Var(bufnr(''), 'fixers')
|
let l:fixers = ale#Var(a:buffer, 'fixers')
|
||||||
let l:callback_list = []
|
let l:callback_list = []
|
||||||
|
|
||||||
for l:sub_type in split(&filetype, '\.')
|
for l:sub_type in split(&filetype, '\.')
|
||||||
@ -422,19 +422,13 @@ endfunction
|
|||||||
" Accepts an optional argument for what to do when fixing.
|
" Accepts an optional argument for what to do when fixing.
|
||||||
"
|
"
|
||||||
" Returns 0 if no fixes can be applied, and 1 if fixing can be done.
|
" Returns 0 if no fixes can be applied, and 1 if fixing can be done.
|
||||||
function! ale#fix#Fix(...) abort
|
function! ale#fix#Fix(buffer, fixing_flag) abort
|
||||||
if len(a:0) > 1
|
if a:fixing_flag isnot# '' && a:fixing_flag isnot# 'save_file'
|
||||||
throw 'too many arguments!'
|
|
||||||
endif
|
|
||||||
|
|
||||||
let l:fixing_flag = get(a:000, 0, '')
|
|
||||||
|
|
||||||
if l:fixing_flag isnot# '' && l:fixing_flag isnot# 'save_file'
|
|
||||||
throw "fixing_flag must be either '' or 'save_file'"
|
throw "fixing_flag must be either '' or 'save_file'"
|
||||||
endif
|
endif
|
||||||
|
|
||||||
try
|
try
|
||||||
let l:callback_list = s:GetCallbacks()
|
let l:callback_list = s:GetCallbacks(a:buffer)
|
||||||
catch /E700\|BADNAME/
|
catch /E700\|BADNAME/
|
||||||
let l:function_name = join(split(split(v:exception, ':')[3]))
|
let l:function_name = join(split(split(v:exception, ':')[3]))
|
||||||
let l:echo_message = printf(
|
let l:echo_message = printf(
|
||||||
@ -447,29 +441,27 @@ function! ale#fix#Fix(...) abort
|
|||||||
endtry
|
endtry
|
||||||
|
|
||||||
if empty(l:callback_list)
|
if empty(l:callback_list)
|
||||||
if l:fixing_flag is# ''
|
if a:fixing_flag is# ''
|
||||||
execute 'echom ''No fixers have been defined. Try :ALEFixSuggest'''
|
execute 'echom ''No fixers have been defined. Try :ALEFixSuggest'''
|
||||||
endif
|
endif
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let l:buffer = bufnr('')
|
|
||||||
|
|
||||||
for l:job_id in keys(s:job_info_map)
|
for l:job_id in keys(s:job_info_map)
|
||||||
call remove(s:job_info_map, l:job_id)
|
call remove(s:job_info_map, l:job_id)
|
||||||
call ale#job#Stop(l:job_id)
|
call ale#job#Stop(l:job_id)
|
||||||
endfor
|
endfor
|
||||||
|
|
||||||
" Clean up any files we might have left behind from a previous run.
|
" Clean up any files we might have left behind from a previous run.
|
||||||
call ale#fix#RemoveManagedFiles(l:buffer)
|
call ale#fix#RemoveManagedFiles(a:buffer)
|
||||||
call ale#fix#InitBufferData(l:buffer, l:fixing_flag)
|
call ale#fix#InitBufferData(a:buffer, a:fixing_flag)
|
||||||
|
|
||||||
silent doautocmd <nomodeline> User ALEFixPre
|
silent doautocmd <nomodeline> User ALEFixPre
|
||||||
|
|
||||||
call s:RunFixer({
|
call s:RunFixer({
|
||||||
\ 'buffer': l:buffer,
|
\ 'buffer': a:buffer,
|
||||||
\ 'input': g:ale_fix_buffer_data[l:buffer].lines_before,
|
\ 'input': g:ale_fix_buffer_data[a:buffer].lines_before,
|
||||||
\ 'callback_index': 0,
|
\ 'callback_index': 0,
|
||||||
\ 'callback_list': l:callback_list,
|
\ 'callback_list': l:callback_list,
|
||||||
\})
|
\})
|
||||||
|
@ -263,7 +263,7 @@ command! -bar ALEInfoToClipboard :call ale#debugging#InfoToClipboard()
|
|||||||
command! -bar -nargs=1 ALEInfoToFile :call ale#debugging#InfoToFile(<f-args>)
|
command! -bar -nargs=1 ALEInfoToFile :call ale#debugging#InfoToFile(<f-args>)
|
||||||
|
|
||||||
" Fix problems in files.
|
" Fix problems in files.
|
||||||
command! -bar ALEFix :call ale#fix#Fix()
|
command! -bar ALEFix :call ale#fix#Fix(bufnr(''), '')
|
||||||
" Suggest registered functions to use for fixing problems.
|
" Suggest registered functions to use for fixing problems.
|
||||||
command! -bar ALEFixSuggest :call ale#fix#registry#Suggest(&filetype)
|
command! -bar ALEFixSuggest :call ale#fix#registry#Suggest(&filetype)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user