ex_getln: don't redraw statusline on top of scrolled messages

This commit is contained in:
Björn Linse 2018-05-31 16:12:00 +02:00
parent 39a03c0fe7
commit 1efe65a155
2 changed files with 84 additions and 19 deletions

View File

@ -349,7 +349,7 @@ static uint8_t *command_line_enter(int firstc, long count, int indent)
// redraw the statusline for statuslines that display the current mode // redraw the statusline for statuslines that display the current mode
// using the mode() function. // using the mode() function.
if (KeyTyped) { if (KeyTyped && msg_scrolled == 0) {
curwin->w_redr_status = true; curwin->w_redr_status = true;
redraw_statuslines(); redraw_statuslines();
} }

View File

@ -22,6 +22,8 @@ describe('external cmdline', function()
[1] = {bold = true, foreground = Screen.colors.Blue1}, [1] = {bold = true, foreground = Screen.colors.Blue1},
[2] = {reverse = true}, [2] = {reverse = true},
[3] = {bold = true, reverse = true}, [3] = {bold = true, reverse = true},
[4] = {foreground = Screen.colors.Grey100, background = Screen.colors.Red},
[5] = {bold = true, foreground = Screen.colors.SeaGreen4},
}) })
screen:set_on_event_handler(function(name, data) screen:set_on_event_handler(function(name, data)
if name == "cmdline_show" then if name == "cmdline_show" then
@ -157,24 +159,87 @@ describe('external cmdline', function()
end) end)
end) end)
it("redraws statusline on entering", function() describe("redraws statusline on entering", function()
command('set laststatus=2') before_each(function()
command('set statusline=%{mode()}') command('set laststatus=2')
feed(':') command('set statusline=%{mode()}')
screen:expect([[ end)
|
{1:~ }| it('from normal mode', function()
{1:~ }| feed(':')
{3:c^ }| screen:expect([[
| |
]], nil, nil, function() {1:~ }|
eq({{ {1:~ }|
content = { { {}, "" } }, {3:c^ }|
firstc = ":", |
indent = 0, ]], nil, nil, function()
pos = 0, eq({{
prompt = "" content = { { {}, "" } },
}}, cmdline) firstc = ":",
indent = 0,
pos = 0,
prompt = ""
}}, cmdline)
end)
end)
it('but not with scrolled messages', function()
screen:try_resize(50,10)
feed(':echoerr doesnotexist<cr>')
screen:expect([[
|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{3: }|
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{5:Press ENTER or type command to continue}^ |
]])
feed(':echoerr doesnotexist<cr>')
screen:expect([[
|
{1:~ }|
{1:~ }|
{1:~ }|
{3: }|
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{5:Press ENTER or type command to continue}^ |
]])
feed(':echoerr doesnotexist<cr>')
screen:expect([[
|
{1:~ }|
{3: }|
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{4:E121: Undefined variable: doesnotexist} |
{4:E15: Invalid expression: doesnotexist} |
{5:Press ENTER or type command to continue}^ |
]])
feed('<cr>')
screen:expect([[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{3:n }|
|
]])
end) end)
end) end)