summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.0050
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.0050')
-rw-r--r--data/vim/patches/8.1.0050414
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 ///