mirror of
https://github.com/neovim/neovim.git
synced 2025-09-27 21:48:35 +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().
This commit is contained in:
@@ -2206,6 +2206,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.
|
||||
|
Reference in New Issue
Block a user