Merge #6991 from jdebp/tui-fixes-201707

Fix #6982
This commit is contained in:
Justin M. Keyes
2017-07-09 21:51:01 +02:00
committed by GitHub
3 changed files with 33 additions and 10 deletions

View File

@@ -90,12 +90,22 @@ Settings depending on terminal *term-dependent-settings*
If you want to set options or mappings, depending on the terminal name, you
can do this best in your init.vim. Example: >
if $TERM =~ '^\(rxvt\|screen\)\(\|-.*\)'
if $TERM =~ '^\(rxvt\|screen\|interix\|putty\)\(-.*\)\?$'
set notermguicolors
elseif $TERM =~ '^\(xterm\|tmux\)\(\|-.*\)'
elseif $TERM =~ '^\(tmux\|iterm\|vte\|gnome\)\(-.*\)\?$'
set termguicolors
elseif $TERM =~ '^\(xterm\)\(-.*\)\?$'
if $XTERM_VERSION != ''
set termguicolors
elseif $KONSOLE_PROFILE_NAME != ''
set termguicolors
elseif $VTE_VERSION != ''
set termguicolors
else
set notermguicolors
endif
elseif $TERM =~ ...
... and so forth ...
... and so forth ...
endif
<
*scroll-region* *xterm-scroll-region*
@@ -151,11 +161,12 @@ constructed "setrgbf" and "setrgbb" capabilities as if they had been in the
terminfo definition.
If your terminal's terminfo definition does not (yet) have this flag, Nvim
will fall back to looking at the TERM and other environment variables. For
the "rxvt", "linux", "st", and "iterm" terminal types, or when Konsole,
genuine Xterm, or a terminal emulator that sets the COLORTERM environment
variable to "truecolor" is detected, it will also add constructed "setrgbf"
and "setrgbb" capabilities.
will fall back to looking at the TERM and other environment variables. It
will add constructed "setrgbf" and "setrgbb" capabilities in the case of the
the "rxvt", "linux", "st", "tmux", and "iterm" terminal types, or when
Konsole, genuine Xterm, a libvte terminal emulator version 0.36 or later, or a
terminal emulator that sets the COLORTERM environment variable to "truecolor"
is detected.
*xterm-resize*
Nvim can resize the terminal display on some terminals that implement an

View File

@@ -292,6 +292,12 @@ Nvim does not have special `t_XX` options nor <t_XX> keycodes to configure
terminal capabilities. Instead Nvim treats the terminal as any other UI. For
example, 'guicursor' sets the terminal cursor style if possible.
*'term'* *E529* *E530* *E531*
The 'term' option has a fixed value, present only for script compatibility and
intentionally not the same as any known terminal type name. It should be a
rare case in Nvim where one needs |term-dependent-settings|, for which use the
|TERM| environment variable.
*termcap*
Nvim never uses the termcap database and only uses |terminfo|. See
|builtin-terms| for what happens on operating systems without a terminfo
@@ -346,7 +352,6 @@ Other options:
'shelltype'
*'shortname'* *'sn'* *'noshortname'* *'nosn'*
*'swapsync'* *'sws'*
*'term'* *E529* *E530* *E531*
*'termencoding'* *'tenc'* (Vim 7.4.852 also removed this for Windows)
'textauto'
'textmode'

View File

@@ -1544,7 +1544,10 @@ static void augment_terminfo(TUIData *data, const char *term,
bool teraterm = terminfo_is_term_family(term, "teraterm");
bool putty = terminfo_is_term_family(term, "putty");
bool screen = terminfo_is_term_family(term, "screen");
bool tmux = terminfo_is_term_family(term, "tmux");
bool st = terminfo_is_term_family(term, "st");
bool gnome = terminfo_is_term_family(term, "gnome")
|| terminfo_is_term_family(term, "vte");
bool iterm = terminfo_is_term_family(term, "iterm")
|| terminfo_is_term_family(term, "iTerm.app");
// None of the following work over SSH; see :help TERM .
@@ -1575,8 +1578,11 @@ static void augment_terminfo(TUIData *data, const char *term,
// fixup. See https://gist.github.com/XVilka/8346728 for more about this.
int Tc = unibi_find_ext_bool(ut, "Tc");
// "standard" means using colons like ISO 8613-6:1994/ITU T.416:1993 says.
bool has_standard_rgb = vte_version >= 3600 // per GNOME bug #685759
bool has_standard_rgb = false
// per GNOME bug #685759 and bug #704449
|| ((gnome || xterm) && (vte_version >= 3600))
|| iterm || iterm_pretending_xterm // per analysis of VT100Terminal.m
// per http://invisible-island.net/xterm/xterm.log.html#xterm_282
|| true_xterm;
bool has_non_standard_rgb = -1 != Tc
// terminfo is definitive if it says something.
@@ -1585,6 +1591,7 @@ static void augment_terminfo(TUIData *data, const char *term,
|| konsole // per commentary in VT102Emulation.cpp
// per http://lists.schmorp.de/pipermail/rxvt-unicode/2016q2/002261.html
|| rxvt
|| tmux // per experimentation
|| st // per experimentation
|| old_truecolor_env;
data->unibi_ext.set_rgb_foreground = unibi_find_ext_str(ut, "setrgbf");