Jim Meyering <jim(a)meyering.net> wrote:
"Daniel P. Berrange" <berrange(a)redhat.com> wrote:
> On Wed, Apr 09, 2008 at 02:40:13PM +0100, Richard W.M. Jones wrote:
>> On Wed, Apr 09, 2008 at 02:43:22PM +0200, Jim Meyering wrote:
>> > Please don't add the "tab-width: 4" specifier.
>> > Specifying a tab-width at all in a new file with "indent-tabs-mode:
nil"
>> > is a contradiction. The latter says there should be no TABs, yet
>> > the former says "when there are, give them width 4." Coding
style
>> > guidelines are universal in their recommendations to stick with 8-byte
>> > TAB stops, independent of whether you actually use TAB or spaces.
>>
>> Agreed, good idea.
>
> ACK.
>
> Could we get a make syntax-check test to look for these bogus tabs too
I've done that.
Abbreviated patches below.
However, there are some "issues" to consider.
Any global space-changing delta like these is going to cause
trouble (conflicts) for people with pending changes and on branches.
This one isn't too bad (as these things go), since the TAB-to-space
change affects fewer than 1500 lines in 37 files. However, the
new rule enforces the coding standard only in files with an existing
"indent-tabs-mode: nil" directive. There are currently 42 .[ch] files
that don't have such a directive (excluding gnulib/).
$ git ls-files|grep -E '\.[ch]$'|xargs grep -L indent-tabs-mode|grep -v \
gnulib|wc -l
42
If I were to do the same for those remaining files,
the TAB-to-space change would modify an additional 2817 lines
in 28 files:
$ git ls-files|grep -E '\.[ch]$'|xargs grep -L indent-tabs-mode|grep -v \
gnulib|xargs grep -E '^ * '|wc -l
2817
$ git ls-files|grep -E '\.[ch]$'|xargs grep -L indent-tabs-mode|grep -v \
gnulib|xargs grep -El '^ * '|wc -l
28
My opinion is that if it's worth doing the first, it's also worth
finishing the job, ... but then I don't have any huge re-architecting
changes in my queue.
However, I don't want to overstate the case either.
The cost of a few space-change-provoked merges is pretty low
in the grand scheme of things.
What say you?
Convert 'em all?
Sounds like we all agree, so here goes: four change-sets:
Here are their ChangeLog entries.
I'll post them separately.
* HACKING: New file: begin to describe contributor/coding guidelines.
Ensure that no C source file uses TABs for indentation.
* Makefile.maint (sc_TAB_in_indentation): New rule.
Convert TAB-based indentation in .[ch] files to use only spaces.
Done using this command (also includes .c.in and .h.in files):
for i in $(g ls-files|grep -E '\.[ch](\.in)?$'|grep -v gnulib); do
expand -i $i > j && mv j $i;done
Remove all vim: and emacs local variable settings in .c and .h files.
Done with these commands:
git grep -l Local.variab|xargs \
perl -0x3b -pi -e 's,\n+/\*\n \* vim:(.|\n)*,\n,'
git grep -l Local.variab|xargs \
perl -0x3b -pi -e 's,\n+/\*\n \* Local variables:\n(.|\n)*,\n,'