mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
vim-patch:7.4.1697
Problem: Display problems when the 'ambiwidth' and 'emoji' options are not
set properly or the terminal doesn't behave as expected.
Solution: After drawing an ambiguous width character always position the
cursor.
cb0700844c
This commit is contained in:
parent
9419a4c86c
commit
9e1c659666
@ -1724,12 +1724,11 @@ int utf_class(int c)
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
int utf_ambiguous_width(int c)
|
||||||
* Code for Unicode case-dependent operations. Based on notes in
|
{
|
||||||
* http://www.unicode.org/Public/UNIDATA/CaseFolding.txt
|
return c >= 0x80 && (intable(ambiguous, ARRAY_SIZE(ambiguous), c)
|
||||||
* This code uses simple case folding, not full case folding.
|
|| intable(emoji_all, ARRAY_SIZE(emoji_all), c));
|
||||||
* Last updated for Unicode 5.2.
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Generic conversion function for case operations.
|
* Generic conversion function for case operations.
|
||||||
|
@ -397,7 +397,10 @@ static void send_output(uint8_t **ptr)
|
|||||||
size_t clen = (size_t)mb_ptr2len(p);
|
size_t clen = (size_t)mb_ptr2len(p);
|
||||||
UI_CALL(put, p, (size_t)clen);
|
UI_CALL(put, p, (size_t)clen);
|
||||||
col++;
|
col++;
|
||||||
if (mb_ptr2cells(p) > 1) {
|
if (utf_ambiguous_width(*p)) {
|
||||||
|
pending_cursor_update = true;
|
||||||
|
flush_cursor_update();
|
||||||
|
} else if (mb_ptr2cells(p) > 1) {
|
||||||
// double cell character, blank the next cell
|
// double cell character, blank the next cell
|
||||||
UI_CALL(put, NULL, 0);
|
UI_CALL(put, NULL, 0);
|
||||||
col++;
|
col++;
|
||||||
|
Loading…
Reference in New Issue
Block a user