From 606030155805732a0aec9da632936e87095d3974 Mon Sep 17 00:00:00 2001 From: erw7 Date: Fri, 1 Jun 2018 03:04:45 +0900 Subject: [PATCH 01/10] win/TUI: SetConsoleMode() to override libuv #9094 Use uv_set_vterm_state() to override libuv's guess. See https://github.com/libuv/libuv/pull/1873/ for discussion. This commit uses a terminal-detection approach based on GetProcessImageFileNameW(...), which will be reverted in the following commit. The approach was intended to handle the case of running in winpty (:terminal), but we will add $NVIM env var for that. Also add some support for ConEmu, cygwin. --- CMakeLists.txt | 18 ++++++ scripts/update_terminfo.sh | 3 +- src/nvim/tui/terminfo.c | 4 ++ src/nvim/tui/terminfo_defs.h | 106 +++++++++++++++++++++++++++++++++++ src/nvim/tui/tui.c | 68 +++++++++++++++++++++- third-party/CMakeLists.txt | 9 ++- 6 files changed, 202 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fa020bf55c..af6aeaf33d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -361,6 +361,24 @@ include_directories("${PROJECT_SOURCE_DIR}/src") find_package(LibUV REQUIRED) include_directories(SYSTEM ${LIBUV_INCLUDE_DIRS}) +if(WIN32) + list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBUV_INCLUDE_DIRS}") + list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBUV_LIBRARIES}") + check_c_source_compiles(" + #include + + int + main(void) + { + uv_set_vterm_state(UV_UNSUPPORTED); + return 0; + } + " UV_HAS_SET_VTERM_STATE) + if(UV_HAS_SET_VTERM_STATE) + add_definitions(-DNVIM_UV_HAS_SET_VTERM_STATE) + endif() +endif() + find_package(Msgpack 1.0.0 REQUIRED) include_directories(SYSTEM ${MSGPACK_INCLUDE_DIRS}) diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh index e3b1692b15..c78799a56e 100755 --- a/scripts/update_terminfo.sh +++ b/scripts/update_terminfo.sh @@ -26,6 +26,7 @@ readonly -A entries=( [tmux-256color]=tmux_256colour_terminfo [vte-256color]=vte_256colour_terminfo [xterm-256color]=xterm_256colour_terminfo + [cygwin]=cygwin_terminfo ) db="$(mktemp -du)" @@ -83,7 +84,7 @@ for term in $sorted_terms; do echo "};" done >> "$target" -cat > "$target" <> "$target" <out_fd); + DWORD dwMode; + if (handle != INVALID_HANDLE_VALUE && GetConsoleMode(handle, &dwMode)) { + dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if (SetConsoleMode(handle, dwMode)) { + vtp = true; + } + } + } else { + // If it is running under winpty ignore the TERM environment variable and + // force it to be cygwin. + term = "cygwin"; + } + + if (term == NULL) { + if (vtp || conemu_ansi) { + term = "xterm-256color"; + } else { + term = "cygwin"; + } + } + + os_setenv("TERM", term, 1); +# ifdef NVIM_UV_HAS_SET_VTERM_STATE + if (conemu_ansi) { + uv_set_vterm_state(UV_SUPPORTED); + } else if (winpty) { + uv_set_vterm_state(UV_UNSUPPORTED); + } +# endif +#endif data->ut = unibi_from_env(); char *termname = NULL; if (!term || !data->ut) { @@ -230,7 +284,8 @@ 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); + patch_terminfo_bugs(data, term, colorterm, vte_version, konsole, iterm_env, + conemu_ansi); augment_terminfo(data, term, colorterm, vte_version, konsole, iterm_env); data->can_change_scroll_region = !!unibi_get_str(data->ut, unibi_change_scroll_region); @@ -1449,7 +1504,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 konsole, bool iterm_env, bool conemu_ansi) { unibi_term *ut = data->ut; const char * xterm_version = os_getenv("XTERM_VERSION"); @@ -1480,6 +1535,7 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, bool mate_pretending_xterm = xterm && colorterm && strstr(colorterm, "mate-terminal"); bool true_xterm = xterm && !!xterm_version; + bool cygwin = terminfo_is_term_family(term, "cygwin"); char *fix_normal = (char *)unibi_get_str(ut, unibi_cursor_normal); if (fix_normal) { @@ -1548,6 +1604,11 @@ 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"); @@ -1590,7 +1651,6 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, } else if (st) { // No bugs in the vanilla terminfo for our purposes. } - // At this time (2017-07-12) it seems like all terminals that support 256 // color codes can use semicolons in the terminal code and be fine. // However, this is not correct according to the spec. So to reward those @@ -1667,6 +1727,8 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, || iterm || iterm_pretending_xterm || 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 diff --git a/third-party/CMakeLists.txt b/third-party/CMakeLists.txt index cad6ee785e..4ea5f78683 100644 --- a/third-party/CMakeLists.txt +++ b/third-party/CMakeLists.txt @@ -120,8 +120,13 @@ endif() include(ExternalProject) -set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.23.2.tar.gz) -set(LIBUV_SHA256 30af979c4f4b8d1b895ae6d115f7400c751542ccb9e656350fc89fda08d4eabd) +if(WIN32) + set(LIBUV_URL https://github.com/neovim/libuv/archive/0ed7feb71ca949f7a96ccb102481d17ea1bb5933.tar.gz) + set(LIBUV_SHA256 813fe763022f19878557c6fde311b6394fb9180caaaab0dd98d8704732234508) +else() + set(LIBUV_URL https://github.com/libuv/libuv/archive/v1.23.2.tar.gz) + set(LIBUV_SHA256 30af979c4f4b8d1b895ae6d115f7400c751542ccb9e656350fc89fda08d4eabd) +endif() set(MSGPACK_URL https://github.com/msgpack/msgpack-c/releases/download/cpp-3.0.0/msgpack-3.0.0.tar.gz) set(MSGPACK_SHA256 bfbb71b7c02f806393bc3cbc491b40523b89e64f83860c58e3e54af47de176e4) From 6c62f7b715e7cc51b534d15a981009c2d6d22a66 Mon Sep 17 00:00:00 2001 From: erw7 Date: Wed, 24 Oct 2018 19:57:53 +0900 Subject: [PATCH 02/10] win/TUI: builtin terminfos for cygwin, conemu, et al. --- scripts/update_terminfo.sh | 5 +- scripts/windows.ti | 71 +++++ src/nvim/tui/terminfo.c | 12 + src/nvim/tui/terminfo_defs.h | 516 +++++++++++++++++++++++++++++++++++ src/nvim/tui/tui.c | 31 ++- 5 files changed, 619 insertions(+), 16 deletions(-) create mode 100644 scripts/windows.ti diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh index c78799a56e..87a2adaed5 100755 --- a/scripts/update_terminfo.sh +++ b/scripts/update_terminfo.sh @@ -27,6 +27,9 @@ readonly -A entries=( [vte-256color]=vte_256colour_terminfo [xterm-256color]=xterm_256colour_terminfo [cygwin]=cygwin_terminfo + [win32con]=win32con_terminfo + [conemu]=conemu_terminfo + [vtpcon]=vtpcon_terminfo ) db="$(mktemp -du)" @@ -48,7 +51,7 @@ gunzip -f terminfo.src.gz # Build terminfo database # print_bold '[*] Build terminfo database\n' -tic -x -o "$db" terminfo.src +cat terminfo.src scripts/windows.ti | tic -x -o "$db" - rm -f terminfo.src # diff --git a/scripts/windows.ti b/scripts/windows.ti new file mode 100644 index 0000000000..da643350db --- /dev/null +++ b/scripts/windows.ti @@ -0,0 +1,71 @@ +libuv+basekey|vt100 base function key for libuv, + kb2=\E[G, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[3~, kend=\E[4~, kf1=\E[[A, kf10=\E[21~, + kf11=\E[23~, kf12=\E[24~, kf13=\E[25~, kf14=\E[26~, + kf15=\E[28~, kf16=\E[29~, kf17=\E[31~, kf18=\E[32~, + kf19=\E[33~, kf2=\E[[B, kf20=\E[34~, kf3=\E[[C, kf4=\E[[D, + kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + +libuv+exkey|vt100 extend function key for libuv, + kf21=\E[23$, kf22=\E[24$, kf23=\E[11\^, kf24=\E[12\^, + kf25=\E[13\^, kf26=\E[14\^, kf27=\E[15\^, kf28=\E[17\^, + kf29=\E[18\^, kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, + kf33=\E[23\^, kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^, + kf41=\E[32\^, kf42=\E[33\^, kf43=\E[34\^, kf44=\E[23@, + kf37=\E[28\^, kf38=\E[29\^, kf39=\E[31\^, kf45=\E[24@, + kDC=\E[3;2~, kEND=\E[4;2~, kHOM=\E[1;2~, kIC=\E[2;2~, + kLFT=\E[1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\E[1;2C, + +win32con|ANSI emulation for libuv on legacy console, + hs@, fsl@, tsl@, xon@, acsc@, rmacs@, smacs@, dch@, dch1@, dl@, dl1@, + ich@, ich1@, il@, il1@, ind@, invis@, ri@, rmir@, rs1@, rmul@, smir@, + smul@, smpch@, u6@, u7@, u8@, u9@, + sgr=\E[0%?%p1%t;7%;%?%p3%t;7%;%?%p6%t;1%;m, sgr0=\E[0m, + Se=\E[0 q, Ss=\E[%p1%d q, + use=cygwin, use=libuv+exkey, + +conemu|ANIS X3.64 and Xterm 256 colors for ConEmu with libuv, + ccc@, mc5i@, xenl@, acsc@, rmacs@, smacs@, blink@, cbt@, + cvvis@, cnorm=\E[?25h, dim@, flash@, hts@, initc@, invis@, is2@, + kf46@, kf47@, kf48@, kf49@, kf50@, kf51@, kf52@, kf53@, kf54@, + kf55@, kf56@, kf57@, kf58@, kf59@, kf60@, kf61@, kf62@, kf63@, kmous@, + mc0@, mc4@, mc5@, meml@, memu@, oc@, rmam@, rmcup=\E[?1049l, + smcup=\E[?1049h, rmir@, rmkx@, rmm@, rs1@, rs2@, + setab=\E[48;5;%p1%dm, setaf=\E[38;5;%p1%dm, + sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m, + sgr0=\E[0m, smam@, smir@, smkx@, smm@, tbc@, u6@, u7@, u8@, u9@, + Cr@, Cs@, Ms@, XM@, kDC3@, kDC4@, kDC5@, kDC6@, kDC7@, + kDN@, kDN3@, kDN4@, kDN5@, kDN6@, kDN7@, + kEND3@, kEND4@, kEND5@, kEND6@, kEND7@, + kHOM3@, kHOM4@, kHOM5@, kHOM6@, kHOM7@, + kIC3@, kIC4@, kIC5@, kIC6@, kIC7@, + kLFT3@, kLFT4@, kLFT5@, kLFT6@, kLFT7@, + kNXT3@, kNXT4@, kNXT5@, kNXT6@, kNXT7@, + kPRV3@, kPRV4@, kPRV5@, kPRV6@, kPRV7@, + kRIT3@, kRIT4@, kRIT5@, kRIT6@, kRIT7@, + kUP3@, kUP4@, kUP5@, kUP6@, kUP7@, rmxx@, smxx@, xm@, + use=libuv+basekey, use=libuv+exkey, use=xterm+256color, use=xterm-new, + +vtpcon|ANIS emulation for console virtual terminal sequence with libuv, + ccc@, mc5i@, xenl@, blink@, acsc=jjkkllmmnnqqttuuvvwwxx, + cvvis@, dim@, flash@, + initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E, + invis@, is2=\E[!p\E[?3l, + kf46@, kf47@, kf48@, kf49@, kf50@, kf51@, kf52@, kf53@, kf54@, + kf55@, kf56@, kf57@, kf58@, kf59@, kf60@, kf61@, kf62@, kf63@, kmous@, + mc0@, mc4@, mc5@, meml@, memu@, oc@, rmam@, rmcup=\E[?1049l, + smcup=\E[?1049h, rmir@, rmkx@, rmm@, rs1@, rs2@, + sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m, + sgr0=\E[0m, smam@, smir@, smkx@, smm@, tbc@, u6@, u7@, u8@, u9@, + Cr@, Cs@, Ms@, XM@, kDC3@, kDC4@, kDC5@, kDC6@, kDC7@, + kDN@, kDN3@, kDN4@, kDN5@, kDN6@, kDN7@, + kEND3@, kEND4@, kEND5@, kEND6@, kEND7@, + kHOM3@, kHOM4@, kHOM5@, kHOM6@, kHOM7@, + kIC3@, kIC4@, kIC5@, kIC6@, kIC7@, + kLFT3@, kLFT4@, kLFT5@, kLFT6@, kLFT7@, + kNXT3@, kNXT4@, kNXT5@, kNXT6@, kNXT7@, + kPRV3@, kPRV4@, kPRV5@, kPRV6@, kPRV7@, + kRIT3@, kRIT4@, kRIT5@, kRIT6@, kRIT7@, + kUP3@, kUP4@, kUP5@, kUP6@, kUP7@, rmxx@, smxx@, xm@, + use=libuv+basekey, use=libuv+exkey, use=xterm+256color, use=xterm-new, diff --git a/src/nvim/tui/terminfo.c b/src/nvim/tui/terminfo.c index bd17c1e746..42237903ea 100644 --- a/src/nvim/tui/terminfo.c +++ b/src/nvim/tui/terminfo.c @@ -90,6 +90,18 @@ static unibi_term *terminfo_builtin(const char *term, char **termname) *termname = xstrdup("builtin_cygwin"); return unibi_from_mem((const char *)cygwin_terminfo, sizeof cygwin_terminfo); + } else if (terminfo_is_term_family(term, "win32con")) { + *termname = xstrdup("builtin_win32con"); + return unibi_from_mem((const char *)win32con_terminfo, + sizeof win32con_terminfo); + } else if (terminfo_is_term_family(term, "conemu")) { + *termname = xstrdup("builtin_conemu"); + return unibi_from_mem((const char *)conemu_terminfo, + sizeof conemu_terminfo); + } else if (terminfo_is_term_family(term, "vtpcon")) { + *termname = xstrdup("builtin_vtpcon"); + return unibi_from_mem((const char *)vtpcon_terminfo, + sizeof vtpcon_terminfo); } else { *termname = xstrdup("builtin_ansi"); return unibi_from_mem((const char *)ansi_terminfo, diff --git a/src/nvim/tui/terminfo_defs.h b/src/nvim/tui/terminfo_defs.h index eaa0f73d12..8f855e2d23 100644 --- a/src/nvim/tui/terminfo_defs.h +++ b/src/nvim/tui/terminfo_defs.h @@ -97,6 +97,196 @@ static const int8_t ansi_terminfo[] = { 26,1,40,0,38,0,16,0,125,1,68,2,97,110,115,105,124,97,110,115,105,47,112,99,45,116,101,114,109,32,99,111,109,112,97,116,105,98,108,101,32,119,105,116,104,32,99,111,108,111,114,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,80,0,8,0,24,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,3,0,0,0,4,0,6,0,-1,-1,8,0,13,0,20,0,24,0,28,0,-1,-1,39,0,56,0,60,0,-1,-1,64,0,-1,-1,-1,-1,68,0,-1,-1,72,0,-1,-1,76,0,80,0,-1,-1,-1,-1,84,0,90,0,95,0,-1,-1,-1,-1,-1,-1,-1,-1,100,0,-1,-1,105,0,110,0,115,0,120,0,-127,0,-121,0,-1,-1,-1,-1,-1,-1,-113,0,-109,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-105,0,-1,-1,-101,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-99,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-95,0,-91,0,-1,-1,-87,0,-1,-1,-1,-1,-1,-1,-83,0,-1,-1,-1,-1,-1,-1,-79,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-75,0,-1,-1,-70,0,-61,0,-52,0,-43,0,-34,0,-25,0,-16,0,-7,0,2,1,11,1,-1,-1,-1,-1,-1,-1,-1,-1,20,1,25,1,30,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,50,1,-1,-1,61,1,-1,-1,63,1,-107,1,-1,-1,-104,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-100,1,-1,-1,-37,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-33,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-28,1,-17,1,-12,1,7,2,11,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,20,2,30,2,-1,-1,-1,-1,-1,-1,40,2,44,2,48,2,52,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,56,2,62,2,27,91,90,0,7,0,13,0,27,91,51,103,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,27,91,68,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,91,49,49,109,0,27,91,53,109,0,27,91,49,109,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,91,49,48,109,0,27,91,48,59,49,48,109,0,27,91,109,0,27,91,109,0,27,91,76,0,8,0,27,91,66,0,27,91,72,0,27,91,76,0,27,91,68,0,27,91,67,0,27,91,65,0,13,27,91,83,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,91,52,105,0,27,91,53,105,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,91,37,105,37,112,49,37,100,100,0,10,0,27,91,48,59,49,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,52,37,116,59,53,37,59,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,55,37,116,59,56,37,59,37,63,37,112,57,37,116,59,49,49,37,59,109,0,27,72,0,27,91,73,0,43,16,44,17,45,24,46,25,48,-37,96,4,97,-79,102,-8,103,-15,104,-80,106,-39,107,-65,108,-38,109,-64,110,-59,111,126,112,-60,113,-60,114,-60,115,95,116,-61,117,-76,118,-63,119,-62,120,-77,121,-13,122,-14,123,-29,124,-40,125,-100,126,-2,0,27,91,90,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,40,66,0,27,41,66,0,27,42,66,0,27,43,66,0,27,91,49,49,109,0,27,91,49,48,109,0,1,0,0,0,0,0,1,0,3,0,1,0,0,0,65,88,0 }; +// conemu|ANIS X3.64 and Xterm 256 colors for ConEmu with libuv, +// auto_right_margin, +// back_color_erase, +// backspaces_with_bs, +// has_meta_key, +// move_insert_mode, +// move_standout_mode, +// no_pad_char, +// columns#80, +// init_tabs#8, +// lines#24, +// max_colors#0x100, +// max_pairs#0x10000, +// acs_chars@, +// back_tab@, +// bell=^G, +// carriage_return=\r, +// change_scroll_region=\E[%i%p1%d;%p2%dr, +// clear_all_tabs@, +// clear_screen=\E[H\E[2J, +// clr_bol=\E[1K, +// clr_eol=\E[K, +// clr_eos=\E[J, +// column_address=\E[%i%p1%dG, +// cursor_address=\E[%i%p1%d;%p2%dH, +// cursor_down=\n, +// cursor_home=\E[H, +// cursor_invisible=\E[?25l, +// cursor_left=^H, +// cursor_normal=\E[?25h, +// cursor_right=\E[C, +// cursor_up=\E[A, +// cursor_visible@, +// delete_character=\E[P, +// delete_line=\E[M, +// enter_alt_charset_mode@, +// enter_am_mode@, +// enter_blink_mode@, +// enter_bold_mode=\E[1m, +// enter_ca_mode=\E[?1049h, +// enter_dim_mode@, +// enter_insert_mode@, +// enter_italics_mode=\E[3m, +// enter_reverse_mode=\E[7m, +// enter_secure_mode@, +// enter_standout_mode=\E[7m, +// enter_underline_mode=\E[4m, +// erase_chars=\E[%p1%dX, +// exit_alt_charset_mode@, +// exit_am_mode@, +// exit_attribute_mode=\E[0m, +// exit_ca_mode=\E[?1049l, +// exit_insert_mode@, +// exit_italics_mode=\E[23m, +// exit_standout_mode=\E[27m, +// exit_underline_mode=\E[24m, +// flash_screen@, +// init_2string@, +// initialize_color@, +// insert_line=\E[L, +// key_b2=\E[G, +// key_backspace=^H, +// key_btab=\E[Z, +// key_dc=\E[3~, +// key_down=\E[B, +// key_end=\E[4~, +// key_enter=\EOM, +// key_f1=\E[[A, +// key_f10=\E[21~, +// key_f11=\E[23~, +// key_f12=\E[24~, +// key_f13=\E[25~, +// key_f14=\E[26~, +// key_f15=\E[28~, +// key_f16=\E[29~, +// key_f17=\E[31~, +// key_f18=\E[32~, +// key_f19=\E[33~, +// key_f2=\E[[B, +// key_f20=\E[34~, +// key_f21=\E[23$, +// key_f22=\E[24$, +// key_f23=\E[11\136, +// key_f24=\E[12\136, +// key_f25=\E[13\136, +// key_f26=\E[14\136, +// key_f27=\E[15\136, +// key_f28=\E[17\136, +// key_f29=\E[18\136, +// key_f3=\E[[C, +// key_f30=\E[19\136, +// key_f31=\E[20\136, +// key_f32=\E[21\136, +// key_f33=\E[23\136, +// key_f34=\E[24\136, +// key_f35=\E[25\136, +// key_f36=\E[26\136, +// key_f37=\E[28\136, +// key_f38=\E[29\136, +// key_f39=\E[31\136, +// key_f4=\E[[D, +// key_f40=\E[1;6S, +// key_f41=\E[32\136, +// key_f42=\E[33\136, +// key_f43=\E[34\136, +// key_f44=\E[23@, +// key_f45=\E[24@, +// key_f46@, +// key_f47@, +// key_f48@, +// key_f49@, +// key_f5=\E[[E, +// key_f50@, +// key_f51@, +// key_f52@, +// key_f53@, +// key_f54@, +// key_f55@, +// key_f56@, +// key_f57@, +// key_f58@, +// key_f59@, +// key_f6=\E[17~, +// key_f60@, +// key_f61@, +// key_f62@, +// key_f63@, +// key_f7=\E[18~, +// key_f8=\E[19~, +// key_f9=\E[20~, +// key_home=\E[1~, +// key_ic=\E[2~, +// key_left=\E[D, +// key_mouse@, +// key_npage=\E[6~, +// key_ppage=\E[5~, +// key_right=\E[C, +// key_sdc=\E[3;2~, +// key_send=\E[4;2~, +// key_sf=\E[1;2B, +// key_shome=\E[1;2~, +// key_sic=\E[2;2~, +// key_sleft=\E[1;2D, +// key_snext=\E[6;2~, +// key_sprevious=\E[5;2~, +// key_sr=\E[1;2A, +// key_sright=\E[1;2C, +// key_up=\E[A, +// keypad_local@, +// keypad_xmit@, +// memory_lock@, +// memory_unlock@, +// meta_off@, +// meta_on@, +// orig_colors@, +// orig_pair=\E[39;49m, +// parm_dch=\E[%p1%dP, +// parm_delete_line=\E[%p1%dM, +// parm_down_cursor=\E[%p1%dB, +// parm_ich=\E[%p1%d@, +// parm_index=\E[%p1%dS, +// parm_insert_line=\E[%p1%dL, +// parm_left_cursor=\E[%p1%dD, +// parm_right_cursor=\E[%p1%dC, +// parm_rindex=\E[%p1%dT, +// parm_up_cursor=\E[%p1%dA, +// print_screen@, +// prtr_off@, +// prtr_on@, +// repeat_char=%p1%c\E[%p2%{1}%-%db, +// reset_1string@, +// reset_2string@, +// restore_cursor=\E8, +// row_address=\E[%i%p1%dd, +// save_cursor=\E7, +// scroll_forward=\n, +// scroll_reverse=\EM, +// set_a_background=\E[48;5;%p1%dm, +// set_a_foreground=\E[38;5;%p1%dm, +// set_attributes=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m, +// set_tab@, +// tab=^I, +// user6@, +// user7@, +// user8@, +// user9@, +static const int8_t conemu_terminfo[] = { + 30,2,61,0,38,0,15,0,-99,1,29,3,99,111,110,101,109,117,124,65,78,73,83,32,88,51,46,54,52,32,97,110,100,32,88,116,101,114,109,32,50,53,54,32,99,111,108,111,114,115,32,102,111,114,32,67,111,110,69,109,117,32,119,105,116,104,32,108,105,98,117,118,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,-2,-1,0,0,2,0,4,0,-2,-1,21,0,29,0,33,0,37,0,-1,-1,48,0,65,0,67,0,71,0,78,0,-1,-1,80,0,87,0,-1,-1,91,0,-2,-1,95,0,99,0,-1,-1,-1,-1,-2,-1,-2,-1,103,0,108,0,-1,-1,-2,-1,-2,-1,-2,-1,-1,-1,117,0,122,0,127,0,-124,0,-2,-1,-115,0,-110,0,-1,-1,-2,-1,-101,0,-95,0,-2,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-89,0,-1,-1,-85,0,-1,-1,-1,-1,-1,-1,-83,0,-1,-1,-78,0,-1,-1,-1,-1,-1,-1,-1,-1,-74,0,-69,0,-63,0,-58,0,-53,0,-48,0,-43,0,-37,0,-31,0,-25,0,-19,0,-14,0,-1,-1,-9,0,-1,-1,-5,0,0,1,5,1,9,1,16,1,-1,-1,23,1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,27,1,36,1,45,1,54,1,63,1,72,1,81,1,90,1,99,1,108,1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,117,1,-2,-1,-2,-1,-1,-1,-1,-1,-119,1,-116,1,-105,1,-102,1,-100,1,-97,1,-2,-1,-1,-1,-54,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-52,1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-48,1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-44,1,-39,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-35,1,-1,-1,-1,-1,-28,1,-1,-1,-1,-1,-1,-1,-1,-1,-21,1,-14,1,-7,1,-1,-1,-1,-1,0,2,-1,-1,7,2,-1,-1,-1,-1,-1,-1,14,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,21,2,27,2,33,2,39,2,45,2,51,2,57,2,63,2,69,2,75,2,81,2,87,2,93,2,99,2,105,2,111,2,117,2,123,2,-127,2,-121,2,-115,2,-109,2,-103,2,-97,2,-91,2,-85,2,-79,2,-73,2,-67,2,-61,2,-54,2,-48,2,-42,2,-36,2,-30,2,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-24,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-19,2,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-10,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-5,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,1,3,15,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,91,48,109,0,27,91,63,49,48,52,57,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,91,65,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,9,0,27,91,71,0,27,91,90,0,27,91,52,126,0,27,79,77,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,49,59,54,83,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,51,57,59,52,57,109,0,27,91,51,109,0,27,91,50,51,109,0,27,91,51,56,59,53,59,37,112,49,37,100,109,0,27,91,52,56,59,53,59,37,112,49,37,100,109,0,0,3,0,1,0,73,0,-106,0,-101,1,1,0,1,0,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,0,0,-2,-1,-1,-1,5,0,11,0,-1,-1,-2,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,21,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,48,0,54,0,59,0,64,0,69,0,74,0,79,0,83,0,88,0,93,0,98,0,103,0,108,0,114,0,120,0,126,0,-124,0,-118,0,-112,0,-106,0,-100,0,-94,0,-88,0,-82,0,-76,0,-71,0,-66,0,-61,0,-56,0,-51,0,-45,0,-39,0,-33,0,-27,0,-21,0,-15,0,-9,0,-3,0,3,1,9,1,15,1,21,1,27,1,33,1,39,1,45,1,51,1,57,1,63,1,69,1,73,1,78,1,83,1,88,1,93,1,98,1,102,1,106,1,110,1,114,1,119,1,124,1,27,91,51,74,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,91,49,59,50,65,0,65,88,0,71,48,0,88,84,0,85,56,0,67,114,0,67,115,0,69,48,0,69,51,0,77,115,0,83,48,0,83,101,0,83,115,0,84,83,0,88,77,0,103,114,98,111,109,0,103,115,98,111,109,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,69,78,68,56,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,72,79,77,56,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,114,109,120,120,0,115,109,120,120,0,120,109,0 +}; + // cygwin|ANSI emulation for Cygwin, // auto_right_margin, // has_status_line, @@ -1565,6 +1755,332 @@ static const int8_t vte_256colour_terminfo[] = { 30,2,39,0,38,0,15,0,-99,1,-49,5,118,116,101,45,50,53,54,99,111,108,111,114,124,86,84,69,32,119,105,116,104,32,120,116,101,114,109,32,50,53,54,45,99,111,108,111,114,115,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,25,0,30,0,38,0,42,0,46,0,-1,-1,57,0,74,0,76,0,80,0,87,0,-1,-1,89,0,96,0,-1,-1,100,0,-1,-1,104,0,108,0,-1,-1,-1,-1,112,0,-1,-1,114,0,119,0,-1,-1,-128,0,-123,0,-118,0,-1,-1,-113,0,-108,0,-103,0,-98,0,-89,0,-87,0,-81,0,-1,-1,-68,0,-63,0,-57,0,-51,0,-1,-1,-1,-1,-1,-1,-33,0,-1,-1,-1,-1,-1,-1,0,1,-1,-1,4,1,-1,-1,-1,-1,-1,-1,6,1,-1,-1,11,1,-1,-1,-1,-1,-1,-1,-1,-1,15,1,19,1,25,1,29,1,33,1,37,1,43,1,49,1,55,1,61,1,67,1,71,1,-1,-1,76,1,-1,-1,80,1,85,1,90,1,94,1,101,1,-1,-1,108,1,112,1,120,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-128,1,-119,1,-110,1,-101,1,-92,1,-83,1,-74,1,-65,1,-56,1,-47,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-38,1,-35,1,-1,-1,-1,-1,16,2,19,2,30,2,33,2,35,2,38,2,116,2,-1,-1,119,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,121,2,-1,-1,-1,-1,-1,-1,-1,-1,125,2,-1,-1,-78,2,-1,-1,-1,-1,-74,2,-68,2,-1,-1,-1,-1,-62,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-58,2,-54,2,-1,-1,-50,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-45,2,-1,-1,-38,2,-33,2,-1,-1,-1,-1,-1,-1,-1,-1,-26,2,-19,2,-12,2,-1,-1,-1,-1,-5,2,-1,-1,2,3,-1,-1,-1,-1,-1,-1,9,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,16,3,22,3,28,3,35,3,42,3,49,3,56,3,64,3,72,3,80,3,88,3,96,3,104,3,112,3,120,3,127,3,-122,3,-115,3,-108,3,-100,3,-92,3,-84,3,-76,3,-68,3,-60,3,-52,3,-44,3,-37,3,-30,3,-23,3,-16,3,-8,3,0,4,8,4,16,4,24,4,32,4,40,4,48,4,55,4,62,4,69,4,76,4,84,4,92,4,100,4,108,4,116,4,124,4,-124,4,-116,4,-109,4,-102,4,-95,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-90,4,-79,4,-74,4,-55,4,-51,4,-42,4,-35,4,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,59,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,64,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,70,5,-1,-1,-1,-1,-1,-1,74,5,-119,5,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-55,5,-52,5,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,51,103,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,14,0,27,91,49,109,0,27,55,27,91,63,52,55,104,0,27,91,50,109,0,27,91,52,104,0,27,91,56,109,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,15,0,27,91,48,109,15,0,27,91,50,74,27,91,63,52,55,108,27,56,0,27,91,52,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,63,53,104,36,60,49,48,48,47,62,27,91,63,53,108,0,27,91,109,27,91,63,55,104,27,91,52,108,27,62,27,55,27,91,114,27,91,63,49,59,51,59,52,59,54,108,27,56,0,27,91,76,0,127,0,27,91,51,126,0,27,79,66,0,27,79,80,0,27,91,50,49,126,0,27,79,81,0,27,79,82,0,27,79,83,0,27,91,49,53,126,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,79,72,0,27,91,50,126,0,27,79,68,0,27,91,54,126,0,27,91,53,126,0,27,79,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,79,65,0,27,91,63,49,108,27,62,0,27,91,63,49,104,27,61,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,27,99,0,27,55,27,91,114,27,56,27,91,109,27,91,63,55,104,27,91,33,112,27,91,63,49,59,51,59,52,59,54,108,27,91,52,108,27,62,27,91,63,49,48,48,48,108,27,91,63,50,53,104,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,54,37,116,59,49,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,53,37,116,59,50,37,59,37,63,37,112,55,37,116,59,56,37,59,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,109,37,63,37,112,57,37,116,14,37,101,15,37,59,0,27,72,0,9,0,27,91,69,0,96,96,97,97,102,102,103,103,105,105,106,106,107,107,108,108,109,109,110,110,111,111,112,112,113,113,114,114,115,115,116,116,117,117,118,118,119,119,120,120,121,121,122,122,123,123,124,124,125,125,126,126,0,27,91,90,0,27,91,63,55,104,0,27,91,63,55,108,0,27,41,48,0,27,79,70,0,27,79,77,0,27,91,49,126,0,27,91,51,59,50,126,0,27,91,52,126,0,27,91,49,59,50,70,0,27,91,49,59,50,72,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,49,59,50,80,0,27,91,49,59,50,81,0,27,91,49,59,50,82,0,27,91,49,59,50,83,0,27,91,49,53,59,50,126,0,27,91,49,55,59,50,126,0,27,91,49,56,59,50,126,0,27,91,49,57,59,50,126,0,27,91,50,48,59,50,126,0,27,91,50,49,59,50,126,0,27,91,50,51,59,50,126,0,27,91,50,52,59,50,126,0,27,91,49,59,53,80,0,27,91,49,59,53,81,0,27,91,49,59,53,82,0,27,91,49,59,53,83,0,27,91,49,53,59,53,126,0,27,91,49,55,59,53,126,0,27,91,49,56,59,53,126,0,27,91,49,57,59,53,126,0,27,91,50,48,59,53,126,0,27,91,50,49,59,53,126,0,27,91,50,51,59,53,126,0,27,91,50,52,59,53,126,0,27,91,49,59,54,80,0,27,91,49,59,54,81,0,27,91,49,59,54,82,0,27,91,49,59,54,83,0,27,91,49,53,59,54,126,0,27,91,49,55,59,54,126,0,27,91,49,56,59,54,126,0,27,91,49,57,59,54,126,0,27,91,50,48,59,54,126,0,27,91,50,49,59,54,126,0,27,91,50,51,59,54,126,0,27,91,50,52,59,54,126,0,27,91,49,59,51,80,0,27,91,49,59,51,81,0,27,91,49,59,51,82,0,27,91,49,59,51,83,0,27,91,49,53,59,51,126,0,27,91,49,55,59,51,126,0,27,91,49,56,59,51,126,0,27,91,49,57,59,51,126,0,27,91,50,48,59,51,126,0,27,91,50,49,59,51,126,0,27,91,50,51,59,51,126,0,27,91,50,52,59,51,126,0,27,91,49,59,52,80,0,27,91,49,59,52,81,0,27,91,49,59,52,82,0,27,91,49,75,0,27,91,37,105,37,100,59,37,100,82,0,27,91,54,110,0,27,91,63,37,91,59,48,49,50,51,52,53,54,55,56,57,93,99,0,27,91,99,0,27,91,51,57,59,52,57,109,0,27,93,49,48,52,7,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,92,0,27,91,51,109,0,27,91,50,51,109,0,27,91,60,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,27,108,0,27,109,0,0,3,0,1,0,73,0,-106,0,57,3,0,0,1,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,0,-1,-1,-1,-1,32,0,39,0,46,0,53,0,60,0,67,0,74,0,81,0,88,0,95,0,102,0,109,0,116,0,123,0,-126,0,-119,0,-1,-1,-112,0,-105,0,-98,0,-91,0,-84,0,-1,-1,-77,0,-70,0,-63,0,-56,0,-49,0,-42,0,-35,0,-28,0,-21,0,-14,0,-7,0,0,1,7,1,14,1,21,1,28,1,35,1,42,1,49,1,56,1,63,1,70,1,77,1,84,1,91,1,98,1,105,1,112,1,119,1,126,1,-123,1,-1,-1,-1,-1,-1,-1,-1,-1,-116,1,-110,1,-105,1,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,48,0,54,0,59,0,64,0,69,0,74,0,79,0,83,0,88,0,93,0,98,0,103,0,108,0,114,0,120,0,126,0,-124,0,-118,0,-112,0,-106,0,-100,0,-94,0,-88,0,-82,0,-76,0,-71,0,-66,0,-61,0,-56,0,-51,0,-45,0,-39,0,-33,0,-27,0,-21,0,-15,0,-9,0,-3,0,3,1,9,1,15,1,21,1,27,1,33,1,39,1,45,1,51,1,57,1,63,1,69,1,73,1,78,1,83,1,88,1,93,1,98,1,102,1,106,1,110,1,114,1,119,1,124,1,27,91,63,49,48,48,54,59,49,48,48,48,37,63,37,112,49,37,123,49,125,37,61,37,116,104,37,101,108,37,59,0,27,91,51,59,51,126,0,27,91,51,59,52,126,0,27,91,51,59,53,126,0,27,91,51,59,54,126,0,27,91,51,59,55,126,0,27,91,49,59,50,66,0,27,91,49,59,51,66,0,27,91,49,59,52,66,0,27,91,49,59,53,66,0,27,91,49,59,54,66,0,27,91,49,59,55,66,0,27,91,49,59,51,70,0,27,91,49,59,52,70,0,27,91,49,59,53,70,0,27,91,49,59,54,70,0,27,91,49,59,55,70,0,27,91,49,59,51,72,0,27,91,49,59,52,72,0,27,91,49,59,53,72,0,27,91,49,59,54,72,0,27,91,49,59,55,72,0,27,91,50,59,51,126,0,27,91,50,59,52,126,0,27,91,50,59,53,126,0,27,91,50,59,54,126,0,27,91,50,59,55,126,0,27,91,49,59,51,68,0,27,91,49,59,52,68,0,27,91,49,59,53,68,0,27,91,49,59,54,68,0,27,91,49,59,55,68,0,27,91,54,59,51,126,0,27,91,54,59,52,126,0,27,91,54,59,53,126,0,27,91,54,59,54,126,0,27,91,54,59,55,126,0,27,91,53,59,51,126,0,27,91,53,59,52,126,0,27,91,53,59,53,126,0,27,91,53,59,54,126,0,27,91,53,59,55,126,0,27,91,49,59,51,67,0,27,91,49,59,52,67,0,27,91,49,59,53,67,0,27,91,49,59,54,67,0,27,91,49,59,55,67,0,27,91,49,59,50,65,0,27,91,49,59,51,65,0,27,91,49,59,52,65,0,27,91,49,59,53,65,0,27,91,49,59,54,65,0,27,91,49,59,55,65,0,27,91,50,57,109,0,27,91,57,109,0,27,91,60,37,112,49,37,100,59,37,112,50,37,100,59,37,112,51,37,100,59,37,63,37,112,52,37,116,77,37,101,109,37,59,0,65,88,0,71,48,0,88,84,0,85,56,0,67,114,0,67,115,0,69,48,0,69,51,0,77,115,0,83,48,0,83,101,0,83,115,0,84,83,0,88,77,0,103,114,98,111,109,0,103,115,98,111,109,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,69,78,68,56,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,72,79,77,56,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,114,109,120,120,0,115,109,120,120,0,120,109,0 }; +// vtpcon|ANIS emulation for console virtual terminal sequence with libuv, +// auto_right_margin, +// back_color_erase, +// backspaces_with_bs, +// has_meta_key, +// move_insert_mode, +// move_standout_mode, +// no_pad_char, +// columns#80, +// init_tabs#8, +// lines#24, +// max_colors#0x100, +// max_pairs#0x10000, +// acs_chars=jjkkllmmnnqqttuuvvwwxx, +// back_tab=\E[Z, +// bell=^G, +// carriage_return=\r, +// change_scroll_region=\E[%i%p1%d;%p2%dr, +// clear_all_tabs@, +// clear_screen=\E[H\E[2J, +// clr_bol=\E[1K, +// clr_eol=\E[K, +// clr_eos=\E[J, +// column_address=\E[%i%p1%dG, +// cursor_address=\E[%i%p1%d;%p2%dH, +// cursor_down=\n, +// cursor_home=\E[H, +// cursor_invisible=\E[?25l, +// cursor_left=^H, +// cursor_normal=\E[?12l\E[?25h, +// cursor_right=\E[C, +// cursor_up=\E[A, +// cursor_visible@, +// delete_character=\E[P, +// delete_line=\E[M, +// enter_alt_charset_mode=\E(0, +// enter_am_mode@, +// enter_blink_mode@, +// enter_bold_mode=\E[1m, +// enter_ca_mode=\E[?1049h, +// enter_dim_mode@, +// enter_insert_mode@, +// enter_italics_mode=\E[3m, +// enter_reverse_mode=\E[7m, +// enter_secure_mode@, +// enter_standout_mode=\E[7m, +// enter_underline_mode=\E[4m, +// erase_chars=\E[%p1%dX, +// exit_alt_charset_mode=\E(B, +// exit_am_mode@, +// exit_attribute_mode=\E[0m, +// exit_ca_mode=\E[?1049l, +// exit_insert_mode@, +// exit_italics_mode=\E[23m, +// exit_standout_mode=\E[27m, +// exit_underline_mode=\E[24m, +// flash_screen@, +// init_2string=\E[\041p\E[?3l, +// initialize_color=\E]4;%p1%d;rgb\072%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E, +// insert_line=\E[L, +// key_b2=\E[G, +// key_backspace=^H, +// key_btab=\E[Z, +// key_dc=\E[3~, +// key_down=\E[B, +// key_end=\E[4~, +// key_enter=\EOM, +// key_f1=\E[[A, +// key_f10=\E[21~, +// key_f11=\E[23~, +// key_f12=\E[24~, +// key_f13=\E[25~, +// key_f14=\E[26~, +// key_f15=\E[28~, +// key_f16=\E[29~, +// key_f17=\E[31~, +// key_f18=\E[32~, +// key_f19=\E[33~, +// key_f2=\E[[B, +// key_f20=\E[34~, +// key_f21=\E[23$, +// key_f22=\E[24$, +// key_f23=\E[11\136, +// key_f24=\E[12\136, +// key_f25=\E[13\136, +// key_f26=\E[14\136, +// key_f27=\E[15\136, +// key_f28=\E[17\136, +// key_f29=\E[18\136, +// key_f3=\E[[C, +// key_f30=\E[19\136, +// key_f31=\E[20\136, +// key_f32=\E[21\136, +// key_f33=\E[23\136, +// key_f34=\E[24\136, +// key_f35=\E[25\136, +// key_f36=\E[26\136, +// key_f37=\E[28\136, +// key_f38=\E[29\136, +// key_f39=\E[31\136, +// key_f4=\E[[D, +// key_f40=\E[1;6S, +// key_f41=\E[32\136, +// key_f42=\E[33\136, +// key_f43=\E[34\136, +// key_f44=\E[23@, +// key_f45=\E[24@, +// key_f46@, +// key_f47@, +// key_f48@, +// key_f49@, +// key_f5=\E[[E, +// key_f50@, +// key_f51@, +// key_f52@, +// key_f53@, +// key_f54@, +// key_f55@, +// key_f56@, +// key_f57@, +// key_f58@, +// key_f59@, +// key_f6=\E[17~, +// key_f60@, +// key_f61@, +// key_f62@, +// key_f63@, +// key_f7=\E[18~, +// key_f8=\E[19~, +// key_f9=\E[20~, +// key_home=\E[1~, +// key_ic=\E[2~, +// key_left=\E[D, +// key_mouse@, +// key_npage=\E[6~, +// key_ppage=\E[5~, +// key_right=\E[C, +// key_sdc=\E[3;2~, +// key_send=\E[4;2~, +// key_sf=\E[1;2B, +// key_shome=\E[1;2~, +// key_sic=\E[2;2~, +// key_sleft=\E[1;2D, +// key_snext=\E[6;2~, +// key_sprevious=\E[5;2~, +// key_sr=\E[1;2A, +// key_sright=\E[1;2C, +// key_up=\E[A, +// keypad_local@, +// keypad_xmit@, +// memory_lock@, +// memory_unlock@, +// meta_off@, +// meta_on@, +// orig_colors@, +// orig_pair=\E[39;49m, +// parm_dch=\E[%p1%dP, +// parm_delete_line=\E[%p1%dM, +// parm_down_cursor=\E[%p1%dB, +// parm_ich=\E[%p1%d@, +// parm_index=\E[%p1%dS, +// parm_insert_line=\E[%p1%dL, +// parm_left_cursor=\E[%p1%dD, +// parm_right_cursor=\E[%p1%dC, +// parm_rindex=\E[%p1%dT, +// parm_up_cursor=\E[%p1%dA, +// print_screen@, +// prtr_off@, +// prtr_on@, +// repeat_char=%p1%c\E[%p2%{1}%-%db, +// reset_1string@, +// reset_2string@, +// restore_cursor=\E8, +// row_address=\E[%i%p1%dd, +// save_cursor=\E7, +// scroll_forward=\n, +// scroll_reverse=\EM, +// set_a_background=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e48;5;%p1%d%;m, +// set_a_foreground=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e38;5;%p1%d%;m, +// set_attributes=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p6%t;1%;m, +// set_tab=\EH, +// tab=^I, +// user6@, +// user7@, +// user8@, +// user9@, +static const int8_t vtpcon_terminfo[] = { + 30,2,71,0,38,0,15,0,-99,1,19,4,118,116,112,99,111,110,124,65,78,73,83,32,101,109,117,108,97,116,105,111,110,32,102,111,114,32,99,111,110,115,111,108,101,32,118,105,114,116,117,97,108,32,116,101,114,109,105,110,97,108,32,115,101,113,117,101,110,99,101,32,119,105,116,104,32,108,105,98,117,118,0,0,1,0,0,0,0,0,0,1,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,1,0,80,0,0,0,8,0,0,0,24,0,0,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,0,1,0,0,0,0,1,0,0,0,4,0,6,0,8,0,-2,-1,25,0,33,0,37,0,41,0,-1,-1,52,0,69,0,71,0,75,0,82,0,-1,-1,84,0,97,0,-1,-1,101,0,-2,-1,105,0,109,0,-1,-1,-1,-1,113,0,-2,-1,117,0,122,0,-1,-1,-2,-1,-2,-1,-2,-1,-1,-1,-125,0,-120,0,-115,0,-110,0,-101,0,-97,0,-92,0,-1,-1,-2,-1,-83,0,-77,0,-2,-1,-1,-1,-1,-1,-1,-1,-71,0,-1,-1,-1,-1,-1,-1,-61,0,-1,-1,-57,0,-1,-1,-1,-1,-1,-1,-55,0,-1,-1,-50,0,-1,-1,-1,-1,-1,-1,-1,-1,-46,0,-41,0,-35,0,-30,0,-25,0,-20,0,-15,0,-9,0,-3,0,3,1,9,1,14,1,-1,-1,19,1,-1,-1,23,1,28,1,33,1,37,1,44,1,-1,-1,51,1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,55,1,64,1,73,1,82,1,91,1,100,1,109,1,118,1,127,1,-120,1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-111,1,-2,-1,-2,-1,-1,-1,-1,-1,-91,1,-88,1,-77,1,-74,1,-72,1,-69,1,-26,1,-1,-1,-23,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-21,1,-1,-1,-1,-1,-1,-1,-1,-1,-17,1,-1,-1,6,2,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,10,2,15,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,19,2,-1,-1,-1,-1,26,2,-1,-1,-1,-1,-1,-1,-1,-1,33,2,40,2,47,2,-1,-1,-1,-1,54,2,-1,-1,61,2,-1,-1,-1,-1,-1,-1,68,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,75,2,81,2,87,2,93,2,99,2,105,2,111,2,117,2,123,2,-127,2,-121,2,-115,2,-109,2,-103,2,-97,2,-91,2,-85,2,-79,2,-73,2,-67,2,-61,2,-55,2,-49,2,-43,2,-37,2,-31,2,-25,2,-19,2,-13,2,-7,2,0,3,6,3,12,3,18,3,24,3,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,30,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,35,3,-2,-1,44,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-119,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-114,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-108,3,-45,3,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,27,91,90,0,7,0,13,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,114,0,27,91,72,27,91,50,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,10,0,27,91,72,0,27,91,63,50,53,108,0,8,0,27,91,63,49,50,108,27,91,63,50,53,104,0,27,91,67,0,27,91,65,0,27,91,80,0,27,91,77,0,27,40,48,0,27,91,49,109,0,27,91,63,49,48,52,57,104,0,27,91,55,109,0,27,91,55,109,0,27,91,52,109,0,27,91,37,112,49,37,100,88,0,27,40,66,0,27,91,48,109,0,27,91,63,49,48,52,57,108,0,27,91,50,55,109,0,27,91,50,52,109,0,27,91,33,112,27,91,63,51,108,0,27,91,76,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,49,59,50,66,0,27,91,49,59,50,65,0,27,91,65,0,27,91,37,112,49,37,100,80,0,27,91,37,112,49,37,100,77,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,64,0,27,91,37,112,49,37,100,83,0,27,91,37,112,49,37,100,76,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,84,0,27,91,37,112,49,37,100,65,0,37,112,49,37,99,27,91,37,112,50,37,123,49,125,37,45,37,100,98,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,10,0,27,77,0,27,91,48,37,63,37,112,49,37,112,51,37,124,37,116,59,55,37,59,37,63,37,112,50,37,116,59,52,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,27,72,0,9,0,27,91,71,0,106,106,107,107,108,108,109,109,110,110,113,113,116,116,117,117,118,118,119,119,120,120,0,27,91,90,0,27,91,52,126,0,27,79,77,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,49,59,54,83,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,51,57,59,52,57,109,0,27,93,52,59,37,112,49,37,100,59,114,103,98,58,37,112,50,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,51,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,47,37,112,52,37,123,50,53,53,125,37,42,37,123,49,48,48,48,125,37,47,37,50,46,50,88,27,0,27,91,51,109,0,27,91,50,51,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,51,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,57,37,112,49,37,123,56,125,37,45,37,100,37,101,51,56,59,53,59,37,112,49,37,100,37,59,109,0,27,91,37,63,37,112,49,37,123,56,125,37,60,37,116,52,37,112,49,37,100,37,101,37,112,49,37,123,49,54,125,37,60,37,116,49,48,37,112,49,37,123,56,125,37,45,37,100,37,101,52,56,59,53,59,37,112,49,37,100,37,59,109,0,0,3,0,1,0,73,0,-106,0,-101,1,1,0,1,0,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,0,0,-2,-1,-1,-1,5,0,11,0,-1,-1,-2,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,21,0,-2,-1,-2,-1,-2,-1,-2,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,0,0,3,0,6,0,9,0,12,0,15,0,18,0,21,0,24,0,27,0,30,0,33,0,36,0,39,0,42,0,48,0,54,0,59,0,64,0,69,0,74,0,79,0,83,0,88,0,93,0,98,0,103,0,108,0,114,0,120,0,126,0,-124,0,-118,0,-112,0,-106,0,-100,0,-94,0,-88,0,-82,0,-76,0,-71,0,-66,0,-61,0,-56,0,-51,0,-45,0,-39,0,-33,0,-27,0,-21,0,-15,0,-9,0,-3,0,3,1,9,1,15,1,21,1,27,1,33,1,39,1,45,1,51,1,57,1,63,1,69,1,73,1,78,1,83,1,88,1,93,1,98,1,102,1,106,1,110,1,114,1,119,1,124,1,27,91,51,74,0,27,91,50,32,113,0,27,91,37,112,49,37,100,32,113,0,27,91,49,59,50,65,0,65,88,0,71,48,0,88,84,0,85,56,0,67,114,0,67,115,0,69,48,0,69,51,0,77,115,0,83,48,0,83,101,0,83,115,0,84,83,0,88,77,0,103,114,98,111,109,0,103,115,98,111,109,0,107,68,67,51,0,107,68,67,52,0,107,68,67,53,0,107,68,67,54,0,107,68,67,55,0,107,68,78,0,107,68,78,51,0,107,68,78,52,0,107,68,78,53,0,107,68,78,54,0,107,68,78,55,0,107,69,78,68,51,0,107,69,78,68,52,0,107,69,78,68,53,0,107,69,78,68,54,0,107,69,78,68,55,0,107,69,78,68,56,0,107,72,79,77,51,0,107,72,79,77,52,0,107,72,79,77,53,0,107,72,79,77,54,0,107,72,79,77,55,0,107,72,79,77,56,0,107,73,67,51,0,107,73,67,52,0,107,73,67,53,0,107,73,67,54,0,107,73,67,55,0,107,76,70,84,51,0,107,76,70,84,52,0,107,76,70,84,53,0,107,76,70,84,54,0,107,76,70,84,55,0,107,78,88,84,51,0,107,78,88,84,52,0,107,78,88,84,53,0,107,78,88,84,54,0,107,78,88,84,55,0,107,80,82,86,51,0,107,80,82,86,52,0,107,80,82,86,53,0,107,80,82,86,54,0,107,80,82,86,55,0,107,82,73,84,51,0,107,82,73,84,52,0,107,82,73,84,53,0,107,82,73,84,54,0,107,82,73,84,55,0,107,85,80,0,107,85,80,51,0,107,85,80,52,0,107,85,80,53,0,107,85,80,54,0,107,85,80,55,0,107,97,50,0,107,98,49,0,107,98,51,0,107,99,50,0,114,109,120,120,0,115,109,120,120,0,120,109,0 +}; + +// win32con|ANSI emulation for libuv on legacy console, +// auto_right_margin, +// move_insert_mode, +// move_standout_mode, +// init_tabs#8, +// max_colors#8, +// max_pairs#64, +// acs_chars@, +// bell=^G, +// carriage_return=\r, +// clear_screen=\E[H\E[J, +// clr_bol=\E[1K, +// clr_eol=\E[K, +// clr_eos=\E[J, +// column_address=\E[%i%p1%dG, +// cursor_address=\E[%i%p1%d;%p2%dH, +// cursor_down=\E[B, +// cursor_home=\E[H, +// cursor_left=^H, +// cursor_right=\E[C, +// cursor_up=\E[A, +// delete_character@, +// delete_line@, +// enter_alt_charset_mode@, +// enter_bold_mode=\E[1m, +// enter_ca_mode=\E7\E[?47h, +// enter_insert_mode@, +// enter_pc_charset_mode@, +// enter_reverse_mode=\E[7m, +// enter_secure_mode@, +// enter_standout_mode=\E[7m, +// enter_underline_mode@, +// exit_alt_charset_mode@, +// exit_attribute_mode=\E[0m, +// exit_ca_mode=\E[2J\E[?47l\E8, +// exit_insert_mode@, +// exit_pc_charset_mode=\E[10m, +// exit_standout_mode=\E[27m, +// exit_underline_mode@, +// from_status_line@, +// insert_character@, +// insert_line@, +// key_b2=\E[G, +// key_backspace=^H, +// key_dc=\E[3~, +// key_down=\E[B, +// key_end=\E[4~, +// key_f1=\E[[A, +// key_f10=\E[21~, +// key_f11=\E[23~, +// key_f12=\E[24~, +// key_f13=\E[25~, +// key_f14=\E[26~, +// key_f15=\E[28~, +// key_f16=\E[29~, +// key_f17=\E[31~, +// key_f18=\E[32~, +// key_f19=\E[33~, +// key_f2=\E[[B, +// key_f20=\E[34~, +// key_f21=\E[23$, +// key_f22=\E[24$, +// key_f23=\E[11\136, +// key_f24=\E[12\136, +// key_f25=\E[13\136, +// key_f26=\E[14\136, +// key_f27=\E[15\136, +// key_f28=\E[17\136, +// key_f29=\E[18\136, +// key_f3=\E[[C, +// key_f30=\E[19\136, +// key_f31=\E[20\136, +// key_f32=\E[21\136, +// key_f33=\E[23\136, +// key_f34=\E[24\136, +// key_f35=\E[25\136, +// key_f36=\E[26\136, +// key_f37=\E[28\136, +// key_f38=\E[29\136, +// key_f39=\E[31\136, +// key_f4=\E[[D, +// key_f41=\E[32\136, +// key_f42=\E[33\136, +// key_f43=\E[34\136, +// key_f44=\E[23@, +// key_f45=\E[24@, +// key_f5=\E[[E, +// key_f6=\E[17~, +// key_f7=\E[18~, +// key_f8=\E[19~, +// key_f9=\E[20~, +// key_home=\E[1~, +// key_ic=\E[2~, +// key_left=\E[D, +// key_npage=\E[6~, +// key_ppage=\E[5~, +// key_right=\E[C, +// key_sdc=\E[3;2~, +// key_send=\E[4;2~, +// key_shome=\E[1;2~, +// key_sic=\E[2;2~, +// key_sleft=\E[1;2D, +// key_snext=\E[6;2~, +// key_sprevious=\E[5;2~, +// key_sright=\E[1;2C, +// key_suspend=^Z, +// key_up=\E[A, +// newline=\r\n, +// orig_pair=\E[39;49m, +// parm_dch@, +// parm_delete_line@, +// parm_down_cursor=\E[%p1%dB, +// parm_ich@, +// parm_insert_line@, +// parm_left_cursor=\E[%p1%dD, +// parm_right_cursor=\E[%p1%dC, +// parm_up_cursor=\E[%p1%dA, +// reset_1string@, +// restore_cursor=\E8, +// row_address=\E[%i%p1%dd, +// save_cursor=\E7, +// scroll_forward@, +// scroll_reverse@, +// set_a_background=\E[4%p1%dm, +// set_a_foreground=\E[3%p1%dm, +// set_attributes=\E[0%?%p1%t;7%;%?%p3%t;7%;%?%p6%t;1%;m, +// tab=^I, +// to_status_line@, +// user6@, +// user7@, +// user8@, +// user9@, +static const int8_t win32con_terminfo[] = { + 26,1,52,0,15,0,15,0,125,1,106,2,119,105,110,51,50,99,111,110,124,65,78,83,73,32,101,109,117,108,97,116,105,111,110,32,102,111,114,32,108,105,98,117,118,32,111,110,32,108,101,103,97,99,121,32,99,111,110,115,111,108,101,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,-1,-1,8,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,8,0,64,0,-1,-1,0,0,2,0,-1,-1,-1,-1,4,0,11,0,15,0,19,0,-1,-1,30,0,47,0,51,0,-1,-1,55,0,-1,-1,-1,-1,57,0,-1,-1,61,0,-1,-1,-2,-1,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,65,0,70,0,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,79,0,84,0,-2,-1,-1,-1,-2,-1,89,0,94,0,-1,-1,-2,-1,107,0,-2,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-1,-1,113,0,-1,-1,-1,-1,-1,-1,115,0,-1,-1,120,0,-1,-1,-1,-1,-1,-1,-1,-1,124,0,-127,0,-121,0,-116,0,-111,0,-106,0,-101,0,-95,0,-89,0,-83,0,-77,0,-72,0,-1,-1,-67,0,-1,-1,-63,0,-58,0,-53,0,-1,-1,-1,-1,-1,-1,-49,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-45,0,-1,-1,-2,-1,-2,-1,-42,0,-2,-1,-1,-1,-2,-1,-33,0,-24,0,-1,-1,-15,0,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-6,0,-3,0,8,1,-2,-1,-2,-1,11,1,-1,-1,-1,-1,49,1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,51,1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,55,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,60,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,1,-1,-1,-1,-1,69,1,-1,-1,-1,-1,-1,-1,-1,-1,76,1,83,1,90,1,-1,-1,-1,-1,97,1,-1,-1,104,1,-1,-1,-1,-1,-1,-1,111,1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,118,1,124,1,-126,1,-120,1,-114,1,-108,1,-102,1,-96,1,-90,1,-84,1,-78,1,-72,1,-66,1,-60,1,-54,1,-48,1,-42,1,-36,1,-30,1,-24,1,-18,1,-12,1,-6,1,0,2,6,2,12,2,18,2,24,2,30,2,-1,-1,36,2,42,2,48,2,54,2,60,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,66,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,-2,-1,-2,-1,-2,-1,71,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,80,2,90,2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,100,2,7,0,13,0,27,91,72,27,91,74,0,27,91,75,0,27,91,74,0,27,91,37,105,37,112,49,37,100,71,0,27,91,37,105,37,112,49,37,100,59,37,112,50,37,100,72,0,27,91,66,0,27,91,72,0,8,0,27,91,67,0,27,91,65,0,27,91,49,109,0,27,55,27,91,63,52,55,104,0,27,91,55,109,0,27,91,55,109,0,27,91,48,109,0,27,91,50,74,27,91,63,52,55,108,27,56,0,27,91,50,55,109,0,8,0,27,91,51,126,0,27,91,66,0,27,91,91,65,0,27,91,50,49,126,0,27,91,91,66,0,27,91,91,67,0,27,91,91,68,0,27,91,91,69,0,27,91,49,55,126,0,27,91,49,56,126,0,27,91,49,57,126,0,27,91,50,48,126,0,27,91,49,126,0,27,91,50,126,0,27,91,68,0,27,91,54,126,0,27,91,53,126,0,27,91,67,0,27,91,65,0,13,10,0,27,91,37,112,49,37,100,66,0,27,91,37,112,49,37,100,68,0,27,91,37,112,49,37,100,67,0,27,91,37,112,49,37,100,65,0,27,56,0,27,91,37,105,37,112,49,37,100,100,0,27,55,0,27,91,48,37,63,37,112,49,37,116,59,55,37,59,37,63,37,112,51,37,116,59,55,37,59,37,63,37,112,54,37,116,59,49,37,59,109,0,9,0,27,91,71,0,27,91,52,126,0,26,0,27,91,51,59,50,126,0,27,91,52,59,50,126,0,27,91,49,59,50,126,0,27,91,50,59,50,126,0,27,91,49,59,50,68,0,27,91,54,59,50,126,0,27,91,53,59,50,126,0,27,91,49,59,50,67,0,27,91,50,51,126,0,27,91,50,52,126,0,27,91,50,53,126,0,27,91,50,54,126,0,27,91,50,56,126,0,27,91,50,57,126,0,27,91,51,49,126,0,27,91,51,50,126,0,27,91,51,51,126,0,27,91,51,52,126,0,27,91,50,51,36,0,27,91,50,52,36,0,27,91,49,49,94,0,27,91,49,50,94,0,27,91,49,51,94,0,27,91,49,52,94,0,27,91,49,53,94,0,27,91,49,55,94,0,27,91,49,56,94,0,27,91,49,57,94,0,27,91,50,48,94,0,27,91,50,49,94,0,27,91,50,51,94,0,27,91,50,52,94,0,27,91,50,53,94,0,27,91,50,54,94,0,27,91,50,56,94,0,27,91,50,57,94,0,27,91,51,49,94,0,27,91,51,50,94,0,27,91,51,51,94,0,27,91,51,52,94,0,27,91,50,51,64,0,27,91,50,52,64,0,27,91,49,75,0,27,91,51,57,59,52,57,109,0,27,91,51,37,112,49,37,100,109,0,27,91,52,37,112,49,37,100,109,0,27,91,49,48,109,0,1,0,0,0,2,0,5,0,25,0,0,0,0,0,6,0,0,0,3,0,6,0,27,91,48,32,113,0,27,91,37,112,49,37,100,32,113,0,65,88,0,83,101,0,83,115,0 +}; + // xterm-256color|xterm with 256 colors, // auto_right_margin, // back_color_erase, 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 From fad7a26bc52dd4b96dfb063707dbe9ae91fdbf1e Mon Sep 17 00:00:00 2001 From: erw7 Date: Sun, 21 Oct 2018 11:25:53 +0900 Subject: [PATCH 03/10] win/TUI: ConEmu: set immediate_wrap_after_last_column #9094 --- src/nvim/tui/tui.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 54e7d7a4b7..6818d9a706 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -296,9 +296,10 @@ static void terminfo_start(UI *ui) !!unibi_get_str(data->ut, unibi_set_left_margin_parm) && !!unibi_get_str(data->ut, unibi_set_right_margin_parm); data->immediate_wrap_after_last_column = - terminfo_is_term_family(term, "cygwin") + conemu_ansi + || terminfo_is_term_family(term, "cygwin") || terminfo_is_term_family(term, "win32con") - || terminfo_is_term_family(term, "interix") || conemu_ansi; + || terminfo_is_term_family(term, "interix"); 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); From 4f030ec24e0e148bbb83aedaef7dd629e5fef130 Mon Sep 17 00:00:00 2001 From: erw7 Date: Mon, 5 Nov 2018 19:19:39 +0900 Subject: [PATCH 04/10] win/TUI: Fix scroll on Windows legacy console --- src/nvim/tui/tui.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index 6818d9a706..f444d1ec84 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -98,6 +98,7 @@ typedef struct { bool can_change_scroll_region; bool can_set_lr_margin; bool can_set_left_right_margin; + bool can_scroll; bool immediate_wrap_after_last_column; bool bce; bool mouse_enabled; @@ -295,6 +296,11 @@ static void terminfo_start(UI *ui) data->can_set_left_right_margin = !!unibi_get_str(data->ut, unibi_set_left_margin_parm) && !!unibi_get_str(data->ut, unibi_set_right_margin_parm); + data->can_scroll = + !!unibi_get_str(data->ut, unibi_delete_line) + && !!unibi_get_str(data->ut, unibi_parm_delete_line) + && !!unibi_get_str(data->ut, unibi_insert_line) + && !!unibi_get_str(data->ut, unibi_parm_insert_line); data->immediate_wrap_after_last_column = conemu_ansi || terminfo_is_term_family(term, "cygwin") @@ -1087,11 +1093,12 @@ static void tui_grid_scroll(UI *ui, Integer g, Integer startrow, Integer endrow, ugrid_scroll(grid, top, bot, left, right, (int)rows, &clear_top, &clear_bot); - bool can_scroll = data->scroll_region_is_full_screen - || (data->can_change_scroll_region - && ((left == 0 && right == ui->width - 1) - || data->can_set_lr_margin - || data->can_set_left_right_margin)); + bool can_scroll = data->can_scroll + && (data->scroll_region_is_full_screen + || (data->can_change_scroll_region + && ((left == 0 && right == ui->width - 1) + || data->can_set_lr_margin + || data->can_set_left_right_margin))); if (can_scroll) { // Change terminal scroll region and move cursor to the top From e85b911f026cc0826bb2bd35accc5e1a40546a5b Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 28 Dec 2018 01:46:25 +0100 Subject: [PATCH 05/10] test: win/TUI builtin terminfos --- test/functional/terminal/tui_spec.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/test/functional/terminal/tui_spec.lua b/test/functional/terminal/tui_spec.lua index 1b4441f25f..0b47314be7 100644 --- a/test/functional/terminal/tui_spec.lua +++ b/test/functional/terminal/tui_spec.lua @@ -772,6 +772,13 @@ describe("tui 'term' option", function() end end) + it('builtin terms', function() + -- These non-standard terminfos are always builtin. + assert_term('win32con', 'builtin_win32con') + assert_term('conemu', 'builtin_conemu') + assert_term('vtpcon', 'builtin_vtpcon') + end) + end) -- These tests require `thelpers` because --headless/--embed From 959df5d8a5b2dd586ae4ef2e4ea1cfb64b3a4fb5 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Fri, 28 Dec 2018 15:46:47 +0100 Subject: [PATCH 06/10] update_terminfo.sh: Use printf instead of echo --- scripts/update_terminfo.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh index 87a2adaed5..3e97b4f7e0 100755 --- a/scripts/update_terminfo.sh +++ b/scripts/update_terminfo.sh @@ -76,15 +76,16 @@ EOF for term in $sorted_terms; do path="$(find "$db" -name "$term")" - if [[ -z $path ]]; then - echo "Not found: $term. Skipping." 1>&2 + if [ -z "$path" ]; then + >&2 echo "Not found: $term. Skipping." continue fi - echo + printf '\n' infocmp -L -1 -A "$db" "$term" | sed -e '1d' -e 's#^#// #' | tr '\t' ' ' - echo "static const int8_t ${entries[$term]}[] = {" - echo -n " "; od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ',' - echo "};" + printf 'static const int8_t %s[] = {\n' "${entries[$term]}" + printf ' ' + od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ',' + printf '};\n' done >> "$target" cat >> "$target" < Date: Fri, 28 Dec 2018 15:48:57 +0100 Subject: [PATCH 07/10] update_terminfo.sh: NOLINT data arrays --- scripts/update_terminfo.sh | 4 ++-- src/nvim/tui/terminfo_defs.h | 30 +++++++++++++++--------------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/scripts/update_terminfo.sh b/scripts/update_terminfo.sh index 3e97b4f7e0..0cfc230ca6 100755 --- a/scripts/update_terminfo.sh +++ b/scripts/update_terminfo.sh @@ -84,8 +84,8 @@ for term in $sorted_terms; do infocmp -L -1 -A "$db" "$term" | sed -e '1d' -e 's#^#// #' | tr '\t' ' ' printf 'static const int8_t %s[] = {\n' "${entries[$term]}" printf ' ' - od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ',' - printf '};\n' + od -v -t d1 < "$path" | cut -c9- | xargs | tr ' ' ',' | tr -d '\n' + printf ' // NOLINT\n};\n' done >> "$target" cat >> "$target" < Date: Sun, 30 Dec 2018 14:04:16 +0100 Subject: [PATCH 08/10] refactor: Extract os_tty_guess_term() - Also remove feature-detection of uv_set_vterm_state(): instead, on Windows we always require libuv to have that function. --- CMakeLists.txt | 18 -------------- src/nvim/os/tty.c | 60 ++++++++++++++++++++++++++++++++++++++++++++++ src/nvim/os/tty.h | 7 ++++++ src/nvim/tui/tui.c | 60 ++++------------------------------------------ 4 files changed, 72 insertions(+), 73 deletions(-) create mode 100644 src/nvim/os/tty.c create mode 100644 src/nvim/os/tty.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b03945317..5a8aef2be2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -364,24 +364,6 @@ include_directories("${PROJECT_SOURCE_DIR}/src") find_package(LibUV REQUIRED) include_directories(SYSTEM ${LIBUV_INCLUDE_DIRS}) -if(WIN32) - list(APPEND CMAKE_REQUIRED_INCLUDES "${LIBUV_INCLUDE_DIRS}") - list(APPEND CMAKE_REQUIRED_LIBRARIES "${LIBUV_LIBRARIES}") - check_c_source_compiles(" - #include - - int - main(void) - { - uv_set_vterm_state(UV_UNSUPPORTED); - return 0; - } - " UV_HAS_SET_VTERM_STATE) - if(UV_HAS_SET_VTERM_STATE) - add_definitions(-DNVIM_UV_HAS_SET_VTERM_STATE) - endif() -endif() - find_package(Msgpack 1.0.0 REQUIRED) include_directories(SYSTEM ${MSGPACK_INCLUDE_DIRS}) diff --git a/src/nvim/os/tty.c b/src/nvim/os/tty.c new file mode 100644 index 0000000000..bd5b9b4506 --- /dev/null +++ b/src/nvim/os/tty.c @@ -0,0 +1,60 @@ +// This is an open source non-commercial project. Dear PVS-Studio, please check +// it. PVS-Studio Static Code Analyzer for C, C++ and C#: http://www.viva64.com + +// +// Terminal/console utils +// + +#include "nvim/os/os.h" + +#ifdef INCLUDE_GENERATED_DECLARATIONS +# include "os/tty.c.generated.h" +#endif + +#ifdef WIN32 +# if !defined(ENABLE_VIRTUAL_TERMINAL_PROCESSING) +# define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 +# endif +/// Guesses the terminal-type. Calls SetConsoleMode() and uv_set_vterm_state() +/// if appropriate. +/// +/// @param[in,out] term Name of the guessed terminal, statically-allocated +/// @param out_fd stdout file descriptor +void os_tty_guess_term(const char **term, int out_fd) +{ + bool winpty = (os_getenv("NVIM") != NULL); + + if (winpty) { + // Force TERM=win32con when running in winpty. + *term = "win32con"; + uv_set_vterm_state(UV_UNSUPPORTED); + return; + } + + bool conemu_ansi = strequal(os_getenv("ConEmuANSI"), "ON"); + bool vtp = false; + + HANDLE handle = (HANDLE)_get_osfhandle(out_fd); + DWORD dwMode; + if (handle != INVALID_HANDLE_VALUE && GetConsoleMode(handle, &dwMode)) { + dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; + if (SetConsoleMode(handle, dwMode)) { + vtp = true; + } + } + + if (*term == NULL) { + if (vtp) { + *term = "vtpcon"; + } else if (conemu_ansi) { + *term = "conemu"; + } else { + *term = "win32con"; + } + } + + if (conemu_ansi) { + uv_set_vterm_state(UV_SUPPORTED); + } +} +#endif diff --git a/src/nvim/os/tty.h b/src/nvim/os/tty.h new file mode 100644 index 0000000000..d771e63768 --- /dev/null +++ b/src/nvim/os/tty.h @@ -0,0 +1,7 @@ +#ifndef NVIM_OS_TTY_H +#define NVIM_OS_TTY_H + +#ifdef INCLUDE_GENERATED_DECLARATIONS +# include "os/tty.h.generated.h" +#endif +#endif // NVIM_OS_TTY_H diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index c73de1049c..ce05ee6846 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -31,6 +31,7 @@ #include "nvim/event/signal.h" #include "nvim/os/input.h" #include "nvim/os/os.h" +#include "nvim/os/tty.h" #include "nvim/strings.h" #include "nvim/syntax.h" #include "nvim/ui_bridge.h" @@ -63,10 +64,6 @@ #define UNIBI_SET_NUM_VAR(var, num) (var).i = (num); #endif -#if defined(WIN32) && !defined(ENABLE_VIRTUAL_TERMINAL_PROCESSING) -# define ENABLE_VIRTUAL_TERMINAL_PROCESSING 0x0004 -#endif - typedef struct { int top, bot, left, right; } Rect; @@ -216,60 +213,13 @@ static void terminfo_start(UI *ui) data->out_fd = 1; data->out_isatty = os_isatty(data->out_fd); - // Set up unibilium/terminfo. const char *term = os_getenv("TERM"); - bool conemu_ansi = false; #ifdef WIN32 - bool winpty = false; - bool vtp = false; - const char *env = os_getenv("VIM_TERMINAL"); - if (env) { - winpty = true; - } - // If we change to set environment variable in terminal of nvim, - // add condition here - - if (!winpty) { -# ifdef NVIM_UV_HAS_SET_VTERM_STATE - env = os_getenv("ConEmuANSI"); - if (env && !STRCMP(env, "ON")) { - conemu_ansi = true; - } -# endif - - HANDLE handle = (HANDLE)_get_osfhandle(data->out_fd); - DWORD dwMode; - if (handle != INVALID_HANDLE_VALUE && GetConsoleMode(handle, &dwMode)) { - dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING; - if (SetConsoleMode(handle, dwMode)) { - vtp = true; - } - } - } else { - // If it is running under winpty ignore the TERM environment variable and - // force it to be win32con. - term = "win32con"; - } - - if (term == NULL) { - if (vtp) { - term = "vtpcon"; - } else if (conemu_ansi) { - term = "conemu"; - } else { - term = "win32con"; - } - } - + os_tty_guess_term(&term, data->out_fd); os_setenv("TERM", term, 1); -# ifdef NVIM_UV_HAS_SET_VTERM_STATE - if (conemu_ansi) { - uv_set_vterm_state(UV_SUPPORTED); - } else if (winpty) { - uv_set_vterm_state(UV_UNSUPPORTED); - } -# endif #endif + + // Set up unibilium/terminfo. data->ut = unibi_from_env(); char *termname = NULL; if (!term || !data->ut) { @@ -310,7 +260,7 @@ static void terminfo_start(UI *ui) && !!unibi_get_str(data->ut, unibi_parm_insert_line); data->can_erase_chars = !!unibi_get_str(data->ut, unibi_erase_chars); data->immediate_wrap_after_last_column = - conemu_ansi + terminfo_is_term_family(term, "conemu") || terminfo_is_term_family(term, "cygwin") || terminfo_is_term_family(term, "win32con") || terminfo_is_term_family(term, "interix"); From 9ca836f893ba529728b549b1b922909f8696e3b2 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 30 Dec 2018 14:05:17 +0100 Subject: [PATCH 09/10] cleanup: Remove os_term_is_nice() --- src/nvim/option.c | 7 ------- src/nvim/os/env.c | 25 ------------------------- 2 files changed, 32 deletions(-) diff --git a/src/nvim/option.c b/src/nvim/option.c index 11f3df7cfa..8c692f9f42 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -955,13 +955,6 @@ void set_init_2(bool headless) p_window = Rows - 1; } set_number_default("window", Rows - 1); -#if 0 - // This bodges around problems that should be fixed in the TUI layer. - if (!headless && !os_term_is_nice()) { - set_string_option_direct((char_u *)"guicursor", -1, (char_u *)"", - OPT_GLOBAL, SID_NONE); - } -#endif parse_shape_opt(SHAPE_CURSOR); // set cursor shapes from 'guicursor' (void)parse_printoptions(); // parse 'printoptions' default value } diff --git a/src/nvim/os/env.c b/src/nvim/os/env.c index 2f90d0bc9e..fe01787f9e 100644 --- a/src/nvim/os/env.c +++ b/src/nvim/os/env.c @@ -945,31 +945,6 @@ bool os_setenv_append_path(const char *fname) return false; } -/// Returns true if the terminal can be assumed to silently ignore unknown -/// control codes. -bool os_term_is_nice(void) -{ -#if defined(__APPLE__) || defined(WIN32) - return true; -#else - const char *vte_version = os_getenv("VTE_VERSION"); - if ((vte_version && atoi(vte_version) >= 3900) - || os_getenv("KONSOLE_PROFILE_NAME") - || os_getenv("KONSOLE_DBUS_SESSION")) { - return true; - } - const char *termprg = os_getenv("TERM_PROGRAM"); - if (termprg && striequal(termprg, "iTerm.app")) { - return true; - } - const char *term = os_getenv("TERM"); - if (term && strncmp(term, "rxvt", 4) == 0) { - return true; - } - return false; -#endif -} - /// Returns true if `sh` looks like it resolves to "cmd.exe". bool os_shell_is_cmdexe(const char *sh) FUNC_ATTR_NONNULL_ALL From 5749ecaf228f4a963a4e96ada831f902c73a1e80 Mon Sep 17 00:00:00 2001 From: "Justin M. Keyes" Date: Sun, 30 Dec 2018 20:20:37 +0100 Subject: [PATCH 10/10] win/TUI: ConEmu: get back_color_erase from terminfo We already set back_color_erase in our builtin terminfo (terminfo_defs.h:conemu_terminfo), so we don't need to set it explicitly in patch_terminfo_bugs(). --- src/nvim/tui/tui.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c index ce05ee6846..426605b785 100644 --- a/src/nvim/tui/tui.c +++ b/src/nvim/tui/tui.c @@ -1515,7 +1515,6 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, && strstr(colorterm, "mate-terminal"); bool true_xterm = xterm && !!xterm_version && !bsdvt; 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) { @@ -1555,10 +1554,6 @@ 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 @@ -1630,6 +1625,7 @@ static void patch_terminfo_bugs(TUIData *data, const char *term, } else if (st) { // No bugs in the vanilla terminfo for our purposes. } + // At this time (2017-07-12) it seems like all terminals that support 256 // color codes can use semicolons in the terminal code and be fine. // However, this is not correct according to the spec. So to reward those