summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-08-21 18:50:18 +0200
committerBram Moolenaar <Bram@vim.org>2018-08-21 18:50:18 +0200
commit2f0f871159b2cba862fcd41edab65b17da75c422 (patch)
treed8dbf0ef961c3f56a0b3ed74b16cee56e99821d2
parent7feb35e7782907b44659a2748ff5d7489deeed74 (diff)
patch 8.1.0310: file info msg not always suppressed with 'F' in 'shortmess'v8.1.0310
Problem: File info message not always suppressed with 'F' in 'shortmess'. (Asheq Imran) Solution: Save and restore msg_silent. (Christian Brabandt, closes #3221)
-rw-r--r--src/buffer.c7
-rw-r--r--src/memline.c5
-rw-r--r--src/testdir/test_options.vim21
-rw-r--r--src/version.c2
4 files changed, 34 insertions, 1 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 6bcd28b36c..2ca131d23e 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 fb262acef5..fbdd8a372c 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 d8f033e03f..2d4a97aa18 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 8107b44c6e..cc62660160 100644
--- 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,