81c73da3b9
A new function is added here which will later be modified for public use in linter and fixer callbacks. All linting and fixing now goes through this new function, to prove that it works in all cases.
63 lines
1.4 KiB
Text
63 lines
1.4 KiB
Text
Before:
|
|
Save g:ale_buffer_info
|
|
Save g:ale_echo_cursor
|
|
Save g:ale_enabled
|
|
Save g:ale_run_synchronously
|
|
Save g:ale_set_highlights
|
|
Save g:ale_set_loclist
|
|
Save g:ale_set_quickfix
|
|
Save g:ale_set_signs
|
|
|
|
" Disable the features we don't need to check.
|
|
let g:ale_buffer_info = {}
|
|
let g:ale_echo_cursor = 0
|
|
let g:ale_enabled = 1
|
|
let g:ale_run_synchronously = 1
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
let g:ale_set_highlights = 0
|
|
let g:ale_set_loclist = 0
|
|
let g:ale_set_quickfix = 0
|
|
let g:ale_set_signs = 0
|
|
|
|
let g:output = []
|
|
|
|
function! TestCallback(buffer, output)
|
|
" Extract just letters from the output.
|
|
let g:output = filter(
|
|
\ map(a:output, 'matchstr(v:val, ''[a-zA-Z]\+'')'),
|
|
\ '!empty(v:val)'
|
|
\)
|
|
|
|
return []
|
|
endfunction
|
|
|
|
call ale#linter#PreventLoading('foobar')
|
|
call ale#linter#Define('foobar', {
|
|
\ 'name': 'testlinter',
|
|
\ 'callback': 'TestCallback',
|
|
\ 'executable': has('win32') ? 'cmd' : 'cat',
|
|
\ 'command': has('win32') ? 'type %t' : 'cat %t',
|
|
\})
|
|
|
|
After:
|
|
Restore
|
|
|
|
unlet! g:ale_run_synchronously_callbacks
|
|
unlet! g:output
|
|
delfunction TestCallback
|
|
|
|
call ale#engine#Cleanup(bufnr(''))
|
|
call ale#linter#Reset()
|
|
|
|
Given foobar (Some imaginary filetype):
|
|
foo
|
|
bar
|
|
baz
|
|
|
|
Execute(ALE should be able to read the %t file):
|
|
AssertEqual 'foobar', &filetype
|
|
|
|
ALELint
|
|
call ale#test#FlushJobs()
|
|
|
|
AssertEqual ['foo', 'bar', 'baz'], g:output
|