diff options
author | Famiu Haque <famiuhaque@protonmail.com> | 2022-06-08 09:06:36 +0600 |
---|---|---|
committer | Famiu Haque <famiuhaque@protonmail.com> | 2022-06-08 15:24:52 +0600 |
commit | c84bd9e21fb1e5c55c9c5370b07271a6ae96f19c (patch) | |
tree | 102caf20be85af78aad8cc4695ae1e7abcf3baf3 /src/nvim/api/vimscript.c | |
parent | 3cd22a34852b7453eecb4715806cc09dcc226e0c (diff) | |
download | rneovim-c84bd9e21fb1e5c55c9c5370b07271a6ae96f19c.tar.gz rneovim-c84bd9e21fb1e5c55c9c5370b07271a6ae96f19c.tar.bz2 rneovim-c84bd9e21fb1e5c55c9c5370b07271a6ae96f19c.zip |
fix(nvim_create_user_command): make `smods` work with `nvim_cmd`
Closes #18876.
Diffstat (limited to 'src/nvim/api/vimscript.c')
-rw-r--r-- | src/nvim/api/vimscript.c | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/nvim/api/vimscript.c b/src/nvim/api/vimscript.c index 99ab247c2a..4b4404ea09 100644 --- a/src/nvim/api/vimscript.c +++ b/src/nvim/api/vimscript.c @@ -1241,10 +1241,12 @@ String nvim_cmd(uint64_t channel_id, Dict(cmd) *cmd, Dict(cmd_opts) *opts, Error } if (HAS_KEY(mods.verbose)) { - if (mods.verbose.type != kObjectTypeInteger || mods.verbose.data.integer <= 0) { - VALIDATION_ERROR("'mods.verbose' must be a non-negative Integer"); + if (mods.verbose.type != kObjectTypeInteger) { + VALIDATION_ERROR("'mods.verbose' must be a Integer"); + } else if (mods.verbose.data.integer >= 0) { + // Silently ignore negative integers to allow mods.verbose to be set to -1. + cmdinfo.verbose = mods.verbose.data.integer; } - cmdinfo.verbose = mods.verbose.data.integer; } bool vertical; @@ -1256,8 +1258,10 @@ String nvim_cmd(uint64_t channel_id, Dict(cmd) *cmd, Dict(cmd_opts) *opts, Error VALIDATION_ERROR("'mods.split' must be a String"); } - if (STRCMP(mods.split.data.string.data, "aboveleft") == 0 - || STRCMP(mods.split.data.string.data, "leftabove") == 0) { + if (*mods.split.data.string.data == NUL) { + // Empty string, do nothing. + } else if (STRCMP(mods.split.data.string.data, "aboveleft") == 0 + || STRCMP(mods.split.data.string.data, "leftabove") == 0) { cmdinfo.cmdmod.split |= WSP_ABOVE; } else if (STRCMP(mods.split.data.string.data, "belowright") == 0 || STRCMP(mods.split.data.string.data, "rightbelow") == 0) { |