# HG changeset patch # User Christian Brabandt # Date 1501600504 -7200 # Node ID 3c1b59938042ea0c64c7f80e4c5ef3d5cb642d02 # Parent ab52df5c8afcd33b7edee166cc62fc5b578ed2b6 patch 8.0.0829: job running in terminal can't communicate with Vim commit https://github.com/vim/vim/commit/7da346035bf5837e6f5b734c5469477d981730f8 Author: Bram Moolenaar Date: Tue Aug 1 17:14:21 2017 +0200 patch 8.0.0829: job running in terminal can't communicate with Vim Problem: A job running in a terminal window cannot easily communicate with the Vim it is running in. Solution: Pass v:servername in an environment variable. (closes #1908) diff --git a/src/os_unix.c b/src/os_unix.c --- a/src/os_unix.c +++ b/src/os_unix.c @@ -4094,6 +4094,9 @@ mch_parse_cmd(char_u *cmd, int use_shcf, #endif #if !defined(USE_SYSTEM) || defined(FEAT_JOB_CHANNEL) +/* + * Set the environment for a child process. + */ static void set_child_environment(long rows, long columns, char *term) { @@ -4105,6 +4108,7 @@ set_child_environment(long rows, long co static char envbuf_Lines[20]; static char envbuf_Columns[20]; static char envbuf_Colors[20]; + static char envbuf_Servername[60]; # endif long colors = # ifdef FEAT_GUI @@ -4112,7 +4116,6 @@ set_child_environment(long rows, long co # endif t_colors; - /* Simulate to have a dumb terminal (for now) */ # ifdef HAVE_SETENV setenv("TERM", term, 1); sprintf((char *)envbuf, "%ld", rows); @@ -4123,10 +4126,12 @@ set_child_environment(long rows, long co setenv("COLUMNS", (char *)envbuf, 1); sprintf((char *)envbuf, "%ld", colors); setenv("COLORS", (char *)envbuf, 1); + setenv("VIM_SERVERNAME", serverName == NULL ? "" : (char *)serverName, 1); # else /* * Putenv does not copy the string, it has to remain valid. * Use a static array to avoid losing allocated memory. + * This won't work well when running multiple children... */ vim_snprintf(envbuf_Term, sizeof(envbuf_Term), "TERM=%s", term); putenv(envbuf_Term); @@ -4139,6 +4144,9 @@ set_child_environment(long rows, long co putenv(envbuf_Columns); vim_snprintf(envbuf_Colors, sizeof(envbuf_Colors), "COLORS=%ld", colors); putenv(envbuf_Colors); + vim_snprintf(envbuf_Servername, sizeof(envbuf_Servername), + "VIM_SERVERNAME=%s", serverName == NULL ? "" : (char *)serverName); + putenv(envbuf_Servername); # endif } 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 */ /**/ + 829, +/**/ 828, /**/ 827,