summaryrefslogtreecommitdiff
path: root/autoload
diff options
context:
space:
mode:
authorw0rp <devw0rp@gmail.com>2017-05-27 19:23:13 +0100
committerw0rp <devw0rp@gmail.com>2017-05-27 19:23:13 +0100
commit8e997ac2319efac06f7ca6b0912ca00a47ba26d1 (patch)
treead0765912cb03e054d27f9ce47fde0d8d7873a6a /autoload
parent5825a65627a85794442f6e19436b72f34fa56450 (diff)
downloadale-8e997ac2319efac06f7ca6b0912ca00a47ba26d1.zip
Fix #584 - Fix Neovim line handling issues
Diffstat (limited to 'autoload')
-rw-r--r--autoload/ale/job.vim24
1 files changed, 16 insertions, 8 deletions
diff --git a/autoload/ale/job.vim b/autoload/ale/job.vim
index 96f2ad4c..aeef5796 100644
--- a/autoload/ale/job.vim
+++ b/autoload/ale/job.vim
@@ -42,25 +42,33 @@ function! ale#job#JoinNeovimOutput(job, last_line, data, callback) abort
endfunction
function! s:NeoVimCallback(job, data, event) abort
- let l:job_info = s:job_map[a:job]
+ let l:info = s:job_map[a:job]
if a:event ==# 'stdout'
- let l:job_info.out_cb_line = ale#job#JoinNeovimOutput(
+ let l:info.out_cb_line = ale#job#JoinNeovimOutput(
\ a:job,
- \ l:job_info.out_cb_line,
+ \ l:info.out_cb_line,
\ a:data,
- \ ale#util#GetFunction(l:job_info.out_cb),
+ \ ale#util#GetFunction(l:info.out_cb),
\)
elseif a:event ==# 'stderr'
- let l:job_info.err_cb_line = ale#job#JoinNeovimOutput(
+ let l:info.err_cb_line = ale#job#JoinNeovimOutput(
\ a:job,
- \ l:job_info.err_cb_line,
+ \ l:info.err_cb_line,
\ a:data,
- \ ale#util#GetFunction(l:job_info.err_cb),
+ \ ale#util#GetFunction(l:info.err_cb),
\)
else
+ if has_key(l:info, 'out_cb') && !empty(l:info.out_cb_line)
+ call ale#util#GetFunction(l:info.out_cb)(a:job, l:info.out_cb_line)
+ endif
+
+ if has_key(l:info, 'err_cb') && !empty(l:info.err_cb_line)
+ call ale#util#GetFunction(l:info.err_cb)(a:job, l:info.err_cb_line)
+ endif
+
try
- call ale#util#GetFunction(l:job_info.exit_cb)(a:job, a:data)
+ call ale#util#GetFunction(l:info.exit_cb)(a:job, a:data)
finally
" Automatically forget about the job after it's done.
if has_key(s:job_map, a:job)