Support reading from both output streams, and fix PHP error parsing, which sometimes logs to stderr, sometimes stdout.
This commit is contained in:
parent
f0f17e4b0d
commit
d97e25a260
@ -39,7 +39,7 @@ endfunction
|
||||
call ALEAddLinter('php', {
|
||||
\ 'name': 'php',
|
||||
\ 'executable': 'php',
|
||||
\ 'output_stream': 'stderr',
|
||||
\ 'output_stream': 'both',
|
||||
\ 'command': 'php -l --',
|
||||
\ 'callback': 'ale_linters#php#php#Handle',
|
||||
\})
|
||||
|
10
doc/ale.txt
10
doc/ale.txt
@ -324,10 +324,12 @@ ALEAddLinter(filetype, linter) *ALEAddLinter()*
|
||||
|
||||
`output_stream` A |String| for the output stream the lines of output
|
||||
should be read from for the command which is run. The
|
||||
accepted values are `'stdout'` and `'stderr'`. This
|
||||
argument defaults to `'stdout'`. This argument can be
|
||||
set for linter programs which output their errors and
|
||||
warnings to the stderr stream instead of stdout.
|
||||
accepted values are `'stdout'`, `'stderr'`, and
|
||||
`'both'`. This argument defaults to `'stdout'`. This
|
||||
argument can be set for linter programs which output
|
||||
their errors and warnings to the stderr stream
|
||||
instead of stdout. The option `'both'` will read
|
||||
from both stder and stdout at the same time.
|
||||
|
||||
Some programs for checking for errors are not capable of receiving input
|
||||
from stdin, as is required by ALE. To remedy this, a wrapper script is
|
||||
|
@ -184,6 +184,12 @@ function! s:ApplyLinter(buffer, linter)
|
||||
\ 'on_stderr': 's:GatherOutputNeoVim',
|
||||
\ 'on_exit': 's:HandleExitNeoVim',
|
||||
\})
|
||||
elseif a:linter.output_stream ==# 'both'
|
||||
let a:linter.job = jobstart(command, {
|
||||
\ 'on_stdout': 's:GatherOutputNeoVim',
|
||||
\ 'on_stderr': 's:GatherOutputNeoVim',
|
||||
\ 'on_exit': 's:HandleExitNeoVim',
|
||||
\})
|
||||
else
|
||||
let a:linter.job = jobstart(command, {
|
||||
\ 'on_stdout': 's:GatherOutputNeoVim',
|
||||
@ -202,6 +208,10 @@ function! s:ApplyLinter(buffer, linter)
|
||||
if a:linter.output_stream ==# 'stderr'
|
||||
" Read from stderr instead of stdout.
|
||||
let job_options.err_cb = function('s:GatherOutputVim')
|
||||
elseif a:linter.output_stream ==# 'both'
|
||||
" Read from both streams.
|
||||
let job_options.out_cb = function('s:GatherOutputVim')
|
||||
let job_options.err_cb = function('s:GatherOutputVim')
|
||||
else
|
||||
let job_options.out_cb = function('s:GatherOutputVim')
|
||||
endif
|
||||
|
Loading…
Reference in New Issue
Block a user