aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-01-19 10:02:23 +0000
committerLewis Russell <lewis6991@gmail.com>2023-01-25 11:48:52 +0000
commitdb6461b6ad20b3fb25f7cdec85b4fe91afd30b40 (patch)
tree1e512720fe900bdd536982c7d4fd5802d324e0f5 /src
parentf6eac7fdf968af25f2b3c6fd8a97842fd4400370 (diff)
downloadrneovim-db6461b6ad20b3fb25f7cdec85b4fe91afd30b40.tar.gz
rneovim-db6461b6ad20b3fb25f7cdec85b4fe91afd30b40.tar.bz2
rneovim-db6461b6ad20b3fb25f7cdec85b4fe91afd30b40.zip
refactor(optionstr.c): break up did_set_string_option 15
Diffstat (limited to 'src')
-rw-r--r--src/nvim/optionstr.c75
1 files changed, 40 insertions, 35 deletions
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c
index 5cb617de9e..0c380c19b9 100644
--- a/src/nvim/optionstr.c
+++ b/src/nvim/optionstr.c
@@ -1017,6 +1017,44 @@ static void did_set_statusline(win_T *win, char **varp, char **gvarp, char **err
}
}
+static void did_set_complete(char **varp, char *errbuf, size_t errbuflen, char **errmsg)
+{
+ // check if it is a valid value for 'complete' -- Acevedo
+ for (char *s = *varp; *s;) {
+ while (*s == ',' || *s == ' ') {
+ s++;
+ }
+ if (!*s) {
+ break;
+ }
+ if (vim_strchr(".wbuksid]tU", (uint8_t)(*s)) == NULL) {
+ *errmsg = illegal_char(errbuf, errbuflen, *s);
+ break;
+ }
+ if (*++s != NUL && *s != ',' && *s != ' ') {
+ if (s[-1] == 'k' || s[-1] == 's') {
+ // skip optional filename after 'k' and 's'
+ while (*s && *s != ',' && *s != ' ') {
+ if (*s == '\\' && s[1] != NUL) {
+ s++;
+ }
+ s++;
+ }
+ } else {
+ if (errbuf != NULL) {
+ vim_snprintf(errbuf, errbuflen,
+ _("E535: Illegal character after <%c>"),
+ *--s);
+ *errmsg = errbuf;
+ } else {
+ *errmsg = "";
+ }
+ break;
+ }
+ }
+ }
+}
+
/// Handle string options that need some action to perform when changed.
/// The new value must be allocated.
///
@@ -1287,41 +1325,8 @@ char *did_set_string_option(int opt_idx, char **varp, char *oldval, char *errbuf
|| varp == &p_ruf || varp == &curwin->w_p_stc) {
// 'statusline', 'winbar', 'tabline', 'rulerformat' or 'statuscolumn'
did_set_statusline(curwin, varp, gvarp, &errmsg);
- } else if (gvarp == &p_cpt) {
- // check if it is a valid value for 'complete' -- Acevedo
- for (char *s = *varp; *s;) {
- while (*s == ',' || *s == ' ') {
- s++;
- }
- if (!*s) {
- break;
- }
- if (vim_strchr(".wbuksid]tU", (uint8_t)(*s)) == NULL) {
- errmsg = illegal_char(errbuf, errbuflen, *s);
- break;
- }
- if (*++s != NUL && *s != ',' && *s != ' ') {
- if (s[-1] == 'k' || s[-1] == 's') {
- // skip optional filename after 'k' and 's'
- while (*s && *s != ',' && *s != ' ') {
- if (*s == '\\' && s[1] != NUL) {
- s++;
- }
- s++;
- }
- } else {
- if (errbuf != NULL) {
- vim_snprintf(errbuf, errbuflen,
- _("E535: Illegal character after <%c>"),
- *--s);
- errmsg = errbuf;
- } else {
- errmsg = "";
- }
- break;
- }
- }
- }
+ } else if (gvarp == &p_cpt) { // 'complete'
+ did_set_complete(varp, errbuf, errbuflen, &errmsg);
} else if (varp == &p_cot) { // 'completeopt'
if (check_opt_strings(p_cot, p_cot_values, true) != OK) {
errmsg = e_invarg;