bug#55181: CC Mode 5.35.1 (C/*l); c-guess-style not working

Alan Mackenzie <[email protected]> Sun, 8 May 2022 13:21:53 +0000
Newsgroups gmane.emacs.cc-mode.general
Message-ID <YnfD8dhxQtlFQReS@ACM>
Hello, Po

On Tue, May 03, 2022 at 12:07:48 +0800, Po Lu via CC-Mode-help wrote:
> (Terribly sorry that your reply got caught in the spam filter.)

No problems, it happens sometimes.

> Alan Mackenzie <[email protected]> writes:

> > diff -r 04b2d5e1eff8 cc-engine.el
> > --- a/cc-engine.el	Wed Apr 27 18:05:17 2022 +0000
> > +++ b/cc-engine.el	Fri Apr 29 19:56:29 2022 +0000
> > @@ -3431,7 +3431,9 @@
> >    ;; Return a good pos (in the sense of `c-state-cache-good-pos') at the
> >    ;; lowest[*] position between POS and HERE which is syntactically equivalent
> >    ;; to HERE.  This position may be HERE itself.  POS is before HERE in the
> > -  ;; buffer.
> > +  ;; buffer.  If POS and HERE are both in the same literal, return the start
> > +  ;; of the literal.  STATE is the parsing state at POS.
> > +  ;;
> >    ;; [*] We don't actually always determine this exact position, since this
> >    ;; would require a disproportionate amount of work, given that this function
> >    ;; deals only with a corner condition, and POS and HERE are typically on
> > @@ -3447,7 +3449,7 @@
> >  	  (setq pos (point)
> >  		state s)))
> >        (if (eq (point) here)		; HERE is in the same literal as POS
> > -	  pos
> > +	  (nth 8 state)		    ; A valid good pos cannot be in a literal.
> >  	(setq s (parse-partial-sexp pos here (1+ (car state)) nil state nil))
> >  	(cond
> >  	 ((> (car s) (car state))  ; Moved into a paren between POS and HERE
> >
> > [ CC Mode configuration snipped, but appreciated. ]

> This seems to work, thanks.

Thanks for the testing.  I've now committed this patch, and I'm closing
the bug with this post.

-- 
Alan Mackenzie (Nuremberg, Germany).