summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-08-16 23:14:08 +0200
committerBram Moolenaar <Bram@vim.org>2017-08-16 23:14:08 +0200
commit9e13aa7729486d79a530ecae1a7a95d10da27d61 (patch)
tree2aea0fed469486f176177d8b8fd5d16a81a3f0da
parent989a70c590c2bd109eb362d3a0e48cb1427ae13d (diff)
patch 8.0.0949: winpty.dll name is fixedv8.0.0949
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)
-rw-r--r--runtime/doc/options.txt14
-rw-r--r--src/option.c14
-rw-r--r--src/option.h3
-rw-r--r--src/terminal.c11
-rw-r--r--src/version.c2
5 files changed, 41 insertions, 3 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 73955f4ba8..ff7bb8f1d8 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -8831,6 +8831,20 @@ A jump table for the options with a short description can be found at |Q_op|.
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
index 1877b7e47f..3dc52f8e73 100644
--- 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
index 9b7e88f0d2..b772a8eded 100644
--- 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
index 149679e3fc..c4fa847677 100644
--- 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
index b2de15d169..085b2e1e47 100644
--- 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,