Skip to content

Commit e32eccf

Browse files
committed
Merge remote-tracking branch 'vim/master'
2 parents ac15324 + 9bc01eb commit e32eccf

File tree

4 files changed

+73
-36
lines changed

4 files changed

+73
-36
lines changed

src/screen.c

Lines changed: 41 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -3345,14 +3345,18 @@ win_line(wp, lnum, startrow, endrow, nochange)
33453345
}
33463346
#endif
33473347

3348-
/* find start of trailing whitespace */
3349-
if (wp->w_p_list && lcs_trail)
3348+
if (wp->w_p_list)
33503349
{
3351-
trailcol = (colnr_T)STRLEN(ptr);
3352-
while (trailcol > (colnr_T)0 && vim_iswhite(ptr[trailcol - 1]))
3353-
--trailcol;
3354-
trailcol += (colnr_T) (ptr - line);
3355-
extra_check = TRUE;
3350+
if (lcs_space || lcs_trail)
3351+
extra_check = TRUE;
3352+
/* find start of trailing whitespace */
3353+
if (lcs_trail)
3354+
{
3355+
trailcol = (colnr_T)STRLEN(ptr);
3356+
while (trailcol > (colnr_T)0 && vim_iswhite(ptr[trailcol - 1]))
3357+
--trailcol;
3358+
trailcol += (colnr_T) (ptr - line);
3359+
}
33563360
}
33573361

33583362
/*
@@ -4354,35 +4358,6 @@ win_line(wp, lnum, startrow, endrow, nochange)
43544358
#endif
43554359
++ptr;
43564360

4357-
/* 'list': change char 160 to lcs_nbsp and space to lcs_space. */
4358-
if (wp->w_p_list
4359-
&& (((c == 160
4360-
#ifdef FEAT_MBYTE
4361-
|| (mb_utf8 && (mb_c == 160 || mb_c == 0x202f))
4362-
#endif
4363-
) && lcs_nbsp)
4364-
|| (c == ' ' && lcs_space && ptr - line <= trailcol)))
4365-
{
4366-
c = (c == ' ') ? lcs_space : lcs_nbsp;
4367-
if (area_attr == 0 && search_attr == 0)
4368-
{
4369-
n_attr = 1;
4370-
extra_attr = hl_attr(HLF_8);
4371-
saved_attr2 = char_attr; /* save current attr */
4372-
}
4373-
#ifdef FEAT_MBYTE
4374-
mb_c = c;
4375-
if (enc_utf8 && (*mb_char2len)(c) > 1)
4376-
{
4377-
mb_utf8 = TRUE;
4378-
u8cc[0] = 0;
4379-
c = 0xc0;
4380-
}
4381-
else
4382-
mb_utf8 = FALSE;
4383-
#endif
4384-
}
4385-
43864361
if (extra_check)
43874362
{
43884363
#ifdef FEAT_SPELL
@@ -4567,6 +4542,36 @@ win_line(wp, lnum, startrow, endrow, nochange)
45674542
}
45684543
#endif
45694544

