# HG changeset patch # User Bram Moolenaar # Date 1601927103 -7200 # Node ID d0dd03c04140abef4e85addea450c6e4df9482d0 # Parent 8e04c4b430d022cdadeddf188cdb42fcbca98b7f patch 8.2.1805: Unix: terminal mode changed when using ":shell" Commit: https://github.com/vim/vim/commit/80361a5f2b134c88597d60b3d363b52084e712a1 Author: Bram Moolenaar Date: Mon Oct 5 21:39:25 2020 +0200 patch 8.2.1805: Unix: terminal mode changed when using ":shell" Problem: Unix: terminal mode changed when using ":shell". Solution: Avoid calling settmode() when not needed. (issue https://github.com/vim/vim/issues/7079) diff --git a/src/os_unix.c b/src/os_unix.c --- a/src/os_unix.c +++ b/src/os_unix.c @@ -585,6 +585,7 @@ mch_total_mem(int special UNUSED) mch_delay(long msec, int flags) { tmode_T old_tmode; + int call_settmode; #ifdef FEAT_MZSCHEME long total = msec; // remember original value #endif @@ -596,10 +597,13 @@ mch_delay(long msec, int flags) // shell may produce SIGQUIT). // Only do this if sleeping for more than half a second. in_mch_delay = TRUE; - old_tmode = mch_cur_tmode; - if (mch_cur_tmode == TMODE_RAW - && (msec > 500 || (flags & MCH_DELAY_SETTMODE))) + call_settmode = mch_cur_tmode == TMODE_RAW + && (msec > 500 || (flags & MCH_DELAY_SETTMODE)); + if (call_settmode) + { + old_tmode = mch_cur_tmode; settmode(TMODE_SLEEP); + } /* * Everybody sleeps in a different way... @@ -653,7 +657,7 @@ mch_delay(long msec, int flags) while (total > 0); #endif - if (msec > 500 || (flags & MCH_DELAY_SETTMODE)) + if (call_settmode) settmode(old_tmode); in_mch_delay = FALSE; } diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -751,6 +751,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1805, +/**/ 1804, /**/ 1803,