# HG changeset patch # User Christian Brabandt # Date 1502918103 -7200 # Node ID bee3751f3d4ea45c96a454c59d0468be2aaab6d6 # Parent 7b1eedab0ff1f02accca4bc7e159dfea09c659b0 patch 8.0.0949: winpty.dll name is fixed commit https://github.com/vim/vim/commit/9e13aa7729486d79a530ecae1a7a95d10da27d61 Author: Bram Moolenaar Date: Wed Aug 16 23:14:08 2017 +0200 patch 8.0.0949: winpty.dll name is fixed Problem: winpty.dll name is fixed. Solution: Add the 'winptydll' option. Make the default name depend on whether it is a 32-bit or 64-bit build. (idea by Yasuhiro Matsumoto, closes #1978) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -8831,6 +8831,20 @@ A jump table for the options with a shor large number, it will cause errors when opening more than a few windows. A value of 0 to 12 is reasonable. + *'winptydll'* +'winptydll' string (default "winpty32.dll" or "winpty64.dll") + global + {not in Vi} + {only available when compiled with the |terminal| + feature on MS-Windows} + Specifies the name of the winpty shared library, used for the + |:terminal| command. The default depends on whether was build as a + 32-bit or 64-bit executable. If not found, "win32pty.dll" is tried as + a fallback. + Environment variables are expanded |:set_env|. + This option cannot be set from a |modeline| or in the |sandbox|, for + security reasons. + *'winwidth'* *'wiw'* *E592* 'winwidth' 'wiw' number (default 20) global diff --git a/src/option.c b/src/option.c --- a/src/option.c +++ b/src/option.c @@ -3098,6 +3098,20 @@ static struct vimoption options[] = (char_u *)NULL, PV_NONE, #endif {(char_u *)1L, (char_u *)0L} SCRIPTID_INIT}, + {"winptydll", NULL, P_STRING|P_EXPAND|P_VI_DEF|P_SECURE, +#if defined(WIN3264) && defined(TERMINAL) + (char_u *)&p_winptydll, PV_NONE, { +# ifdef _WIN64 + (char_u *)"winpty64.dll", +# else + (char_u *)"winpty32.dll", +# endif + (char_u *)0L} +#else + (char_u *)NULL, PV_NONE, + {(char_u *)0L, (char_u *)0L} +#endif + SCRIPTID_INIT}, {"winwidth", "wiw", P_NUM|P_VI_DEF, #ifdef FEAT_WINDOWS (char_u *)&p_wiw, PV_NONE, diff --git a/src/option.h b/src/option.h --- a/src/option.h +++ b/src/option.h @@ -966,6 +966,9 @@ EXTERN long p_wmh; /* 'winminheight' */ EXTERN long p_wmw; /* 'winminwidth' */ EXTERN long p_wiw; /* 'winwidth' */ #endif +#if defined(WIN3264) && defined(TERMINAL) +EXTERN char_u *p_winptydll; /* 'winptydll' */ +#endif EXTERN int p_ws; /* 'wrapscan' */ EXTERN int p_write; /* 'write' */ EXTERN int p_wa; /* 'writeany' */ diff --git a/src/terminal.c b/src/terminal.c --- a/src/terminal.c +++ b/src/terminal.c @@ -38,6 +38,7 @@ * in tl_scrollback are no longer used. * * TODO: + * - make [range]terminal pipe [range] lines to the terminal * - implement term_setsize() * - add test for giving error for invalid 'termsize' value. * - support minimal size when 'termsize' is "rows*cols". @@ -2768,11 +2769,15 @@ dyn_winpty_init(void) /* No need to initialize twice. */ if (hWinPtyDLL) return 1; - /* Load winpty.dll */ - hWinPtyDLL = vimLoadLib(WINPTY_DLL); + /* Load winpty.dll, prefer using the 'winptydll' option, fall back to just + * winpty.dll. */ + if (*p_winptydll != NUL) + hWinPtyDLL = vimLoadLib((char *)p_winptydll); + if (!hWinPtyDLL) + hWinPtyDLL = vimLoadLib(WINPTY_DLL); if (!hWinPtyDLL) { - EMSG2(_(e_loadlib), WINPTY_DLL); + EMSG2(_(e_loadlib), *p_winptydll != NUL ? p_winptydll : WINPTY_DLL); return 0; } for (i = 0; winpty_entry[i].name != NULL diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -770,6 +770,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 949, +/**/ 948, /**/ 947,