comparison src/channel.c @ 8463:508504ca52ac v7.4.1522

commit https://github.com/vim/vim/commit/6ff02c96519946716069f05c62849986a706033b Author: Bram Moolenaar <Bram@vim.org> Date: Tue Mar 8 20:12:44 2016 +0100 patch 7.4.1522 Problem: Cannot write channel err to a buffer. Solution: Implement it.
author Christian Brabandt <cb@256bit.org>
date Tue, 08 Mar 2016 20:15:04 +0100
parents fed4e19bd884
children 86a327403fb0
comparison
equal deleted inserted replaced
8462:9b1f271c9769 8463:508504ca52ac
869 869
870 /* 870 /*
871 * Find a buffer matching "name" or create a new one. 871 * Find a buffer matching "name" or create a new one.
872 */ 872 */
873 static buf_T * 873 static buf_T *
874 find_buffer(char_u *name) 874 find_buffer(char_u *name, int err)
875 { 875 {
876 buf_T *buf = NULL; 876 buf_T *buf = NULL;
877 buf_T *save_curbuf = curbuf; 877 buf_T *save_curbuf = curbuf;
878 878
879 if (name != NULL && *name != NUL) 879 if (name != NULL && *name != NUL)
888 set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL); 888 set_option_value((char_u *)"bh", 0L, (char_u *)"hide", OPT_LOCAL);
889 #endif 889 #endif
890 curbuf = buf; 890 curbuf = buf;
891 if (curbuf->b_ml.ml_mfp == NULL) 891 if (curbuf->b_ml.ml_mfp == NULL)
892 ml_open(curbuf); 892 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);
894 changed_bytes(1, 0); 895 changed_bytes(1, 0);
895 curbuf = save_curbuf; 896 curbuf = save_curbuf;
896 } 897 }
897 898
898 return buf; 899 return buf;
966 { 967 {
967 /* writing output to a buffer. Default mode is NL. */ 968 /* writing output to a buffer. Default mode is NL. */
968 if (!(opt->jo_set & JO_OUT_MODE)) 969 if (!(opt->jo_set & JO_OUT_MODE))
969 channel->ch_part[PART_OUT].ch_mode = MODE_NL; 970 channel->ch_part[PART_OUT].ch_mode = MODE_NL;
970 channel->ch_part[PART_OUT].ch_buffer = 971 channel->ch_part[PART_OUT].ch_buffer =
971 find_buffer(opt->jo_io_name[PART_OUT]); 972 find_buffer(opt->jo_io_name[PART_OUT], FALSE);
972 ch_logs(channel, "writing to buffer '%s'", 973 ch_logs(channel, "writing out to buffer '%s'",
973 (char *)channel->ch_part[PART_OUT].ch_buffer->b_ffname); 974 (char *)channel->ch_part[PART_OUT].ch_buffer->b_ffname);
975 }
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);
974 } 992 }
975 } 993 }
976 994
977 /* 995 /*
978 * Set the callback for "channel"/"part" for the response with "id". 996 * Set the callback for "channel"/"part" for the response with "id".