feat(api): add unsilent to command APIs

This commit is contained in:
zeertzjq
2022-07-02 19:35:11 +08:00
parent f93eb169f6
commit 7a907c3314
6 changed files with 57 additions and 28 deletions

View File

@@ -1951,6 +1951,7 @@ nvim_parse_cmd({str}, {opts}) *nvim_parse_cmd()*
• silent: (boolean) |:silent|. • silent: (boolean) |:silent|.
• emsg_silent: (boolean) |:silent!|. • emsg_silent: (boolean) |:silent!|.
• unsilent: (boolean) |:unsilent|.
• sandbox: (boolean) |:sandbox|. • sandbox: (boolean) |:sandbox|.
• noautocmd: (boolean) |:noautocmd|. • noautocmd: (boolean) |:noautocmd|.
• browse: (boolean) |:browse|. • browse: (boolean) |:browse|.

View File

@@ -54,6 +54,7 @@
/// - force: (boolean) Whether filter is inverted or not. /// - force: (boolean) Whether filter is inverted or not.
/// - silent: (boolean) |:silent|. /// - silent: (boolean) |:silent|.
/// - emsg_silent: (boolean) |:silent!|. /// - emsg_silent: (boolean) |:silent!|.
/// - unsilent: (boolean) |:unsilent|.
/// - sandbox: (boolean) |:sandbox|. /// - sandbox: (boolean) |:sandbox|.
/// - noautocmd: (boolean) |:noautocmd|. /// - noautocmd: (boolean) |:noautocmd|.
/// - browse: (boolean) |:browse|. /// - browse: (boolean) |:browse|.
@@ -232,6 +233,7 @@ Dictionary nvim_parse_cmd(String str, Dictionary opts, Error *err)
PUT(mods, "silent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SILENT)); PUT(mods, "silent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SILENT));
PUT(mods, "emsg_silent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_ERRSILENT)); PUT(mods, "emsg_silent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_ERRSILENT));
PUT(mods, "unsilent", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_UNSILENT));
PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SANDBOX)); PUT(mods, "sandbox", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_SANDBOX));
PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_NOAUTOCMD)); PUT(mods, "noautocmd", BOOLEAN_OBJ(cmdinfo.cmdmod.cmod_flags & CMOD_NOAUTOCMD));
PUT(mods, "tab", INTEGER_OBJ(cmdinfo.cmdmod.cmod_tab)); PUT(mods, "tab", INTEGER_OBJ(cmdinfo.cmdmod.cmod_tab));
@@ -598,6 +600,7 @@ String nvim_cmd(uint64_t channel_id, Dict(cmd) *cmd, Dict(cmd_opts) *opts, Error
OBJ_TO_CMOD_FLAG(CMOD_SILENT, mods.silent, false, "'mods.silent'"); OBJ_TO_CMOD_FLAG(CMOD_SILENT, mods.silent, false, "'mods.silent'");
OBJ_TO_CMOD_FLAG(CMOD_ERRSILENT, mods.emsg_silent, false, "'mods.emsg_silent'"); OBJ_TO_CMOD_FLAG(CMOD_ERRSILENT, mods.emsg_silent, false, "'mods.emsg_silent'");
OBJ_TO_CMOD_FLAG(CMOD_UNSILENT, mods.silent, false, "'mods.unsilent'");
OBJ_TO_CMOD_FLAG(CMOD_SANDBOX, mods.sandbox, false, "'mods.sandbox'"); OBJ_TO_CMOD_FLAG(CMOD_SANDBOX, mods.sandbox, false, "'mods.sandbox'");
OBJ_TO_CMOD_FLAG(CMOD_NOAUTOCMD, mods.noautocmd, false, "'mods.noautocmd'"); OBJ_TO_CMOD_FLAG(CMOD_NOAUTOCMD, mods.noautocmd, false, "'mods.noautocmd'");
OBJ_TO_CMOD_FLAG(CMOD_BROWSE, mods.browse, false, "'mods.browse'"); OBJ_TO_CMOD_FLAG(CMOD_BROWSE, mods.browse, false, "'mods.browse'");
@@ -722,6 +725,10 @@ static void build_cmdline_str(char **cmdlinep, exarg_T *eap, CmdParseInfo *cmdin
kv_concat(cmdline, "silent "); kv_concat(cmdline, "silent ");
} }
if (cmdinfo->cmdmod.cmod_flags & CMOD_UNSILENT) {
kv_concat(cmdline, "unsilent ");
}
switch (cmdinfo->cmdmod.cmod_split & (WSP_ABOVE | WSP_BELOW | WSP_TOP | WSP_BOT)) { switch (cmdinfo->cmdmod.cmod_split & (WSP_ABOVE | WSP_BELOW | WSP_TOP | WSP_BOT)) {
case WSP_ABOVE: case WSP_ABOVE:
kv_concat(cmdline, "aboveleft "); kv_concat(cmdline, "aboveleft ");

View File

@@ -181,6 +181,7 @@ return {
cmd_mods = { cmd_mods = {
"silent"; "silent";
"emsg_silent"; "emsg_silent";
"unsilent";
"filter"; "filter";
"sandbox"; "sandbox";
"noautocmd"; "noautocmd";

View File

@@ -1946,6 +1946,8 @@ int nlua_do_ucmd(ucmd_T *cmd, exarg_T *eap, bool preview)
lua_setfield(lstate, -2, "silent"); lua_setfield(lstate, -2, "silent");
lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_ERRSILENT); lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_ERRSILENT);
lua_setfield(lstate, -2, "emsg_silent"); lua_setfield(lstate, -2, "emsg_silent");
lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_UNSILENT);
lua_setfield(lstate, -2, "unsilent");
lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_SANDBOX); lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_SANDBOX);
lua_setfield(lstate, -2, "sandbox"); lua_setfield(lstate, -2, "sandbox");
lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_NOAUTOCMD); lua_pushboolean(lstate, cmdmod.cmod_flags & CMOD_NOAUTOCMD);

