diff options
-rw-r--r-- | src/nvim/tui/tui.c | 4 | ||||
-rw-r--r-- | test/functional/terminal/tui_spec.lua | 12 |
2 files changed, 13 insertions, 3 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index d4b34e82f8..399d6c74ca 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -1016,9 +1016,11 @@ static void fix_terminfo(TUIData *data) "\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m" if ((colorterm && strstr(colorterm, "256")) + || STARTS_WITH(term, "linux") || strstr(term, "256") || strstr(term, "xterm")) { - // Assume TERM=~xterm or COLORTERM=~256 supports 256 colors. + // Linux 4.8+ supports 256-color SGR, but terminfo has 8-color setaf/setab. + // Assume TERM=~xterm|linux or COLORTERM=~256 supports 256 colors. 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); diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index b14bceecdd..3ed63f68e9 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -356,9 +356,17 @@ describe("tui 't_Co' (terminal colors)", function() assert_term_colors("yet-another-term", "screen-256color", 256) end) - it("TERM=linux uses 8 colors", function() + it("TERM=linux uses 256 colors", function() if is_linux then - assert_term_colors("linux", nil, 8) + assert_term_colors("linux", nil, 256) + else + pending() + end + end) + + it("TERM=linux-16color uses 256 colors", function() + if is_linux then + assert_term_colors("linux-16color", nil, 256) else pending() end |