diff options
Diffstat (limited to 'src/nvim/optionstr.c')
| -rw-r--r-- | src/nvim/optionstr.c | 295 | 
1 files changed, 148 insertions, 147 deletions
diff --git a/src/nvim/optionstr.c b/src/nvim/optionstr.c index e4cdf883fe..808a70c8cb 100644 --- a/src/nvim/optionstr.c +++ b/src/nvim/optionstr.c @@ -122,21 +122,21 @@ static char_u SHM_ALL[] = { SHM_RO, SHM_MOD, SHM_FILE, SHM_LAST, SHM_TEXT, SHM_L  /// option values.  void didset_string_options(void)  { -  (void)opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, true); -  (void)opt_strings_flags(p_bkc, p_bkc_values, &bkc_flags, true); -  (void)opt_strings_flags(p_bo, p_bo_values, &bo_flags, true); -  (void)opt_strings_flags(p_ssop, p_ssop_values, &ssop_flags, true); -  (void)opt_strings_flags(p_vop, p_ssop_values, &vop_flags, true); -  (void)opt_strings_flags(p_fdo, p_fdo_values, &fdo_flags, true); -  (void)opt_strings_flags(p_dy, p_dy_values, &dy_flags, true); -  (void)opt_strings_flags(p_rdb, p_rdb_values, &rdb_flags, true); -  (void)opt_strings_flags(p_tc, p_tc_values, &tc_flags, false); -  (void)opt_strings_flags(p_tpf, p_tpf_values, &tpf_flags, true); +  (void)opt_strings_flags((char_u *)p_cmp, p_cmp_values, &cmp_flags, true); +  (void)opt_strings_flags((char_u *)p_bkc, p_bkc_values, &bkc_flags, true); +  (void)opt_strings_flags((char_u *)p_bo, p_bo_values, &bo_flags, true); +  (void)opt_strings_flags((char_u *)p_ssop, p_ssop_values, &ssop_flags, true); +  (void)opt_strings_flags((char_u *)p_vop, p_ssop_values, &vop_flags, true); +  (void)opt_strings_flags((char_u *)p_fdo, p_fdo_values, &fdo_flags, true); +  (void)opt_strings_flags((char_u *)p_dy, p_dy_values, &dy_flags, true); +  (void)opt_strings_flags((char_u *)p_rdb, p_rdb_values, &rdb_flags, true); +  (void)opt_strings_flags((char_u *)p_tc, p_tc_values, &tc_flags, false); +  (void)opt_strings_flags((char_u *)p_tpf, p_tpf_values, &tpf_flags, true);    (void)opt_strings_flags(p_ve, p_ve_values, &ve_flags, true); -  (void)opt_strings_flags(p_swb, p_swb_values, &swb_flags, true); -  (void)opt_strings_flags(p_wop, p_wop_values, &wop_flags, true); -  (void)opt_strings_flags(p_jop, p_jop_values, &jop_flags, true); -  (void)opt_strings_flags(p_cb, p_cb_values, &cb_flags, true); +  (void)opt_strings_flags((char_u *)p_swb, p_swb_values, &swb_flags, true); +  (void)opt_strings_flags((char_u *)p_wop, p_wop_values, &wop_flags, true); +  (void)opt_strings_flags((char_u *)p_jop, p_jop_values, &jop_flags, true); +  (void)opt_strings_flags((char_u *)p_cb, p_cb_values, &cb_flags, true);  }  /// Trigger the OptionSet autocommand. @@ -281,19 +281,19 @@ void check_string_option(char **pp)  ///  /// @param opt_idx  option index  /// @param varp  pointer to option variable -static void set_string_option_global(int opt_idx, char_u **varp) +static void set_string_option_global(int opt_idx, char **varp)  { -  char_u **p, *s; +  char **p;    // the global value is always allocated    if (is_window_local_option(opt_idx)) { -    p = (char_u **)GLOBAL_WO(varp); +    p = (char **)GLOBAL_WO(varp);    } else { -    p = (char_u **)get_option_var(opt_idx); +    p = (char **)get_option_var(opt_idx);    }    if (!is_global_option(opt_idx) && p != varp) { -    s = vim_strsave(*varp); -    free_string_option((char *)(*p)); +    char *s = xstrdup(*varp); +    free_string_option(*p);      *p = s;    }  } @@ -339,7 +339,7 @@ void set_string_option_direct(const char *name, int opt_idx, const char *val, in      // For buffer/window local option may also set the global value.      if (both) { -      set_string_option_global(idx, (char_u **)varp); +      set_string_option_global(idx, varp);      }      set_option_flag(idx, P_ALLOCED); @@ -420,7 +420,7 @@ char *set_string_option(const int opt_idx, const char *const value, const int op    char *const saved_newval = xstrdup(s);    int value_checked = false; -  char *const errmsg = did_set_string_option(opt_idx, (char_u **)varp, (char_u *)oldval, +  char *const errmsg = did_set_string_option(opt_idx, varp, oldval,                                               NULL, 0,                                               opt_flags, &value_checked);    if (errmsg == NULL) { @@ -631,8 +631,8 @@ static int shada_idx = -1;  /// @param value_checked  value was checked to be safe, no need to set P_INSECURE  ///  /// @return  NULL for success, or an untranslated error message for an error -char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *errbuf, -                            size_t errbuflen, int opt_flags, int *value_checked) +char *did_set_string_option(int opt_idx, char **varp, char *oldval, char *errbuf, size_t errbuflen, +                            int opt_flags, int *value_checked)  {    char *errmsg = NULL;    char *s, *p; @@ -650,20 +650,19 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        && (get_option_flags(opt_idx) & P_SECURE)) {      errmsg = e_secure;    } else if (((get_option_flags(opt_idx) & P_NFNAME) -              && strpbrk((char *)(*varp), -                         (secure ? "/\\*?[|;&<>\r\n" : "/\\*?[<>\r\n")) != NULL) +              && strpbrk(*varp, (secure ? "/\\*?[|;&<>\r\n" : "/\\*?[<>\r\n")) != NULL)               || ((get_option_flags(opt_idx) & P_NDNAME) -                 && strpbrk((char *)(*varp), "*?[|;&<>\r\n") != NULL)) { +                 && strpbrk(*varp, "*?[|;&<>\r\n") != NULL)) {      // Check for a "normal" directory or file name in some options.  Disallow a      // path separator (slash and/or backslash), wildcards and characters that      // are often illegal in a file name. Be more permissive if "secure" is off.      errmsg = e_invarg; -  } else if (gvarp == &p_bkc) {  // 'backupcopy' -    char_u *bkc   = p_bkc; +  } else if (gvarp == (char_u **)&p_bkc) {  // 'backupcopy' +    char *bkc = p_bkc;      unsigned int *flags = &bkc_flags;      if (opt_flags & OPT_LOCAL) { -      bkc = (char_u *)curbuf->b_p_bkc; +      bkc = curbuf->b_p_bkc;        flags = &curbuf->b_bkc_flags;      } @@ -671,7 +670,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        // make the local value empty: use the global value        *flags = 0;      } else { -      if (opt_strings_flags(bkc, p_bkc_values, flags, true) != OK) { +      if (opt_strings_flags((char_u *)bkc, p_bkc_values, flags, true) != OK) {          errmsg = e_invarg;        } @@ -679,7 +678,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er            + ((*flags & BKC_YES) != 0)            + ((*flags & BKC_NO) != 0) != 1) {          // Must have exactly one of "auto", "yes"  and "no". -        (void)opt_strings_flags(oldval, p_bkc_values, flags, true); +        (void)opt_strings_flags((char_u *)oldval, p_bkc_values, flags, true);          errmsg = e_invarg;        }      } @@ -688,12 +687,12 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er                 *p_pm == '.' ? p_pm + 1 : p_pm) == 0) {        errmsg = e_backupext_and_patchmode_are_equal;      } -  } else if (varp == (char_u **)&curwin->w_p_briopt) {  // 'breakindentopt' +  } else if (varp == &curwin->w_p_briopt) {  // 'breakindentopt'      if (briopt_check(curwin) == FAIL) {        errmsg = e_invarg;      }    } else if (varp == &p_isi -             || varp == (char_u **)&(curbuf->b_p_isk) +             || varp == &(curbuf->b_p_isk)               || varp == &p_isp               || varp == &p_isf) {      // 'isident', 'iskeyword', 'isprint or 'isfname' option: refill g_chartab[] @@ -713,14 +712,14 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      }    } else if (varp == &p_rtp || varp == &p_pp) {  // 'runtimepath' 'packpath'      runtime_search_path_invalidate(); -  } else if (varp == (char_u **)&curwin->w_p_culopt +  } else if (varp == &curwin->w_p_culopt               || gvarp == (char_u **)&curwin->w_allbuf_opt.wo_culopt) {  // 'cursorlineopt' -    if (**varp == NUL || fill_culopt_flags(*varp, curwin) != OK) { +    if (**varp == NUL || fill_culopt_flags((char_u *)(*varp), curwin) != OK) {        errmsg = e_invarg;      } -  } else if (varp == (char_u **)&curwin->w_p_cc) {  // 'colorcolumn' +  } else if (varp == &curwin->w_p_cc) {  // 'colorcolumn'      errmsg = check_colorcolumn(curwin); -  } else if (varp == &p_hlg) {  // 'helplang' +  } else if (varp == (char **)&p_hlg) {  // 'helplang'      // Check for "", "ab", "ab,cd", etc.      for (s = (char *)p_hlg; *s != NUL; s += 3) {        if (s[1] == NUL || ((s[2] != ',' || s[3] == NUL) && s[2] != NUL)) { @@ -736,42 +735,42 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        errmsg = e_unsupportedoption;      }    } else if (varp == &p_jop) {  // 'jumpoptions' -    if (opt_strings_flags(p_jop, p_jop_values, &jop_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_jop, p_jop_values, &jop_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (gvarp == &p_nf) {  // 'nrformats' -    if (check_opt_strings(*varp, p_nf_values, true) != OK) { +    if (check_opt_strings((char_u *)(*varp), p_nf_values, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_ssop) {  // 'sessionoptions' -    if (opt_strings_flags(p_ssop, p_ssop_values, &ssop_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_ssop, p_ssop_values, &ssop_flags, true) != OK) {        errmsg = e_invarg;      }      if ((ssop_flags & SSOP_CURDIR) && (ssop_flags & SSOP_SESDIR)) {        // Don't allow both "sesdir" and "curdir". -      (void)opt_strings_flags(oldval, p_ssop_values, &ssop_flags, true); +      (void)opt_strings_flags((char_u *)oldval, p_ssop_values, &ssop_flags, true);        errmsg = e_invarg;      }    } else if (varp == &p_vop) {  // 'viewoptions' -    if (opt_strings_flags(p_vop, p_ssop_values, &vop_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_vop, p_ssop_values, &vop_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_rdb) {  // 'redrawdebug' -    if (opt_strings_flags(p_rdb, p_rdb_values, &rdb_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_rdb, p_rdb_values, &rdb_flags, true) != OK) {        errmsg = e_invarg;      } -  } else if (varp == (char_u **)&p_sbo) {  // 'scrollopt' +  } else if (varp == &p_sbo) {  // 'scrollopt'      if (check_opt_strings((char_u *)p_sbo, p_scbopt_values, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_ambw || (int *)varp == &p_emoji) {  // 'ambiwidth' -    if (check_opt_strings(p_ambw, p_ambw_values, false) != OK) { +    if (check_opt_strings((char_u *)p_ambw, p_ambw_values, false) != OK) {        errmsg = e_invarg;      } else {        errmsg = check_chars_options();      }    } else if (varp == &p_bg) {  // 'background' -    if (check_opt_strings(p_bg, p_bg_values, false) == OK) { +    if (check_opt_strings((char_u *)p_bg, p_bg_values, false) == OK) {        int dark = (*p_bg == 'd');        init_highlight(false, false); @@ -781,9 +780,9 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          // value, that's not what we want here.  Disable the color          // scheme and set the colors again.          do_unlet(S_LEN("g:colors_name"), true); -        free_string_option((char *)p_bg); -        p_bg = vim_strsave((char_u *)(dark ? "dark" : "light")); -        check_string_option((char **)&p_bg); +        free_string_option(p_bg); +        p_bg = xstrdup((dark ? "dark" : "light")); +        check_string_option(&p_bg);          init_highlight(false, false);        }      } else { @@ -794,24 +793,24 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        errmsg = e_invarg;      }    } else if (varp == &p_wop) {  // 'wildoptions' -    if (opt_strings_flags(p_wop, p_wop_values, &wop_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_wop, p_wop_values, &wop_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_wak) {  // 'winaltkeys'      if (*p_wak == NUL -        || check_opt_strings(p_wak, p_wak_values, false) != OK) { +        || check_opt_strings((char_u *)p_wak, p_wak_values, false) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_ei) {  // 'eventignore'      if (check_ei() == FAIL) {        errmsg = e_invarg;      } -  } else if (varp == &p_enc || gvarp == &p_fenc || gvarp == &p_menc) { +  } else if (varp == &p_enc || gvarp == (char_u **)&p_fenc || gvarp == &p_menc) {      // 'encoding', 'fileencoding' and 'makeencoding' -    if (gvarp == &p_fenc) { +    if (gvarp == (char_u **)&p_fenc) {        if (!MODIFIABLE(curbuf) && opt_flags != OPT_GLOBAL) {          errmsg = e_modifiable; -      } else if (vim_strchr((char *)(*varp), ',') != NULL) { +      } else if (vim_strchr(*varp, ',') != NULL) {          // No comma allowed in 'fileencoding'; catches confusing it          // with 'fileencodings'.          errmsg = e_invarg; @@ -825,9 +824,9 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      if (errmsg == NULL) {        // canonize the value, so that STRCMP() can be used on it -      p = (char *)enc_canonize(*varp); +      p = (char *)enc_canonize((char_u *)(*varp));        xfree(*varp); -      *varp = (char_u *)p; +      *varp = p;        if (varp == &p_enc) {          // only encoding=utf-8 allowed          if (STRCMP(p_enc, "utf-8") != 0) { @@ -839,11 +838,11 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      }    } else if (varp == &p_penc) {      // Canonize printencoding if VIM standard one -    p = (char *)enc_canonize(p_penc); +    p = (char *)enc_canonize((char_u *)p_penc);      xfree(p_penc); -    p_penc = (char_u *)p; -  } else if (varp == (char_u **)&curbuf->b_p_keymap) { -    if (!valid_filetype(*varp)) { +    p_penc = p; +  } else if (varp == &curbuf->b_p_keymap) { +    if (!valid_filetype((char_u *)(*varp))) {        errmsg = e_invarg;      } else {        int secure_save = secure; @@ -884,10 +883,10 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        }        status_redraw_curbuf();      } -  } else if (gvarp == &p_ff) {  // 'fileformat' +  } else if (gvarp == (char_u **)&p_ff) {  // 'fileformat'      if (!MODIFIABLE(curbuf) && !(opt_flags & OPT_GLOBAL)) {        errmsg = e_modifiable; -    } else if (check_opt_strings(*varp, p_ff_values, false) != OK) { +    } else if (check_opt_strings((char_u *)(*varp), p_ff_values, false) != OK) {        errmsg = e_invarg;      } else {        redraw_titles(); @@ -899,12 +898,12 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          redraw_curbuf_later(UPD_NOT_VALID);        }      } -  } else if (varp == (char_u **)&p_ffs) {  // 'fileformats' +  } else if (varp == &p_ffs) {  // 'fileformats'      if (check_opt_strings((char_u *)p_ffs, p_ff_values, true) != OK) {        errmsg = e_invarg;      }    } else if (gvarp == &p_mps) {  // 'matchpairs' -    for (p = (char *)(*varp); *p != NUL; p++) { +    for (p = *varp; *p != NUL; p++) {        int x2 = -1;        int x3 = -1; @@ -924,8 +923,8 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          break;        }      } -  } else if (gvarp == &p_com) {  // 'comments' -    for (s = (char *)(*varp); *s;) { +  } else if (gvarp == (char_u **)&p_com) {  // 'comments' +    for (s = *varp; *s;) {        while (*s && *s != ':') {          if (vim_strchr(COM_ALL, *s) == NULL              && !ascii_isdigit(*s) && *s != '-') { @@ -953,7 +952,8 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er    } else if (varp == &p_lcs || varp == &p_fcs) {  // global 'listchars' or 'fillchars'      char **local_ptr = varp == &p_lcs ? &curwin->w_p_lcs : &curwin->w_p_fcs;      // only apply the global value to "curwin" when it does not have a local value -    errmsg = set_chars_option(curwin, varp, **local_ptr == NUL || !(opt_flags & OPT_GLOBAL)); +    errmsg = +      set_chars_option(curwin, (char_u **)varp, **local_ptr == NUL || !(opt_flags & OPT_GLOBAL));      if (errmsg == NULL) {        // If the current window is set to use the global        // 'listchars'/'fillchars' value, clear the window-local value. @@ -972,13 +972,13 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        }        redraw_all_later(UPD_NOT_VALID);      } -  } else if (varp == (char_u **)&curwin->w_p_lcs) {  // local 'listchars' -    errmsg = set_chars_option(curwin, varp, true); -  } else if (varp == (char_u **)&curwin->w_p_fcs) {  // local 'fillchars' -    errmsg = set_chars_option(curwin, varp, true); +  } else if (varp == &curwin->w_p_lcs) {  // local 'listchars' +    errmsg = set_chars_option(curwin, (char_u **)varp, true); +  } else if (varp == &curwin->w_p_fcs) {  // local 'fillchars' +    errmsg = set_chars_option(curwin, (char_u **)varp, true);    } else if (varp == &p_cedit) {  // 'cedit'      errmsg = check_cedit(); -  } else if (varp == &p_vfile) {  // 'verbosefile' +  } else if (varp == (char **)&p_vfile) {  // 'verbosefile'      verbose_stop();      if (*p_vfile != NUL && verbose_open() == FAIL) {        errmsg = e_invarg; @@ -993,7 +993,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      // there would be a disconnect between the check for P_ALLOCED at the start      // of the function and the set of P_ALLOCED at the end of the function.      free_oldval = (get_option_flags(opt_idx) & P_ALLOCED); -    for (s = (char *)p_shada; *s;) { +    for (s = p_shada; *s;) {        // Check it's a valid character        if (vim_strchr("!\"%'/:<@cfhnrs", *s) == NULL) {          errmsg = illegal_char(errbuf, errbuflen, *s); @@ -1037,8 +1037,8 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      if (*p_shada && errmsg == NULL && get_shada_parameter('\'') < 0) {        errmsg = N_("E528: Must specify a ' value");      } -  } else if (gvarp == &p_sbr) {  // 'showbreak' -    for (s = (char *)(*varp); *s;) { +  } else if (gvarp == (char_u **)&p_sbr) {  // 'showbreak' +    for (s = *varp; *s;) {        if (ptr2cells(s) != 1) {          errmsg = e_showbreak_contains_unprintable_or_wide_character;        } @@ -1052,14 +1052,14 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      errmsg = parse_printmbfont();    } else if (varp == &p_langmap) {  // 'langmap'      langmap_set(); -  } else if (varp == &p_breakat) {  // 'breakat' +  } else if (varp == (char **)&p_breakat) {  // 'breakat'      fill_breakat_flags();    } else if (varp == &p_titlestring || varp == &p_iconstring) {      // 'titlestring' and 'iconstring'      int flagval = (varp == &p_titlestring) ? STL_IN_TITLE : STL_IN_ICON;      // NULL => statusline syntax -    if (vim_strchr((char *)(*varp), '%') && check_stl_option((char *)(*varp)) == NULL) { +    if (vim_strchr(*varp, '%') && check_stl_option(*varp) == NULL) {        stl_syntax |= flagval;      } else {        stl_syntax &= ~flagval; @@ -1067,65 +1067,65 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      did_set_title();    } else if (varp == &p_sel) {  // 'selection'      if (*p_sel == NUL -        || check_opt_strings(p_sel, p_sel_values, false) != OK) { +        || check_opt_strings((char_u *)p_sel, p_sel_values, false) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_slm) {  // 'selectmode' -    if (check_opt_strings(p_slm, p_slm_values, true) != OK) { +    if (check_opt_strings((char_u *)p_slm, p_slm_values, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_km) {  // 'keymodel' -    if (check_opt_strings(p_km, p_km_values, true) != OK) { +    if (check_opt_strings((char_u *)p_km, p_km_values, true) != OK) {        errmsg = e_invarg;      } else { -      km_stopsel = (vim_strchr((char *)p_km, 'o') != NULL); -      km_startsel = (vim_strchr((char *)p_km, 'a') != NULL); +      km_stopsel = (vim_strchr(p_km, 'o') != NULL); +      km_startsel = (vim_strchr(p_km, 'a') != NULL);      }    } else if (varp == &p_mousem) {  // 'mousemodel' -    if (check_opt_strings(p_mousem, p_mousem_values, false) != OK) { +    if (check_opt_strings((char_u *)p_mousem, p_mousem_values, false) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_mousescroll) {  // 'mousescroll' -    errmsg = check_mousescroll((char *)p_mousescroll); +    errmsg = check_mousescroll(p_mousescroll);    } else if (varp == &p_swb) {  // 'switchbuf' -    if (opt_strings_flags(p_swb, p_swb_values, &swb_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_swb, p_swb_values, &swb_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_debug) {  // 'debug' -    if (check_opt_strings(p_debug, p_debug_values, true) != OK) { +    if (check_opt_strings((char_u *)p_debug, p_debug_values, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_dy) {  // 'display' -    if (opt_strings_flags(p_dy, p_dy_values, &dy_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_dy, p_dy_values, &dy_flags, true) != OK) {        errmsg = e_invarg;      } else {        (void)init_chartab();        msg_grid_validate();      }    } else if (varp == &p_ead) {  // 'eadirection' -    if (check_opt_strings(p_ead, p_ead_values, false) != OK) { +    if (check_opt_strings((char_u *)p_ead, p_ead_values, false) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_cb) {  // 'clipboard' -    if (opt_strings_flags(p_cb, p_cb_values, &cb_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_cb, p_cb_values, &cb_flags, true) != OK) {        errmsg = e_invarg;      } -  } else if (varp == (char_u **)&(curwin->w_s->b_p_spl)  // 'spell' -             || varp == (char_u **)&(curwin->w_s->b_p_spf)) { +  } else if (varp == &(curwin->w_s->b_p_spl)  // 'spell' +             || varp == &(curwin->w_s->b_p_spf)) {      // When 'spelllang' or 'spellfile' is set and there is a window for this      // buffer in which 'spell' is set load the wordlists. -    const bool is_spellfile = varp == (char_u **)&(curwin->w_s->b_p_spf); +    const bool is_spellfile = varp == &(curwin->w_s->b_p_spf); -    if ((is_spellfile && !valid_spellfile(*varp)) -        || (!is_spellfile && !valid_spelllang(*varp))) { +    if ((is_spellfile && !valid_spellfile((char_u *)(*varp))) +        || (!is_spellfile && !valid_spelllang((char_u *)(*varp)))) {        errmsg = e_invarg;      } else {        errmsg = did_set_spell_option(is_spellfile);      } -  } else if (varp == (char_u **)&(curwin->w_s->b_p_spc)) { +  } else if (varp == &(curwin->w_s->b_p_spc)) {      // When 'spellcapcheck' is set compile the regexp program.      errmsg = compile_cap_prog(curwin->w_s); -  } else if (varp == (char_u **)&(curwin->w_s->b_p_spo)) {  // 'spelloptions' +  } else if (varp == &(curwin->w_s->b_p_spo)) {  // 'spelloptions'      if (**varp != NUL && STRCMP("camel", *varp) != 0) {        errmsg = e_invarg;      } @@ -1156,24 +1156,25 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        curbuf->b_help = (curbuf->b_p_bt[0] == 'h');        redraw_titles();      } -  } else if (gvarp == &p_stl || gvarp == (char_u **)&p_wbr || varp == &p_tal || varp == &p_ruf) { +  } else if (gvarp == (char_u **)&p_stl || gvarp == (char_u **)&p_wbr || varp == &p_tal +             || varp == &p_ruf) {      // 'statusline', 'winbar', 'tabline' or 'rulerformat'      int wid;      if (varp == &p_ruf) {       // reset ru_wid first        ru_wid = 0;      } -    s = (char *)(*varp); +    s = *varp;      if (varp == &p_ruf && *s == '%') {        // set ru_wid if 'ruf' starts with "%99("        if (*++s == '-') {        // ignore a '-'          s++;        }        wid = getdigits_int(&s, true, 0); -      if (wid && *s == '(' && (errmsg = check_stl_option((char *)p_ruf)) == NULL) { +      if (wid && *s == '(' && (errmsg = check_stl_option(p_ruf)) == NULL) {          ru_wid = wid;        } else { -        errmsg = check_stl_option((char *)p_ruf); +        errmsg = check_stl_option(p_ruf);        }      } else if (varp == &p_ruf || s[0] != '%' || s[1] != '!') {        // check 'statusline', 'winbar' or 'tabline' only if it doesn't start with "%!" @@ -1188,7 +1189,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      }    } else if (gvarp == &p_cpt) {      // check if it is a valid value for 'complete' -- Acevedo -    for (s = (char *)(*varp); *s;) { +    for (s = *varp; *s;) {        while (*s == ',' || *s == ' ') {          s++;        } @@ -1222,7 +1223,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        }      }    } else if (varp == &p_cot) {  // 'completeopt' -    if (check_opt_strings(p_cot, p_cot_values, true) != OK) { +    if (check_opt_strings((char_u *)p_cot, p_cot_values, true) != OK) {        errmsg = e_invarg;      } else {        completeopt_was_set(); @@ -1234,8 +1235,8 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        errmsg = e_invarg;      }  #endif -  } else if (varp == (char_u **)&curwin->w_p_scl) {  // 'signcolumn' -    if (check_signcolumn(*varp) != OK) { +  } else if (varp == &curwin->w_p_scl) {  // 'signcolumn' +    if (check_signcolumn((char_u *)(*varp)) != OK) {        errmsg = e_invarg;      }      // When changing the 'signcolumn' to or from 'number', recompute the @@ -1245,13 +1246,13 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          && (curwin->w_p_nu || curwin->w_p_rnu)) {        curwin->w_nrwidth_line_count = 0;      } -  } else if (varp == (char_u **)&curwin->w_p_fdc -             || varp == (char_u **)&curwin->w_allbuf_opt.wo_fdc) { +  } else if (varp == &curwin->w_p_fdc +             || varp == &curwin->w_allbuf_opt.wo_fdc) {      // 'foldcolumn' -    if (**varp == NUL || check_opt_strings(*varp, p_fdc_values, false) != OK) { +    if (**varp == NUL || check_opt_strings((char_u *)(*varp), p_fdc_values, false) != OK) {        errmsg = e_invarg;      } -  } else if (varp == &p_pt) { +  } else if (varp == (char **)&p_pt) {      // 'pastetoggle': translate key codes like in a mapping      if (*p_pt) {        p = NULL; @@ -1269,21 +1270,21 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        if (*p_bs > '3' || p_bs[1] != NUL) {          errmsg = e_invarg;        } -    } else if (check_opt_strings(p_bs, p_bs_values, true) != OK) { +    } else if (check_opt_strings((char_u *)p_bs, p_bs_values, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_bo) { -    if (opt_strings_flags(p_bo, p_bo_values, &bo_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_bo, p_bo_values, &bo_flags, true) != OK) {        errmsg = e_invarg;      } -  } else if (gvarp == &p_tc) {  // 'tagcase' +  } else if (gvarp == (char_u **)&p_tc) {  // 'tagcase'      unsigned int *flags;      if (opt_flags & OPT_LOCAL) {        p = curbuf->b_p_tc;        flags = &curbuf->b_tc_flags;      } else { -      p = (char *)p_tc; +      p = p_tc;        flags = &tc_flags;      } @@ -1295,7 +1296,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        errmsg = e_invarg;      }    } else if (varp == &p_cmp) {  // 'casemap' -    if (opt_strings_flags(p_cmp, p_cmp_values, &cmp_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_cmp, p_cmp_values, &cmp_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_dip) {  // 'diffopt' @@ -1303,7 +1304,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        errmsg = e_invarg;      }    } else if (gvarp == (char_u **)&curwin->w_allbuf_opt.wo_fdm) {  // 'foldmethod' -    if (check_opt_strings(*varp, p_fdm_values, false) != OK +    if (check_opt_strings((char_u *)(*varp), p_fdm_values, false) != OK          || *curwin->w_p_fdm == NUL) {        errmsg = e_invarg;      } else { @@ -1312,29 +1313,29 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          newFoldLevel();        }      } -  } else if (varp == (char_u **)&curwin->w_p_fde) {  // 'foldexpr' +  } else if (varp == &curwin->w_p_fde) {  // 'foldexpr'      if (foldmethodIsExpr(curwin)) {        foldUpdateAll(curwin);      }    } else if (gvarp == (char_u **)&curwin->w_allbuf_opt.wo_fmr) {  // 'foldmarker' -    p = vim_strchr((char *)(*varp), ','); +    p = vim_strchr(*varp, ',');      if (p == NULL) {        errmsg = N_("E536: comma required"); -    } else if ((char_u *)p == *varp || p[1] == NUL) { +    } else if (p == *varp || p[1] == NUL) {        errmsg = e_invarg;      } else if (foldmethodIsMarker(curwin)) {        foldUpdateAll(curwin);      }    } else if (gvarp == &p_cms) {  // 'commentstring' -    if (**varp != NUL && strstr((char *)(*varp), "%s") == NULL) { +    if (**varp != NUL && strstr(*varp, "%s") == NULL) {        errmsg = N_("E537: 'commentstring' must be empty or contain %s");      }    } else if (varp == &p_fdo) {  // 'foldopen' -    if (opt_strings_flags(p_fdo, p_fdo_values, &fdo_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_fdo, p_fdo_values, &fdo_flags, true) != OK) {        errmsg = e_invarg;      }    } else if (varp == &p_fcl) {  // 'foldclose' -    if (check_opt_strings(p_fcl, p_fcl_values, true) != OK) { +    if (check_opt_strings((char_u *)p_fcl, p_fcl_values, true) != OK) {        errmsg = e_invarg;      }    } else if (gvarp == (char_u **)&curwin->w_allbuf_opt.wo_fdi) {  // 'foldignore' @@ -1365,7 +1366,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      }    } else if (varp == &p_csqf) {      if (p_csqf != NULL) { -      p = (char *)p_csqf; +      p = p_csqf;        while (*p != NUL) {          if (vim_strchr(CSQF_CMDS, *p) == NULL              || p[1] == NUL @@ -1380,15 +1381,15 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er          }        }      } -  } else if (gvarp == &p_cino) {  // 'cinoptions' +  } else if (gvarp == (char_u **)&p_cino) {  // 'cinoptions'      // TODO(vim): recognize errors      parse_cino(curbuf);    } else if (varp == &p_icm) {  // 'inccommand' -    if (check_opt_strings(p_icm, p_icm_values, false) != OK) { +    if (check_opt_strings((char_u *)p_icm, p_icm_values, false) != OK) {        errmsg = e_invarg;      } -  } else if (gvarp == &p_ft) { -    if (!valid_filetype(*varp)) { +  } else if (gvarp == (char_u **)&p_ft) { +    if (!valid_filetype((char_u *)(*varp))) {        errmsg = e_invarg;      } else {        value_changed = STRCMP(oldval, *varp) != 0; @@ -1398,7 +1399,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        *value_checked = true;      }    } else if (gvarp == &p_syn) { -    if (!valid_filetype(*varp)) { +    if (!valid_filetype((char_u *)(*varp))) {        errmsg = e_invarg;      } else {        value_changed = STRCMP(oldval, *varp) != 0; @@ -1407,25 +1408,25 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        // even when the value comes from a modeline.        *value_checked = true;      } -  } else if (varp == (char_u **)&curwin->w_p_winhl) { +  } else if (varp == &curwin->w_p_winhl) {      if (!parse_winhl_opt(curwin)) {        errmsg = e_invarg;      }    } else if (varp == &p_tpf) { -    if (opt_strings_flags(p_tpf, p_tpf_values, &tpf_flags, true) != OK) { +    if (opt_strings_flags((char_u *)p_tpf, p_tpf_values, &tpf_flags, true) != OK) {        errmsg = e_invarg;      } -  } else if (varp == (char_u **)&(curbuf->b_p_vsts)) {  // 'varsofttabstop' +  } else if (varp == &(curbuf->b_p_vsts)) {  // 'varsofttabstop'      char_u *cp;      if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) {        XFREE_CLEAR(curbuf->b_p_vsts_array);      } else { -      for (cp = *varp; *cp; cp++) { +      for (cp = (char_u *)(*varp); *cp; cp++) {          if (ascii_isdigit(*cp)) {            continue;          } -        if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { +        if (*cp == ',' && cp > (char_u *)(*varp) && *(cp - 1) != ',') {            continue;          }          errmsg = e_invarg; @@ -1433,24 +1434,24 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        }        if (errmsg == NULL) {          long *oldarray = curbuf->b_p_vsts_array; -        if (tabstop_set(*varp, &(curbuf->b_p_vsts_array))) { +        if (tabstop_set((char_u *)(*varp), &(curbuf->b_p_vsts_array))) {            xfree(oldarray);          } else {            errmsg = e_invarg;          }        }      } -  } else if (varp == (char_u **)&(curbuf->b_p_vts)) {  // 'vartabstop' +  } else if (varp == &(curbuf->b_p_vts)) {  // 'vartabstop'      char_u *cp;      if (!(*varp)[0] || ((*varp)[0] == '0' && !(*varp)[1])) {        XFREE_CLEAR(curbuf->b_p_vts_array);      } else { -      for (cp = *varp; *cp; cp++) { +      for (cp = (char_u *)(*varp); *cp; cp++) {          if (ascii_isdigit(*cp)) {            continue;          } -        if (*cp == ',' && cp > *varp && *(cp - 1) != ',') { +        if (*cp == ',' && cp > (char_u *)(*varp) && *(cp - 1) != ',') {            continue;          }          errmsg = e_invarg; @@ -1458,7 +1459,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er        }        if (errmsg == NULL) {          long *oldarray = curbuf->b_p_vts_array; -        if (tabstop_set(*varp, &(curbuf->b_p_vts_array))) { +        if (tabstop_set((char_u *)(*varp), &(curbuf->b_p_vts_array))) {            xfree(oldarray);            if (foldmethodIsIndent(curwin)) {              foldUpdateAll(curwin); @@ -1484,17 +1485,17 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      }      if (varp == &p_shm) {  // 'shortmess'        p = (char *)SHM_ALL; -    } else if (varp == (char_u **)&(p_cpo)) {  // 'cpoptions' +    } else if (varp == &(p_cpo)) {  // 'cpoptions'        p = CPO_VI; -    } else if (varp == (char_u **)&(curbuf->b_p_fo)) {  // 'formatoptions' +    } else if (varp == &(curbuf->b_p_fo)) {  // 'formatoptions'        p = FO_ALL; -    } else if (varp == (char_u **)&curwin->w_p_cocu) {  // 'concealcursor' +    } else if (varp == &curwin->w_p_cocu) {  // 'concealcursor'        p = COCU_ALL;      } else if (varp == &p_mouse) {  // 'mouse'        p = MOUSE_ALL;      }      if (p != NULL) { -      for (s = (char *)(*varp); *s; s++) { +      for (s = *varp; *s; s++) {          if (vim_strchr(p, *s) == NULL) {            errmsg = illegal_char(errbuf, errbuflen, *s);            break; @@ -1505,7 +1506,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er    // If error detected, restore the previous value.    if (errmsg != NULL) { -    free_string_option((char *)(*varp)); +    free_string_option(*varp);      *varp = oldval;      // When resetting some values, need to act on it.      if (did_chartab) { @@ -1518,7 +1519,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      // Use "free_oldval", because recursiveness may change the flags under      // our fingers (esp. init_highlight()).      if (free_oldval) { -      free_string_option((char *)oldval); +      free_string_option(oldval);      }      set_option_flag(opt_idx, P_ALLOCED); @@ -1536,7 +1537,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er      // Trigger the autocommand only after setting the flags.      // When 'syntax' is set, load the syntax of that name -    if (varp == (char_u **)&(curbuf->b_p_syn)) { +    if (varp == &(curbuf->b_p_syn)) {        static int syn_recursive = 0;        syn_recursive++; @@ -1546,7 +1547,7 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er                       value_changed || syn_recursive == 1, curbuf);        curbuf->b_flags |= BF_SYN_SET;        syn_recursive--; -    } else if (varp == (char_u **)&(curbuf->b_p_ft)) { +    } else if (varp == &(curbuf->b_p_ft)) {        // 'filetype' is set, trigger the FileType autocommand        // Skip this when called from a modeline and the filetype was        // already set to this value. @@ -1566,13 +1567,13 @@ char *did_set_string_option(int opt_idx, char_u **varp, char_u *oldval, char *er                         value_changed || ft_recursive == 1, curbuf);          ft_recursive--;          // Just in case the old "curbuf" is now invalid -        if (varp != (char_u **)&(curbuf->b_p_ft)) { +        if (varp != &(curbuf->b_p_ft)) {            varp = NULL;          }          secure = secure_save;        }      } -    if (varp == (char_u **)&(curwin->w_s->b_p_spl)) { +    if (varp == &(curwin->w_s->b_p_spl)) {        char_u fname[200];        char_u *q = (char_u *)curwin->w_s->b_p_spl;  | 
