]> granicus.if.org Git - vim/commitdiff
patch 8.2.4156: fileinfo message overwrites echo'ed message v8.2.4156
authorRob Pilling <robpilling@gmail.com>
Thu, 20 Jan 2022 14:44:38 +0000 (14:44 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 20 Jan 2022 14:44:38 +0000 (14:44 +0000)
Problem:    Fileinfo message overwrites echo'ed message.
Solution:   Reset need_fileinfo when displaying a message. (Rob Pilling,
            closes #9569)

src/message.c
src/testdir/dumps/Test_fileinfo_after_echo.dump [new file with mode: 0644]
src/testdir/test_messages.vim
src/version.c

index 04a51fbf359226d9d39a949bc9f46e9351c065e8..31314d2c7da02d9248c6969b03854d060d471ab1 100644 (file)
@@ -181,6 +181,8 @@ msg_attr_keep(
                            < (int)(Rows - cmdline_row - 1) * Columns + sc_col)
        set_keep_msg((char_u *)s, 0);
 
+    need_fileinfo = FALSE;
+
     vim_free(buf);
     --entered;
     return retval;
@@ -1420,7 +1422,10 @@ msg_start(void)
     int                did_return = FALSE;
 
     if (!msg_silent)
+    {
        VIM_CLEAR(keep_msg);
+       need_fileinfo = FALSE;
+    }
 
 #ifdef FEAT_EVAL
     if (need_clr_eos)
@@ -2163,6 +2168,8 @@ msg_puts_attr_len(char *str, int maxlen, int attr)
        msg_puts_printf((char_u *)str, maxlen);
     else
        msg_puts_display((char_u *)str, maxlen, attr, FALSE);
+
+    need_fileinfo = FALSE;
 }
 
 /*
diff --git a/src/testdir/dumps/Test_fileinfo_after_echo.dump b/src/testdir/dumps/Test_fileinfo_after_echo.dump
new file mode 100644 (file)
index 0000000..787dced
--- /dev/null
@@ -0,0 +1,6 @@
+>h+0&#ffffff0|i| @72
+|~+0#4040ff13&| @73
+|~| @73
+|~| @73
+|~| @73
+|'+0#0000000&|b|'| |w|r|i|t@1|e|n| @45|1|,|1| @10|A|l@1| 
index 62b5b2910e637071866c315d78d4f91a3d859cc2..1ba92ff5f202c1128522325dd92cfe155d7c155e 100644 (file)
@@ -344,4 +344,35 @@ func Test_echo_string_partial()
   call assert_equal("function('CountSpaces', [{'ccccccccccc': ['ab', 'cd'], 'aaaaaaaaaaa': v:false, 'bbbbbbbbbbbb': ''}])", string(function('CountSpaces', [#{aaaaaaaaaaa: v:false, bbbbbbbbbbbb: '', ccccccccccc: ['ab', 'cd']}])))
 endfunc
 
+" Message output was previously overwritten by the fileinfo display, shown
+" when switching buffers. If a buffer is switched to, then a message if
+" echoed, we should show the message, rather than overwriting it with
+" fileinfo.
+func Test_fileinfo_after_echo()
+  CheckScreendump
+
+  let content =<< trim END
+    file a.txt
+
+    hide edit b.txt
+    call setline(1, "hi")
+    setlocal modified
+
+    hide buffer a.txt
+
+    set updatetime=1
+    autocmd CursorHold * b b.txt | w | echo "'b' written"
+  END
+
+  call writefile(content, 'Xtest_fileinfo_after_echo')
+  let buf = RunVimInTerminal('-S Xtest_fileinfo_after_echo', #{rows: 6})
+  call VerifyScreenDump(buf, 'Test_fileinfo_after_echo', {})
+
+  call term_sendkeys(buf, ":q\<CR>")
+
+  " clean up
+  call StopVimInTerminal(buf)
+  call delete('Xtest_fileinfo_after_echo')
+endfunc
+
 " vim: shiftwidth=2 sts=2 expandtab
index 6cccadfd2a211296504399918b25986339a410de..6eb853f45c0287487e3f75ab25fd4f9c2e428c8c 100644 (file)
@@ -750,6 +750,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    4156,
 /**/
     4155,
 /**/