git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jakub Narebski <jnareb@gmail.com>
To: "J. Bruce Fields" <bfields@fieldses.org>
Cc: Wincent Colaiuta <win@wincent.com>,
	Git Mailing List <git@vger.kernel.org>,
	Junio Hamano <junkio@cox.net>
Subject: Re: [PATCH] whitespace: fix initial-indent checking
Date: Sun, 16 Dec 2007 19:16:44 +0100	[thread overview]
Message-ID: <200712161916.44715.jnareb@gmail.com> (raw)
In-Reply-To: <20071216162637.GA3934@fieldses.org>

J. Bruce Fields wrote:
> On Sun, Dec 16, 2007 at 11:00:55AM +0100, Wincent Colaiuta wrote:
>> El 16/12/2007, a las 10:08, Jakub Narebski escribió:
>>
>>> J. Bruce Fields wrote:
>>>
>>>> This allows catching initial indents like '\t        ' (a tab followed
>>>> by 8 spaces), while previously indent-with-non-tab caught only indents
>>>> that consisted entirely of spaces.
>>>
>>> I prefer to use tabs for indent, but _spaces_ for align. While previous,
>>> less strict version of check catches indent using spaces, this one also
>>> catches _align_ using spaces.
> 
> No, the previous version didn't work for the align-with-spaces case
> either.  Consider, for example,
> 
> struct widget *find_widget_by_color(struct color *color,
>                                     int nth_match, unsigned long flags)
> 
> If following a "indent-with-tabs, align-with-spaces" policy, then the
> initial whitespaace on the second line should be purely spaces
> (otherwise adjusting the tab stops would ruin the alignment).  But
> indent-with-non-tab would flag this as incorrect even before my fix.

Yes, this is (if we want "indent with tab, align with spaces") false
positive even with current version of indent-with-non-tab policy, but
it is _rare_ false positive.

It is useful because it catches quite common "indent with spaces only",
for example if MTA or editor replaces tabs with spaces, or if editor
preserves whitespace but it uses spaces for indent.

So for me this version is a good compromise between false positives
and catching real indent whitespace errors. The version proposed has
IMHO too many false positive, while I guess not catching much more
errors in practice.

>> I'd say that Jakub's is a fairly common use case (it's used in many places 
>> in the Git codebase too, I think) so it would be a bad thing to change the 
>> behaviour of "indent-with-non-tab".
>>
>> If you also want to check for "align-with-non-tab" then it really should be 
>> a separate, optional class of whitespace error.
> 
> I would agree with you if it were not for the fact that if you're using
> an "indent-with-tabs, align-with-spaces" policy then the only indent
> whitespace problems that you can flag automatically are space-before-tab
> problems; anything else requires knowledge of the language syntax.

Unfortunately quite true (by the way, doesn't new version of
"align-with-non-tab" do not work for Python sources?)

Perhaps it should be called "no-8spaces" os something like that: is the
width (in columns) of a tab character configurable, by the way?

> So indent-with-non-tab has only ever been useful for projects that
> insist on tabs for all sequences of 8 spaces in the initial whitespace.

IMVVHO the new version of "indent-with-non-tab" (aka "no-8-spaces") is
useful _only_ for such project, while old version not only (see comment
above).

-- 
Jakub Narebski
Poland

  reply	other threads:[~2007-12-16 18:17 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-11-24  4:24 [PATCH 1/2] builtin-apply: rename "whitespace" variables and fix styles Junio C Hamano
2007-11-24  4:25 ` [PATCH 2/2] builtin-apply: teach whitespace_rules Junio C Hamano
2007-11-24 20:09   ` [PATCH 3/2] core.whitespace: documentation updates Junio C Hamano
2007-11-24 20:22     ` J. Bruce Fields
2007-11-24 21:42       ` Junio C Hamano
2007-11-25 21:58         ` J. Bruce Fields
2007-12-06  9:04           ` Junio C Hamano
2007-12-06 19:18             ` J. Bruce Fields
2007-12-16  3:48             ` J. Bruce Fields
2007-12-16  3:48               ` [PATCH] whitespace: fix off-by-one error in non-space-in-indent checking J. Bruce Fields
2007-12-16  3:48                 ` [PATCH] whitespace: reorganize initial-indent check J. Bruce Fields
2007-12-16  3:48                   ` [PATCH] whitespace: minor cleanup J. Bruce Fields
2007-12-16  3:48                     ` [PATCH] whitespace: fix initial-indent checking J. Bruce Fields
2007-12-16  3:48                       ` [PATCH] whitespace: more accurate initial-indent highlighting J. Bruce Fields
2007-12-16  3:48                         ` [PATCH] whitespace: fix config.txt description of indent-with-non-tab J. Bruce Fields
2007-12-16  3:54                       ` [PATCH] whitespace: fix initial-indent checking J. Bruce Fields
2007-12-16 20:40                         ` Junio C Hamano
2007-12-16 21:19                           ` J. Bruce Fields
2007-12-16  9:08                       ` Jakub Narebski
2007-12-16 10:00                         ` Wincent Colaiuta
2007-12-16 16:26                           ` J. Bruce Fields
2007-12-16 18:16                             ` Jakub Narebski [this message]
2007-12-16 18:24                               ` Jakub Narebski
2007-12-16 19:59                               ` J. Bruce Fields
2007-12-16 20:31                                 ` Jakub Narebski
2007-12-16 21:00                                 ` Junio C Hamano
2007-12-16 19:43                             ` Junio C Hamano
2007-12-16 10:02                   ` [PATCH] whitespace: reorganize initial-indent check Wincent Colaiuta
2007-12-16 16:31                     ` J. Bruce Fields
2007-12-16 16:31                       ` [PATCH 1/6] whitespace: fix off-by-one error in non-space-in-indent checking J. Bruce Fields
2007-12-16 16:31                         ` [PATCH 2/6] whitespace: reorganize initial-indent check J. Bruce Fields
2007-12-16 16:31                           ` [PATCH 3/6] whitespace: minor cleanup J. Bruce Fields
2007-12-16 16:31                             ` [PATCH 4/6] whitespace: fix initial-indent checking J. Bruce Fields
2007-12-16 16:31                               ` [PATCH 5/6] whitespace: more accurate initial-indent highlighting J. Bruce Fields
2007-12-16 16:31                                 ` [PATCH 6/6] whitespace: fix config.txt description of indent-with-non-tab J. Bruce Fields
2007-12-16 17:58                                   ` builtin-apply whitespace J. Bruce Fields
2007-12-16 17:58                                     ` [PATCH 1/2] builtin-apply: minor cleanup of whitespace detection J. Bruce Fields
2007-12-16 17:58                                       ` [PATCH 2/2] builtin-apply: stronger indent-with-on-tab fixing J. Bruce Fields
2007-12-17  8:00                                 ` [PATCH 5/6] whitespace: more accurate initial-indent highlighting Wincent Colaiuta
2007-12-17  8:04                                   ` Junio C Hamano
2007-12-18  0:32                                     ` Jakub Narebski
2007-12-18  0:51                                       ` Junio C Hamano
2007-12-16 21:06                     ` [PATCH] whitespace: reorganize initial-indent check Junio C Hamano

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=200712161916.44715.jnareb@gmail.com \
    --to=jnareb@gmail.com \
    --cc=bfields@fieldses.org \
    --cc=git@vger.kernel.org \
    --cc=junkio@cox.net \
    --cc=win@wincent.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).