mirror of
https://github.com/neovim/neovim.git
synced 2025-10-04 08:56:29 +00:00
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:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user