Subject: Re: bug#78117: Improve c-ts-mode--c-or-c++-regexp

From: Sergey Abdulov <[email-masked]>
Date: Mon, 28 Apr 2025 22:46:01 +0500

> That's not a good idea, because many header files are basically C
> code, but use __cplusplus condition to allow C++ code include the
> header file.

I mean, after `__cplusplus` check usually comes `extern "C"`
which is not C and won't compile with GCC.
But you have a point so I won't argue.

> That could be unreliable, I'm afraid.

Not sure why. Is there any conflict with C by
matching, say, "operator<" in your opinion?

> Please submit a separate bug about that, with the details: where in
> that file do you see the incorrect highlighting after switching the
> mode.

Working on that. It turns out the issue is still there even if loading
straight into c++-ts-mode. Random curly braces get
`font-lock-warning-face` for no apparent reason.
I'll try to narrow it down as much as possible and report it.

Thanks.

On Mon, Apr 28, 2025 at 10:39 PM Sergey Abdulov <[email-masked]> wrote:
>
> > That's not a good idea, because many header files are basically C
> > code, but use __cplusplus condition to allow C++ code include the
> > header file.
>
> I mean, after `__cplusplus` check usually comes `extern "C"`
> which is not C and won't compile with GCC.
> But you have a point so I won't argue.
>
> > That could be unreliable, I'm afraid.
>
> Not sure why. Is there any conflict with C by
> matching, say, "operator<" in your opinion?
>
> > Please submit a separate bug about that, with the details: where in
> > that file do you see the incorrect highlighting after switching the
> > mode.
>
> Working on that. It turns out the issue is still there even if loading
> straight into c++-ts-mode. Random curly braces get
> `font-lock-warning-face` for no apparent reason.
> I'll try to narrow it down as much as possible and report it.
>
> Thanks.
>
> On Mon, Apr 28, 2025 at 8:53 PM Eli Zaretskii <[email-masked]> wrote:
> >
> > > From: Sergey Abdulov <[email-masked]>
> > > Date: Mon, 28 Apr 2025 11:13:31 +0500
> > >
> > > Hello!
> > >
> > > I ran into a header that uses C++ features but still opens in c-ts-mode.
> > > Link: https://raw.githubusercontent.com/HandmadeMath/HandmadeMath/refs/heads/master/HandmadeMath.h
> > > Therefore I suggest either:
> > > 1) Treat any mention of `__cplusplus` macro as a C++ file
> >
> > That's not a good idea, because many header files are basically C
> > code, but use __cplusplus condition to allow C++ code include the
> > header file.
> >
> > > 2) Or add an `operatorX` pattern where X is one of the C++ operators
> > > (don't forget <=> etc)
> >
> > That could be unreliable, I'm afraid.
> >
> > > For now I'm enabling c++-ts-mode manually whenever I edit said header
> >
> > The usual technique is to have
> >
> >   // -*- c++ -*-
> >
> > on the first line of the file.
> >
> > > but it's still bad since some of the broken highlighting from
> > > c-ts-mode persists into c++-ts-mode after toggling and gets fixed
> > > after moving the cursor through affected areas. That's another bug
> > > though.
> >
> > Please submit a separate bug about that, with the details: where in
> > that file do you see the incorrect highlighting after switching the
> > mode.
> >
> > Thanks.