unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Rolf Ade <rolf@pointsman.de>
To: Alan Mackenzie <acm@muc.de>
Cc: 40421@debbugs.gnu.org
Subject: bug#40421: 26.2; (And 27.0.90) Inconsistent fontifying in c-mode
Date: Fri, 10 Apr 2020 02:50:12 +0200	[thread overview]
Message-ID: <87wo6o88qj.fsf@pointsman.de> (raw)
In-Reply-To: <20200404090919.52048.qmail@mail.muc.de> (Alan Mackenzie's message of "4 Apr 2020 09:09:19 -0000")


Hello Alan,

Alan Mackenzie <acm@muc.de> writes:
> 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".

To that, or, depending on the build evironment, to something similar,
yes.

I can understand, that c-mode doesn't get this right. But part of the
point was the apparent randomly switching of the fontification. Getting
the colors wrong is one thing (but c-mode don't even got it wrong, for
the first handful of function prototypes), but getting it wrong
inconstently irritates particularly.

But, yes ...

> 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.

... that works well, thanks.

Sorry for the noise.

>> 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.





  reply	other threads:[~2020-04-10  0:50 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
2020-04-10  0:50     ` Rolf Ade [this message]
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=87wo6o88qj.fsf@pointsman.de \
    --to=rolf@pointsman.de \
    --cc=40421@debbugs.gnu.org \
    --cc=acm@muc.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).