unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Alan Mackenzie <acm@muc.de>
To: Rolf Ade <rolf@pointsman.de>
Cc: 40421@debbugs.gnu.org
Subject: bug#40421: 26.2; (And 27.0.90) Inconsistent fontifying in c-mode
Date: 4 Apr 2020 09:09:19 -0000	[thread overview]
Message-ID: <20200404090919.52048.qmail@mail.muc.de> (raw)
In-Reply-To: <mailman.96.1585962545.2644.bug-gnu-emacs@gnu.org>

Hello, Rolf.

In article <mailman.96.1585962545.2644.bug-gnu-emacs@gnu.org> you wrote:

> Recipt:

> emacs -Q

> Insert:

> /* 11 */
> EXTERN int              XML_GetCurrentByteCount(XML_Parser parser);
> /* 12 */
> EXTERN enum XML_Status  XML_SetBase(XML_Parser parser, const XML_Char *base);
> /* 13 */
> EXTERN const XML_Char *  XML_GetBase(XML_Parser parser);
> /* 14 */
> EXTERN int              XML_GetSpecifiedAttributeCount(XML_Parser parser);
> /* 15 */

> and M-x c-mode. The font-look seems randomly. Some EXTERN colered, some
> not, some function names black, some blue.

Yes.  The problem here is that these declarations aren't syntactically
correct C.  To C Mode, "EXTERN" just looks like an ordinary identifier,
not a macro which (presumably) expands to "extern".

I would recommend you to use CC Mode's "noise macro" facility here.
(See the CC Mode manual.)  With this, you would tell CC Mode that
"EXTERN" just "expands to nothing", and thus won't interfere with the
syntactic analysis.  One way to do this is to set c-noise-macro-names in
a hook function, probably c-mode-common-hook.  Another way (if you don't
have many source files) would be to set that variable in a file local
variables section (see the Emacs manual) - for example, put the
following at the end of your C file:

    /* Local Variables: */
    /* c-noise-macro-names: ("EXTERN") */
    /* END: */

.  Then restart C Mode with M-x c-mode.  The fontification should now
look OK.

> The whole (small) file is here
> http://tdom.org/index.html/raw/generic/tdomDecls.h?name=cccb9227. With
> this syntactically correct file (at least gcc and clang consume it
> without complain) there is similiar font-lock flicker around the lines
> commented with 12, 13, 14.

Thanks for taking the trouble to reduce the problem to a minimal test
case.  That's appreciated.

> I report this (and see it) on my working-place emacs-26.2 but have
> verified, that a freshly build emacs-27.0.90 shows the same behaviour.

-- 
Alan Mackenzie (Nuremberg, Germany).






  parent reply	other threads:[~2020-04-04  9:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-04  1:08 bug#40421: 26.2; (And 27.0.90) Inconsistent fontifying in c-mode Rolf Ade
     [not found] ` <mailman.96.1585962545.2644.bug-gnu-emacs@gnu.org>
2020-04-04  9:09   ` Alan Mackenzie [this message]
2020-04-10  0:50     ` Rolf Ade
2020-04-13 18:32       ` Alan Mackenzie

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20200404090919.52048.qmail@mail.muc.de \
    --to=acm@muc.de \
    --cc=40421@debbugs.gnu.org \
    --cc=rolf@pointsman.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).