diff --git a/src/globals.h b/src/globals.h
index 6f4144a..e3a2c3b 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -90,12 +90,13 @@
  */
 EXTERN int	cmdline_row;
 
-EXTERN int	redraw_cmdline INIT(= FALSE);	/* cmdline must be redrawn */
-EXTERN int	clear_cmdline INIT(= FALSE);	/* cmdline must be cleared */
-EXTERN int	mode_displayed INIT(= FALSE);	/* mode is being displayed */
-EXTERN int	no_win_do_lines_ins INIT(= FALSE); /* don't insert lines */
+EXTERN int	redraw_cmdline INIT(= FALSE);	// cmdline must be redrawn
+EXTERN int	redraw_mode INIT(= FALSE);	// mode must be redrawn
+EXTERN int	clear_cmdline INIT(= FALSE);	// cmdline must be cleared
+EXTERN int	mode_displayed INIT(= FALSE);	// mode is being displayed
+EXTERN int	no_win_do_lines_ins INIT(= FALSE); // don't insert lines
 #if defined(FEAT_CRYPT) || defined(FEAT_EVAL)
-EXTERN int	cmdline_star INIT(= FALSE);	/* cmdline is crypted */
+EXTERN int	cmdline_star INIT(= FALSE);	// cmdline is crypted
 #endif
 
 EXTERN int	exec_from_reg INIT(= FALSE);	/* executing register */
diff --git a/src/screen.c b/src/screen.c
index 1c21b74..67a0db9 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -790,7 +790,7 @@
 
     /* Clear or redraw the command line.  Done last, because scrolling may
      * mess up the command line. */
-    if (clear_cmdline || redraw_cmdline)
+    if (clear_cmdline || redraw_cmdline || redraw_mode)
 	showmode();
 
     if (no_update)
@@ -857,7 +857,7 @@
     static void
 update_finish(void)
 {
-    if (redraw_cmdline)
+    if (redraw_cmdline || redraw_mode)
 	showmode();
 
 # ifdef FEAT_SEARCH_EXTRA
@@ -10128,7 +10128,7 @@
 	    || !redrawing()
 	    || (char_avail() && !KeyTyped))
     {
-	redraw_cmdline = TRUE;		// show mode later
+	redraw_mode = TRUE;		// show mode later
 	return TRUE;
     }
     return FALSE;
@@ -10140,6 +10140,7 @@
  * If clear_cmdline is TRUE, clear the rest of the cmdline.
  * If clear_cmdline is FALSE there may be a message there that needs to be
  * cleared only if a mode is shown.
+ * If redraw_mode is TRUE show or clear the mode.
  * Return the length of the message (0 if no message).
  */
     int
@@ -10313,7 +10314,7 @@
 	}
 
 	mode_displayed = TRUE;
-	if (need_clear || clear_cmdline)
+	if (need_clear || clear_cmdline || redraw_mode)
 	    msg_clr_eos();
 	msg_didout = FALSE;		/* overwrite this message */
 	length = msg_col;
@@ -10323,6 +10324,11 @@
     else if (clear_cmdline && msg_silent == 0)
 	/* Clear the whole command line.  Will reset "clear_cmdline". */
 	msg_clr_cmdline();
+    else if (redraw_mode)
+    {
+	msg_pos_mode();
+	msg_clr_eos();
+    }
 
 #ifdef FEAT_CMDL_INFO
     /* In Visual mode the size of the selected area must be redrawn. */
@@ -10335,6 +10341,7 @@
 	win_redr_ruler(lastwin, TRUE, FALSE);
 #endif
     redraw_cmdline = FALSE;
+    redraw_mode = FALSE;
     clear_cmdline = FALSE;
 
     return length;
diff --git a/src/testdir/test_messages.vim b/src/testdir/test_messages.vim
index 2d1d6d9..5708183 100644
--- a/src/testdir/test_messages.vim
+++ b/src/testdir/test_messages.vim
@@ -125,3 +125,31 @@
   exe buf . 'bwipe!'
   call delete(testfile)
 endfunc
+
+func Test_mode_message_at_leaving_insert_with_esc_mapped()
+  if !has('terminal') || has('gui_running')
+    return
+  endif
+
+  " Set custom statusline built by user-defined function.
+  let testfile = 'Xtest.vim'
+  call writefile([
+        \ 'set laststatus=2',
+        \ 'inoremap <Esc> <Esc>00',
+        \ ], testfile)
+
+  let rows = 10
+  let buf = term_start([GetVimProg(), '--clean', '-S', testfile], {'term_rows': rows})
+  call term_wait(buf, 200)
+  call assert_equal('run', job_status(term_getjob(buf)))
+
+  call term_sendkeys(buf, "i")
+  call WaitForAssert({-> assert_match('^-- INSERT --\s*$', term_getline(buf, rows))})
+  call term_sendkeys(buf, "\<Esc>")
+  call WaitForAssert({-> assert_match('^\s*$', term_getline(buf, rows))})
+
+  call term_sendkeys(buf, ":qall!\<CR>")
+  call WaitForAssert({-> assert_equal('dead', job_status(term_getjob(buf)))})
+  exe buf . 'bwipe!'
+  call delete(testfile)
+endfunc
diff --git a/src/version.c b/src/version.c
index 7fc39ae..2448efd 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1192,
+/**/
     1191,
 /**/
     1190,
