patch 7.4.1438
Problem:    Can't get buffer number of a channel.
Solution:   Add ch_getbufnr().
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index 6a41c5f..b05e592 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1822,6 +1822,7 @@
 				any	evaluate {expr} on JSON {channel}
 ch_evalraw( {channel}, {string} [, {options}])
 				any	evaluate {string} on raw {channel}
+ch_getbufnr( {channel}, {what})	Number	get buffer number for {channel}/{what}
 ch_getjob( {channel})		Job	get the Job of {channel}
 ch_log( {msg} [, {channel}])	none	write {msg} in the channel log file
 ch_logfile( {fname} [, {mode}])	none	start logging channel activity
@@ -2721,6 +2722,13 @@
 
 		{only available when compiled with the |+channel| feature}
 
+ch_getbufnr({channel}, {what})				 *ch_getbufnr()*
+		Get the buffer number that {channel} is using for {what}.
+		{what} can be "err" for stderr, "out" for stdout or empty for
+		socket output.
+		Returns -1 when there is no buffer.
+		{only available when compiled with the |+channel| feature}
+
 ch_getjob({channel})						*ch_getjob()*
 		Get the Job associated with {channel}.
 		If there is no job calling |job_status()| on the returned Job