[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#341: c-indent-command misindents?
From: |
Andrew Hyatt |
Subject: |
bug#341: c-indent-command misindents? |
Date: |
Sun, 10 Jan 2016 22:12:40 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.1.50 (darwin) |
Andrew Hyatt <ahyatt@gmail.com> writes:
> On Tue, Dec 29, 2015 at 3:30 PM Alan Mackenzie <acm@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@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).
- bug#341: c-indent-command misindents?,
Andrew Hyatt <=