summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1078
blob: 3390ef63f1939e67de11df176d67bfb4e0958ca1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
To: vim_dev@googlegroups.com
Subject: Patch 8.1.1078
Fcc: outbox
From: Bram Moolenaar <Bram@moolenaar.net>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
------------

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 -- Bram@Moolenaar.net -- 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    ///