search: match composed characters when extending the search string to the next word boundary

This commit is contained in:
Daniel Eklöf 2021-01-26 20:26:34 +01:00
parent e9fa8bb219
commit 2310ffd1b8
No known key found for this signature in database
GPG key ID: 5BBD4992C116573F

View file

@ -473,6 +473,14 @@ search_match_to_end_of_word(struct terminal *term, bool spaces_only)
if (wc == CELL_MULT_COL_SPACER)
continue;
const struct composed *composed = NULL;
if (wc >= CELL_COMB_CHARS_LO &&
wc < (CELL_COMB_CHARS_LO + term->composed_count))
{
composed = &term->composed[wc - CELL_COMB_CHARS_LO];
wc = composed->base;
}
if (wc == 0 || (!first && !isword(wc, spaces_only, term->conf->word_delimiters))) {
done = true;
break;
@ -480,6 +488,11 @@ search_match_to_end_of_word(struct terminal *term, bool spaces_only)
first = false;
tll_push_back(new_chars, wc);
if (composed != NULL) {
for (size_t i = 0; i < composed->count; i++)
tll_push_back(new_chars, composed->combining[i]);
}
}
if (done)