aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/tui/tui.c
diff options
context:
space:
mode:
authorJustin M. Keyes <justinkz@gmail.com>2019-01-16 01:09:47 +0100
committerJustin M. Keyes <justinkz@gmail.com>2019-01-17 13:05:51 +0100
commit7e9b99d55be68938689b9f593e200054533c3783 (patch)
tree64367007412114abea467c71640fec0323bcd38d /src/nvim/tui/tui.c
parent279043d62526674118e4ddb531f8cf7195060928 (diff)
parent5372d9a705b849459bcb5ed52823fa422d0745de (diff)
downloadrneovim-7e9b99d55be68938689b9f593e200054533c3783.tar.gz
rneovim-7e9b99d55be68938689b9f593e200054533c3783.tar.bz2
rneovim-7e9b99d55be68938689b9f593e200054533c3783.zip
Merge #5027 'TUI: detect background color'
Diffstat (limited to 'src/nvim/tui/tui.c')
-rw-r--r--src/nvim/tui/tui.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 2e26a75be1..dbffabd707 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -123,6 +123,7 @@ typedef struct {
int set_cursor_style, reset_cursor_style;
int save_title, restore_title;
int enter_undercurl_mode, exit_undercurl_mode, set_underline_color;
+ int get_bg;
} unibi_ext;
char *space_buf;
} TUIData;
@@ -211,6 +212,7 @@ static void terminfo_start(UI *ui)
data->unibi_ext.reset_scroll_region = -1;
data->unibi_ext.set_cursor_style = -1;
data->unibi_ext.reset_cursor_style = -1;
+ data->unibi_ext.get_bg = -1;
data->out_fd = 1;
data->out_isatty = os_isatty(data->out_fd);
@@ -279,6 +281,8 @@ static void terminfo_start(UI *ui)
unibi_out_ext(ui, data->unibi_ext.save_title);
unibi_out(ui, unibi_keypad_xmit);
unibi_out(ui, unibi_clear_screen);
+ // Ask the terminal to send us the background color.
+ unibi_out_ext(ui, data->unibi_ext.get_bg);
// Enable bracketed paste
unibi_out_ext(ui, data->unibi_ext.enable_bracketed_paste);
@@ -1653,6 +1657,9 @@ static void patch_terminfo_bugs(TUIData *data, const char *term,
#define XTERM_SETAB_16 \
"\x1b[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e39%;m"
+ data->unibi_ext.get_bg = (int)unibi_add_ext_str(ut, "ext.get_bg",
+ "\x1b]11;?\x07");
+
// Terminals with 256-colour SGR support despite what terminfo says.
if (unibi_get_num(ut, unibi_max_colors) < 256) {
// See http://fedoraproject.org/wiki/Features/256_Color_Terminals