Permalink
Browse files

patch 8.0.1665: when running a terminal from the GUI 'term' is not us…

…eful

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)
  • Loading branch information...
brammool committed Apr 5, 2018
1 parent 3aa67fb commit 9a993e3c09371bb80d71be62fca53cf954a98f72
Showing with 19 additions and 3 deletions.
  1. +3 −1 runtime/doc/terminal.txt
  2. +14 −2 src/os_unix.c
  3. +2 −0 src/version.c
@@ -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
@@ -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();
@@ -762,6 +762,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
1665,
/**/
1664,
/**/

0 comments on commit 9a993e3

Please sign in to comment.