diff options
Diffstat (limited to 'data/vim/patches/8.1.0050')
-rw-r--r-- | data/vim/patches/8.1.0050 | 414 |
1 files changed, 414 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.0050 b/data/vim/patches/8.1.0050 new file mode 100644 index 000000000..914d8c818 --- /dev/null +++ b/data/vim/patches/8.1.0050 @@ -0,0 +1,414 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.0050 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 8.1.0050 (after 8.1.0049) +Problem: $VIM_TERMINAL is also set when not in a terminal window. +Solution: Pass a flag to indicate whether the job runs in a terminal. +Files: src/channel.c, src/proto/channel.pro, src/evalfunc.c, + src/terminal.c, src/os_unix.c, src/proto/os_unix.pro, + src/os_win32.c + + +*** ../vim-8.1.0049/src/channel.c 2018-06-03 14:42:17.840505115 +0200 +--- src/channel.c 2018-06-12 20:13:06.460135822 +0200 +*************** +*** 5525,5531 **** + * Returns NULL when out of memory. + */ + job_T * +! job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg) + { + job_T *job; + char_u *cmd = NULL; +--- 5525,5535 ---- + * Returns NULL when out of memory. + */ + job_T * +! job_start( +! typval_T *argvars, +! char **argv_arg, +! jobopt_T *opt_arg, +! int is_terminal UNUSED) + { + job_T *job; + char_u *cmd = NULL; +*************** +*** 5679,5685 **** + ch_log(NULL, "Starting job: %s", (char *)ga.ga_data); + ga_clear(&ga); + } +! mch_job_start(argv, job, &opt); + #else + ch_log(NULL, "Starting job: %s", (char *)cmd); + mch_job_start((char *)cmd, job, &opt); +--- 5683,5689 ---- + ch_log(NULL, "Starting job: %s", (char *)ga.ga_data); + ga_clear(&ga); + } +! mch_job_start(argv, job, &opt, is_terminal); + #else + ch_log(NULL, "Starting job: %s", (char *)cmd); + mch_job_start((char *)cmd, job, &opt); +*** ../vim-8.1.0049/src/proto/channel.pro 2018-06-03 14:42:17.848505102 +0200 +--- src/proto/channel.pro 2018-06-12 20:08:25.045683595 +0200 +*************** +*** 66,72 **** + void job_stop_on_exit(void); + int has_pending_job(void); + void job_check_ended(void); +! job_T *job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg); + char *job_status(job_T *job); + void job_info(job_T *job, dict_T *dict); + void job_info_all(list_T *l); +--- 66,72 ---- + void job_stop_on_exit(void); + int has_pending_job(void); + void job_check_ended(void); +! job_T *job_start(typval_T *argvars, char **argv_arg, jobopt_T *opt_arg, int is_terminal); + char *job_status(job_T *job); + void job_info(job_T *job, dict_T *dict); + void job_info_all(list_T *l); +*** ../vim-8.1.0049/src/evalfunc.c 2018-06-07 18:17:42.278227523 +0200 +--- src/evalfunc.c 2018-06-12 20:05:33.630628161 +0200 +*************** +*** 7254,7260 **** + rettv->v_type = VAR_JOB; + if (check_restricted() || check_secure()) + return; +! rettv->vval.v_job = job_start(argvars, NULL, NULL); + } + + /* +--- 7254,7260 ---- + rettv->v_type = VAR_JOB; + if (check_restricted() || check_secure()) + return; +! rettv->vval.v_job = job_start(argvars, NULL, NULL, FALSE); + } + + /* +*** ../vim-8.1.0049/src/terminal.c 2018-06-04 17:28:04.729961269 +0200 +--- src/terminal.c 2018-06-12 20:06:16.926389419 +0200 +*************** +*** 5769,5775 **** + #endif + + /* This may change a string in "argvar". */ +! term->tl_job = job_start(argvar, argv, opt); + if (term->tl_job != NULL) + ++term->tl_job->jv_refcount; + +--- 5769,5775 ---- + #endif + + /* This may change a string in "argvar". */ +! term->tl_job = job_start(argvar, argv, opt, TRUE); + if (term->tl_job != NULL) + ++term->tl_job->jv_refcount; + +*** ../vim-8.1.0049/src/os_unix.c 2018-06-12 18:04:28.038267855 +0200 +--- src/os_unix.c 2018-06-12 20:11:20.272719511 +0200 +*************** +*** 4159,4165 **** + * Set the environment for a child process. + */ + static void +! set_child_environment(long rows, long columns, char *term) + { + # ifdef HAVE_SETENV + char envbuf[50]; +--- 4159,4169 ---- + * Set the environment for a child process. + */ + static void +! set_child_environment( +! long rows, +! long columns, +! char *term, +! int is_terminal UNUSED) + { + # ifdef HAVE_SETENV + char envbuf[50]; +*************** +*** 4169,4175 **** +--- 4173,4181 ---- + static char envbuf_Lines[20]; + static char envbuf_Columns[20]; + static char envbuf_Colors[20]; ++ # ifdef FEAT_TERMINAL + static char envbuf_Version[20]; ++ # endif + # ifdef FEAT_CLIENTSERVER + static char envbuf_Servername[60]; + # endif +*************** +*** 4190,4197 **** + setenv("COLUMNS", (char *)envbuf, 1); + sprintf((char *)envbuf, "%ld", colors); + setenv("COLORS", (char *)envbuf, 1); +! sprintf((char *)envbuf, "%ld", get_vim_var_nr(VV_VERSION)); +! setenv("VIM_TERMINAL", (char *)envbuf, 1); + # ifdef FEAT_CLIENTSERVER + setenv("VIM_SERVERNAME", serverName == NULL ? "" : (char *)serverName, 1); + # endif +--- 4196,4208 ---- + setenv("COLUMNS", (char *)envbuf, 1); + sprintf((char *)envbuf, "%ld", colors); + setenv("COLORS", (char *)envbuf, 1); +! # ifdef FEAT_TERMINAL +! if (is_terminal) +! { +! sprintf((char *)envbuf, "%ld", get_vim_var_nr(VV_VERSION)); +! setenv("VIM_TERMINAL", (char *)envbuf, 1); +! } +! # endif + # ifdef FEAT_CLIENTSERVER + setenv("VIM_SERVERNAME", serverName == NULL ? "" : (char *)serverName, 1); + # endif +*************** +*** 4212,4220 **** + putenv(envbuf_Columns); + vim_snprintf(envbuf_Colors, sizeof(envbuf_Colors), "COLORS=%ld", colors); + putenv(envbuf_Colors); +! vim_snprintf(envbuf_Version, sizeof(envbuf_Version), "VIM_TERMINAL=%ld", +! get_vim_var_nr(VV_VERSION)); +! putenv(envbuf_Version); + # ifdef FEAT_CLIENTSERVER + vim_snprintf(envbuf_Servername, sizeof(envbuf_Servername), + "VIM_SERVERNAME=%s", serverName == NULL ? "" : (char *)serverName); +--- 4223,4236 ---- + putenv(envbuf_Columns); + vim_snprintf(envbuf_Colors, sizeof(envbuf_Colors), "COLORS=%ld", colors); + putenv(envbuf_Colors); +! # ifdef FEAT_TERMINAL +! if (is_terminal) +! { +! vim_snprintf(envbuf_Version, sizeof(envbuf_Version), +! "VIM_TERMINAL=%ld", get_vim_var_nr(VV_VERSION)); +! putenv(envbuf_Version); +! } +! # endif + # ifdef FEAT_CLIENTSERVER + vim_snprintf(envbuf_Servername, sizeof(envbuf_Servername), + "VIM_SERVERNAME=%s", serverName == NULL ? "" : (char *)serverName); +*************** +*** 4224,4232 **** + } + + static void +! set_default_child_environment(void) + { +! set_child_environment(Rows, Columns, "dumb"); + } + #endif + +--- 4240,4248 ---- + } + + static void +! set_default_child_environment(int is_terminal) + { +! set_child_environment(Rows, Columns, "dumb", is_terminal); + } + #endif + +*************** +*** 4689,4695 **** + # endif + } + # endif +! set_default_child_environment(); + + /* + * stderr is only redirected when using the GUI, so that a +--- 4705,4711 ---- + # endif + } + # endif +! set_default_child_environment(FALSE); + + /* + * stderr is only redirected when using the GUI, so that a +*************** +*** 5367,5373 **** + + #if defined(FEAT_JOB_CHANNEL) || defined(PROTO) + void +! mch_job_start(char **argv, job_T *job, jobopt_T *options) + { + pid_t pid; + int fd_in[2] = {-1, -1}; /* for stdin */ +--- 5383,5389 ---- + + #if defined(FEAT_JOB_CHANNEL) || defined(PROTO) + void +! mch_job_start(char **argv, job_T *job, jobopt_T *options, int is_terminal) + { + pid_t pid; + int fd_in[2] = {-1, -1}; /* for stdin */ +*************** +*** 5515,5525 **** + set_child_environment( + (long)options->jo_term_rows, + (long)options->jo_term_cols, +! term); + } + else + # endif +! set_default_child_environment(); + + if (options->jo_env != NULL) + { +--- 5531,5542 ---- + set_child_environment( + (long)options->jo_term_rows, + (long)options->jo_term_cols, +! term, +! is_terminal); + } + else + # endif +! set_default_child_environment(is_terminal); + + if (options->jo_env != NULL) + { +*** ../vim-8.1.0049/src/proto/os_unix.pro 2018-05-17 13:52:48.000000000 +0200 +--- src/proto/os_unix.pro 2018-06-12 20:08:29.497659084 +0200 +*************** +*** 62,68 **** + void mch_new_shellsize(void); + void may_send_sigint(int c, pid_t pid, pid_t wpid); + int mch_call_shell(char_u *cmd, int options); +! void mch_job_start(char **argv, job_T *job, jobopt_T *options); + char *mch_job_status(job_T *job); + job_T *mch_detect_ended_job(job_T *job_list); + int mch_signal_job(job_T *job, char_u *how); +--- 62,68 ---- + void mch_new_shellsize(void); + void may_send_sigint(int c, pid_t pid, pid_t wpid); + int mch_call_shell(char_u *cmd, int options); +! void mch_job_start(char **argv, job_T *job, jobopt_T *options, int is_terminal); + char *mch_job_status(job_T *job); + job_T *mch_detect_ended_job(job_T *job_list); + int mch_signal_job(job_T *job, char_u *how); +*** ../vim-8.1.0049/src/os_win32.c 2018-06-12 18:04:28.038267855 +0200 +--- src/os_win32.c 2018-06-12 20:18:53.770228655 +0200 +*************** +*** 5275,5300 **** + } + } + +! if (is_terminal) + { +! # ifdef FEAT_CLIENTSERVER + char_u *servername = get_vim_var_str(VV_SEND_SERVER); + 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]; +--- 5275,5305 ---- + } + } + +! # if defined(FEAT_CLIENTSERVER) || defined(FEAT_TERMINAL) + { +! # ifdef FEAT_CLIENTSERVER + char_u *servername = get_vim_var_str(VV_SEND_SERVER); + size_t servername_len = STRLEN(servername); +! # endif +! # ifdef FEAT_TERMINAL + char_u *version = get_vim_var_str(VV_VERSION); + size_t version_len = STRLEN(version); ++ # endif + // 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 +! # ifdef FEAT_TERMINAL +! + 13 + version_len + 2 +! # endif +! ; + + 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]; +*************** +*** 5302,5315 **** + *((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'; + } + } + } +--- 5307,5325 ---- + *((WCHAR*)gap->ga_data + gap->ga_len++) = + (WCHAR)servername[n]; + *((WCHAR*)gap->ga_data + gap->ga_len++) = L'\0'; +! # endif +! # ifdef FEAT_TERMINAL +! if (is_terminal) +! { +! 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 + } + } + } +*** ../vim-8.1.0049/src/version.c 2018-06-12 18:04:28.042267834 +0200 +--- src/version.c 2018-06-12 20:21:54.749235631 +0200 +*************** +*** 763,764 **** +--- 763,766 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 50, + /**/ + +-- +Change is inevitable, except from a vending machine. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- http://www.Moolenaar.net \\\ +/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ +\\\ an exciting new programming language -- http://www.Zimbu.org /// + \\\ help me help AIDS victims -- http://ICCF-Holland.org /// |