mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
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'.
This commit is contained in:
@@ -225,7 +225,8 @@ buf_init_chartab(
|
|||||||
}
|
}
|
||||||
else
|
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;
|
g_chartab[c] |= CT_PRINT_CHAR;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -846,8 +847,10 @@ vim_iswordp_buf(char_u *p, buf_T *buf)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 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).
|
* Assume characters above 0x100 are valid (multi-byte).
|
||||||
|
* To be used for commands like "gf".
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
vim_isfilec(int c)
|
vim_isfilec(int c)
|
||||||
@@ -855,6 +858,16 @@ vim_isfilec(int c)
|
|||||||
return (c >= 0x100 || (c > 0 && (g_chartab[c] & CT_FNAME_CHAR)));
|
return (c >= 0x100 || (c > 0 && (g_chartab[c] & CT_FNAME_CHAR)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
* return TRUE if 'c' is a valid file-name character or a wildcard character
|
||||||
* Assume characters above 0x100 are valid (multi-byte).
|
* Assume characters above 0x100 are valid (multi-byte).
|
||||||
|
@@ -25,6 +25,7 @@ int vim_iswordc_buf(int c, buf_T *buf);
|
|||||||
int vim_iswordp(char_u *p);
|
int vim_iswordp(char_u *p);
|
||||||
int vim_iswordp_buf(char_u *p, buf_T *buf);
|
int vim_iswordp_buf(char_u *p, buf_T *buf);
|
||||||
int vim_isfilec(int c);
|
int vim_isfilec(int c);
|
||||||
|
int vim_is_fname_char(int c);
|
||||||
int vim_isfilec_or_wc(int c);
|
int vim_isfilec_or_wc(int c);
|
||||||
int vim_isprintc(int c);
|
int vim_isprintc(int c);
|
||||||
int vim_isprintc_strict(int c);
|
int vim_isprintc_strict(int c);
|
||||||
|
@@ -4363,7 +4363,7 @@ valid_spellfile(char_u *val)
|
|||||||
char_u *s;
|
char_u *s;
|
||||||
|
|
||||||
for (s = val; *s != NUL; ++s)
|
for (s = val; *s != NUL; ++s)
|
||||||
if (!vim_isfilec(*s) && *s != ',' && *s != ' ')
|
if (!vim_is_fname_char(*s))
|
||||||
return FALSE;
|
return FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@@ -1160,4 +1160,12 @@ func Test_mkspellmem_opt()
|
|||||||
call assert_fails('set mkspellmem=1000,50,0', 'E474:')
|
call assert_fails('set mkspellmem=1000,50,0', 'E474:')
|
||||||
endfunc
|
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
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -735,6 +735,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
138,
|
||||||
/**/
|
/**/
|
||||||
137,
|
137,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user