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)
/* 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;
}
/* 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;
0wR \b\b\b\e
:" Test replacing with Tabs
0wR \e
+:" 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 cde
hi
test text
+{
+ x
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 301,
/**/
300,
/**/