aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2023-01-23 12:22:03 +0000
committerLewis Russell <lewis6991@gmail.com>2023-01-25 11:48:53 +0000
commit0012ed2bc74f08d0a8e68b23de87f66235c7a68f (patch)
treef6821de44fe8fb601c548e4350dd6512d29cef1b
parent2654a9e9d8db3f1179636bfe5419aad13b5aeada (diff)
downloadrneovim-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.c108
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