From 5acd9872580a12ca1138275bf65d1cb9349e2a53 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Sat, 16 Feb 2019 13:35:13 +0100 Subject: [PATCH] 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 #3967) --- runtime/doc/terminal.txt | 6 +++--- src/terminal.c | 21 ++++++++++----------- src/version.c | 2 ++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index 4b009d32f..42fe2c9d9 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -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 diff --git a/src/terminal.c b/src/terminal.c index 714cb2bcb..899d3b687 100644 --- a/src/terminal.c +++ b/src/terminal.c @@ -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; } } diff --git a/src/version.c b/src/version.c index 4662831d4..8a7ab7f5b 100644 --- a/src/version.c +++ b/src/version.c @@ -783,6 +783,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 929, /**/ 928, /**/ -- 2.40.0