Problem: MS-Windows: using ConPTY even though it is not stable.
Solution: When ConPTY version is unstable, prefer using winpty. (Ken Takata,
closes #3949)
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'*
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
/*
* 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
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;
}
{
return vtp_working;
}
+
+ int
+has_conpty_working(void)
+{
+ return conpty_working;
+}
+
+ int
+is_conpty_stable(void)
+{
+ return conpty_stable;
+}
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 : */
if (handled)
return result;
- if (!has_vtp_working())
+ if (!has_conpty_working())
{
handled = TRUE;
result = FAIL;
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;
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 909,
/**/
908,
/**/