diff options
Diffstat (limited to 'src/nvim/tui/tui.c')
-rw-r--r-- | src/nvim/tui/tui.c | 31 |
1 files changed, 16 insertions, 15 deletions
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index a9599ff322..54e7d7a4b7 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -242,15 +242,17 @@ static void terminfo_start(UI *ui) } } else { // If it is running under winpty ignore the TERM environment variable and - // force it to be cygwin. - term = "cygwin"; + // force it to be win32con. + term = "win32con"; } if (term == NULL) { - if (vtp || conemu_ansi) { - term = "xterm-256color"; + if (vtp) { + term = "vtpcon"; + } else if (conemu_ansi) { + term = "conemu"; } else { - term = "cygwin"; + term = "win32con"; } } @@ -284,8 +286,7 @@ static void terminfo_start(UI *ui) || os_getenv("KONSOLE_PROFILE_NAME") || os_getenv("KONSOLE_DBUS_SESSION"); - patch_terminfo_bugs(data, term, colorterm, vte_version, konsole, iterm_env, - conemu_ansi); + patch_terminfo_bugs(data, term, colorterm, vte_version, konsole, iterm_env); augment_terminfo(data, term, colorterm, vte_version, konsole, iterm_env); data->can_change_scroll_region = !!unibi_get_str(data->ut, unibi_change_scroll_region); @@ -296,7 +297,8 @@ static void terminfo_start(UI *ui) && !!unibi_get_str(data->ut, unibi_set_right_margin_parm); data->immediate_wrap_after_last_column = terminfo_is_term_family(term, "cygwin") - || terminfo_is_term_family(term, "interix"); + || terminfo_is_term_family(term, "win32con") + || terminfo_is_term_family(term, "interix") || conemu_ansi; data->bce = unibi_get_bool(data->ut, unibi_back_color_erase); data->normlen = unibi_pre_fmt_str(data, unibi_cursor_normal, data->norm, sizeof data->norm); @@ -1504,7 +1506,7 @@ static int unibi_find_ext_bool(unibi_term *ut, const char *name) /// and several terminal emulators falsely announce incorrect terminal types. static void patch_terminfo_bugs(TUIData *data, const char *term, const char *colorterm, long vte_version, - bool konsole, bool iterm_env, bool conemu_ansi) + bool konsole, bool iterm_env) { unibi_term *ut = data->ut; const char * xterm_version = os_getenv("XTERM_VERSION"); @@ -1536,6 +1538,7 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, && strstr(colorterm, "mate-terminal"); bool true_xterm = xterm && !!xterm_version; bool cygwin = terminfo_is_term_family(term, "cygwin"); + bool conemu = terminfo_is_term_family(term, "conemu"); char *fix_normal = (char *)unibi_get_str(ut, unibi_cursor_normal); if (fix_normal) { @@ -1575,6 +1578,10 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, unibi_set_bool(ut, unibi_back_color_erase, false); } + if (conemu) { + unibi_set_bool(ut, unibi_back_color_erase, true); + } + if (xterm) { // Termit, LXTerminal, GTKTerm2, GNOME Terminal, MATE Terminal, roxterm, // and EvilVTE falsely claim to be xterm and do not support important xterm @@ -1604,11 +1611,6 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m"); unibi_set_if_empty(ut, unibi_exit_italics_mode, "\x1b[23m"); } - if (conemu_ansi) { - unibi_set_num(ut, unibi_max_colors, 256); - unibi_set_str(ut, unibi_set_a_foreground, "\x1b[38;5;%p1%dm"); - unibi_set_str(ut, unibi_set_a_background, "\x1b[48;5;%p1%dm"); - } } else if (rxvt) { // 2017-04 terminfo.src lacks these. Unicode rxvt has them. unibi_set_if_empty(ut, unibi_enter_italics_mode, "\x1b[3m"); @@ -1728,7 +1730,6 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, || teraterm // per TeraTerm "Supported Control Functions" doco || alacritty // https://github.com/jwilm/alacritty/pull/608 || cygwin - || conemu_ansi // Some linux-type terminals implement the xterm extension. // Example: console-terminal-emulator from the nosh toolset. || (linuxvt |