aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorThiago de Arruda <tpadilha84@gmail.com>2015-02-20 12:59:10 -0300
committerThiago de Arruda <tpadilha84@gmail.com>2015-02-21 05:09:02 -0300
commitc58907dac1a51edc0201e0a68a92479288553d15 (patch)
tree7290adce5d76276ddaf65c5e8f18bef7ee7d429e /src
parent3baba1e7bc6698e6bc9f1d37fce88b30d6274bc9 (diff)
downloadrneovim-c58907dac1a51edc0201e0a68a92479288553d15.tar.gz
rneovim-c58907dac1a51edc0201e0a68a92479288553d15.tar.bz2
rneovim-c58907dac1a51edc0201e0a68a92479288553d15.zip
tui: Set setaf/setab capabilities for TERM=xterm
Many common terminals that set TERM=xterm and $COLORTERM support 256 colors. If this is detected, use force the hardcoded xterm's setaf/setab capabilities.
Diffstat (limited to 'src')
-rw-r--r--src/nvim/tui/tui.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 5951408c42..290a1a0bf6 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -717,6 +717,19 @@ static void fix_terminfo(TUIData *data)
"\x1b[?2004l");
}
+#define XTERM_SETAF \
+ "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m"
+#define XTERM_SETAB \
+ "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m"
+
+ if (!strcmp(term, "xterm") && os_getenv("COLORTERM") != NULL) {
+ // probably every modern terminal that sets TERM=xterm supports 256
+ // colors(eg: gnome-terminal).
+ unibi_set_num(ut, unibi_max_colors, 256);
+ unibi_set_str(ut, unibi_set_a_foreground, XTERM_SETAF);
+ unibi_set_str(ut, unibi_set_a_background, XTERM_SETAB);
+ }
+
if (os_getenv("NVIM_TUI_ENABLE_CURSOR_SHAPE") == NULL) {
goto end;
}
@@ -748,10 +761,8 @@ end:
"\x1b[?1002l\x1b[?1006l");
unibi_set_if_empty(ut, unibi_cursor_address, "\x1b[%i%p1%d;%p2%dH");
unibi_set_if_empty(ut, unibi_exit_attribute_mode, "\x1b[0;10m");
- unibi_set_if_empty(ut, unibi_set_a_foreground,
- "\x1b[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m");
- unibi_set_if_empty(ut, unibi_set_a_background,
- "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m");
+ unibi_set_if_empty(ut, unibi_set_a_foreground, XTERM_SETAF);
+ unibi_set_if_empty(ut, unibi_set_a_background, XTERM_SETAB);
unibi_set_if_empty(ut, unibi_enter_bold_mode, "\x1b[1m");
unibi_set_if_empty(ut, unibi_enter_underline_mode, "\x1b[4m");
unibi_set_if_empty(ut, unibi_enter_reverse_mode, "\x1b[7m");