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.

Raspunde prin e-mail lui