summaryrefslogtreecommitdiff
path: root/src/ex_docmd.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-04-04 22:57:29 +0200
committerBram Moolenaar <Bram@vim.org>2018-04-04 22:57:29 +0200
commit333b80acf3a44e462456e6d5730e47ffa449c83d (patch)
tree24070cc76ef5b978aabc38db366e04e0dbed591d /src/ex_docmd.c
parent1f8495cf48888ff3a8ab3d0eb22db92389191a60 (diff)
downloadvim-git-333b80acf3a44e462456e6d5730e47ffa449c83d.tar.gz
patch 8.0.1660: the terminal API "drop" command doesn't support optionsv8.0.1660
Problem: The terminal API "drop" command doesn't support options. Solution: Implement the options.
Diffstat (limited to 'src/ex_docmd.c')
-rw-r--r--src/ex_docmd.c22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 3a6c7cfb1..b0130046e 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -5308,6 +5308,18 @@ skip_cmd_arg(
return p;
}
+ int
+get_bad_opt(char_u *p, exarg_T *eap)
+{
+ if (STRICMP(p, "keep") == 0)
+ eap->bad_char = BAD_KEEP;
+ else if (STRICMP(p, "drop") == 0)
+ eap->bad_char = BAD_DROP;
+ else if (MB_BYTE2LEN(*p) == 1 && p[1] == NUL)
+ eap->bad_char = *p;
+ return FAIL;
+}
+
/*
* Get "++opt=arg" argument.
* Return FAIL or OK.
@@ -5387,6 +5399,7 @@ getargopt(exarg_T *eap)
#endif
if (check_ff_value(eap->cmd + eap->force_ff) == FAIL)
return FAIL;
+ eap->force_ff = eap->cmd[eap->force_ff];
#ifdef FEAT_MBYTE
}
else if (pp == &eap->force_enc)
@@ -5399,14 +5412,7 @@ getargopt(exarg_T *eap)
{
/* Check ++bad= argument. Must be a single-byte character, "keep" or
* "drop". */
- p = eap->cmd + bad_char_idx;
- if (STRICMP(p, "keep") == 0)
- eap->bad_char = BAD_KEEP;
- else if (STRICMP(p, "drop") == 0)
- eap->bad_char = BAD_DROP;
- else if (MB_BYTE2LEN(*p) == 1 && p[1] == NUL)
- eap->bad_char = *p;
- else
+ if (get_bad_opt(eap->cmd + bad_char_idx, eap) == FAIL)
return FAIL;
}
#endif