diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-01-19 10:02:23 +0000 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2023-01-25 11:48:52 +0000 |
commit | db6461b6ad20b3fb25f7cdec85b4fe91afd30b40 (patch) | |
tree | 1e512720fe900bdd536982c7d4fd5802d324e0f5 /src | |
parent | f6eac7fdf968af25f2b3c6fd8a97842fd4400370 (diff) | |
download | rneovim-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.c | 75 |
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; |