]> granicus.if.org Git - vim/commitdiff
patch 8.1.0929: no error when requesting ConPTY but it's not available v8.1.0929
authorBram Moolenaar <Bram@vim.org>
Sat, 16 Feb 2019 12:35:13 +0000 (13:35 +0100)
committerBram Moolenaar <Bram@vim.org>
Sat, 16 Feb 2019 12:35:13 +0000 (13:35 +0100)
Problem:    No error when requesting ConPTY but it's not available.
Solution:   Add an error message. (Hirohito Higashi, closes #3967)

runtime/doc/terminal.txt
src/terminal.c
src/version.c

index 4b009d32fb7b55856526be54a250be821e316994..42fe2c9d9db895fc855c27d11d97161f3feae5dc 100644 (file)
@@ -413,13 +413,13 @@ Just put the files somewhere in your PATH.  You can set the 'winptydll' option
 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
index 714cb2bcbdbca2494574600a9922b16640bae51d..899d3b687a3c5bd733efb2c0dbc37ac29826f3ab 100644 (file)
@@ -5620,10 +5620,8 @@ void (WINAPI *pDeleteProcThreadAttributeList)(LPPROC_THREAD_ATTRIBUTE_LIST);
     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;
        }
     }
index 4662831d46150861a2250702f3b028cbece79273..8a7ab7f5bfd038fd1b5d396fbf6c8cd8cbb133cc 100644 (file)
@@ -783,6 +783,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    929,
 /**/
     928,
 /**/