patch 7.4.710

Problem:    It is not possible to make spaces visibible in list mode.
Solution:   Add the "space" item to 'listchars'. (David Bürgin, issue 350)
This commit is contained in:
Bram Moolenaar
2015-04-21 18:33:48 +02:00
parent 40ce3a4e1f
commit 7927836733
12 changed files with 100 additions and 15 deletions

View File

@ -4717,31 +4717,35 @@ A jump table for the options with a short description can be found at |Q_op|.
{not in Vi}
Strings to use in 'list' mode and for the |:list| command. It is a
comma separated list of string settings.
*lcs-eol*
*lcs-eol*
eol:c Character to show at the end of each line. When
omitted, there is no extra character at the end of the
line.
*lcs-tab*
*lcs-tab*
tab:xy Two characters to be used to show a tab. The first
char is used once. The second char is repeated to
fill the space that the tab normally occupies.
"tab:>-" will show a tab that takes four spaces as
">---". When omitted, a tab is show as ^I.
*lcs-trail*
*lcs-space*
space:c Character to show for a space. When omitted, spaces
are left blank.
*lcs-trail*
trail:c Character to show for trailing spaces. When omitted,
trailing spaces are blank.
*lcs-extends*
trailing spaces are blank. Overrides the "space"
setting for trailing spaces.
*lcs-extends*
extends:c Character to show in the last column, when 'wrap' is
off and the line continues beyond the right of the
screen.
*lcs-precedes*
*lcs-precedes*
precedes:c Character to show in the first column, when 'wrap'
is off and there is text preceding the character
visible in the first column.
*lcs-conceal*
*lcs-conceal*
conceal:c Character to show in place of concealed text, when
'conceallevel' is set to 1.
*lcs-nbsp*
*lcs-nbsp*
nbsp:c Character to show for a non-breakable space (character
0xA0, 160). Left blank when omitted.
@ -4754,7 +4758,7 @@ A jump table for the options with a short description can be found at |Q_op|.
:set lcs=tab:>-,eol:<,nbsp:%
:set lcs=extends:>,precedes:<
< The "NonText" highlighting will be used for "eol", "extends" and
"precedes". "SpecialKey" for "nbsp", "tab" and "trail".
"precedes". "SpecialKey" for "nbsp", "space", "tab" and "trail".
|hl-NonText| |hl-SpecialKey|
*'lpl'* *'nolpl'* *'loadplugins'* *'noloadplugins'*

View File

@ -1163,6 +1163,7 @@ EXTERN int lcs_eol INIT(= '$');
EXTERN int lcs_ext INIT(= NUL);
EXTERN int lcs_prec INIT(= NUL);
EXTERN int lcs_nbsp INIT(= NUL);
EXTERN int lcs_space INIT(= NUL);
EXTERN int lcs_tab1 INIT(= NUL);
EXTERN int lcs_tab2 INIT(= NUL);
EXTERN int lcs_trail INIT(= NUL);

View File

@ -4334,14 +4334,16 @@ win_line(wp, lnum, startrow, endrow, nochange)
#endif
++ptr;
/* 'list' : change char 160 to lcs_nbsp. */
if (wp->w_p_list && (c == 160
/* 'list': change char 160 to lcs_nbsp and space to lcs_space. */
if (wp->w_p_list
&& (((c == 160
#ifdef FEAT_MBYTE
|| (mb_utf8 && mb_c == 160)
|| (mb_utf8 && mb_c == 160)
#endif
) && lcs_nbsp)
) && lcs_nbsp)
|| (c == ' ' && lcs_space && ptr <= line + trailcol)))
{
c = lcs_nbsp;
c = (c == ' ') ? lcs_space : lcs_nbsp;
if (area_attr == 0 && search_attr == 0)
{
n_attr = 1;

View File

@ -46,6 +46,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \
@ -189,6 +190,7 @@ test_command_count.out: test_command_count.in
test_erasebackword.out: test_erasebackword.in
test_eval.out: test_eval.in
test_insertcount.out: test_insertcount.in
test_listchars.out: test_listchars.in
test_listlbr.out: test_listlbr.in
test_listlbr_utf8.out: test_listlbr_utf8.in
test_mapping.out: test_mapping.in

View File

@ -45,6 +45,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \

View File

@ -67,6 +67,7 @@ SCRIPTS = test3.out test4.out test5.out test6.out test7.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \

View File

@ -47,6 +47,7 @@ SCRIPTS = test1.out test3.out test4.out test5.out test6.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \

View File

@ -4,7 +4,7 @@
# Authors: Zoltan Arpadffy, <arpadffy@polarhome.com>
# Sandor Kopanyi, <sandor.kopanyi@mailbox.hu>
#
# Last change: 2015 Mar 24
# Last change: 2015 Apr 21
#
# This has been tested on VMS 6.2 to 8.3 on DEC Alpha, VAX and IA64.
# Edit the lines in the Configuration section below to select.
@ -106,6 +106,7 @@ SCRIPT = test1.out test2.out test3.out test4.out test5.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \

View File

@ -43,6 +43,7 @@ SCRIPTS = test1.out test2.out test3.out test4.out test5.out test6.out \
test_erasebackword.out \
test_eval.out \
test_insertcount.out \
test_listchars.out \
test_listlbr.out \
test_listlbr_utf8.out \
test_mapping.out \

View File

@ -0,0 +1,53 @@
Tests for 'listchars' display with 'list' and :list
STARTTEST
:so small.vim
:let g:lines = []
:function GetScreenCharsForLine(lnum)
: return join(map(range(1, virtcol('$')), 'nr2char(screenchar(a:lnum, v:val))'), '')
:endfunction
:nnoremap <expr> GG ":call add(g:lines, GetScreenCharsForLine(".screenrow()."))\<CR>"
:set listchars+=tab:>-,space:.,trail:<
:set list
:
/^start:/
:normal! jzt
GG
GG
GG
GG
GGH:
:set listchars-=trail:<
GG
GG
GG
GG
GG:
:put =g:lines
:'[,']w! test.out
ENDTEST
start:
aa
bb
cccc
dd ee
STARTTEST
:set listchars+=trail:<
:set nolist
:
/^start:/
:redir! >> test.out
:+1,$list
:redir END
:q!
ENDTEST
start:
fff
gg
h
iii

View File

@ -0,0 +1,16 @@
>-------aa>-----$
..bb>---<<$
...cccc><$
dd........ee<<>-$
<$
>-------aa>-----$
..bb>---..$
...cccc>.$
dd........ee..>-$
.$
..fff>--<<$
>-------gg>-----$
.....h>-$
iii<<<<><<$

View File

@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
710,
/**/
709,
/**/