summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-04-05 22:15:22 +0200
committerBram Moolenaar <Bram@vim.org>2018-04-05 22:15:22 +0200
commit9a993e3c09371bb80d71be62fca53cf954a98f72 (patch)
treee16064177b3a1351cbd0efd97b9904ec8caf772e
parent3aa67fb453373109132b71eeb488595d651dfb7d (diff)
patch 8.0.1665: when running a terminal from the GUI 'term' is not usefulv8.0.1665
Problem: When running a terminal from the GUI 'term' is not useful. Solution: Use $TERM in the GUI if it starts with "xterm". (closes #2776)
-rw-r--r--runtime/doc/terminal.txt4
-rw-r--r--src/os_unix.c16
-rw-r--r--src/version.c2
3 files changed, 19 insertions, 3 deletions
diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt
index f575c82d1b..8dc19cbf60 100644
--- a/runtime/doc/terminal.txt
+++ b/runtime/doc/terminal.txt
@@ -352,7 +352,9 @@ On Unix a pty is used to make it possible to run all kinds of commands. You
can even run Vim in the terminal! That's used for debugging, see below.
Environment variables are used to pass information to the running job:
- TERM name of the terminal, from the 'term' option
+ TERM the name of the terminal, from the 'term' option or
+ $TERM in the GUI; falls back to "xterm" if it does not
+ start with "xterm"
ROWS number of rows in the terminal initially
LINES same as ROWS
COLUMNS number of columns in the terminal initially
diff --git a/src/os_unix.c b/src/os_unix.c
index b811ac3f4b..42917c25b4 100644
--- a/src/os_unix.c
+++ b/src/os_unix.c
@@ -5579,11 +5579,23 @@ mch_job_start(char **argv, job_T *job, jobopt_T *options)
# ifdef FEAT_TERMINAL
if (options->jo_term_rows > 0)
+ {
+ char *term = (char *)T_NAME;
+
+#ifdef FEAT_GUI
+ if (term_is_gui(T_NAME))
+ /* In the GUI 'term' is not what we want, use $TERM. */
+ term = getenv("TERM");
+#endif
+ /* Use 'term' or $TERM if it starts with "xterm", otherwise fall
+ * back to "xterm". */
+ if (term == NULL || *term == NUL || STRNCMP(term, "xterm", 5) != 0)
+ term = "xterm";
set_child_environment(
(long)options->jo_term_rows,
(long)options->jo_term_cols,
- STRNCMP(T_NAME, "xterm", 5) == 0
- ? (char *)T_NAME : "xterm");
+ term);
+ }
else
# endif
set_default_child_environment();
diff --git a/src/version.c b/src/version.c
index a9b4dca755..b29d64c825 100644
--- a/src/version.c
+++ b/src/version.c
@@ -763,6 +763,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1665,
+/**/
1664,
/**/
1663,