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)
ecdc82e74e

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)
4dc513a22c
This commit is contained in:
zeertzjq 2022-07-26 07:30:33 +08:00 committed by GitHub
parent 3ded2ab55a
commit fe159d23fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 25 additions and 8 deletions

View File

@ -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) {

View File

@ -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

View File

@ -199,11 +199,11 @@ describe('messages', function()
-- Up all the way with 'g'.
feed('g')
screen:expect([[
:%p# |
{2: 1 }1 |
{2: 2 }2 |
{2: 3 }3 |
{2: 4 }4 |
{2: 5 }5 |
{1:-- More --}^ |
]])

View File

@ -144,10 +144,9 @@ describe('TUI', function()
{3:-- TERMINAL --} |
]]}
-- TODO(bfredl): messes up the output (just like vim does).
feed_data('g')
screen:expect{grid=[[
) |
:call ManyErr() |
{8:Error detected while processing function ManyErr:} |
{11:line 2:} |
{10:-- More --}{1: } |
@ -156,7 +155,7 @@ describe('TUI', function()
screen:try_resize(50,10)
screen:expect{grid=[[
) |
:call ManyErr() |
{8:Error detected while processing function ManyErr:} |
{11:line 2:} |
{8:FAIL 0} |

View File

@ -1854,7 +1854,7 @@ aliquip ex ea commodo consequat.]])
feed('k')
screen:expect{grid=[[
{7:0}{8: }{7:)}{8: }|
{7:0}{8: }|
{9:1}{10: }|
{9:2}{10: }|
{9:3}{10: }|
@ -1943,6 +1943,7 @@ aliquip ex ea commodo consequat.]])
-- text is not reflown; existing lines get cut
screen:try_resize(30, 12)
screen:expect{grid=[[
:lua error(_G.x) |
{2:E5108: Error executing lua [st}|
{2:":lua"]:1: Lorem ipsum dolor s}|
{2:et, consectetur} |
@ -1953,12 +1954,27 @@ aliquip ex ea commodo consequat.]])
|
|
|
|
{4:-- More --}^ |
]]}
-- continues in a mostly consistent state, but only new lines are
-- wrapped at the new screen size.
feed('<cr>')
screen:expect{grid=[[
{2:E5108: Error executing lua [st}|
{2:":lua"]:1: Lorem ipsum dolor s}|
{2:et, consectetur} |
{2:adipisicing elit, sed do eiusm}|
{2:mpore} |
{2:incididunt ut labore et dolore}|
{2:a aliqua.} |
{2:Ut enim ad minim veniam, quis }|
{2:nostrud xercitation} |
{2:ullamco laboris nisi ut} |
{2:aliquip ex ea commodo consequa}|
{4:-- More --}^ |
]]}
feed('<cr>')
screen:expect{grid=[[
{2:":lua"]:1: Lorem ipsum dolor s}|