Skip to content

Commit

Permalink
Make winpty as default on unstable ConPTY environment
Browse files Browse the repository at this point in the history
  • Loading branch information
k-takata committed Feb 13, 2019
1 parent 5382f12 commit f7d1eac
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 11 deletions.
8 changes: 5 additions & 3 deletions runtime/doc/options.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8112,12 +8112,14 @@ A jump table for the options with a short description can be found at |Q_op|.
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'*
Expand Down
25 changes: 20 additions & 5 deletions src/os_win32.c
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,8 @@ static int win32_setattrs(char_u *name, int attrs);
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
Expand Down Expand Up @@ -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).
* 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)
Expand All @@ -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;

}

Expand Down Expand Up @@ -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;
}
4 changes: 3 additions & 1 deletion src/proto/os_win32.pro
Original file line number Diff line number Diff line change
Expand Up @@ -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 : */
4 changes: 2 additions & 2 deletions src/terminal.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -6139,7 +6139,7 @@ term_and_job_init(

if (tty_type == NUL)
{
if (has_conpty)
if (has_conpty && is_conpty_stable())
use_conpty = TRUE;
else if (has_winpty)
use_winpty = TRUE;
Expand Down

0 comments on commit f7d1eac

Please sign in to comment.