GNU bug report logs -
#45375
cc-mode indentation sometimes doesn't work
Previous Next
Full log
View this message in rfc822 format
Hello, Basil, Géza and Konstantin.
Sorry I missed this bug report in December, and thanks, Basil, for
drawing it to my attention.
On Fri, Feb 12, 2021 at 21:17:56 +0000, Basil L. Contovounesios wrote:
> reassign 45375 emacs,cc-mode
> quit
> [CCed CC Mode maintainer.]
> Herman <at> debbugs.gnu.org, Géza <geza.herman <at> gmail.com> writes:
> > On current master (6af31fd71ff1a403c199c479577bcc145a547db1) indentation of
> > C/C++ files sometimes doesn't work. I've bisected it: commit "9022df7027
> > Optimise c-parse-state for large buffers with few (if any) braces." introduced
> > this behavior.
> > This is how to reproduce: check out 9022df70270243f211c54ccd66800320148b8434,
> > and execute "emacs -Q xdisp.c". Jump to line 2989 with M-g M-g 2989, move the
> > cursor to the end of line of "Lisp_Object retval;", and press enter. The cursor
> > will be moved to the correct place (correctly indented, cursor will be placed
> > below the 'L' character of the previous line). Then push enter at end of line of
> > "va_list ap;". For me, cursor will jump to the beginning of the line, it won't
> > be indented. If I keep pressing enters, the next failure will be at "va_end
> > (ap);". I'm not sure whether this exact steps reproduces for everyone, but it
> > happened me 5 of 5 trials. If I don't press enter at the first line
> > ("Lisp_Object retval;"), the problem doesn't happen for any of this function
> > lines. But it will happen for somewhere else, if I keep trying (move around the
> > file, press enter at random places: if will fail sooner or later).
> > For my configuration (without -Q), this problem happens quite frequently during
> > editing C++ code.
> I tried following your recipe (the lines in xdisp.c have since moved
> around a bit), but was unable to reproduce the issue.
> Can you still reproduce it on your end?
I can reproduce it easily on the indicated commit, and I have found
where the problem is. It's in the handling of the c-state-cache (the
cache which tracks the positions of certain
braces/brackets/parentheses). Fixing it could be quite tricky,
particularly given the need to retain optimisation for the case that the
above commit "fixed".
I am fairly, but not absolutely, sure that this is the same bug as
46400, but the bug scenario here is easier to reproduce than the other
one, so I will concentrate on this bug first. Maybe we can join the bug
reports later.
> Thanks,
> --
> Basil
--
Alan Mackenzie (Nuremberg, Germany).
This bug report was last modified 4 years and 88 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.