aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/api/vimscript.c
diff options
context:
space:
mode:
authorFamiu Haque <famiuhaque@protonmail.com>2022-06-08 09:06:36 +0600
committerFamiu Haque <famiuhaque@protonmail.com>2022-06-08 15:24:52 +0600
commitc84bd9e21fb1e5c55c9c5370b07271a6ae96f19c (patch)
tree102caf20be85af78aad8cc4695ae1e7abcf3baf3 /src/nvim/api/vimscript.c
parent3cd22a34852b7453eecb4715806cc09dcc226e0c (diff)
downloadrneovim-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.c14
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) {