patch 9.0.0138: not enough characters accepted for 'spellfile'
Problem: Not enough characters accepted for 'spellfile'.
Solution: Add vim_is_fname_char() and use it for 'spellfile'.
diff --git a/src/charset.c b/src/charset.c
index c213704..37c3336 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -225,7 +225,8 @@
}
else
{
- g_chartab[c] = (g_chartab[c] & ~CT_CELL_MASK) + 1;
+ g_chartab[c] = (g_chartab[c] & ~CT_CELL_MASK)
+ + 1;
g_chartab[c] |= CT_PRINT_CHAR;
}
}
@@ -846,8 +847,10 @@
}
/*
- * return TRUE if 'c' is a valid file-name character
+ * Return TRUE if 'c' is a valid file-name character as specified with the
+ * 'isfname' option.
* Assume characters above 0x100 are valid (multi-byte).
+ * To be used for commands like "gf".
*/
int
vim_isfilec(int c)
@@ -856,6 +859,16 @@
}
/*
+ * Return TRUE if 'c' is a valid file-name character, including characters left
+ * out of 'isfname' to make "gf" work, such as comma, space, '@', etc.
+ */
+ int
+vim_is_fname_char(int c)
+{
+ return vim_isfilec(c) || c == ',' || c == ' ' || c == '@';
+}
+
+/*
* return TRUE if 'c' is a valid file-name character or a wildcard character
* Assume characters above 0x100 are valid (multi-byte).
* Explicitly interpret ']' as a wildcard character as mch_has_wildcard("]")
diff --git a/src/proto/charset.pro b/src/proto/charset.pro
index 97aa71e..ebb548a 100644
--- a/src/proto/charset.pro
+++ b/src/proto/charset.pro
@@ -25,6 +25,7 @@
int vim_iswordp(char_u *p);
int vim_iswordp_buf(char_u *p, buf_T *buf);
int vim_isfilec(int c);
+int vim_is_fname_char(int c);
int vim_isfilec_or_wc(int c);
int vim_isprintc(int c);
int vim_isprintc_strict(int c);
diff --git a/src/spell.c b/src/spell.c
index 24abce4..8ca9313 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -4363,7 +4363,7 @@
char_u *s;
for (s = val; *s != NUL; ++s)
- if (!vim_isfilec(*s) && *s != ',' && *s != ' ')
+ if (!vim_is_fname_char(*s))
return FALSE;
return TRUE;
}
diff --git a/src/testdir/test_spellfile.vim b/src/testdir/test_spellfile.vim
index 38d1ec0..43dfad4 100644
--- a/src/testdir/test_spellfile.vim
+++ b/src/testdir/test_spellfile.vim
@@ -1160,4 +1160,12 @@
call assert_fails('set mkspellmem=1000,50,0', 'E474:')
endfunc
+" 'spellfile' accepts '@' on top of 'isfname'.
+def Test_spellfile_allow_at_character()
+ mkdir('Xtest/the foo@bar,dir', 'p')
+ &spellfile = './Xtest/the foo@bar,dir/Xspellfile.add'
+ &spellfile = ''
+ delete('Xtest', 'rf')
+enddef
+
" vim: shiftwidth=2 sts=2 expandtab
diff --git a/src/version.c b/src/version.c
index e3e7247..a62fb92 100644
--- a/src/version.c
+++ b/src/version.c
@@ -736,6 +736,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 138,
+/**/
137,
/**/
136,