# HG changeset patch # User Bram Moolenaar # Date 1550082609 -3600 # Node ID 864ec0dd71b9eca9828c93fe915be7d6bfc1ecb5 # Parent ed9724cb549d6f3e7455af58eb37f6d012f215e7 patch 8.1.0909: MS-Windows: using ConPTY even though it is not stable commit https://github.com/vim/vim/commit/d9ef1b8d77f304c83241f807c17ffa26c9033778 Author: Bram Moolenaar Date: Wed Feb 13 19:23:10 2019 +0100 patch 8.1.0909: MS-Windows: using ConPTY even though it is not stable Problem: MS-Windows: using ConPTY even though it is not stable. Solution: When ConPTY version is unstable, prefer using winpty. (Ken Takata, closes #3949) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -8112,12 +8112,14 @@ A jump table for the options with a shor window. Possible values are: - "" use ConPTY if possible, winpty otherwise + "" use ConPTY if it is stable, 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 + |ConPTY| support depends on the platform. Windows 10 October 2018 + Update is the first version that supports ConPTY, however it is still + considered unstable. ConPTY might become stable in the next release + of Windows 10. winpty support needs to be installed. If neither is supported then you cannot open a terminal window. *'terse'* *'noterse'* diff --git a/src/os_win32.c b/src/os_win32.c --- a/src/os_win32.c +++ b/src/os_win32.c @@ -187,6 +187,8 @@ static int win32_setattrs(char_u *name, static int win32_set_archive(char_u *name); static int vtp_working = 0; +static int conpty_working = 0; +static int conpty_stable = 0; static void vtp_flag_init(); #ifndef FEAT_GUI_W32 @@ -7638,9 +7640,10 @@ mch_setenv(char *var, char *value, int x /* * Support for pseudo-console (ConPTY) was added in windows 10 - * version 1809 (October 2018 update). - */ -#define CONPTY_FIRST_SUPPORT_BUILD MAKE_VER(10, 0, 17763) + * version 1809 (October 2018 update). However, that version is unstable. + */ +#define CONPTY_FIRST_SUPPORT_BUILD MAKE_VER(10, 0, 17763) +#define CONPTY_STABLE_BUILD MAKE_VER(10, 0, 32767) // T.B.D. static void vtp_flag_init(void) @@ -7659,10 +7662,10 @@ vtp_flag_init(void) vtp_working = 0; #endif -#ifdef FEAT_GUI_W32 if (ver >= CONPTY_FIRST_SUPPORT_BUILD) - vtp_working = 1; -#endif + conpty_working = 1; + if (ver >= CONPTY_STABLE_BUILD) + conpty_stable = 1; } @@ -7878,3 +7881,15 @@ has_vtp_working(void) { return vtp_working; } + + int +has_conpty_working(void) +{ + return conpty_working; +} + + int +is_conpty_stable(void) +{ + return conpty_stable; +} diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro --- a/src/proto/os_win32.pro +++ b/src/proto/os_win32.pro @@ -70,7 +70,9 @@ void set_alist_count(void); void fix_arg_enc(void); int mch_setenv(char *var, char *value, int x); void control_console_color_rgb(void); -int has_vtp_working(void); int use_vtp(void); int is_term_win32(void); +int has_vtp_working(void); +int has_conpty_working(void); +int is_conpty_stable(void); /* vim: set ft=c : */ diff --git a/src/terminal.c b/src/terminal.c --- a/src/terminal.c +++ b/src/terminal.c @@ -5521,7 +5521,7 @@ dyn_conpty_init(int verbose) if (handled) return result; - if (!has_vtp_working()) + if (!has_conpty_working()) { handled = TRUE; result = FAIL; @@ -6139,7 +6139,7 @@ term_and_job_init( if (tty_type == NUL) { - if (has_conpty) + if (has_conpty && (is_conpty_stable() || !has_winpty)) use_conpty = TRUE; else if (has_winpty) use_winpty = TRUE; diff --git a/src/version.c b/src/version.c --- 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 */ /**/ + 909, +/**/ 908, /**/ 907,