4545+
/* 'list': change char 160 to lcs_nbsp and space to lcs_space.
4546+
*/
4547+
if (wp->w_p_list
4548+
&& (((c == 160
4549+
#ifdef FEAT_MBYTE
4550+
|| (mb_utf8 && (mb_c == 160 || mb_c == 0x202f))
4551+
#endif
4552+
) && lcs_nbsp)
4553+
|| (c == ' ' && lcs_space && ptr - line <= trailcol)))
4554+
{
4555+
c = (c == ' ') ? lcs_space : lcs_nbsp;
4556+
if (area_attr == 0 && search_attr == 0)
4557+
{
4558+
n_attr = 1;
4559+
extra_attr = hl_attr(HLF_8);
4560+
saved_attr2 = char_attr; /* save current attr */
4561+
}
4562+
#ifdef FEAT_MBYTE
4563+
mb_c = c;
4564+
if (enc_utf8 && (*mb_char2len)(c) > 1)
4565+
{
4566+
mb_utf8 = TRUE;
4567+
u8cc[0] = 0;
4568+
c = 0xc0;
4569+
}
4570+
else
4571+
mb_utf8 = FALSE;
4572+
#endif
4573+
}
4574+
45704575
if (trailcol != MAXCOL && ptr > line + trailcol && c == ' ')
45714576
{
45724577
c = lcs_trail;

src/testdir/test_listlbr.in

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,20 +23,24 @@ STARTTEST
2323
: $put =g:line
2424
: wincmd p
2525
:endfu
26+
:"
2627
:let g:test="Test 1: set linebreak"
2728
:redraw!
2829
:let line=ScreenChar(winwidth(0))
2930
:call DoRecordScreen()
31+
:"
3032
:let g:test="Test 2: set linebreak + set list"
3133
:set linebreak list listchars=
3234
:redraw!
3335
:let line=ScreenChar(winwidth(0))
3436
:call DoRecordScreen()
37+
:"
3538
:let g:test ="Test 3: set linebreak nolist"
3639
:set nolist linebreak
3740
:redraw!
3841
:let line=ScreenChar(winwidth(0))
3942
:call DoRecordScreen()
43+
:"
4044
:let g:test ="Test 4: set linebreak with tab and 1 line as long as screen: should break!"
4145
:set nolist linebreak ts=8
4246
:let line="1\t".repeat('a', winwidth(0)-2)
@@ -50,13 +54,15 @@ STARTTEST
5054
:$put =line
5155
:$
5256
:norm! zt
57+
:"
5358
:let g:test ="Test 5: set linebreak with conceal and set list and tab displayed by different char (line may not be truncated)"
5459
:set cpo&vim list linebreak conceallevel=2 concealcursor=nv listchars=tab:ab
5560
:syn match ConcealVar contained /_/ conceal
5661
:syn match All /.*/ contains=ConcealVar
5762
:let line=ScreenChar(winwidth(0))
5863
:call DoRecordScreen()
5964
:set cpo&vim linebreak
65+
:"
6066
:let g:test ="Test 6: set linebreak with visual block mode"
6167
:let line="REMOVE: this not"
6268
:$put =g:test
@@ -66,31 +72,47 @@ STARTTEST
6672
:1/^REMOVE:
6773
0jf x:$put
6874
:set cpo&vim linebreak
75+
:"
6976
:let g:test ="Test 7: set linebreak with visual block mode and v_b_A"
7077
:$put =g:test
7178
Golong line: 40afoobar aTARGET at end
7279
:exe "norm! $3B\<C-v>eAx\<Esc>"
7380
:set cpo&vim linebreak sbr=
81+
:"
7482
:let g:test ="Test 8: set linebreak with visual char mode and changing block"
7583
:$put =g:test
7684
Go1111-1111-1111-11-1111-1111-11110f-lv3lc2222bgj.
85+
:"
7786
:let g:test ="Test 9: using redo after block visual mode"
7887
:$put =g:test
7988
Go
8089
aaa
8190
aaa
8291
a2k2j~e.
92+
:"
8393
:let g:test ="Test 10: using normal commands after block-visual"
8494
:$put =g:test
8595
:set linebreak
8696
Go
8797
abcd{ef
8898
ghijklm
8999
no}pqrs2k0f{c%
100+
:"
90101
:let g:test ="Test 11: using block replace mode after wrapping"
91102
:$put =g:test
92103
:set linebreak wrap
93104
Go150aayypk147|jr0
105+
:"
106+
:let g:test ="Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$"
107+
:set list listchars=space:_,trail:-,tab:>-,eol:$
108+
:$put =g:test
109+
:let line="a aaaaaaaaaaaaaaaaaaaaaa\ta "
110+
:$put =line
111+
:$
112+
:norm! zt
113+
:redraw!
114+
:let line=ScreenChar(winwidth(0))
115+
:call DoRecordScreen()
94116
:%w! test.out
95117
:qa!
96118
ENDTEST

src/testdir/test_listlbr.ok

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,3 +52,11 @@ abcdpqrs
5252
Test 11: using block replace mode after wrapping
5353
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
5454
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0aaa
55+
Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$
56+
a aaaaaaaaaaaaaaaaaaaaaa a
57+
58+
Test 12: set linebreak list listchars=space:_,tab:>-,tail:-,eol:$
59+
a_
60+
aaaaaaaaaaaaaaaaaaaa
61+
aa>-----a-$
62+
~

src/version.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -756,6 +756,8 @@ static char *(features[]) =
756756

757757
static int included_patches[] =
758758
{ /* Add new patch number below this line */
759+
/**/
760+
977,
759761
/**/
760762
976,
761763
/**/

0 commit comments

Comments
 (0)