diff options
author | Lewis Russell <lewis6991@gmail.com> | 2023-01-23 12:22:03 +0000 |
---|---|---|
committer | Lewis Russell <lewis6991@gmail.com> | 2023-01-25 11:48:53 +0000 |
commit | 0012ed2bc74f08d0a8e68b23de87f66235c7a68f (patch) | |
tree | f6821de44fe8fb601c548e4350dd6512d29cef1b | |
parent | 2654a9e9d8db3f1179636bfe5419aad13b5aeada (diff) | |
download | rneovim-0012ed2bc74f08d0a8e68b23de87f66235c7a68f.tar.gz rneovim-0012ed2bc74f08d0a8e68b23de87f66235c7a68f.tar.bz2 rneovim-0012ed2bc74f08d0a8e68b23de87f66235c7a68f.zip |
refactor(optionstr.c): break up did_set_string_option 51
-rw-r--r-- | src/nvim/optionstr.c | 108 |
1 files changed, 57 insertions, 51 deletions
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c index b35b318f02..981b2b70b5 100644 --- a/src/nvim/optionstr.c +++ b/src/nvim/optionstr.c @@ -1420,6 +1420,61 @@ static void did_set_winhl(win_T *win, char **errmsg) } } +static void did_set_varsoftabstop(buf_T *buf, char **varp, char **errmsg) +{ + if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) { + XFREE_CLEAR(buf->b_p_vsts_array); + return; + } + + for (char *cp = *varp; *cp; cp++) { + if (ascii_isdigit(*cp)) { + continue; + } + if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { + continue; + } + *errmsg = e_invarg; + return; + } + + long *oldarray = buf->b_p_vsts_array; + if (tabstop_set(*varp, &(buf->b_p_vsts_array))) { + xfree(oldarray); + } else { + *errmsg = e_invarg; + } +} + +static void did_set_vartabstop(buf_T *buf, win_T *win, char **varp, char **errmsg) +{ + if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) { + XFREE_CLEAR(buf->b_p_vts_array); + return; + } + + for (char *cp = *varp; *cp; cp++) { + if (ascii_isdigit(*cp)) { + continue; + } + if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { + continue; + } + *errmsg = e_invarg; + return; + } + + long *oldarray = buf->b_p_vts_array; + if (tabstop_set(*varp, &(buf->b_p_vts_array))) { + xfree(oldarray); + if (foldmethodIsIndent(win)) { + foldUpdateAll(win); + } + } else { + *errmsg = e_invarg; + } +} + static void did_set_optexpr(buf_T *buf, win_T *win, char **varp, char **gvarp) { char **p_opt = NULL; @@ -1780,58 +1835,9 @@ char *did_set_string_option(int opt_idx, char **varp, char *oldval, char *errbuf } else if (varp == &p_tpf) { did_set_opt_flags(p_tpf, p_tpf_values, &tpf_flags, true, &errmsg); } else if (varp == &(curbuf->b_p_vsts)) { // 'varsofttabstop' - char *cp; - - if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) { - XFREE_CLEAR(curbuf->b_p_vsts_array); - } else { - for (cp = *varp; *cp; cp++) { - if (ascii_isdigit(*cp)) { - continue; - } - if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { - continue; - } - errmsg = e_invarg; - break; - } - if (errmsg == NULL) { - long *oldarray = curbuf->b_p_vsts_array; - if (tabstop_set(*varp, &(curbuf->b_p_vsts_array))) { - xfree(oldarray); - } else { - errmsg = e_invarg; - } - } - } + did_set_varsoftabstop(curbuf, varp, &errmsg); } else if (varp == &(curbuf->b_p_vts)) { // 'vartabstop' - char *cp; - - if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) { - XFREE_CLEAR(curbuf->b_p_vts_array); - } else { - for (cp = *varp; *cp; cp++) { - if (ascii_isdigit(*cp)) { - continue; - } - if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { - continue; - } - errmsg = e_invarg; - break; - } - if (errmsg == NULL) { - long *oldarray = curbuf->b_p_vts_array; - if (tabstop_set(*varp, &(curbuf->b_p_vts_array))) { - xfree(oldarray); - if (foldmethodIsIndent(curwin)) { - foldUpdateAll(curwin); - } - } else { - errmsg = e_invarg; - } - } - } + did_set_vartabstop(curbuf, curwin, varp, &errmsg); } else if (varp == &p_dex || varp == &curwin->w_p_fde || varp == &curwin->w_p_fdt |