aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/api/vim.c4
-rw-r--r--src/nvim/ex_cmds.c4
-rw-r--r--src/nvim/lua/executor.c4
-rw-r--r--test/functional/ui/messages_spec.lua47
4 files changed, 56 insertions, 3 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index ce3eca52b5..6ce1f41e39 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -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) { \
diff --git a/src/nvim/ex_cmds.c b/src/nvim/ex_cmds.c
index e9a42ae508..5ec4353e1d 100644
--- a/src/nvim/ex_cmds.c
+++ b/src/nvim/ex_cmds.c
@@ -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;
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index d6fd14cc10..3975312703 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -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);
diff --git a/test/functional/ui/messages_spec.lua b/test/functional/ui/messages_spec.lua
index ca2bf67220..a5b2474bc5 100644
--- a/test/functional/ui/messages_spec.lua
+++ b/test/functional/ui/messages_spec.lua
@@ -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=[[