Mercurial > vim
diff src/screen.c @ 10982:5e20c9f96cd5 v8.0.0380
patch 8.0.0380: with 'linebreak' double wide char wraps badly
commit https://github.com/vim/vim/commit/38632faf635f6434441827e136bceb5a930c59ad
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Feb 26 19:40:59 2017 +0100
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)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 26 Feb 2017 19:45:04 +0100 |
parents | 5b3e671ef6a2 |
children | 62bcadce6c82 |
line wrap: on
line diff
--- a/src/screen.c +++ b/src/screen.c @@ -4189,6 +4189,8 @@ win_line( } else { + int c0; + if (p_extra_free != NULL) { vim_free(p_extra_free); @@ -4197,7 +4199,7 @@ win_line( /* * Get a character from the line itself. */ - c = *ptr; + c0 = c = *ptr; #ifdef FEAT_MBYTE if (has_mbyte) { @@ -4214,7 +4216,7 @@ win_line( /* 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 @@ win_line( /* * 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;