Hacker News new | ask | show | jobs
by alexdima 3651 days ago
We are definitely cheating there - we use the same colorizer for C and C++. I don't remember why we define two different languages that point to the same colorizer.

Please help us out and contribute a PR. Here[1] is where we register the C language and point to the cpp colorizer. And here[2] is the cpp colorizer. Please go ahead and try the C++ colorizer out at the Monarch playground[3] and edit it to make it colorize only C keywords, etc. Here[4] are the steps for adding a new colorizer.

Looking forward for a contribution on this :).

[1] https://github.com/Microsoft/monaco-languages/blob/master/sr...

[2] https://github.com/Microsoft/monaco-languages/blob/master/sr...

[3] https://microsoft.github.io/monaco-editor/monarch.html

[4] https://github.com/Microsoft/monaco-languages#dev-adding-a-n...

1 comments

The highlighting isn't an issue, I think most editors cheat in the same way. As C++ is a super-set of C it shouldn't be a problem, at least not except for a few edge cases which I wouldn't worry about IMHO.

My comment was more that the C example code is actually C++.

Except C isn't a subset of C++. There are many valid C keywords that aren't valid in C++, like restrict and _Noreturn.
Well MSVC only just supports C99 so asking for C11 keywords is unlikely to happen.

I had a quick look at their C++ word list [0] and it looks like _Imaginary and _Complex and _Bool are the only missing C99 keywords. Feel free to make a PR if you want them added :)

[0] https://github.com/Microsoft/monaco-languages/blob/master/sr...

restrict is C99. Many C++ compilers accept __restrict__ or some other form of it to mean the same, but restrict doesn't exist in the C++ standard, so the GP is correct.
Good point, it gets tough remembering all the little differences between the two.