forked from aniani/vim
patch 8.2.0956: spell test fails
Problem: Spell test fails. Solution: Add missing change the spell checking.
This commit is contained in:
26
src/spell.c
26
src/spell.c
@@ -173,6 +173,8 @@ spell_check(
|
|||||||
int wrongcaplen = 0;
|
int wrongcaplen = 0;
|
||||||
int lpi;
|
int lpi;
|
||||||
int count_word = docount;
|
int count_word = docount;
|
||||||
|
int use_camel_case = *wp->w_s->b_p_spo != NUL;
|
||||||
|
int camel_case = 0;
|
||||||
|
|
||||||
// A word never starts at a space or a control character. Return quickly
|
// A word never starts at a space or a control character. Return quickly
|
||||||
// then, skipping over the character.
|
// then, skipping over the character.
|
||||||
@@ -204,9 +206,27 @@ spell_check(
|
|||||||
mi.mi_fend = ptr;
|
mi.mi_fend = ptr;
|
||||||
if (spell_iswordp(mi.mi_fend, wp))
|
if (spell_iswordp(mi.mi_fend, wp))
|
||||||
{
|
{
|
||||||
|
int prev_upper;
|
||||||
|
int this_upper;
|
||||||
|
|
||||||
|
if (use_camel_case)
|
||||||
|
{
|
||||||
|
c = PTR2CHAR(mi.mi_fend);
|
||||||
|
this_upper = SPELL_ISUPPER(c);
|
||||||
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
|
{
|
||||||
MB_PTR_ADV(mi.mi_fend);
|
MB_PTR_ADV(mi.mi_fend);
|
||||||
while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp));
|
if (use_camel_case)
|
||||||
|
{
|
||||||
|
prev_upper = this_upper;
|
||||||
|
c = PTR2CHAR(mi.mi_fend);
|
||||||
|
this_upper = SPELL_ISUPPER(c);
|
||||||
|
camel_case = !prev_upper && this_upper;
|
||||||
|
}
|
||||||
|
} while (*mi.mi_fend != NUL && spell_iswordp(mi.mi_fend, wp)
|
||||||
|
&& !camel_case);
|
||||||
|
|
||||||
if (capcol != NULL && *capcol == 0 && wp->w_s->b_cap_prog != NULL)
|
if (capcol != NULL && *capcol == 0 && wp->w_s->b_cap_prog != NULL)
|
||||||
{
|
{
|
||||||
@@ -237,6 +257,10 @@ spell_check(
|
|||||||
MAXWLEN + 1);
|
MAXWLEN + 1);
|
||||||
mi.mi_fwordlen = (int)STRLEN(mi.mi_fword);
|
mi.mi_fwordlen = (int)STRLEN(mi.mi_fword);
|
||||||
|
|
||||||
|
if (camel_case)
|
||||||
|
// Introduce a fake word end space into the folded word.
|
||||||
|
mi.mi_fword[mi.mi_fwordlen - 1] = ' ';
|
||||||
|
|
||||||
// The word is bad unless we recognize it.
|
// The word is bad unless we recognize it.
|
||||||
mi.mi_result = SP_BAD;
|
mi.mi_result = SP_BAD;
|
||||||
mi.mi_result2 = SP_BAD;
|
mi.mi_result2 = SP_BAD;
|
||||||
|
@@ -754,6 +754,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 */
|
||||||
|
/**/
|
||||||
|
956,
|
||||||
/**/
|
/**/
|
||||||
955,
|
955,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user