From: Bram Moolenaar Date: Thu, 5 Apr 2018 20:15:22 +0000 (+0200) Subject: patch 8.0.1665: when running a terminal from the GUI 'term' is not useful X-Git-Tag: v8.0.1665 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=9a993e3c09371bb80d71be62fca53cf954a98f72;p=vim patch 8.0.1665: when running a terminal from the GUI 'term' is not useful 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) --- diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index f575c82d1..8dc19cbf6 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 b811ac3f4..42917c25b 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 a9b4dca75..b29d64c82 100644 --- a/src/version.c +++ b/src/version.c @@ -762,6 +762,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1665, /**/ 1664, /**/