Patch 8.1.1078
Problem: When 'listchars' is set a composing char on a space is wrong.
Solution: Separate handling a non-breaking space and a space. (Yasuhiro
Matsumoto, closes #4046)
Files: src/screen.c, src/testdir/test_listchars.vim
*** ../vim-8.1.1077/src/screen.c 2019-03-29 18:29:28.448854292 +0100
--- src/screen.c 2019-03-30 15:28:43.077813100 +0100
***************
*** 4808,4837 ****
}
#endif
! /* 'list': change char 160 to lcs_nbsp and space to lcs_space.
! */
! if (wp->w_p_list
! && (((c == 160
! || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f)))
! && lcs_nbsp)
! || (c == ' ' && lcs_space && ptr - line <= trailcol)))
{
! c = (c == ' ') ? lcs_space : lcs_nbsp;
! if (area_attr == 0 && search_attr == 0)
{
! n_attr = 1;
! extra_attr = HL_ATTR(HLF_8);
! saved_attr2 = char_attr; /* save current attr */
}
! mb_c = c;
! if (enc_utf8 && utf_char2len(c) > 1)
{
! mb_utf8 = TRUE;
! u8cc[0] = 0;
! c = 0xc0;
}
- else
- mb_utf8 = FALSE;
}
if (trailcol != MAXCOL && ptr > line + trailcol && c == ' ')
--- 4808,4841 ----
}
#endif
! // 'list': change char 160 to lcs_nbsp and space to lcs_space.
! if (wp->w_p_list)
{
! if ((c == 160
! || (mb_utf8 && (mb_c == 160 || mb_c == 0x202f)))
! && lcs_nbsp)
{
! c = lcs_nbsp;
! mb_c = c;
! if (enc_utf8 && utf_char2len(c) > 1)
! {
! mb_utf8 = TRUE;
! u8cc[0] = 0;
! c = 0xc0;
! }
! else
! mb_utf8 = FALSE;
}
! else if (c == ' ' && lcs_space && ptr - line <= trailcol)
{
! c = lcs_space;
! if (mb_utf8 == FALSE && area_attr == 0 && search_attr
== 0)
! {
! n_attr = 1;
! extra_attr = HL_ATTR(HLF_8);
! saved_attr2 = char_attr; // save current attr
! }
}
}
if (trailcol != MAXCOL && ptr > line + trailcol && c == ' ')
*** ../vim-8.1.1077/src/testdir/test_listchars.vim 2019-01-31
21:57:15.517462657 +0100
--- src/testdir/test_listchars.vim 2019-03-30 15:23:31.463867726 +0100
***************
*** 113,115 ****
--- 113,138 ----
enew!
set listchars& ff&
endfunc
+
+ func Test_listchars_composing()
+ enew!
+ let oldencoding=&encoding
+ set encoding=utf-8
+ set ff=unix
+ set list
+
+ set listchars=eol:$,space:_
+ call append(0, [
+ \ " \u3099 \u309A"
+ \ ])
+ let expected = [
+ \ "_ \u3099^I \u309A$"
+ \ ]
+ redraw!
+ call cursor(1, 1)
+ let got = ScreenLinesUtf8(1, virtcol('$'))
+ bw!
+ call assert_equal(expected, got)
+ let &encoding=oldencoding
+ set listchars& ff&
+ endfunction
*** ../vim-8.1.1077/src/version.c 2019-03-30 14:26:15.268619122 +0100
--- src/version.c 2019-03-30 15:34:33.791529846 +0100
***************
*** 777,778 ****
--- 777,780 ----
{ /* Add new patch number below this line */
+ /**/
+ 1078,
/**/
--
hundred-and-one symptoms of being an internet addict:
158. You get a tuner card so you can watch TV while surfing.
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.