0
0
mirror of https://github.com/vim/vim.git synced 2025-09-24 03:44:06 -04:00

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)
This commit is contained in:
Bram Moolenaar
2019-02-13 19:23:10 +01:00
parent 9403a2168d
commit d9ef1b8d77
5 changed files with 32 additions and 11 deletions

View File

@@ -8112,12 +8112,14 @@ A jump table for the options with a short description can be found at |Q_op|.
window. window.
Possible values are: Possible values are:
"" use ConPTY if possible, winpty otherwise "" use ConPTY if it is stable, winpty otherwise
"winpty" use winpty, fail if not supported "winpty" use winpty, fail if not supported
"conpty" use |ConPTY|, fail if not supported "conpty" use |ConPTY|, fail if not supported
|ConPTY| support depends on the platform (Windows 10 October 2018 |ConPTY| support depends on the platform. Windows 10 October 2018
edition). winpty support needs to be installed. If neither is 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. supported then you cannot open a terminal window.
*'terse'* *'noterse'* *'terse'* *'noterse'*

View File

@@ -187,6 +187,8 @@ static int win32_setattrs(char_u *name, int attrs);
static int win32_set_archive(char_u *name); static int win32_set_archive(char_u *name);
static int vtp_working = 0; static int vtp_working = 0;
static int conpty_working = 0;
static int conpty_stable = 0;
static void vtp_flag_init(); static void vtp_flag_init();
#ifndef FEAT_GUI_W32 #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 * Support for pseudo-console (ConPTY) was added in windows 10
* version 1809 (October 2018 update). * version 1809 (October 2018 update). However, that version is unstable.
*/ */
#define CONPTY_FIRST_SUPPORT_BUILD MAKE_VER(10, 0, 17763) #define CONPTY_FIRST_SUPPORT_BUILD MAKE_VER(10, 0, 17763)
#define CONPTY_STABLE_BUILD MAKE_VER(10, 0, 32767) // T.B.D.
static void static void
vtp_flag_init(void) vtp_flag_init(void)
@@ -7659,10 +7662,10 @@ vtp_flag_init(void)
vtp_working = 0; vtp_working = 0;
#endif #endif
#ifdef FEAT_GUI_W32
if (ver >= CONPTY_FIRST_SUPPORT_BUILD) if (ver >= CONPTY_FIRST_SUPPORT_BUILD)
vtp_working = 1; conpty_working = 1;
#endif if (ver >= CONPTY_STABLE_BUILD)
conpty_stable = 1;
} }
@@ -7878,3 +7881,15 @@ has_vtp_working(void)
{ {
return vtp_working; return vtp_working;
} }
int
has_conpty_working(void)
{
return conpty_working;
}
int
is_conpty_stable(void)
{
return conpty_stable;
}

View File

@@ -70,7 +70,9 @@ void set_alist_count(void);
void fix_arg_enc(void); void fix_arg_enc(void);
int mch_setenv(char *var, char *value, int x); int mch_setenv(char *var, char *value, int x);
void control_console_color_rgb(void); void control_console_color_rgb(void);
int has_vtp_working(void);
int use_vtp(void); int use_vtp(void);
int is_term_win32(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 : */ /* vim: set ft=c : */

View File

@@ -5521,7 +5521,7 @@ dyn_conpty_init(int verbose)
if (handled) if (handled)
return result; return result;
if (!has_vtp_working()) if (!has_conpty_working())
{ {
handled = TRUE; handled = TRUE;
result = FAIL; result = FAIL;
@@ -6139,7 +6139,7 @@ term_and_job_init(
if (tty_type == NUL) if (tty_type == NUL)
{ {
if (has_conpty) if (has_conpty && (is_conpty_stable() || !has_winpty))
use_conpty = TRUE; use_conpty = TRUE;
else if (has_winpty) else if (has_winpty)
use_winpty = TRUE; use_winpty = TRUE;

View File

@@ -783,6 +783,8 @@ static char *(features[]) =
static int included_patches[] = static int included_patches[] =
{ /* Add new patch number below this line */ { /* Add new patch number below this line */
/**/
909,
/**/ /**/
908, 908,
/**/ /**/