vim-patch:8.2.0956: spell test fails

Problem:    Spell test fails.
Solution:   Add missing change the spell checking.
e0ebeda4d8
This commit is contained in:
Thomas Vigouroux
2020-09-21 16:34:42 +02:00
parent cf4543a564
commit 0b42e3fedb

View File

@@ -362,6 +362,8 @@ size_t spell_check(
size_t wrongcaplen = 0; size_t wrongcaplen = 0;
int lpi; int lpi;
bool count_word = docount; bool count_word = docount;
bool use_camel_case = *wp->w_s->b_p_spo != NUL;
bool camel_case = false;
// 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.
@@ -394,9 +396,24 @@ size_t spell_check(
mi.mi_word = ptr; mi.mi_word = ptr;
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) {
// Check word starting with capital letter. // Check word starting with capital letter.
@@ -428,6 +445,11 @@ size_t spell_check(
(void)spell_casefold(ptr, (int)(mi.mi_fend - ptr), mi.mi_fword, MAXWLEN + 1); (void)spell_casefold(ptr, (int)(mi.mi_fend - ptr), mi.mi_fword, 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;