aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/eval/funcs.c1
-rw-r--r--test/functional/core/job_spec.lua23
2 files changed, 23 insertions, 1 deletions
diff --git a/src/nvim/eval/funcs.c b/src/nvim/eval/funcs.c
index 505a91813a..550d296093 100644
--- a/src/nvim/eval/funcs.c
+++ b/src/nvim/eval/funcs.c
@@ -4187,6 +4187,7 @@ static void f_jobwait(typval_T *argvars, typval_T *rettv, EvalFuncData fptr)
}
ui_busy_start();
+ ui_flush();
list_T *args = argvars[0].vval.v_list;
Channel **jobs = xcalloc((size_t)tv_list_len(args), sizeof(*jobs));
MultiQueue *waiting_jobs = multiqueue_new_parent(loop_on_put, &main_loop);
diff --git a/test/functional/core/job_spec.lua b/test/functional/core/job_spec.lua
index 613dff577a..befbd4bc3b 100644
--- a/test/functional/core/job_spec.lua
+++ b/test/functional/core/job_spec.lua
@@ -700,7 +700,7 @@ describe('jobs', function()
os.remove('Xtest_jobstart_env')
end)
- describe('jobwait', function()
+ describe('jobwait()', function()
before_each(function()
if is_os('win') then
helpers.set_shell_powershell()
@@ -874,6 +874,27 @@ describe('jobs', function()
eq({'notification', 'wait', {{-1, -1}}}, next_msg())
end)
end)
+
+ it('hides cursor when waiting', function()
+ local screen = Screen.new(30, 3)
+ screen:set_default_attr_ids({
+ [0] = {foreground = Screen.colors.Blue1, bold = true};
+ })
+ screen:attach()
+ command([[let g:id = jobstart([v:progpath, '--clean', '--headless'])]])
+ feed_command('call jobwait([g:id], 300)')
+ screen:expect{grid=[[
+ |
+ {0:~ }|
+ :call jobwait([g:id], 300) |
+ ]], timeout=100}
+ funcs.jobstop(meths.get_var('id'))
+ screen:expect{grid=[[
+ ^ |
+ {0:~ }|
+ :call jobwait([g:id], 300) |
+ ]]}
+ end)
end)
pending('exit event follows stdout, stderr', function()