changeset 14593:b6b2f7d69c7f v8.1.0310

patch 8.1.0310: file info msg not always suppressed with 'F' in 'shortmess' commit https://github.com/vim/vim/commit/2f0f871159b2cba862fcd41edab65b17da75c422 Author: Bram Moolenaar <Bram@vim.org> Date: Tue Aug 21 18:50:18 2018 +0200 patch 8.1.0310: file info msg not always suppressed with 'F' in 'shortmess' Problem: File info message not always suppressed with 'F' in 'shortmess'. (Asheq Imran) Solution: Save and restore msg_silent. (Christian Brabandt, closes #3221)
author Christian Brabandt <cb@256bit.org>
date Tue, 21 Aug 2018 19:00:06 +0200
parents 304b849109ac
children a1480053df74
files src/buffer.c src/memline.c src/testdir/test_options.vim src/version.c
diffstat 4 files changed, 34 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -1035,7 +1035,14 @@ handle_swap_exists(bufref_T *old_curbuf)
 	    buf = old_curbuf->br_buf;
 	if (buf != NULL)
 	{
+	    int old_msg_silent = msg_silent;
+
+	    if (shortmess(SHM_FILEINFO))
+		msg_silent = 1;  // prevent fileinfo message
 	    enter_buffer(buf);
+	    // restore msg_silent, so that the command line will be shown
+	    msg_silent = old_msg_silent;
+
 # ifdef FEAT_SYN_HL
 	    if (old_tw != curbuf->b_p_tw)
 		check_colorcolumn(curwin);
--- a/src/memline.c
+++ b/src/memline.c
@@ -828,10 +828,13 @@ ml_open_file(buf_T *buf)
  */
     void
 check_need_swap(
-    int	    newfile)		/* reading file into new buffer */
+    int	    newfile)		// reading file into new buffer
 {
+    int old_msg_silent = msg_silent; // might be reset by an E325 message
+
     if (curbuf->b_may_swap && (!curbuf->b_p_ro || !newfile))
 	ml_open_file(curbuf);
+    msg_silent = old_msg_silent;
 }
 
 /*
--- a/src/testdir/test_options.vim
+++ b/src/testdir/test_options.vim
@@ -414,3 +414,24 @@ func Test_shortmess_F()
   set shortmess&
   bwipe
 endfunc
+
+func Test_shortmess_F2()
+  e file1
+  e file2
+  call assert_match('file1', execute('bn', ''))
+  call assert_match('file2', execute('bn', ''))
+  set shortmess+=F
+  call assert_true(empty(execute('bn', '')))
+  call assert_true(empty(execute('bn', '')))
+  set hidden
+  call assert_true(empty(execute('bn', '')))
+  call assert_true(empty(execute('bn', '')))
+  set nohidden
+  call assert_true(empty(execute('bn', '')))
+  call assert_true(empty(execute('bn', '')))
+  set shortmess&
+  call assert_match('file1', execute('bn', ''))
+  call assert_match('file2', execute('bn', ''))
+  bwipe
+  bwipe
+endfunc
--- a/src/version.c
+++ b/src/version.c
@@ -795,6 +795,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    310,
+/**/
     309,
 /**/
     308,