Mercurial > vim
changeset 11898:3c1b59938042 v8.0.0829
patch 8.0.0829: job running in terminal can't communicate with Vim
commit https://github.com/vim/vim/commit/7da346035bf5837e6f5b734c5469477d981730f8
Author: Bram Moolenaar <Bram@vim.org>
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Tue, 01 Aug 2017 17:15:04 +0200 |
parents | ab52df5c8afc |
children | 0104f5f47c25 |
files | src/os_unix.c src/version.c |
diffstat | 2 files changed, 11 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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 }