From: Bram Moolenaar Date: Wed, 10 Apr 2019 20:33:41 +0000 (+0200) Subject: patch 8.1.1144: too strict checking of the 'spellfile' option X-Git-Tag: v8.1.1144 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=862f1e17eaf2b9c6617dfba31d8487cde462658d;p=vim 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 e4b1d5f43..b0fad01ed 100644 --- a/src/option.c +++ b/src/option.c @@ -6039,6 +6039,20 @@ valid_spellang(char_u *val) return valid_name(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 @@ -771,6 +771,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1144, /**/ 1143, /**/