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

Previous Next

Packages: cc-mode, emacs;

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, Kristóf <kristof.ralovich <at> gmail.com>, 341 <at> debbugs.gnu.org
Subject: bug#341: c-indent-command misindents?
Date: Sun, 10 Jan 2016 22:12:40 -0500
Andrew Hyatt <ahyatt <at> gmail.com> writes:

> 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?

I'm going to go ahead and do that, due to lack of opposition. Please
unmark or just let me know if you disagree.

>
>
>  > "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).




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.