patch 8.0.0380: with 'linebreak' double wide char wraps badly
Problem: With 'linebreak' set and 'breakat' includes ">" a double-wide
character results in "<<" displayed.
Solution: Check for the character not to be replaced. (Ozaki Kiichi,
closes #1456)
diff --git a/src/screen.c b/src/screen.c
index d801c4c..cc9c9f6 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -4189,6 +4189,8 @@
}
else
{
+ int c0;
+
if (p_extra_free != NULL)
{
vim_free(p_extra_free);
@@ -4197,7 +4199,7 @@
/*
* Get a character from the line itself.
*/
- c = *ptr;
+ c0 = c = *ptr;
#ifdef FEAT_MBYTE
if (has_mbyte)
{
@@ -4214,7 +4216,7 @@
/* Overlong encoded ASCII or ASCII with composing char
* is displayed normally, except a NUL. */
if (mb_c < 0x80)
- c = mb_c;
+ c0 = c = mb_c;
mb_utf8 = TRUE;
/* At start of the line we can have a composing char.
@@ -4538,7 +4540,8 @@
/*
* Found last space before word: check for line break.
*/
- if (wp->w_p_lbr && vim_isbreak(c) && !vim_isbreak(*ptr))
+ if (wp->w_p_lbr && c0 == c
+ && vim_isbreak(c) && !vim_isbreak(*ptr))
{
# ifdef FEAT_MBYTE
int mb_off = has_mbyte ? (*mb_head_off)(line, ptr - 1) : 0;