# HG changeset patch # User Bram Moolenaar # Date 1591821004 -7200 # Node ID 411348fb49bab453609b623ac1d3b2c5180315e2 # Parent 18442f89dc2b4a14f9c47074e776b3c856a1cb53 patch 8.2.0956: spell test fails Commit: https://github.com/vim/vim/commit/e0ebeda4d8219a8955001b43ef7a9268452ef7f5 Author: Bram Moolenaar Date: Wed Jun 10 22:17:58 2020 +0200 patch 8.2.0956: spell test fails Problem: Spell test fails. Solution: Add missing change the spell checking. diff --git a/src/spell.c b/src/spell.c --- a/src/spell.c +++ b/src/spell.c @@ -173,6 +173,8 @@ spell_check( int wrongcaplen = 0; int lpi; 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 // then, skipping over the character. @@ -204,9 +206,27 @@ spell_check( mi.mi_fend = ptr; 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 + { 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) { @@ -237,6 +257,10 @@ spell_check( MAXWLEN + 1); 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. mi.mi_result = SP_BAD; mi.mi_result2 = SP_BAD; diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -755,6 +755,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 956, +/**/ 955, /**/ 954,