patch 9.1.0158: 'shortmess' "F" flag doesn't work properly with 'autoread'

Problem:  'shortmess' "F" flag doesn't work properly with 'autoread'
          (after 9.1.0154)
Solution: Hide the file info message instead of the warning dialog
          (zeertzjq)

closes: #14159
closes: #14158

Signed-off-by: zeertzjq <zeertzjq@outlook.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/fileio.c b/src/fileio.c
index 344c819..ad09c5a 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -4294,7 +4294,7 @@
 #endif
     }
 
-    if (mesg != NULL && !shortmess(SHM_FILEINFO))
+    if (mesg != NULL)
     {
 	path = home_replace_save(buf, buf->b_fname);
 	if (path != NULL)
@@ -4489,8 +4489,14 @@
 
 	if (saved == OK)
 	{
+	    int old_msg_silent = msg_silent;
+
 	    curbuf->b_flags |= BF_CHECK_RO;	// check for RO again
 	    keep_filetype = TRUE;		// don't detect 'filetype'
+
+	    if (shortmess(SHM_FILEINFO))
+		msg_silent = 1;
+
 	    if (readfile(buf->b_ffname, buf->b_fname, (linenr_T)0,
 			(linenr_T)0,
 			(linenr_T)MAXLNUM, &ea, flags) != OK)
@@ -4521,6 +4527,8 @@
 		    u_unchanged(curbuf);
 		}
 	    }
+
+	    msg_silent = old_msg_silent;
 	}
 	vim_free(ea.cmd);
 
diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim
index fa65f5c..fbfbaae 100644
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -1294,23 +1294,41 @@
 endfunc
 
 func Test_shortmess_F3()
-  defer delete('X_dummy')
+  call writefile(['foo'], 'X_dummy', 'D')
 
   set hidden
   set autoread
   e X_dummy
-  e file
-
+  e Xotherfile
+  call assert_equal(['foo'], getbufline('X_dummy', 1, '$'))
   set shortmess+=F
-  call writefile(["foo"], 'X_dummy')
-  call assert_true(empty(execute('bn', '')))
-  call assert_true(empty(execute('bn', '')))
+  echo ''
+
+  if has('nanotime')
+    sleep 10m
+  else
+    sleep 2
+  endif
+  call writefile(['bar'], 'X_dummy')
+  bprev
+  call assert_equal('', Screenline(&lines))
+  call assert_equal(['bar'], getbufline('X_dummy', 1, '$'))
+
+  if has('nanotime')
+    sleep 10m
+  else
+    sleep 2
+  endif
+  call writefile(['baz'], 'X_dummy')
+  checktime
+  call assert_equal('', Screenline(&lines))
+  call assert_equal(['baz'], getbufline('X_dummy', 1, '$'))
 
   set shortmess&
   set autoread&
   set hidden&
-  bwipe
-  bwipe
+  bwipe X_dummy
+  bwipe Xotherfile
 endfunc
 
 func Test_local_scrolloff()
diff --git a/src/version.c b/src/version.c
index 86537c4..8a1bb16 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    158,
+/**/
     157,
 /**/
     156,