From fe159d23fdcc0e93d454bdfdb80e05e2941d7f07 Mon Sep 17 00:00:00 2001 From: zeertzjq Date: Tue, 26 Jul 2022 07:30:33 +0800 Subject: vim-patch:9.0.0071: command overlaps with printed text in scrollback (#19505) Problem: Command overlaps with printed text in scrollback. Solution: Clear until end-of-line and use correct message chunk. (closes vim/vim#10765, closes vim/vim#10764) https://github.com/vim/vim/commit/ecdc82e74e6a7e73d9067ece1d5eac33abfde5ed N/A patches for version.c: vim-patch:9.0.0070: using utfc_ptr2char_len() when length is negative Problem: Using utfc_ptr2char_len() when length is negative. Solution: Check value of length. (closes vim/vim#10760) https://github.com/vim/vim/commit/4dc513a22c017b3061287deac74fa55f70a3214c --- src/nvim/message.c | 3 ++- src/nvim/testdir/test_messages.vim | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/nvim/message.c b/src/nvim/message.c index 2c96613bb3..3a6c690ff6 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -2548,6 +2548,7 @@ void sb_text_start_cmdline(void) void sb_text_end_cmdline(void) { do_clear_sb_text = SB_CLEAR_CMDLINE_DONE; + msg_sb_eol(); } /// Clear any text remembered for scrolling back. @@ -2564,7 +2565,7 @@ void clear_sb_text(int all) if (last_msgchunk == NULL) { return; } - lastp = &last_msgchunk->sb_prev; + lastp = &msg_sb_start(last_msgchunk)->sb_prev; } while (*lastp != NULL) { diff --git a/src/nvim/testdir/test_messages.vim b/src/nvim/testdir/test_messages.vim index 5670368936..4be5a1b076 100644 --- a/src/nvim/testdir/test_messages.vim +++ b/src/nvim/testdir/test_messages.vim @@ -175,7 +175,8 @@ func Test_message_more() " Up all the way with 'g'. call term_sendkeys(buf, 'g') - call WaitForAssert({-> assert_equal(' 5 5', term_getline(buf, 5))}) + call WaitForAssert({-> assert_equal(' 4 4', term_getline(buf, 5))}) + call WaitForAssert({-> assert_equal(':%p#', term_getline(buf, 1))}) call WaitForAssert({-> assert_equal('-- More --', term_getline(buf, 6))}) " All the way down. Pressing f should do nothing but pressing -- cgit