patch 7.4.1618
Problem:    Starting job with output to buffer changes options in the current
            buffer.
Solution:   Set "curbuf" earlier. (Yasuhiro Matsumoto)
diff --git a/src/channel.c b/src/channel.c
index b3115ad..7fe68d5 100644
--- a/src/channel.c
+++ b/src/channel.c
@@ -1003,11 +1003,11 @@
 	buf = buflist_new(name == NULL || *name == NUL ? NULL : name,
 					       NULL, (linenr_T)0, BLN_LISTED);
 	buf_copy_options(buf, BCO_ENTER);
+	curbuf = buf;
 #ifdef FEAT_QUICKFIX
 	set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
 	set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL);
 #endif
-	curbuf = buf;
 	if (curbuf->b_ml.ml_mfp == NULL)
 	    ml_open(curbuf);
 	ml_replace(1, (char_u *)(err ? "Reading from channel error..."