changeset 15844:63e71d195cee v8.1.0929

patch 8.1.0929: no error when requesting ConPTY but it's not available commit https://github.com/vim/vim/commit/5acd9872580a12ca1138275bf65d1cb9349e2a53 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Feb 16 13:35:13 2019 +0100 patch 8.1.0929: no error when requesting ConPTY but it's not available Problem: No error when requesting ConPTY but it's not available. Solution: Add an error message. (Hirohito Higashi, closes https://github.com/vim/vim/issues/3967)
author Bram Moolenaar <Bram@vim.org>
date Sat, 16 Feb 2019 13:45:07 +0100
parents 88b3b6a90d3a
children b1f535039f41
files runtime/doc/terminal.txt src/terminal.c src/version.c
diffstat 3 files changed, 15 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -413,13 +413,13 @@ Just put the files somewhere in your PAT
 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*
+							*ConPTY* *E982*
 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 'termwintype' to "winpty"
-(which you then must have instlled).
+characters. If you encounter any such issues, install "winpty".  Until the
+ConPTY problems have been fixed "winpty" will be preferred.
 
 Environment variables are used to pass information to the running job:
     VIM_SERVERNAME	v:servername
--- a/src/terminal.c
+++ b/src/terminal.c
@@ -5620,10 +5620,8 @@ void (WINAPI *pDeleteProcThreadAttribute
     static int
 dyn_conpty_init(int verbose)
 {
-    static BOOL	handled = FALSE;
-    static int	result;
-    HMODULE	hKerneldll;
-    int		i;
+    static HMODULE	hKerneldll = NULL;
+    int			i;
     static struct
     {
 	char	*name;
@@ -5642,16 +5640,17 @@ dyn_conpty_init(int verbose)
 	{NULL, NULL}
     };
 
-    if (handled)
-	return result;
-
     if (!has_conpty_working())
     {
-	handled = TRUE;
-	result = FAIL;
+	if (verbose)
+	    emsg(_("E982: ConPTY is not available"));
 	return FAIL;
     }
 
+    // No need to initialize twice.
+    if (hKerneldll)
+	return OK;
+
     hKerneldll = vimLoadLib("kernel32.dll");
     for (i = 0; conpty_entry[i].name != NULL
 					&& conpty_entry[i].ptr != NULL; ++i)
@@ -5661,12 +5660,11 @@ dyn_conpty_init(int verbose)
 	{
 	    if (verbose)
 		semsg(_(e_loadfunc), conpty_entry[i].name);
+	    hKerneldll = NULL;
 	    return FAIL;
 	}
     }
 
-    handled = TRUE;
-    result = OK;
     return OK;
 }
 
@@ -6015,6 +6013,7 @@ dyn_winpty_init(int verbose)
 	{
 	    if (verbose)
 		semsg(_(e_loadfunc), winpty_entry[i].name);
+	    hWinPtyDLL = NULL;
 	    return FAIL;
 	}
     }
--- a/src/version.c
+++ b/src/version.c
@@ -784,6 +784,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    929,
+/**/
     928,
 /**/
     927,