Log commands that are run for ALEFix for ALEInfo

This commit is contained in:
w0rp 2017-08-31 16:46:40 +01:00
parent 7c2a5052a8
commit 52eff3bd83
2 changed files with 37 additions and 1 deletions

View File

@ -96,6 +96,11 @@ function! s:HandleExit(job_id, exit_code) abort
endif endif
let l:job_info = remove(s:job_info_map, a:job_id) let l:job_info = remove(s:job_info_map, a:job_id)
let l:buffer = l:job_info.buffer
if g:ale_history_enabled
call ale#history#SetExitCode(l:buffer, a:job_id, a:exit_code)
endif
if has_key(l:job_info, 'file_to_read') if has_key(l:job_info, 'file_to_read')
let l:job_info.output = readfile(l:job_info.file_to_read) let l:job_info.output = readfile(l:job_info.file_to_read)
@ -108,7 +113,7 @@ function! s:HandleExit(job_id, exit_code) abort
\ : l:job_info.input \ : l:job_info.input
call s:RunFixer({ call s:RunFixer({
\ 'buffer': l:job_info.buffer, \ 'buffer': l:buffer,
\ 'input': l:input, \ 'input': l:input,
\ 'callback_list': l:job_info.callback_list, \ 'callback_list': l:job_info.callback_list,
\ 'callback_index': l:job_info.callback_index + 1, \ 'callback_index': l:job_info.callback_index + 1,
@ -209,6 +214,12 @@ function! s:RunJob(options) abort
let l:job_id = ale#job#Start(l:command, l:job_options) let l:job_id = ale#job#Start(l:command, l:job_options)
endif endif
let l:status = l:job_id ? 'started' : 'failed'
if g:ale_history_enabled
call ale#history#Add(l:buffer, l:status, l:job_id, l:command)
endif
if l:job_id == 0 if l:job_id == 0
return 0 return 0
endif endif

View File

@ -1,7 +1,10 @@
Before: Before:
Save g:ale_max_buffer_history_size Save g:ale_max_buffer_history_size
Save g:ale_history_log_output Save g:ale_history_log_output
Save g:ale_run_synchronously
unlet! b:ale_fixers
unlet! b:ale_enabled
unlet! b:ale_history unlet! b:ale_history
" Temporarily set the shell to /bin/sh, if it isn't already set that way. " Temporarily set the shell to /bin/sh, if it isn't already set that way.
@ -13,6 +16,10 @@ Before:
let g:ale_max_buffer_history_size = 20 let g:ale_max_buffer_history_size = 20
let g:ale_history_log_output = 0 let g:ale_history_log_output = 0
function! TestFixer(buffer)
return {'command': 'echo foo'}
endfunction
function! CollectResults(buffer, output) function! CollectResults(buffer, output)
return [] return []
endfunction endfunction
@ -28,6 +35,8 @@ Before:
After: After:
Restore Restore
unlet! b:ale_fixers
unlet! b:ale_enabled
" Clear the history we changed. " Clear the history we changed.
unlet! b:ale_history unlet! b:ale_history
@ -40,6 +49,7 @@ After:
let g:ale_buffer_info = {} let g:ale_buffer_info = {}
let g:ale_max_buffer_history_size = 20 let g:ale_max_buffer_history_size = 20
call ale#linter#Reset() call ale#linter#Reset()
delfunction TestFixer
delfunction CollectResults delfunction CollectResults
Given foobar (Some imaginary filetype): Given foobar (Some imaginary filetype):
@ -108,3 +118,18 @@ Execute(Nothing should be added to history if the size is too low):
call ale#history#Add(1, 'started', 347, 'last command') call ale#history#Add(1, 'started', 347, 'last command')
AssertEqual [], ale#history#Get(bufnr('')) AssertEqual [], ale#history#Get(bufnr(''))
Given foobar(Some file with an imaginary filetype):
a
b
c
Execute(The history should be updated when fixers are run):
let b:ale_fixers = {'foobar': ['TestFixer']}
let b:ale_enabled = 0
let g:ale_run_synchronously = 1
ALEFix
AssertEqual ['finished'], map(copy(b:ale_history), 'v:val.status')
AssertEqual '/bin/sh -c echo foo ', split(join(b:ale_history[0].command), '<')[0]