# HG changeset patch # User Bram Moolenaar # Date 1558031407 -7200 # Node ID ca1814eeecf5561fe38c66a0938a8d9a2c956465 # Parent 66ffbbee468cbca35a9b7650fc9aec04381b510a patch 8.1.1334: when buffer is hidden "F" in 'shortmess' is not used commit https://github.com/vim/vim/commit/eda652215abf696f86b872888945a2d2dd8c7192 Author: Bram Moolenaar Date: Thu May 16 20:29:44 2019 +0200 patch 8.1.1334: when buffer is hidden "F" in 'shortmess' is not used Problem: When buffer is hidden "F" in 'shortmess' is not used. Solution: Check the "F" flag in 'shortmess' when the buffer is already loaded. (Jason Franklin) Add test_getvalue() to be able to test this. diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2701,6 +2701,7 @@ test_alloc_fail({id}, {countdown}, {repe test_autochdir() none enable 'autochdir' during startup test_feedinput({string}) none add key sequence to input buffer test_garbagecollect_now() none free memory right now for testing +test_getvalue({string}) any get value of an internal variable test_ignore_error({expr}) none ignore a specific error test_null_blob() Blob null value for testing test_null_channel() Channel null value for testing @@ -9894,6 +9895,11 @@ test_garbagecollect_now() *test_garba internally, and |v:testing| must have been set before calling any function. +test_getvalue({name}) *test_getvalue()* + Get the value of an internal variable. These values for + {name} are supported: + need_fileinfo + test_ignore_error({expr}) *test_ignore_error()* Ignore any error containing {expr}. A normal message is given instead. diff --git a/src/buffer.c b/src/buffer.c --- a/src/buffer.c +++ b/src/buffer.c @@ -1742,9 +1742,12 @@ enter_buffer(buf_T *buf) } else { - if (!msg_silent) - need_fileinfo = TRUE; /* display file info after redraw */ - (void)buf_check_timestamp(curbuf, FALSE); /* check if file changed */ + if (!msg_silent && !shortmess(SHM_FILEINFO)) + need_fileinfo = TRUE; // display file info after redraw + + // check if file changed + (void)buf_check_timestamp(curbuf, FALSE); + curwin->w_topline = 1; #ifdef FEAT_DIFF curwin->w_topfill = 0; diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -442,6 +442,7 @@ static void f_tempname(typval_T *argvars static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv); static void f_test_autochdir(typval_T *argvars, typval_T *rettv); static void f_test_feedinput(typval_T *argvars, typval_T *rettv); +static void f_test_getvalue(typval_T *argvars, typval_T *rettv); static void f_test_option_not_set(typval_T *argvars, typval_T *rettv); static void f_test_override(typval_T *argvars, typval_T *rettv); static void f_test_refcount(typval_T *argvars, typval_T *rettv); @@ -991,6 +992,7 @@ static struct fst {"test_autochdir", 0, 0, f_test_autochdir}, {"test_feedinput", 1, 1, f_test_feedinput}, {"test_garbagecollect_now", 0, 0, f_test_garbagecollect_now}, + {"test_getvalue", 1, 1, f_test_getvalue}, {"test_ignore_error", 1, 1, f_test_ignore_error}, {"test_null_blob", 0, 0, f_test_null_blob}, #ifdef FEAT_JOB_CHANNEL @@ -14413,6 +14415,25 @@ f_test_feedinput(typval_T *argvars, typv } /* + * "test_getvalue({name})" function + */ + static void +f_test_getvalue(typval_T *argvars, typval_T *rettv) +{ + if (argvars[0].v_type != VAR_STRING) + emsg(_(e_invarg)); + else + { + char_u *name = tv_get_string(&argvars[0]); + + if (STRCMP(name, (char_u *)"need_fileinfo") == 0) + rettv->vval.v_number = need_fileinfo; + else + semsg(_(e_invarg2), name); + } +} + +/* * "test_option_not_set({name})" function */ static void 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 @@ -470,13 +470,19 @@ func Test_shortmess_F2() call assert_match('file2', execute('bn', '')) set shortmess+=F call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) set hidden call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) set nohidden call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) call assert_true(empty(execute('bn', ''))) + call assert_false(test_getvalue('need_fileinfo')) set shortmess& call assert_match('file1', execute('bn', '')) call assert_match('file2', execute('bn', '')) diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1334, +/**/ 1333, /**/ 1332,