Subject: Re: bug#8438: 24.0.50; C++ macro make indentation fail

From: Andrea Crotti <[email-masked]>
Date: Wed, 13 Apr 2011 11:44:00 +0200

Daniel Colascione <[email-masked]> writes:

>
> The problem actually has nothing to do with the macro:
> c-forward-decl-or-cast-1 is choking on the const because it's mistaking
> it for something that might be part of a member function pointer.
> Because c-forward-decl-or-cast-1 fails inside
> c-just-after-func-arglist-p, c-guess-basic-offset tries the next best
> thing, which happens to be a template argument continuation.
>
> The attached patch resolves the issue.
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.11 (Darwin)
>
> iEYEARECAAYFAk2la/kACgkQ17c2LVA10VtGawCeLYuZ7f1QKHsFgkrYzgWCNevZ
> nwQAoNStOC5JvnSs1G5sU92UrogmFAQW
> =mxeQ
> -----END PGP SIGNATURE-----
>
> === modified file 'lisp/progmodes/cc-engine.el'
> --- lisp/progmodes/cc-engine.el	2011-03-06 17:03:45 +0000
> +++ lisp/progmodes/cc-engine.el	2011-04-13 09:18:47 +0000
> @@ -6475,7 +6475,7 @@
>        ;; `c-font-lock-declarators'.)
>        (while (and (looking-at c-type-decl-prefix-key)
>  		  (if (and (c-major-mode-is 'c++-mode)
> -			   (match-beginning 2))
> +			   (match-beginning 3))
>  		      ;; If the second submatch matches in C++ then
>  		      ;; we're looking at an identifier that's a
>  		      ;; prefix only if it specifies a member pointer.

This patch solves the problem for me, also the constructor indentation
is now as it was in emacs 23.