aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2023-07-04 07:19:02 +0800
committerGitHub <noreply@github.com>2023-07-04 07:19:02 +0800
commit92760a7f42a95bb252966c2a38423e5bc9d57cc7 (patch)
tree6dbcee0ac50a90b638f0615aeec6dccfd003ef12
parent35c3275b4896a65d67caf2a4355d7516b6ddec29 (diff)
downloadrneovim-92760a7f42a95bb252966c2a38423e5bc9d57cc7.tar.gz
rneovim-92760a7f42a95bb252966c2a38423e5bc9d57cc7.tar.bz2
rneovim-92760a7f42a95bb252966c2a38423e5bc9d57cc7.zip
fix(api, lua): make blank lines in a message work properly (#24244)
-rw-r--r--src/nvim/api/vim.c1
-rw-r--r--src/nvim/lua/executor.c1
-rw-r--r--test/functional/api/vim_spec.lua38
-rw-r--r--test/functional/lua/overrides_spec.lua37
4 files changed, 71 insertions, 6 deletions
diff --git a/src/nvim/api/vim.c b/src/nvim/api/vim.c
index 9996dae247..8d34a34e8a 100644
--- a/src/nvim/api/vim.c
+++ b/src/nvim/api/vim.c
@@ -1687,6 +1687,7 @@ static void write_msg(String message, bool to_err, bool writeln)
if (c == NL) { \
kv_push(line_buf, NUL); \
msg(line_buf.items); \
+ msg_didout = true; \
kv_drop(line_buf, kv_size(line_buf)); \
kv_resize(line_buf, LINE_BUFFER_MIN_SIZE); \
} else { \
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index ed84e2a601..ec069131e5 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -954,6 +954,7 @@ static void nlua_print_event(void **argv)
break;
}
msg(str + start);
+ msg_didout = true; // Make blank lines work properly
}
if (len && str[len - 1] == NUL) { // Last was newline
msg("");
diff --git a/test/functional/api/vim_spec.lua b/test/functional/api/vim_spec.lua
index c4f89318e0..664cd4cbca 100644
--- a/test/functional/api/vim_spec.lua
+++ b/test/functional/api/vim_spec.lua
@@ -577,7 +577,6 @@ describe('API', function()
local start_dir
before_each(function()
- clear()
funcs.mkdir("Xtestdir")
start_dir = funcs.getcwd()
end)
@@ -1990,6 +1989,39 @@ describe('API', function()
]])
eq('\naaa\n' .. ('a'):rep(5002) .. '\naaa', meths.get_var('out'))
end)
+
+ it('blank line in message works', function()
+ local screen = Screen.new(40, 8)
+ screen:attach()
+ screen:set_default_attr_ids({
+ [0] = {bold = true, foreground = Screen.colors.Blue},
+ [1] = {bold = true, foreground = Screen.colors.SeaGreen},
+ [2] = {bold = true, reverse = true},
+ })
+ feed([[:call nvim_out_write("\na\n")<CR>]])
+ screen:expect{grid=[[
+ |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {2: }|
+ |
+ a |
+ {1:Press ENTER or type command to continue}^ |
+ ]]}
+ feed('<CR>')
+ feed([[:call nvim_out_write("b\n\nc\n")<CR>]])
+ screen:expect{grid=[[
+ |
+ {0:~ }|
+ {0:~ }|
+ {2: }|
+ b |
+ |
+ c |
+ {1:Press ENTER or type command to continue}^ |
+ ]]}
+ end)
end)
describe('nvim_err_write', function()
@@ -3029,11 +3061,10 @@ describe('API', function()
local screen
before_each(function()
- clear()
screen = Screen.new(40, 8)
screen:attach()
screen:set_default_attr_ids({
- [0] = {bold=true, foreground=Screen.colors.Blue},
+ [0] = {bold = true, foreground = Screen.colors.Blue},
[1] = {bold = true, foreground = Screen.colors.SeaGreen},
[2] = {bold = true, reverse = true},
[3] = {foreground = Screen.colors.Brown, bold = true}, -- Statement
@@ -3103,7 +3134,6 @@ describe('API', function()
local screen
before_each(function()
- clear()
screen = Screen.new(100, 35)
screen:attach()
screen:set_default_attr_ids({
diff --git a/test/functional/lua/overrides_spec.lua b/test/functional/lua/overrides_spec.lua
index 0fd8cb2f6a..1777dd078d 100644
--- a/test/functional/lua/overrides_spec.lua
+++ b/test/functional/lua/overrides_spec.lua
@@ -15,8 +15,6 @@ local exec_lua = helpers.exec_lua
local pcall_err = helpers.pcall_err
local is_os = helpers.is_os
-local screen
-
local fname = 'Xtest-functional-lua-overrides-luafile'
before_each(clear)
@@ -138,9 +136,44 @@ describe('print', function()
]], (is_os('win') and "timeout 1") or "sleep 0.1")
eq('very slow\nvery fast', exec_capture('lua test()'))
end)
+
+ it('blank line in message works', function()
+ local screen = Screen.new(40, 8)
+ screen:attach()
+ screen:set_default_attr_ids({
+ [0] = {bold = true, foreground=Screen.colors.Blue},
+ [1] = {bold = true, foreground = Screen.colors.SeaGreen},
+ [2] = {bold = true, reverse = true},
+ })
+ feed([[:lua print('\na')<CR>]])
+ screen:expect{grid=[[
+ |
+ {0:~ }|
+ {0:~ }|
+ {0:~ }|
+ {2: }|
+ |
+ a |
+ {1:Press ENTER or type command to continue}^ |
+ ]]}
+ feed('<CR>')
+ feed([[:lua print('b\n\nc')<CR>]])
+ screen:expect{grid=[[
+ |
+ {0:~ }|
+ {0:~ }|
+ {2: }|
+ b |
+ |
+ c |
+ {1:Press ENTER or type command to continue}^ |
+ ]]}
+ end)
end)
describe('debug.debug', function()
+ local screen
+
before_each(function()
screen = Screen.new()
screen:attach()