mirror of
https://github.com/neovim/neovim
synced 2025-07-15 16:51:49 +00:00
fix(api): add missing nargs field to user command Lua callbacks #34210
Problem: nvim_create_user_command() Lua callbacks were missing the documented nargs field in the options table passed to the callback function.
Solution: Add nargs field derivation from command argument type flags in nlua_do_ucmd(), using the same logic as nvim_parse_cmd().
(cherry picked from commit 5cfbc35aa8
)
This commit is contained in:
committed by
github-actions[bot]
parent
d519b77d2b
commit
f2c4305114
@ -2249,6 +2249,26 @@ int nlua_do_ucmd(ucmd_T *cmd, exarg_T *eap, bool preview)
|
||||
}
|
||||
lua_setfield(lstate, -2, "count");
|
||||
|
||||
char nargs[2];
|
||||
if (cmd->uc_argt & EX_EXTRA) {
|
||||
if (cmd->uc_argt & EX_NOSPC) {
|
||||
if (cmd->uc_argt & EX_NEEDARG) {
|
||||
nargs[0] = '1';
|
||||
} else {
|
||||
nargs[0] = '?';
|
||||
}
|
||||
} else if (cmd->uc_argt & EX_NEEDARG) {
|
||||
nargs[0] = '+';
|
||||
} else {
|
||||
nargs[0] = '*';
|
||||
}
|
||||
} else {
|
||||
nargs[0] = '0';
|
||||
}
|
||||
nargs[1] = NUL;
|
||||
lua_pushstring(lstate, nargs);
|
||||
lua_setfield(lstate, -2, "nargs");
|
||||
|
||||
// The size of this buffer is chosen empirically to be large enough to hold
|
||||
// every possible modifier (with room to spare). If the list of possible
|
||||
// modifiers grows this may need to be updated.
|
||||
|
@ -227,6 +227,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -267,6 +268,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -307,6 +309,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -347,6 +350,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 10,
|
||||
line2 = 10,
|
||||
mods = 'confirm unsilent botright horizontal',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = true,
|
||||
@ -387,6 +391,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 42,
|
||||
mods = '',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -427,6 +432,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '*',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -479,6 +485,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '?',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -520,6 +527,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '?',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -572,6 +580,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '0',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
@ -612,6 +621,7 @@ describe('nvim_create_user_command', function()
|
||||
line1 = 1,
|
||||
line2 = 1,
|
||||
mods = '',
|
||||
nargs = '0',
|
||||
smods = {
|
||||
browse = false,
|
||||
confirm = false,
|
||||
|
Reference in New Issue
Block a user