View File

@@ -136,6 +136,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -170,6 +171,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -204,6 +206,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -221,10 +224,10 @@ describe('nvim_create_user_command', function()
bang = true, bang = true,
line1 = 10, line1 = 10,
line2 = 10, line2 = 10,
mods = "botright", mods = "confirm unsilent botright",
smods = { smods = {
browse = false, browse = false,
confirm = false, confirm = true,
emsg_silent = false, emsg_silent = false,
hide = false, hide = false,
keepalt = false, keepalt = false,
@@ -238,6 +241,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "botright", split = "botright",
tab = 0, tab = 0,
unsilent = true,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -245,7 +249,7 @@ describe('nvim_create_user_command', function()
count = 10, count = 10,
reg = "", reg = "",
}, exec_lua [=[ }, exec_lua [=[
vim.api.nvim_command('botright 10CommandWithLuaCallback! h\tey ') vim.api.nvim_command('unsilent botright confirm 10CommandWithLuaCallback! h\tey ')
return result return result
]=]) ]=])
@@ -272,6 +276,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -306,6 +311,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },
@@ -352,6 +358,7 @@ describe('nvim_create_user_command', function()
silent = false, silent = false,
split = "", split = "",
tab = 0, tab = 0,
unsilent = false,
verbose = -1, verbose = -1,
vertical = false, vertical = false,
}, },

View File

@@ -3181,10 +3181,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('echo foo', {})) }, meths.parse_cmd('echo foo', {}))
end) end)
@@ -3221,10 +3222,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('4,6s/math.random/math.max/', {})) }, meths.parse_cmd('4,6s/math.random/math.max/', {}))
end) end)
@@ -3261,10 +3263,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('buffer 1', {})) }, meths.parse_cmd('buffer 1', {}))
end) end)
@@ -3301,10 +3304,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('put +', {})) }, meths.parse_cmd('put +', {}))
end) end)
@@ -3341,10 +3345,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('1,3delete * 5', {})) }, meths.parse_cmd('1,3delete * 5', {}))
end) end)
@@ -3381,10 +3386,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
}, },
}, meths.parse_cmd('w!', {})) }, meths.parse_cmd('w!', {}))
end) end)
@@ -3421,10 +3427,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = true, silent = true,
vertical = false,
split = "topleft", split = "topleft",
tab = 2, tab = 2,
verbose = 15 unsilent = false,
verbose = 15,
vertical = false,
}, },
}, meths.parse_cmd('15verbose silent! aboveleft topleft tab filter /foo/ split foo.txt', {})) }, meths.parse_cmd('15verbose silent! aboveleft topleft tab filter /foo/ split foo.txt', {}))
eq({ eq({
@@ -3443,7 +3450,7 @@ describe('API', function()
nextcmd = '', nextcmd = '',
mods = { mods = {
browse = false, browse = false,
confirm = false, confirm = true,
emsg_silent = false, emsg_silent = false,
filter = { filter = {
pattern = "foo", pattern = "foo",
@@ -3459,12 +3466,13 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false, split = "botright",
split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = true,
verbose = 0,
vertical = false,
}, },
}, meths.parse_cmd('filter! /foo/ split foo.txt', {})) }, meths.parse_cmd('0verbose unsilent botright confirm filter! /foo/ split foo.txt', {}))
end) end)
it('works with user commands', function() it('works with user commands', function()
command('command -bang -nargs=+ -range -addr=lines MyCommand echo foo') command('command -bang -nargs=+ -range -addr=lines MyCommand echo foo')
@@ -3500,10 +3508,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('4,6MyCommand! test it', {})) }, meths.parse_cmd('4,6MyCommand! test it', {}))
end) end)
@@ -3540,10 +3549,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('argadd a.txt | argadd b.txt', {})) }, meths.parse_cmd('argadd a.txt | argadd b.txt', {}))
end) end)
@@ -3581,10 +3591,11 @@ describe('API', function()
noswapfile = false, noswapfile = false,
sandbox = false, sandbox = false,
silent = false, silent = false,
vertical = false,
split = "", split = "",
tab = 0, tab = 0,
verbose = -1 unsilent = false,
verbose = -1,
vertical = false,
} }
}, meths.parse_cmd('MyCommand test it', {})) }, meths.parse_cmd('MyCommand test it', {}))
end) end)