aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/option.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/option.c')
-rw-r--r--src/nvim/option.c96
1 files changed, 47 insertions, 49 deletions
diff --git a/src/nvim/option.c b/src/nvim/option.c
index f870f07e15..09a597f7e2 100644
--- a/src/nvim/option.c
+++ b/src/nvim/option.c
@@ -621,7 +621,7 @@ static void set_option_default(int opt_idx, int opt_flags)
// freeing and allocating the value.
if (options[opt_idx].indir != PV_NONE) {
set_string_option_direct(NULL, opt_idx,
- options[opt_idx].def_val, opt_flags, 0);
+ (char *)options[opt_idx].def_val, opt_flags, 0);
} else {
if ((opt_flags & OPT_FREE) && (flags & P_ALLOCED)) {
free_string_option(*(char_u **)(varp));
@@ -944,7 +944,7 @@ void ex_set(exarg_T *eap)
if (eap->forceit) {
flags |= OPT_ONECOLUMN;
}
- (void)do_set((char_u *)eap->arg, flags);
+ (void)do_set(eap->arg, flags);
}
/// Parse 'arg' for option settings.
@@ -962,7 +962,7 @@ void ex_set(exarg_T *eap)
/// @param arg option string (may be written to!)
///
/// @return FAIL if an error is detected, OK otherwise
-int do_set(char_u *arg, int opt_flags)
+int do_set(char *arg, int opt_flags)
{
int opt_idx;
char *errmsg;
@@ -990,7 +990,7 @@ int do_set(char_u *arg, int opt_flags)
while (*arg != NUL) { // loop to process all options
errmsg = NULL;
- startarg = arg; // remember for error message
+ startarg = (char_u *)arg; // remember for error message
if (STRNCMP(arg, "all", 3) == 0 && !isalpha(arg[3])
&& !(opt_flags & OPT_MODELINE)) {
@@ -1043,7 +1043,7 @@ int do_set(char_u *arg, int opt_flags)
}
len++;
if (opt_idx == -1) {
- key = find_key_option(arg + 1, true);
+ key = find_key_option((char_u *)arg + 1, true);
}
} else {
len = 0;
@@ -1057,12 +1057,12 @@ int do_set(char_u *arg, int opt_flags)
}
opt_idx = findoption_len((const char *)arg, (size_t)len);
if (opt_idx == -1) {
- key = find_key_option(arg, false);
+ key = find_key_option((char_u *)arg, false);
}
}
// remember character after option name
- afterchar = arg[len];
+ afterchar = (uint8_t)arg[len];
// skip white space, allow ":set ai ?"
while (ascii_iswhite(arg[len])) {
@@ -1084,7 +1084,7 @@ int do_set(char_u *arg, int opt_flags)
len++;
}
}
- nextchar = arg[len];
+ nextchar = (uint8_t)arg[len];
if (opt_idx == -1 && key == 0) { // found a mismatch: skip
errmsg = N_("E518: Unknown option");
@@ -1282,14 +1282,14 @@ int do_set(char_u *arg, int opt_flags)
|| *arg == '^'
|| (*arg != NUL && (!arg[1] || ascii_iswhite(arg[1]))
&& !ascii_isdigit(*arg)))) {
- value = string_to_key(arg);
+ value = string_to_key((char_u *)arg);
if (value == 0 && (long *)varp != &p_wcm) {
errmsg = e_invarg;
goto skip;
}
} else if (*arg == '-' || ascii_isdigit(*arg)) {
// Allow negative, octal and hex numbers.
- vim_str2nr(arg, NULL, &i, STR2NR_ALL, &value, NULL, 0, true);
+ vim_str2nr((char_u *)arg, NULL, &i, STR2NR_ALL, &value, NULL, 0, true);
if (i == 0 || (arg[i] != NUL && !ascii_iswhite(arg[i]))) {
errmsg = N_("E521: Number required after =");
goto skip;
@@ -1391,8 +1391,8 @@ int do_set(char_u *arg, int opt_flags)
if (varp == (char_u *)&p_kp
&& (*arg == NUL || *arg == ' ')) {
STRCPY(errbuf, ":help");
- save_arg = arg;
- arg = (char_u *)errbuf;
+ save_arg = (char_u *)arg;
+ arg = errbuf;
}
/*
* Convert 'backspace' number to string, for
@@ -1435,7 +1435,7 @@ int do_set(char_u *arg, int opt_flags)
else if (varp == (char_u *)&p_ww
&& ascii_isdigit(*arg)) {
*errbuf = NUL;
- i = getdigits_int(&arg, true, 0);
+ i = getdigits_int((char_u **)&arg, true, 0);
if (i & 1) {
STRLCAT(errbuf, "b,", sizeof(errbuf));
}
@@ -1451,8 +1451,8 @@ int do_set(char_u *arg, int opt_flags)
if (i & 16) {
STRLCAT(errbuf, "[,],", sizeof(errbuf));
}
- save_arg = arg;
- arg = (char_u *)errbuf;
+ save_arg = (char_u *)arg;
+ arg = errbuf;
}
/*
* Remove '>' before 'dir' and 'bdir', for
@@ -1498,14 +1498,14 @@ int do_set(char_u *arg, int opt_flags)
) {
arg++; // remove backslash
}
- i = utfc_ptr2len((char *)arg);
+ i = utfc_ptr2len(arg);
if (i > 1) {
// copy multibyte char
memmove(s, arg, (size_t)i);
arg += i;
s += i;
} else {
- *s++ = *arg++;
+ *s++ = (uint8_t)(*arg++);
}
}
*s = NUL;
@@ -1622,7 +1622,7 @@ int do_set(char_u *arg, int opt_flags)
}
if (save_arg != NULL) { // number for 'whichwrap'
- arg = save_arg;
+ arg = (char *)save_arg;
}
new_value_alloced = true;
}
@@ -1710,7 +1710,7 @@ skip:
arg++;
}
}
- arg = (char_u *)skipwhite((char *)arg);
+ arg = skipwhite(arg);
if (*arg != '=') {
break;
}
@@ -1720,12 +1720,12 @@ skip:
if (errmsg != NULL) {
STRLCPY(IObuff, _(errmsg), IOSIZE);
i = (int)STRLEN(IObuff) + 2;
- if (i + (arg - startarg) < IOSIZE) {
+ if (i + ((char_u *)arg - startarg) < IOSIZE) {
// append the argument with the error
STRCAT(IObuff, ": ");
- assert(arg >= startarg);
- memmove(IObuff + i, startarg, (size_t)(arg - startarg));
- IObuff[i + (arg - startarg)] = NUL;
+ assert((char_u *)arg >= startarg);
+ memmove(IObuff + i, startarg, (size_t)((char_u *)arg - startarg));
+ IObuff[i + ((char_u *)arg - startarg)] = NUL;
}
// make sure all characters are printable
trans_characters(IObuff, IOSIZE);
@@ -1737,7 +1737,7 @@ skip:
return FAIL;
}
- arg = (char_u *)skipwhite((char *)arg);
+ arg = skipwhite(arg);
}
theend:
@@ -2181,11 +2181,11 @@ static int shada_idx = -1;
/// "set_sid".
///
/// @param opt_flags OPT_FREE, OPT_LOCAL and/or OPT_GLOBAL
-void set_string_option_direct(const char *name, int opt_idx, const char_u *val, int opt_flags,
+void set_string_option_direct(const char *name, int opt_idx, const char *val, int opt_flags,
int set_sid)
{
- char_u *s;
- char_u **varp;
+ char *s;
+ char **varp;
int both = (opt_flags & (OPT_LOCAL | OPT_GLOBAL)) == 0;
int idx = opt_idx;
@@ -2204,18 +2204,17 @@ void set_string_option_direct(const char *name, int opt_idx, const char_u *val,
assert((void *)options[idx].var != (void *)&p_shada);
- s = vim_strsave(val);
+ s = xstrdup(val);
{
- varp = (char_u **)get_varp_scope(&(options[idx]),
- both ? OPT_LOCAL : opt_flags);
+ varp = (char **)get_varp_scope(&(options[idx]), both ? OPT_LOCAL : opt_flags);
if ((opt_flags & OPT_FREE) && (options[idx].flags & P_ALLOCED)) {
- free_string_option(*varp);
+ free_string_option((char_u *)(*varp));
}
*varp = s;
// For buffer/window local option may also set the global value.
if (both) {
- set_string_option_global(idx, varp);
+ set_string_option_global(idx, (char_u **)varp);
}
options[idx].flags |= P_ALLOCED;
@@ -2223,8 +2222,8 @@ void set_string_option_direct(const char *name, int opt_idx, const char_u *val,
/* When setting both values of a global option with a local value,
* make the local value empty, so that the global value is used. */
if (((int)options[idx].indir & PV_BOTH) && both) {
- free_string_option(*varp);
- *varp = empty_option;
+ free_string_option((char_u *)(*varp));
+ *varp = (char *)empty_option;
}
if (set_sid != SID_NONE) {
sctx_T script_ctx;
@@ -2596,6 +2595,8 @@ ambw_end:
// only encoding=utf-8 allowed
if (STRCMP(p_enc, "utf-8") != 0) {
errmsg = e_unsupportedoption;
+ } else {
+ spell_reload();
}
}
}
@@ -2812,7 +2813,7 @@ ambw_end:
}
} else if (gvarp == &p_sbr) { // 'showbreak'
for (s = *varp; *s;) {
- if (ptr2cells(s) != 1) {
+ if (ptr2cells((char *)s) != 1) {
errmsg = N_("E595: 'showbreak' contains unprintable or wide character");
}
MB_PTR_ADV(s);
@@ -2832,7 +2833,7 @@ ambw_end:
int flagval = (varp == &p_titlestring) ? STL_IN_TITLE : STL_IN_ICON;
// NULL => statusline syntax
- if (vim_strchr((char *)(*varp), '%') && check_stl_option(*varp) == NULL) {
+ if (vim_strchr((char *)(*varp), '%') && check_stl_option((char *)(*varp)) == NULL) {
stl_syntax |= flagval;
} else {
stl_syntax &= ~flagval;
@@ -2941,14 +2942,14 @@ ambw_end:
s++;
}
wid = getdigits_int(&s, true, 0);
- if (wid && *s == '(' && (errmsg = check_stl_option(p_ruf)) == NULL) {
+ if (wid && *s == '(' && (errmsg = check_stl_option((char *)p_ruf)) == NULL) {
ru_wid = wid;
} else {
- errmsg = check_stl_option(p_ruf);
+ errmsg = check_stl_option((char *)p_ruf);
}
} else if (varp == &p_ruf || s[0] != '%' || s[1] != '!') {
// check 'statusline', 'winbar' or 'tabline' only if it doesn't start with "%!"
- errmsg = check_stl_option(s);
+ errmsg = check_stl_option((char *)s);
}
if (varp == &p_ruf && errmsg == NULL) {
comp_col();
@@ -3025,6 +3026,7 @@ ambw_end:
} else if (varp == &p_pt) {
// 'pastetoggle': translate key codes like in a mapping
if (*p_pt) {
+ p = NULL;
(void)replace_termcodes((char *)p_pt,
STRLEN(p_pt),
(char **)&p, REPTERM_FROM_PART | REPTERM_DO_LT, NULL,
@@ -3783,7 +3785,7 @@ static char *set_chars_option(win_T *wp, char_u **varp, bool set)
/// Check validity of options with the 'statusline' format.
/// Return an untranslated error message or NULL.
-char *check_stl_option(char_u *s)
+char *check_stl_option(char *s)
{
int groupdepth = 0;
static char errbuf[80];
@@ -5322,7 +5324,7 @@ static void showoptions(int all, int opt_flags)
len = 1; // a toggle option fits always
} else {
option_value2string(p, opt_flags);
- len = (int)STRLEN(p->fullname) + vim_strsize(NameBuff) + 1;
+ len = (int)STRLEN(p->fullname) + vim_strsize((char *)NameBuff) + 1;
}
if ((len <= INC - GAP && run == 1)
|| (len > INC - GAP && run == 2)) {
@@ -5435,7 +5437,7 @@ static void showoneopt(vimoption_T *p, int opt_flags)
msg_putchar('=');
// put value string in NameBuff
option_value2string(p, opt_flags);
- msg_outtrans(NameBuff);
+ msg_outtrans((char *)NameBuff);
}
silent_mode = save_silent;
@@ -5628,7 +5630,7 @@ static int put_setstring(FILE *fd, char *cmd, char *name, char_u **valuep, uint6
// replace home directory in the whole option value into "buf"
buf = xmalloc(size);
- home_replace(NULL, *valuep, buf, size, false);
+ home_replace(NULL, (char *)(*valuep), (char *)buf, size, false);
// If the option value is longer than MAXPATHL, we need to append
// each comma separated part of the option separately, so that it
@@ -7039,7 +7041,7 @@ static void option_value2string(vimoption_T *opp, int opt_flags)
if (varp == NULL) { // Just in case.
NameBuff[0] = NUL;
} else if (opp->flags & P_EXPAND) {
- home_replace(NULL, varp, NameBuff, MAXPATHL, false);
+ home_replace(NULL, (char *)varp, (char *)NameBuff, MAXPATHL, false);
// Translate 'pastetoggle' into special key names.
} else if ((char_u **)opp->var == &p_pt) {
str2specialbuf((const char *)p_pt, (char *)NameBuff, MAXPATHL);
@@ -7960,11 +7962,7 @@ void set_fileformat(int eol_style, int opt_flags)
// p is NULL if "eol_style" is EOL_UNKNOWN.
if (p != NULL) {
- set_string_option_direct("ff",
- -1,
- (char_u *)p,
- OPT_FREE | opt_flags,
- 0);
+ set_string_option_direct("ff", -1, p, OPT_FREE | opt_flags, 0);
}
// This may cause the buffer to become (un)modified.