diff --git a/src/os_win32.c b/src/os_win32.c index e5351b1ce1..81a31409db 100644 --- a/src/os_win32.c +++ b/src/os_win32.c @@ -3556,13 +3556,16 @@ mch_init_c(void) static void mch_exit_c(int r) { + // Copy flag since stoptermcap() will clear the flag. + int fTermcapMode = g_fTermcapMode; + exiting = TRUE; vtp_exit(); stoptermcap(); - // Switch back to main screen buffer. - if (use_alternate_screen_buffer) + // Switch back to main screen buffer if TermcapMode was not active. + if (!fTermcapMode && use_alternate_screen_buffer) vtp_printf("\033[?1049l"); if (g_fWindInitCalled) @@ -6338,6 +6341,10 @@ termcap_mode_end(void) RestoreConsoleBuffer(cb, p_rs); restore_console_color_rgb(); + // Switch back to main screen buffer. + if (exiting && use_alternate_screen_buffer) + vtp_printf("\033[?1049l"); + if (!USE_WT && (p_rs || exiting)) { /* diff --git a/src/version.c b/src/version.c index 854865f6b0..bff689e653 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 768, /**/ 767, /**/