diff --git a/src/nvim/message.c b/src/nvim/message.c index f48bad2425..ff384b3d7a 100644 --- a/src/nvim/message.c +++ b/src/nvim/message.c @@ -1724,7 +1724,11 @@ void msg_start(void) msg_row = cmdline_row; msg_col = 0; } else if ((msg_didout || p_ch == 0) && !ui_has(kUIMessages)) { // start message on next line - msg_putchar('\n'); + if (p_ch == 0 && !msg_didout && msg_use_printf()) { + msg_puts_display("\n", 1, 0, false); + } else { + msg_putchar('\n'); + } did_return = true; cmdline_row = msg_row; } diff --git a/test/functional/ui/cmdline_spec.lua b/test/functional/ui/cmdline_spec.lua index 0a9d3e948d..fca5c968dd 100644 --- a/test/functional/ui/cmdline_spec.lua +++ b/test/functional/ui/cmdline_spec.lua @@ -1700,4 +1700,11 @@ describe('cmdheight=0', function() {3:[No Name] }| ]]) end) + + it('no spurious newline before first message in headless mode', function() + local p = n.spawn_wait({ + args = { '--cmd', 'set cmdheight=0', '-c', 'echo 1', '+q' }, + }) + eq('1', p.stderr) + end) end)