Emacs 23.1.96 incorrectly indents C++ line.

 

To reproduce:

 

Visit the attached "bug.H" file and do the following:

 

1. go-to-line 2   ( the "{")

2. C-e (end of line)

3. C-j (new line)

 

4. type in:

 

typedef TypeList<[C-j]

 

5. go-to-line 6       (Statement<Assign<EAsgn::Variable> >,)

6. C-k C-y (kill then yank)

7. go-to-line 4

8. C-y                       (you have just copied line 6)

 

Text now looks like:

namespace PT

{

  typedef TypeList<

    Statement<Assign<EAsgn::Variable> >,

  typedef TypeList<

    Statement<Assign<EAsgn::Variable> >,

    Statement<Symbol<Parameter<EParm::Overload> > >,

    Statement<Symbol<Parameter<EParm::Local> > >,

    Statement<Instance>

    >::Result                                                                          TStmtKindSet;

}

 

9. C-e (end of line 4)

10. [Backspace]        (to delete ',')

11. C-j (new-line)

 

12. type in:

 

>::Result[TAB]TFoo;

 

13. go-to-line 7       (at beginning of line "typedef TypeList<")

14. [TAB] to indent        <<<<<<<<<<<<< Incorrect indentation happens here <<<<<<<<<<<<<<<<<<<

 

Text now looks like:

 

namespace PT

{

  typedef TypeList<

    Statement<Assign<EAsgn::Variable> >

    >::Result          TFoo;

 

typedef TypeList<

    Statement<Assign<EAsgn::Variable> >,

    Statement<Symbol<Parameter<EParm::Overload> > >,

    Statement<Symbol<Parameter<EParm::Local> > >,

    Statement<Instance>

    >::Result                                                                          TStmtKindSet;

}

 

Observe line 7 indents incorrectly to column 0.

 

Saving the buffer, starting a new emacs 23.1.96, visit "bug.H", [TAB] on line

7 re-indents correctly.