diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-12-01 14:42:00 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-12-01 14:42:00 -0800 |
commit | dee40e5178bab78aaf655ee4323f3141acd17654 (patch) | |
tree | 3eb339b866a49ab822850e95b13dbf9bc5607871 | |
parent | 7d43de925b2771d295d8fc4341b7bd544e2a74fa (diff) | |
parent | d35711adc4cffe0c4aebd85c197080c7163bcb77 (diff) | |
download | git-dee40e5178bab78aaf655ee4323f3141acd17654.tar.gz |
Merge branch 'js/maint-apply-tab-in-indent-fix' into HEAD
* js/maint-apply-tab-in-indent-fix:
apply --whitespace=fix: fix tab-in-indent
-rwxr-xr-x | t/t4124-apply-ws-rule.sh | 28 | ||||
-rw-r--r-- | ws.c | 3 |
2 files changed, 30 insertions, 1 deletions
diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh index 61bfc569c3..40e5842997 100755 --- a/t/t4124-apply-ws-rule.sh +++ b/t/t4124-apply-ws-rule.sh @@ -121,6 +121,34 @@ test_expect_success 'whitespace=error-all, no rule (attribute)' ' ' +test_expect_success 'spaces inserted by tab-in-indent' ' + + git config core.whitespace -trailing,-space,-indent,tab && + rm -f .gitattributes && + test_fix % && + sed -e "s/_/ /g" -e "s/>/ /" <<-\EOF >expect && + An_SP in an ordinary line>and a HT. + ________A HT (%). + ________A SP and a HT (@%). + _________A SP, a HT and a SP (@%). + _______Seven SP. + ________Eight SP (#). + ________Seven SP and a HT (@%). + ________________Eight SP and a HT (@#%). + _________Seven SP, a HT and a SP (@%). + _________________Eight SP, a HT and a SP (@#%). + _______________Fifteen SP (#). + ________________Fifteen SP and a HT (@#%). + ________________Sixteen SP (#). + ________________________Sixteen SP and a HT (@#%). + _____a__Five SP, a non WS, two SP. + A line with a (!) trailing SP_ + A line with a (!) trailing HT> + EOF + test_cmp expect target + +' + for t in - '' do case "$t" in '') tt='!' ;; *) tt= ;; esac @@ -363,12 +363,13 @@ void ws_fix_copy(struct strbuf *dst, const char *src, int len, unsigned ws_rule, fixed = 1; } else if ((ws_rule & WS_TAB_IN_INDENT) && last_tab_in_indent >= 0) { /* Expand tabs into spaces */ + int start = dst->len; int last = last_tab_in_indent + 1; for (i = 0; i < last; i++) { if (src[i] == '\t') do { strbuf_addch(dst, ' '); - } while (dst->len % 8); + } while ((dst->len - start) % 8); else strbuf_addch(dst, src[i]); } |