Merge pull request #25630 from nwounkn/fix-extra-line

fix(ui): empty line before the next message after :silent command
This commit is contained in:
zeertzjq 2023-10-14 14:55:01 +08:00 committed by GitHub
commit 8ee8112b92
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 3 deletions

View File

@ -1744,7 +1744,9 @@ static void write_msg(String message, bool to_err, bool writeln)
} else { \
msg(line_buf->items, 0); \
} \
msg_didout = true; \
if (msg_silent == 0) { \
msg_didout = true; \
} \
kv_drop(*line_buf, kv_size(*line_buf)); \
kv_resize(*line_buf, LINE_BUFFER_MIN_SIZE); \
} else if (c == NUL) { \

View File

@ -1346,7 +1346,9 @@ void do_shell(char *cmd, int flags)
// 1" command to the terminal.
ui_cursor_goto(msg_row, msg_col);
(void)call_shell(cmd, (ShellOpts)flags, NULL);
msg_didout = true;
if (msg_silent == 0) {
msg_didout = true;
}
did_check_timestamps = false;
need_check_timestamps = true;

View File

@ -955,7 +955,9 @@ static void nlua_print_event(void **argv)
break;
}
msg(str + start, 0);
msg_didout = true; // Make blank lines work properly
if (msg_silent == 0) {
msg_didout = true; // Make blank lines work properly
}
}
if (len && str[len - 1] == NUL) { // Last was newline
msg("", 0);

View File

@ -1061,6 +1061,53 @@ vimComment xxx match /\s"[^\-:.%#=*].*$/ms=s+1,lc=1 excludenl contains=@vim
-- luacheck: pop
end)
it('no empty line after :silent #12099', function()
exec([[
func T1()
silent !echo
echo "message T1"
endfunc
func T2()
silent lua print("lua message")
echo "message T2"
endfunc
func T3()
silent call nvim_out_write("api message\n")
echo "message T3"
endfunc
]])
feed(':call T1()<CR>')
screen:expect{grid=[[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
message T1 |
]]}
feed(':call T2()<CR>')
screen:expect{grid=[[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
message T2 |
]]}
feed(':call T3()<CR>')
screen:expect{grid=[[
^ |
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
{1:~ }|
message T3 |
]]}
end)
it('supports ruler with laststatus=0', function()
command("set ruler laststatus=0")
screen:expect{grid=[[