[sane-devel] [janitorial] leading whitespace: spaces XOR tabs
Olaf Meeuwissen
paddy-hack at member.fsf.org
Wed Jul 12 12:33:09 UTC 2017
Hi all,
I just committed the last compiler warning fixes and made the Debian 9
builds "AWARE". Now any compiler warnings on all 4 Debian builds will
bomb the build in question and hence prevent the creation of a new
snapshot tarball.
I mentioned[1] that the plustek-pp backend's indenting defied me but
after some staring at the code I realized it was using a four spaces to
the tab convention. Convincing my editor to do the same made it a lot
easier to understand the intended behaviour but fixing the "mess" was
still a very delicate affair. I had to change the mixed use of spaces
and tabs used to indent to *exactly* match in order to silence compiler
warnings.
[1] https://lists.alioth.debian.org/pipermail/sane-devel/2017-June/035445.html
This whole exercise has made me look at the whole code base in a little
more detail and, quite frankly, the use of leading whitespace is a total
and utter mess. Some places are better of than others but on the whole
it's pretty pathetic.
# Just make your editor visually distinguish spaces and tabs and you'll
# see. I used Emacs' whitespace-mode (in its default configuration) and
# it "lit up the place" in a variety of colours.
So here's a few "rules" I'd like to apply in order to address this.
Each file
- uses either spaces or tabs for *all* of its leading whitespace
This is *not* on a per line basis, this applies to the *whole* file.
- if using tabs, these tabs may be followed by up to 7 spaces
This is to accommodate n-space indent policies (where n mod 8 != 0)
and assumes eight spaces to the tab.
- if using tabs, uses eight spaces to the tab
- if to be used by `make`, an initial whitespace character shall be
a tab, independent of whether its on a continuation line or not
Note, this says absolutely nothing about whitespace use after the first
non-whitespace. That can still be a mess.
The "rules" above are inspired by a combination of consistency, ease of
checking/fixing and giving developers some leeway in applying their own
preferences to their code.
Whether to use spaces or tabs for each file will be decided on the basis
of a count of tabs and spaces (and in case of doubt comparison with any
related files so as to keep some kind of consistency between them). The
criterion will be a majority of one over the other (taking into account
the number of spaces to a tab). So, with n spaces to the tab, the
larger value of n*number_of_leading_tabs and number_of_leading_spaces
will decide the leading whitespace policy for a file.
# Personally, I would much prefer to uses spaces everywhere the file
# format permits (with a minor execption for files used by make, see
# above) over the board.
# You may find the following blog post of interest ;-)
#
# https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/
If anyone objects, I'm open to suggestions, including "Why bother? Just
use spaces!" ;-)
If I hear nothing, the tools/style-check.sh script will be modified to
implement these rules and can then be use to check for any "violations"
and (recursively) fix them.
Hope this helps,
--
Olaf Meeuwissen, LPIC-2 FSF Associate Member since 2004-01-27
GnuPG key: F84A2DD9/B3C0 2F47 EA19 64F4 9F13 F43E B8A4 A88A F84A 2DD9
Support Free Software https://my.fsf.org/donate
Join the Free Software Foundation https://my.fsf.org/join
More information about the sane-devel
mailing list