Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Meta

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Is code formatting of double underscore + 4 spaces indention a bug?

+5
−0

Normal code formatting can be done by adding 4 spaces in front, no problem:

#define STUFF 123

And that turns out light blue:ish in my browser (Firefox) in some code-friendly, fixed-width font like Courier or whatever.

I just noticed that code containing double underscore and code formatted by adding 4 spaces ends up like this:

#define COUNT(...) ( 0 __VA_OPT__(COUNT1(__VA_ARGS__)) )

Now the color is wine red and part of it is in italics. But otherwise code formatted in a code-friendly font. Huh.

If we instead do 5 spaces:

 #define COUNT(...) ( 0 __VA_OPT__(COUNT1(__VA_ARGS__)) )

Then it ends up as expected.

Is this is a bug or am I missing something about how code formatting/markdown works?


Screen shot of this meta post:

(In case the result isn't rendered the same way for everyone or in case the bug gets fixed in the future.)

Image_alt_text

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

1 answer

+5
−0

We use highlight.js for highlighting which has a feature to automatically guess which language a code snippet is in. Unfortunately, this relies on heuristics and can sometimes be incorrect. Although we don't display the guess (perhaps we should?), we can see what it is by inspecting the HTML manually.

In this case, it guesses the code without a leading space as Markdown (<code class="hljs language-markdown">); presumably because it looks like a header. However, it guesses the code with a leading space as C++ (<code class="hljs language-cpp">).[1]

The only solution to this problem is to set the correct language, in this case presumably C, so that highlight.js doesn't need to guess. Unfortunately, there is no way to set it with the four spaces indent variant, so you'll have to use backticks.

```c
#define COUNT(...) ( 0 __VA_OPT__(COUNT1(__VA_ARGS__)) )
```
#define COUNT(...) ( 0 __VA_OPT__(COUNT1(__VA_ARGS__)) )

  1. Interestingly, the current version of highlight.js detects both versions as Lisp for some reason. Image of the highlight.js demo page using Lisp highlighting ↩︎

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

Can it pick up language info from tags? (1 comment)

Sign up to answer this question »