patch 8.1.1144: too strict checking of the 'spellfile' option
Problem: Too strict checking of the 'spellfile' option.
Solution: Allow for a path.
diff --git a/src/option.c b/src/option.c
index e4b1d5f..b0fad01 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6040,6 +6040,20 @@
}
/*
+ * Return TRUE if "val" is a valid 'spellfile' value.
+ */
+ static int
+valid_spellfile(char_u *val)
+{
+ char_u *s;
+
+ for (s = val; *s != NUL; ++s)
+ if (!vim_isfilec(*s) && *s != ',')
+ return FALSE;
+ return TRUE;
+}
+
+/*
* Handle string options that need some action to perform when changed.
* Returns NULL for success, or an error message for an error.
*/
@@ -7101,10 +7115,13 @@
else if (varp == &(curwin->w_s->b_p_spl)
|| varp == &(curwin->w_s->b_p_spf))
{
- if (!valid_spellang(*varp))
+ int is_spellfile = varp == &(curwin->w_s->b_p_spf);
+
+ if ((is_spellfile && !valid_spellfile(*varp))
+ || (!is_spellfile && !valid_spellang(*varp)))
errmsg = e_invarg;
else
- errmsg = did_set_spell_option(varp == &(curwin->w_s->b_p_spf));
+ errmsg = did_set_spell_option(is_spellfile);
}
/* When 'spellcapcheck' is set compile the regexp program. */
else if (varp == &(curwin->w_s->b_p_spc))