Mercurial > vim
diff src/misc1.c @ 1359:a66a49322b6b v7.1.073
updated for version 7.1-073
author | vimboss |
---|---|
date | Tue, 14 Aug 2007 20:16:42 +0000 |
parents | 17a83c0532e8 |
children | db8309865794 |
line wrap: on
line diff
--- a/src/misc1.c +++ b/src/misc1.c @@ -104,7 +104,7 @@ set_indent(size, flags) int ind_done = 0; /* measured in spaces */ int tab_pad; int retval = FALSE; - int orig_char_len = 0; /* number of initial whitespace chars when + int orig_char_len = -1; /* number of initial whitespace chars when 'et' and 'pi' are both set */ /* @@ -159,7 +159,7 @@ set_indent(size, flags) /* 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 && orig_char_len == 0) + if (todo >= tab_pad && orig_char_len == -1) { doit = TRUE; todo -= tab_pad; @@ -206,11 +206,15 @@ set_indent(size, flags) /* If 'preserveindent' and 'expandtab' are both set keep the original * characters and allocate accordingly. We will fill the rest with spaces * after the if (!curbuf->b_p_et) below. */ - if (orig_char_len != 0) + if (orig_char_len != -1) { newline = alloc(orig_char_len + size - ind_done + line_len); if (newline == NULL) return FALSE; + todo = size - ind_done; + ind_len = orig_char_len + todo; /* Set total length of indent in + * characters, which may have been + * undercounted until now */ p = oldline; s = newline; while (orig_char_len > 0) @@ -222,9 +226,6 @@ set_indent(size, flags) * than old) */ while (vim_iswhite(*p)) (void)*p++; - todo = size - ind_done; - ind_len += todo; /* Set total length of indent in characters, - * which may have been undercounted until now */ } else