api: fix nvim_exec() silencing behaviour (#14413)

Previously nvim_exec would silent output no matter whether output
is true or false.
Now output is only silent and captured when output is true.
This commit is contained in:
Shadman 2021-04-21 14:41:37 +06:00 committed by GitHub
parent d7f9e58e40
commit 01493e7990
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 45 additions and 3 deletions

View File

@ -104,10 +104,14 @@ String nvim_exec(String src, Boolean output, Error *err)
}
try_start();
msg_silent++;
if (output) {
msg_silent++;
}
do_source_str(src.data, "nvim_exec()");
capture_ga = save_capture_ga;
msg_silent = save_msg_silent;
if (output) {
capture_ga = save_capture_ga;
msg_silent = save_msg_silent;
}
try_end(err);
if (ERROR_SET(err)) {

View File

@ -193,6 +193,44 @@ describe('API', function()
eq('', nvim('exec', 'echo', true))
eq('foo 42', nvim('exec', 'echo "foo" 42', true))
end)
it('displays messages when output=false', function()
local screen = Screen.new(40, 8)
screen:attach()
screen:set_default_attr_ids({
[0] = {bold=true, foreground=Screen.colors.Blue},
})
meths.exec("echo 'hello'", false)
screen:expect{grid=[[
^ |
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
hello |
]]}
end)
it('does\'t display messages when output=true', function()
local screen = Screen.new(40, 8)
screen:attach()
screen:set_default_attr_ids({
[0] = {bold=true, foreground=Screen.colors.Blue},
})
meths.exec("echo 'hello'", true)
screen:expect{grid=[[
^ |
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
{0:~ }|
|
]]}
end)
end)
describe('nvim_command', function()