patch 8.1.0870: Vim doesn't use the new ConPTY support in Windows 10

Problem:    Vim doesn't use the new ConPTY support in Windows 10.
Solution:   Use ConPTY support, if available. (Nobuhiro Takasaki, closes #3794)
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index d888d9c..cce17b9 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*	For Vim version 8.1.  Last change: 2019 Jan 29
+*eval.txt*	For Vim version 8.1.  Last change: 2019 Feb 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -696,7 +696,7 @@
 	:let otherblob = myblob[:]	" make a copy of the Blob
 
 If the first index is beyond the last byte of the Blob or the second index is
-before the first index, the result is an empty list.  There is no error
+before the first index, the result is an empty Blob.  There is no error
 message.
 
 If the second index is equal to or greater than the length of the list the
@@ -9469,6 +9469,10 @@
 		   "ansi_colors"     A list of 16 color names or hex codes
 				     defining the ANSI palette used in GUI
 				     color modes.  See |g:terminal_ansi_colors|.
+		   "term_mode"	     (MS-Windows only): Specify which pty to
+				     use:
+					"winpty": Use winpty
+					"conpty": Use ConPTY (if available)
 
 		{only available when compiled with the |+terminal| feature}
 
@@ -10186,6 +10190,7 @@
 cmdline_info		Compiled with 'showcmd' and 'ruler' support.
 comments		Compiled with |'comments'| support.
 compatible		Compiled to be very Vi compatible.
+conpty			Platform where |ConPTY| can be used.
 cryptv			Compiled with encryption support |encryption|.
 cscope			Compiled with |cscope| support.
 cursorbind		Compiled with |cursorbind| (always true)
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 04c38b2..e73a9da 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -8054,6 +8054,23 @@
 	Note that the "cterm" attributes are still used, not the "gui" ones.
 	NOTE: This option is reset when 'compatible' is set.
 
+						*'termmode'* *'tmod'*
+'termmode' 'tmod'	string  (default "")
+			local to window
+			{not in Vi, MS-Windows only}
+	Whether the window uses winpty or |ConPTY| as the virtual console.
+	When set before opening the terminal, it influences what pty is used.
+	When opening the terminal it will be set to the actually used pty.
+
+	Possible values are:
+	    ""		use ConPTY if possible, winpty otherwise
+	    "winpty"	use winpty, fail if not supported
+	    "conpty"	use |ConPTY|, fail if not supported
+
+	|ConPTY| support depends on the platform (Windows 10 October 2018
+	edition).  winpty support needs to be installed.  If neither is
+	supported then you cannot open a terminal window.
+
 						*'termwinscroll'* *'twsl'*
 'termwinscroll' 'twsl'	number	(default 10000)
 			local to buffer
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index 0db69df..3b78b55 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -228,7 +228,8 @@
 					for Python "++eof=exit()".  Special
 					codes can be used like with `:map`,
 					e.g. "<C-Z>" for CTRL-Z.
-
+			++winpty	Use winpty as the virtual console.
+			++conpty	Use |ConPTY| as the virtual console.
 			If you want to use more options use the |term_start()|
 			function.
 			If you want to split the window vertically, use: >
@@ -410,6 +411,13 @@
 to point to the right file, if needed.  If you have both the 32-bit and 64-bit
 version, rename to winpty32.dll and winpty64.dll to match the way Vim was
 build.
+							*ConPTY*
+On more recent versions of MS-Windows 10 (beginning with the "October 2018
+Update"), winpty is no longer required. On those versions, |:terminal| will use
+Windows' built-in support for hosting terminal applications, "ConPTY".  When
+ConPTY is in use, there may be rendering artifacts regarding ambiguous-width
+characters. If you encounter any such issues, set 'termmode' to winpty (which
+you then must have instlled).
 
 Environment variables are used to pass information to the running job:
     VIM_SERVERNAME	v:servername