To: vim_dev@googlegroups.com Subject: Patch 9.0.1086 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 9.0.1086 Problem: Display wrong in Windows terminal after exiting Vim. Solution: Apply screen restore fix for Windows 11 also to Windows 10 builds. (Christopher Plewright, closes #11713, closes #11706) Files: src/os_win32.c *** ../vim-9.0.1085/src/os_win32.c 2022-12-20 20:47:23.820385483 +0000 --- src/os_win32.c 2022-12-22 13:37:38.296270237 +0000 *************** *** 256,262 **** static char_u *exe_path = NULL; static BOOL win8_or_later = FALSE; ! static BOOL win11_or_later = FALSE; /* * Get version number including build number --- 256,263 ---- static char_u *exe_path = NULL; static BOOL win8_or_later = FALSE; ! static BOOL win10_22H2_or_later = FALSE; ! static BOOL use_alternate_screen_buffer = FALSE; /* * Get version number including build number *************** *** 919,927 **** || ovi.dwMajorVersion > 6) win8_or_later = TRUE; ! if ((ovi.dwMajorVersion == 10 && ovi.dwBuildNumber >= 22000) || ovi.dwMajorVersion > 10) ! win11_or_later = TRUE; #ifdef HAVE_ACL // Enable privilege for getting or setting SACLs. --- 920,928 ---- || ovi.dwMajorVersion > 6) win8_or_later = TRUE; ! if ((ovi.dwMajorVersion == 10 && ovi.dwBuildNumber >= 19045) || ovi.dwMajorVersion > 10) ! win10_22H2_or_later = TRUE; #ifdef HAVE_ACL // Enable privilege for getting or setting SACLs. *************** *** 3040,3046 **** // VTP uses alternate screen buffer. // No need to save buffer contents for restoration. ! if (win11_or_later && vtp_working) return TRUE; /* --- 3041,3047 ---- // VTP uses alternate screen buffer. // No need to save buffer contents for restoration. ! if (use_alternate_screen_buffer) return TRUE; /* *************** *** 3138,3144 **** // VTP uses alternate screen buffer. // No need to restore buffer contents. ! if (win11_or_later && vtp_working) return TRUE; if (cb == NULL || !cb->IsValid) --- 3139,3145 ---- // VTP uses alternate screen buffer. // No need to restore buffer contents. ! if (use_alternate_screen_buffer) return TRUE; if (cb == NULL || !cb->IsValid) *************** *** 6106,6112 **** // VTP uses alternate screen buffer. // Switch to a new alternate screen buffer. ! if (win11_or_later && p_rs && vtp_working) vtp_printf("\033[?1049h"); SaveConsoleBuffer(&g_cbNonTermcap); --- 6107,6114 ---- // VTP uses alternate screen buffer. // Switch to a new alternate screen buffer. ! // But, not if running in a nested terminal ! if (use_alternate_screen_buffer) vtp_printf("\033[?1049h"); SaveConsoleBuffer(&g_cbNonTermcap); *************** *** 6189,6195 **** // VTP uses alternate screen buffer. // Switch back to main screen buffer. ! if (exiting && win11_or_later && p_rs && vtp_working) vtp_printf("\033[?1049l"); if (!USE_WT && (p_rs || exiting)) --- 6191,6197 ---- // VTP uses alternate screen buffer. // Switch back to main screen buffer. ! if (exiting && use_alternate_screen_buffer) vtp_printf("\033[?1049l"); if (!USE_WT && (p_rs || exiting)) *************** *** 8392,8398 **** default_console_color_fg = fg; } # endif ! set_console_color_rgb(); } --- 8394,8401 ---- default_console_color_fg = fg; } # endif ! use_alternate_screen_buffer = win10_22H2_or_later && p_rs && vtp_working ! && !mch_getenv("VIM_TERMINAL"); set_console_color_rgb(); } *** ../vim-9.0.1085/src/version.c 2022-12-20 20:47:23.820385483 +0000 --- src/version.c 2022-12-22 13:42:17.955851316 +0000 *************** *** 697,698 **** --- 697,700 ---- { /* Add new patch number below this line */ + /**/ + 1086, /**/