changeset 3058:4a7097153089 v7.3.301

updated for version 7.3.301 Problem: When 'smartindent' and 'copyindent' are set a Tab is used even though 'expandtab' is set. Solution: Do not insert Tabs. Add a test. (Christian Brabandt)
author Bram Moolenaar <bram@vim.org>
date Wed, 07 Sep 2011 19:58:09 +0200
parents d679d9ac3a7e
children e7e703047af2
files src/misc1.c src/testdir/test19.in src/testdir/test19.ok src/version.c
diffstat 4 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -363,7 +363,7 @@ copy_indent(size, src)
 
 	/* Fill to next tabstop with a tab, if possible */
 	tab_pad = (int)curbuf->b_p_ts - (ind_done % (int)curbuf->b_p_ts);
-	if (todo >= tab_pad)
+	if (todo >= tab_pad && !curbuf->b_p_et)
 	{
 	    todo -= tab_pad;
 	    ++ind_len;
@@ -372,7 +372,7 @@ copy_indent(size, src)
 	}
 
 	/* Add tabs required for indent */
-	while (todo >= (int)curbuf->b_p_ts)
+	while (todo >= (int)curbuf->b_p_ts && !curbuf->b_p_et)
 	{
 	    todo -= (int)curbuf->b_p_ts;
 	    ++ind_len;
--- a/src/testdir/test19.in
+++ b/src/testdir/test19.in
@@ -12,6 +12,9 @@ r
 0wR			
 :" Test replacing with Tabs
 0wR			
+:" Test that copyindent works with expandtab set
+:set expandtab smartindent copyindent ts=8 sw=8 sts=8
+:exe "norm! o{\<cr>x"
 :?^start?,$w! test.out
 :qa!
 ENDTEST
--- a/src/testdir/test19.ok
+++ b/src/testdir/test19.ok
@@ -5,3 +5,5 @@ test text
     a cde
     		hi
 test text
+{
+        x
--- a/src/version.c
+++ b/src/version.c
@@ -710,6 +710,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    301,
+/**/
     300,
 /**/
     299,