@@ -871,7 +871,7 @@ channel_set_job(channel_T *channel, job_T *job, jobopt_T *options)
871871 * Find a buffer matching "name" or create a new one.
872872 */
873873 static buf_T *
874- find_buffer (char_u * name )
874+ find_buffer (char_u * name , int err )
875875{
876876 buf_T * buf = NULL ;
877877 buf_T * save_curbuf = curbuf ;
@@ -890,7 +890,8 @@ find_buffer(char_u *name)
890890 curbuf = buf ;
891891 if (curbuf -> b_ml .ml_mfp == NULL )
892892 ml_open (curbuf );
893- ml_replace (1 , (char_u * )"Reading from channel output..." , TRUE);
893+ ml_replace (1 , (char_u * )(err ? "Reading from channel error..."
894+ : "Reading from channel output..." ), TRUE);
894895 changed_bytes (1 , 0 );
895896 curbuf = save_curbuf ;
896897 }
@@ -968,10 +969,27 @@ channel_set_options(channel_T *channel, jobopt_T *opt)
968969 if (!(opt -> jo_set & JO_OUT_MODE ))
969970 channel -> ch_part [PART_OUT ].ch_mode = MODE_NL ;
970971 channel -> ch_part [PART_OUT ].ch_buffer =
971- find_buffer (opt -> jo_io_name [PART_OUT ]);
972- ch_logs (channel , "writing to buffer '%s'" ,
972+ find_buffer (opt -> jo_io_name [PART_OUT ], FALSE );
973+ ch_logs (channel , "writing out to buffer '%s'" ,
973974 (char * )channel -> ch_part [PART_OUT ].ch_buffer -> b_ffname );
974975 }
976+
977+ if ((opt -> jo_set & JO_ERR_IO ) && (opt -> jo_io [PART_ERR ] == JIO_BUFFER
978+ || (opt -> jo_io [PART_ERR ] == JIO_OUT && (opt -> jo_set & JO_OUT_IO )
979+ && opt -> jo_io [PART_OUT ] == JIO_BUFFER )))
980+ {
981+ /* writing err to a buffer. Default mode is NL. */
982+ if (!(opt -> jo_set & JO_ERR_MODE ))
983+ channel -> ch_part [PART_ERR ].ch_mode = MODE_NL ;
984+ if (opt -> jo_io [PART_ERR ] == JIO_OUT )
985+ channel -> ch_part [PART_ERR ].ch_buffer =
986+ channel -> ch_part [PART_OUT ].ch_buffer ;
987+ else
988+ channel -> ch_part [PART_ERR ].ch_buffer =
989+ find_buffer (opt -> jo_io_name [PART_ERR ], TRUE);
990+ ch_logs (channel , "writing err to buffer '%s'" ,
991+ (char * )channel -> ch_part [PART_ERR ].ch_buffer -> b_ffname );
992+ }
975993}
976994
977995/*
0 commit comments