summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/option.c21
-rw-r--r--src/testdir/test_spell.vim5
-rw-r--r--src/version.c2
3 files changed, 26 insertions, 2 deletions
diff --git a/src/option.c b/src/option.c
index e4b1d5f43..b0fad01ed 100644
--- a/src/option.c
+++ b/src/option.c
@@ -6040,6 +6040,20 @@ valid_spellang(char_u *val)
}
/*
+ * 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 @@ did_set_string_option(
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))
diff --git a/src/testdir/test_spell.vim b/src/testdir/test_spell.vim
index 6bf43ac3f..b3143c95f 100644
--- a/src/testdir/test_spell.vim
+++ b/src/testdir/test_spell.vim
@@ -376,6 +376,11 @@ func Test_zz_sal_and_addition()
call assert_equal("elekwint", SecondSpellWord())
endfunc
+func Test_spellfile_value()
+ set spellfile=Xdir/Xtest.latin1.add
+ set spellfile=Xdir/Xtest.utf-8.add,Xtest_other.add
+endfunc
+
func Test_region_error()
messages clear
call writefile(["/regions=usgbnz", "elequint/0"], "Xtest.latin1.add")
diff --git a/src/version.c b/src/version.c
index 3e0e95f41..1ffc75127 100644
--- a/src/version.c
+++ b/src/version.c
@@ -772,6 +772,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1144,
+/**/
1143,
/**/
1142,