From 90ad03408ef7551fb25f659d44843b7158186fc8 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Wed, 15 Feb 2017 21:13:00 +0900 Subject: [PATCH] use job for s:system() on vim8 --- plug.vim | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/plug.vim b/plug.vim index 2a61349..b804675 100644 --- a/plug.vim +++ b/plug.vim @@ -1979,11 +1979,21 @@ endfunction function! s:system(cmd, ...) try + let maxfuncdepth = &maxfuncdepth + set maxfuncdepth=99999 let [sh, shrd] = s:chsh(1) let cmd = a:0 > 0 ? s:with_cd(a:cmd, a:1) : a:cmd + if s:vim8 + let out = '' + let job = job_start([&shell, &shellcmdflag, cmd], {'out_cb': {ch,msg->[execute("let out .= msg"), out]}, 'out_mode': 'raw'}) + while job_status(job) == 'run' + sleep 10m + endwhile + return out + endif return system(s:is_win ? '('.cmd.')' : cmd) finally - let [&shell, &shellredir] = [sh, shrd] + let [&shell, &shellredir, &maxfuncdepth] = [sh, shrd, maxfuncdepth] endtry endfunction