patch 7.4.1579
Problem:    Missing changes in channel.c
Solution:   Include the changes.
diff --git a/src/channel.c b/src/channel.c
index e66be18..1f7ad61 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1285,19 +1285,7 @@
 			&rettv, 2, argv, 0L, 0L, &dummy, TRUE, partial, NULL);
     clear_tv(&rettv);
 
-    /* If an echo command was used the cursor needs to be put back where
-     * it belongs. If highlighting was changed a redraw is needed. */
-    update_screen(0);
-    setcursor();
-    cursor_on();
-    out_flush();
-#ifdef FEAT_GUI
-    if (gui.in_use)
-    {
-	gui_update_cursor(TRUE, FALSE);
-	gui_mch_flush();
-    }
-#endif
+    redraw_after_callback();
 }
 
 /*
@@ -3024,28 +3012,6 @@
     return channel->ch_part[part].ch_timeout;
 }
 
-/*
- * Get a callback from "arg".  It can be a Funcref or a function name.
- * When "arg" is zero return an empty string.
- * Return NULL for an invalid argument.
- */
-    static char_u *
-get_callback(typval_T *arg, partial_T **pp)
-{
-    if (arg->v_type == VAR_PARTIAL && arg->vval.v_partial != NULL)
-    {
-	*pp = arg->vval.v_partial;
-	return (*pp)->pt_name;
-    }
-    *pp = NULL;
-    if (arg->v_type == VAR_FUNC || arg->v_type == VAR_STRING)
-	return arg->vval.v_string;
-    if (arg->v_type == VAR_NUMBER && arg->vval.v_number == 0)
-	return (char_u *)"";
-    EMSG(_("E921: Invalid callback argument"));
-    return NULL;
-}
-
     static int
 handle_mode(typval_T *item, jobopt_T *opt, ch_mode_T *modep, int jo)
 {
diff --git a/src/version.c b/src/version.c
index 2d03316..e4c3412 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1579,
+/**/
     1578,
 /**/
     1577,