patch 7.4.1438
Problem:    Can't get buffer number of a channel.
Solution:   Add ch_getbufnr().
diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt
index 4571258..80a269a 100644
--- a/runtime/doc/channel.txt
+++ b/runtime/doc/channel.txt
@@ -561,11 +561,14 @@
 
 When the IO mode is "buffer" and there is a callback, the text is appended to
 the buffer before invoking the callback.
-							*E915*
+
 The name of the buffer is compared the full name of existing buffers.  If
-there is a match that buffer is used.  Otherwise a new buffer is created,
-where 'buftype' is set to "nofile" and 'bufhidden' to "hide".  If you prefer
-other settings, create the buffer first and pass the buffer number.
+there is a match that buffer is used.  Otherwise a new buffer is created.
+Use an empty name to always create a new buffer.  |ch_getbufnr()| can then be
+used to get the buffer number.
+
+For a new buffer 'buftype' is set to "nofile" and 'bufhidden' to "hide".  If
+you prefer other settings, create the buffer first and pass the buffer number.
 
 When the buffer written to is displayed in a window and the cursor is in the
 first column of the last line, the cursor will be moved to the newly added
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