Subject: Re: bug#341: c-indent-command misindents?

From: Andrew Hyatt <[email-masked]>
Date: Tue, 29 Dec 2015 20:38:24 +0000

On Tue, Dec 29, 2015 at 3:30 PM Alan Mackenzie <[email-masked]> wrote:

> Hello Andrew and Kristóf.
>
> On Mon, Dec 28, 2015 at 07:48:22PM -0500, Andrew Hyatt wrote:
>
> > I've reproduced this bug in emacs 25.
>
> > It seems like a real problem, thanks (belatedly) for reporting!
>
> Yes, it's a known problem in CC Mode, and it's seriously difficult to
> fix.  Parsing happens mainly in the backwards direction, and in general,
> the #ifdefs in a file form a tree structure.  Which is the line previous
> to line 6?  It could be L4, it could be L2.  Typically, such "parallel"
> text lines aren't nice and compatible, the way they are in this example.
> Indeed, it's possible to construct an example where L6 has two
> alternative syntactic contexts, depending on whether A is defined.  In
> fact, something like:
>
> #ifdef A
> int foo(int a, int b)
> #else
> int bar(int a, int b)
> {
>   if (a > b)
> #endif
> {
>   return a+b;
> }
>
> would do it.
>
> I don't know if this problem will ever be fixed.
>

Perhaps the right thing to do is to mark it as "wontfix" since it's
unlikely to be possible without a big rewrite.  What do you think?

>
> > "Ralovich, "Kristóf\"" <[email-masked]> writes:
>
> > > Hi,
>
> > > I hope this letter ends up at the right maintainers!
>
> > > My problem is when running c-indent-command (by pressing TAB or
> > > calling it directly) on the 4th line of the following small snippet
> > > (same as attached file):
>
> > > 1: #ifdef A
> > > 2: int foo(int a, int b)
> > > 3: #else
> > > 4: int bar(int a, int b)
> > > 5: #endif
> > > 6: {
> > > 7:   return a+b;
> > > 8: }
>
> > > the line is getting indented falsely:
>
> > > 1: #ifdef A
> > > 2: int foo(int a, int b)
> > > 3: #else
> > > 4:   int bar(int a, int b)
> > > 5: #endif
> > > 6: {
> > > 7:   return a+b;
> > > 8: }
>
> > > I think, it should not get indented, please correct me if I am wrong!
>
> > > I am using emacs 22.2 with it's default cc-mode.
>
> > > Looking forward to hearing from you!
>
>
> > > Kristóf
>
> --
> Alan Mackenzie (Nuremberg, Germany).
>