Mercurial > vim
changeset 20808:411348fb49ba v8.2.0956
patch 8.2.0956: spell test fails
Commit: https://github.com/vim/vim/commit/e0ebeda4d8219a8955001b43ef7a9268452ef7f5
Author: Bram Moolenaar <Bram@vim.org>
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.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 10 Jun 2020 22:30:04 +0200 |
parents | 18442f89dc2b |
children | f804e6f0c0bd |
files | src/spell.c src/version.c |
diffstat | 2 files changed, 27 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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;