# HG changeset patch # User Christian Brabandt # Date 1534870806 -7200 # Node ID b6b2f7d69c7ffb5de754ecf3651f884adfdc3b8f # Parent 304b849109ac773e2531507924ee1b8ba5714b2e 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 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) diff --git a/src/buffer.c b/src/buffer.c --- 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 --- 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 --- 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 --- 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,