mirror of
https://github.com/neovim/neovim.git
synced 2026-04-24 00:05:36 +00:00
tui: Improve the setrgbf/setrgbb fallback logic.
The libvte test was too agressive, and is reduced to only triggering when it is libvte 0.36 AND a gnome or xterm terminal type is used. Contrastingly, tmux was not on the list at all and now is.
This commit is contained in:
@@ -161,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
|
||||
|
||||
@@ -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,8 @@ 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
|
||||
|| iterm // per https://gitlab.com/gnachman/iterm2/issues/218
|
||||
|| tmux // per experimentation
|
||||
|| st // per experimentation
|
||||
|| old_truecolor_env;
|
||||
data->unibi_ext.set_rgb_foreground = unibi_find_ext_str(ut, "setrgbf");
|
||||
|
||||
Reference in New Issue
Block a user