diff options
-rw-r--r-- | runtime/doc/options.txt | 22 | ||||
-rw-r--r-- | src/globals.h | 1 | ||||
-rw-r--r-- | src/screen.c | 12 | ||||
-rw-r--r-- | src/testdir/Make_amiga.mak | 2 | ||||
-rw-r--r-- | src/testdir/Make_dos.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_ming.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_os2.mak | 1 | ||||
-rw-r--r-- | src/testdir/Make_vms.mms | 3 | ||||
-rw-r--r-- | src/testdir/Makefile | 1 | ||||
-rw-r--r-- | src/testdir/test_listchars.in | 53 | ||||
-rw-r--r-- | src/testdir/test_listchars.ok | 16 | ||||
-rw-r--r-- | src/version.c | 2 |
12 files changed, 100 insertions, 15 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 24a65bbec..a3f6e1265 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -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'* diff --git a/src/globals.h b/src/globals.h index 759c51016..f0879dc67 100644 --- a/src/globals.h +++ b/src/globals.h @@ -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); diff --git a/src/screen.c b/src/screen.c index 811882870..f9a847dbd 100644 --- a/src/screen.c +++ b/src/screen.c @@ -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; diff --git a/src/testdir/Make_amiga.mak b/src/testdir/Make_amiga.mak index a9a6fa63e..102255dfd 100644 --- a/src/testdir/Make_amiga.mak +++ b/src/testdir/Make_amiga.mak @@ -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 diff --git a/src/testdir/Make_dos.mak b/src/testdir/Make_dos.mak index e11027756..787d76eaa 100644 --- a/src/testdir/Make_dos.mak +++ b/src/testdir/Make_dos.mak @@ -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 \ diff --git a/src/testdir/Make_ming.mak b/src/testdir/Make_ming.mak index 4ec49d505..e6942c623 100644 --- a/src/testdir/Make_ming.mak +++ b/src/testdir/Make_ming.mak @@ -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 \ diff --git a/src/testdir/Make_os2.mak b/src/testdir/Make_os2.mak index 7cdfcb105..224f6951a 100644 --- a/src/testdir/Make_os2.mak +++ b/src/testdir/Make_os2.mak @@ -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 \ diff --git a/src/testdir/Make_vms.mms b/src/testdir/Make_vms.mms index 496f8228a..a936d2722 100644 --- a/src/testdir/Make_vms.mms +++ b/src/testdir/Make_vms.mms @@ -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 \ diff --git a/src/testdir/Makefile b/src/testdir/Makefile index bc094e176..dfcee8199 100644 --- a/src/testdir/Makefile +++ b/src/testdir/Makefile @@ -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 \ diff --git a/src/testdir/test_listchars.in b/src/testdir/test_listchars.in new file mode 100644 index 000000000..1f19afa1a --- /dev/null +++ b/src/testdir/test_listchars.in @@ -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 diff --git a/src/testdir/test_listchars.ok b/src/testdir/test_listchars.ok new file mode 100644 index 000000000..1377a84a9 --- /dev/null +++ b/src/testdir/test_listchars.ok @@ -0,0 +1,16 @@ +>-------aa>-----$ +..bb>---<<$ +...cccc><$ +dd........ee<<>-$ +<$ +>-------aa>-----$ +..bb>---..$ +...cccc>.$ +dd........ee..>-$ +.$ + + +..fff>--<<$ +>-------gg>-----$ +.....h>-$ +iii<<<<><<$ diff --git a/src/version.c b/src/version.c index 850f37c4c..06fb40e80 100644 --- a/src/version.c +++ b/src/version.c @@ -742,6 +742,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 710, +/**/ 709, /**/ 708, |