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)
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 24a65bb..a3f6e12 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4717,31 +4717,35 @@
 			{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 @@
 	    :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 759c510..f0879dc 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -1163,6 +1163,7 @@
 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 8118828..f9a847d 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -4334,14 +4334,16 @@
 #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 a9a6fa6..102255d 100644
--- a/src/testdir/Make_amiga.mak
+++ b/src/testdir/Make_amiga.mak
@@ -46,6 +46,7 @@
 		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_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 e110277..787d76e 100644
--- a/src/testdir/Make_dos.mak
+++ b/src/testdir/Make_dos.mak
@@ -45,6 +45,7 @@
 		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 4ec49d5..e6942c6 100644
--- a/src/testdir/Make_ming.mak
+++ b/src/testdir/Make_ming.mak
@@ -67,6 +67,7 @@
 		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 7cdfcb1..224f695 100644
--- a/src/testdir/Make_os2.mak
+++ b/src/testdir/Make_os2.mak
@@ -47,6 +47,7 @@
 		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 496f822..a936d27 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 @@
 	 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 bc094e1..dfcee81 100644
--- a/src/testdir/Makefile
+++ b/src/testdir/Makefile
@@ -43,6 +43,7 @@
 		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 0000000..1f19afa
--- /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 0000000..1377a84
--- /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 850f37c..06fb40e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -742,6 +742,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    710,
+/**/
     709,
 /**/
     708,