patch 7.4.1878
Problem:    Whether a job has exited isn't detected until a character is
            typed.  After calling exit_cb the cursor is in the wrong place.
Solution:   Don't wait forever for a character to be typed when there is a
            pending job.  Update the screen if neede after calling exit_cb.
diff --git a/src/channel.c b/src/channel.c
index 75cadae..5168f74 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -4403,6 +4403,21 @@
 }
 
 /*
+ * Return TRUE when there is any job that might exit, which means
+ * job_check_ended() should be called once in a while.
+ */
+    int
+has_pending_job()
+{
+    job_T	    *job;
+
+    for (job = first_job; job != NULL; job = job->jv_next)
+	if (job->jv_status == JOB_STARTED && job_still_useful(job))
+	    return TRUE;
+    return FALSE;
+}
+
+/*
  * Called once in a while: check if any jobs that seem useful have ended.
  */
     void
@@ -4425,6 +4440,11 @@
 		job_status(job); /* may free "job" */
 	}
     }
+    if (channel_need_redraw)
+    {
+	channel_need_redraw = FALSE;
+	redraw_after_callback();
+    }
 }
 
 /*
@@ -4658,6 +4678,7 @@
 			   job->jv_exit_partial, NULL);
 	    clear_tv(&rettv);
 	    --job->jv_refcount;
+	    channel_need_redraw = TRUE;
 	}
 	if (job->jv_status == JOB_ENDED && job->jv_refcount == 0)
 	{