From 2f0f871159b2cba862fcd41edab65b17da75c422 Mon Sep 17 00:00:00 2001 From: Bram Moolenaar Date: Tue, 21 Aug 2018 18:50:18 +0200 Subject: [PATCH] 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) --- src/buffer.c | 7 +++++++ src/memline.c | 5 ++++- src/testdir/test_options.vim | 21 +++++++++++++++++++++ src/version.c | 2 ++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/buffer.c b/src/buffer.c index 6bcd28b36..2ca131d23 100644 --- 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); diff --git a/src/memline.c b/src/memline.c index fb262acef..fbdd8a372 100644 --- 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; } /* diff --git a/src/testdir/test_options.vim b/src/testdir/test_options.vim index d8f033e03..2d4a97aa1 100644 --- 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 diff --git a/src/version.c b/src/version.c index 8107b44c6..cc6266016 100644 --- a/src/version.c +++ b/src/version.c @@ -794,6 +794,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 310, /**/ 309, /**/ -- 2.40.0