GNU bug report logs - #341
c-indent-command misindents?

Previous Next

Packages: emacs, cc-mode;

Reported by: "Ralovich, Kristóf" <kristof.ralovich <at> gmail.com>

Date: Sat, 31 May 2008 15:20:03 UTC

Severity: normal

Tags: wontfix

Found in version 24.0.90

Done: Andrew Hyatt <ahyatt <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Andrew Hyatt <ahyatt <at> gmail.com>
To: Alan Mackenzie <acm <at> muc.de>
Cc: Ralovich <at> debbugs.gnu.org, 341 <at> debbugs.gnu.org, Kristóf <kristof.ralovich <at> gmail.com>
Subject: bug#341: c-indent-command misindents?
Date: Tue, 29 Dec 2015 20:38:24 +0000
[Message part 1 (text/plain, inline)]
On Tue, Dec 29, 2015 at 3:30 PM Alan Mackenzie <acm <at> muc.de> 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\"" <kristof.ralovich <at> gmail.com> 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).
>
[Message part 2 (text/html, inline)]

This bug report was last modified 9 years and 186 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.