diff src/os_win32.c @ 14063:f39150ec146e v8.1.0049

patch 8.1.0049: shell cannot tell running in a terminal window commit https://github.com/vim/vim/commit/d7a137fb0d980545dd567bee9c24cf7b9c3a2eae Author: Bram Moolenaar <Bram@vim.org> Date: Tue Jun 12 18:05:24 2018 +0200 patch 8.1.0049: shell cannot tell running in a terminal window Problem: Shell cannot tell running in a terminal window. Solution: Add the VIM_TERMINAL environment variable. (Christian Brabandt)
author Christian Brabandt <cb@256bit.org>
date Tue, 12 Jun 2018 18:15:05 +0200
parents 1ea18443d569
children e271ca6f32f9
line wrap: on
line diff
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -5275,25 +5275,43 @@ win32_build_env(dict_T *env, garray_T *g
 	}
     }
 
+    if (is_terminal)
+    {
 # ifdef FEAT_CLIENTSERVER
-    if (is_terminal)
-    {
 	char_u	*servername = get_vim_var_str(VV_SEND_SERVER);
-	size_t	lval = STRLEN(servername);
-	size_t	n;
-
-	if (ga_grow(gap, (int)(14 + lval + 2)) == OK)
+	size_t	servername_len = STRLEN(servername);
+# endif
+	char_u	*version = get_vim_var_str(VV_VERSION);
+	size_t	version_len = STRLEN(version);
+	// size of "VIM_SERVERNAME=" and value,
+	// plus "VIM_TERMINAL=" and value,
+	// plus two terminating NULs
+	size_t	n = 0
+# ifdef FEAT_CLIENTSERVER
+		    + 15 + servername_len
+# endif
+		    + 13 + version_len + 2;
+
+	if (ga_grow(gap, (int)n) == OK)
 	{
+# ifdef FEAT_CLIENTSERVER
 	    for (n = 0; n < 15; n++)
 		*((WCHAR*)gap->ga_data + gap->ga_len++) =
 		    (WCHAR)"VIM_SERVERNAME="[n];
-	    for (n = 0; n < lval; n++)
+	    for (n = 0; n < servername_len; n++)
 		*((WCHAR*)gap->ga_data + gap->ga_len++) =
 		    (WCHAR)servername[n];
 	    *((WCHAR*)gap->ga_data + gap->ga_len++) = L'\0';
+# endif
+	    for (n = 0; n < 13; n++)
+		*((WCHAR*)gap->ga_data + gap->ga_len++) =
+		    (WCHAR)"VIM_TERMINAL="[n];
+	    for (n = 0; n < version_len; n++)
+		*((WCHAR*)gap->ga_data + gap->ga_len++) =
+		    (WCHAR)version[n];
+	    *((WCHAR*)gap->ga_data + gap->ga_len++) = L'\0';
 	}
     }
-# endif
 }
 
     void